E-Cash (Electronic Cash)

E-cash merupakan salah satu dari "electronic payment" yang sekarang ini sangat banyak digunakan. E-cash merupakan gambaran dari simbol electronik yang memiliki nilai (bit dan byte) seringkali digunakan dalam transaksi barang dan jasa. E-cash dipublikasikan oleh institusi legal, perusahaan dan organisasi. E-cash biasanya memiliki keterbatasan penerimaan (bergantung seberapa besar publisher market-nya).

Dibawah ini beberapa perusahaan yang menerbitkan e-cash:

1. Digicash : ditemukan oleh team dari veteran industri perangkat lunak dan anggota dari elite technology units of the Israeli Army.

2. Mondex : ditemukan tahun 1990, Westminster Bank di Inggris - sekarang ini telah terpisah dari mastercard.

3. Paypal : bagian dari perusahaan ebay, diintegrasikan dengan e-bay.

Konsep e-cash

Sumber: Insup Lee (2000)

Dari gambar di atas, dapat disimpulkan:

1. Konsumen membeli e-cash melaui bank

2. Bank mengirim e-cash bits kepada konsumen (setelah mengisi

3. Konsumen mengirimkan e-cash kepada penjual

4. Penjual memeriksa kebasahan dari e-cash tersebut kepada bank

5. Bank mengkonfirmasi jika e-cash tersebut masih berlaku

6. Seluruh transaksi selesai, jika penjual meberikan e-cash.


Keamanan E-Cash (Electronic Cash)

Fungsi – fungsi umum sistem keamanan e-cash antara lain:

1. Authentication (Pembuktian keaslian)

2. Confidentiality (kerahasiaan)

3. Data integrity (integritas data)

Biasanya semua itu diimplementasikan dengan menggunakan teknologi kriptografi seperti enkripsi dan digital signature.

RSA

Keamanan e-cash sebagian besar menggunakan algoritma CSA. Berikut akan kami jelaskan tentang Algoritma RSA.

  • Dari sekian banyak algoritma kriptografi kunci-publik yang pernah dibuat, algoritma yang paling populer adalah algoritma RSA.
  • Algoritma RSA dibuat oleh 3 orang peneliti dari MIT (Massachussets Institute of Technology) pada tahun 1976, yaitu: Ron (R)ivest, Adi (S)hamir, dan Leonard (A)dleman.
  • Keamanan algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci pribadi. Selama pemfaktoran bilangan besar menjadi faktor-faktor prima belum ditemukan algoritma yang mangkus, maka selama itu pula keamanan algoritma RSA tetap terjamin.
  • Besaran-besaran yang digunakan pada algoritma RSA:

1. p dan q bilangan prima (rahasia)

2. r = p × q (tidak rahasia)

3. f(r) = (p – 1)(q – 1) (rahasia)

4. PK (kunci enkripsi) (tidak rahasia)

5. SK (kunci dekripsi) (rahasia)

6. X (plainteks) (rahasia)

7. Y (cipherteks) (tidak rahasia)

  • Algoritma RSA didasarkan pada teorema Euler (lihat bahan kuliah Teori Bilangan Bulat) yang menyatakan bahwa

af(r) º 1 (mod r) (1)

yang dalam hal ini,

1. a harus relatif prima terhadap r

2. f(r) = r(1 – 1/p1)(1 – 1/p2) … (1 – 1/pn), yang dalam hal ini p1, p2, …, pn adalah faktor prima dari r.

· f(r) adalah fungsi yang menentukan berapa banyak dari bilangan-bilangan 1, 2, 3, …, r yang relatif prima terhadap r.

  • Berdasarkan sifat am º bm (mod r) untuk m bilangan bulat ³ 1, maka persamaan (1) dapat ditulis menjadi

a mf(r) º 1m (mod r)

atau

amf(r) º 1 (mod r) (2)

  • Bila a diganti dengan X, maka persamaan (2) menjadi

Xmf(r) º 1 (mod r) (3)

  • Berdasarkan sifat ac º bc (mod r), maka bila persamaan (3) dikali dengan X menjadi:

Xmf(r) + 1 º X (mod r) (4)

yang dalam hal ini X relatif prima terhadap r.

  • Misalkan SK dan PK dipilih sedemikian sehingga

SK × PK º 1 (mod f(r)) (5)

atau

SK × PK = mf(r) + 1 (6)

  • Sulihkan (6) ke dalam persamaan (4) menjadi:

X SK × PK º X (mod r) (7)

  • Persamaan (7) dapat ditulis kembali menjadi

(X PK)SK º X (mod r) (8)

yang artinya, perpangkatan X dengan PK diikuti dengan perpangkatan dengan SK menghasilkan kembali X semula.

  • Berdasarkan persamaan (8), maka enkripsi dan dekripsi dirumuskan sebagai berikut:

EPK(X) = Y º XPK mod r (8)

DSK(Y) = X º YSK mod r (9)

  • Karena SK × PK = PK × SK, maka enkripsi diikuti dengan dekripsi ekivalen dengan dekripsi diikuti enkripsi:

ESK(DSK(X)) = DSK(EPK(X)) º XPK mod r (10)

  • Oleh karena XPK mod r º (X + mr)PK mod r untuk sembarang bilangan bulat m, maka tiap plainteks X, X + r, X + 2r, …, menghasilkan cipherteks yang sama. Dengan kata lain, transformasinya dari banyak ke satu. Agar transformasinya satu-ke-satu, maka X harus dibatasi dalam himpunan {0, 1, 2, …, r – 1} sehingga enkripsi dan dekripsi tetap benar seperti pada persamaan (8) dan (9).

Prosedur Membuat Pasangan Kunci

  1. Pilih dua buah bilangan prima sembarang, p dan q.
  2. Hitung r = p × q. Sebaiknya p ¹ q, sebab jika p = q maka r = p2 sehingga p dapat diperoleh dengan menarik akar pangkat dua dari r.
  3. Hitung f(r) = (p – 1)(q – 1).
  4. Pilih kunci publik, PK, yang relatif prima terhadap f(r).
  5. Bangkitkan kunci rahasia dengan menggunakan persamaan (5), yaitu SK × PK º 1 (mod f(r)).

Perhatikan bahwa SK × PK º 1 (mod f(r)) ekivalen dengan SK × PK = 1 + mf(r), sehingga SK dapat dihitung dengan

(11)

Akan terdapat bilangan bulat m yang menyebabkan memberikan bilangan bulat SK.

Catatan: PK dan SK dapat dipertukarkan urutan pembangkitannya. Jika langkah 4 diganti dengan “Pilih kunci rahasia, SK, yang …”, maka pada langkah 5 kita menghitung kunci publik dengan rumus yang sama.

Contoh 1. Misalkan p = 47 dan q = 71 (keduanya prima). Selanjutnya, hitung nilai

r = p × q = 3337

dan

f(r)= (p – 1)(q – 1) = 3220.

Pilih kunci publik SK = 79, karena 79 relatif prima dengan 3220. PK dan r dapat dipublikasikan ke umum.

Selanjutnya akan dihitung kunci dekripsi SK seperti yang dituliskan pada langkah instruksi 5 dengan menggunakan persamaan (11),

Dengan mencoba nilai-nilai m = 1, 2, 3, …, diperoleh nilai SK yang bulat adalah 1019. Ini adalah kunci dekripsi yang harus dirahasiakan.

Enkripsi

  • Plainteks disusun menjadi blok-blok x1, x2, …, sedemikian sehingga setiap blok merepresentasikan nilai di dalam rentang 0 sampai r – 1.
  • Setiap blok xi dienkripsi menjadi blok yi dengan rumus

yi = xi PK mod r

Dekripsi

  • Setiap blok cipherteks yi didekripsi kembali menjadi blok xi dengan rumus

xi = yi SK mod r

Contoh 2. Misalkan plainteks yang akan dienkripsikan adalah

X = HARI INI

atau dalam sistem desimal (pengkodean ASCII) adalah

7265827332737873

Pecah X menjadi blok yang lebih kecil, misalnya X dipecah menjadi enam blok yang berukuran 3 digit:

x1 = 726 x4 = 273

x2 = 582 x5 = 787

x3 = 733 x6 = 003

Nilai-nilai xi ini masih terletak di dalam rentang 0 sampai 3337 – 1 (agar transformasi menjadi satu-ke-satu).

Blok-blok plainteks dienkripsikan sebagai berikut:

72679 mod 3337 = 215 = y1

58279 mod 3337 = 776 = y2

73379 mod 3337 = 1743 = y3

27379 mod 3337 = 933 = y4

78779 mod 3337 = 1731 = y5

00379 mod 3337 = 158 = y6

Jadi, cipherteks yang dihasilkan adalah

Y = 215 776 1743 933 1731 158.

Dekripsi dilakukan dengan menggunakan kunci rahasia

SK = 1019

Blok-blok cipherteks didekripsikan sebagai berikut:

2151019 mod 3337 = 726 = x1

7761019 mod 3337 = 582 = x2

17431019 mod 3337 = 733 = x3

Blok plainteks yang lain dikembalikan dengan cara yang serupa. Akhirnya kita memperoleh kembali plainteks semula

P = 7265827332737873

yang dalam karakter ASCII adalah

P = HARI INI.

Kekuatan dan Keamanan RSA

  • Keamanan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan non prima menjadi faktor primanya, yang dalam hal ini r = p ´ q.
  • Sekali r berhasil difaktorkan menjadi p dan q, maka f(r) = (p – 1) (q – 1) dapat dihitung. Selanjutnya, karena kunci enkrispi PK diumumkan (tidak rahasia), maka kunci dekripsi SK dapat dihitung dari persamaan PK × SK º 1 (mod f(r)).
  • Penemu algoritma RSA menyarankan nilai p dan q panjangnya lebih dari 100 digit. Dengan demikian hasil kali r = p ´ q akan berukuran lebih dari 200 digit. Menurut Rivest dan kawan-kawan, uasaha untuk mencari faktor bilangan 200 digit membutuhkan waktu komputasi selama 4 milyar tahun! (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik).
  • Untunglah algoritma yang paling mangkus untuk memfaktorkan bilangan yang besar belum ditemukan. Inilah yang membuat algoritma RSA tetap dipakai hingga saat ini. Selagi belum ditemukan algoritma yang mangkus untuk memfaktorkan bilangan bulat menjadi faktor primanya, maka algoritma RSA tetap direkomendasikan untuk menyandikan pesan.