Membangkitkan Kunci Publik dan Kunci Rahasia dalam RSA

Pada tahun 1974, tiga orang ilmuwan dari MIT (Massachussets Institute of Technology) yaitu Ron Rivest, Adi Shamir, dan Len Adleman memperkenalkan suatu algoritma enkripsi pada kriptografi kunci publik yang dikenal sebagai metode RSA (Rivest Shamir Adleman). Pada metode RSA ini, kunci rahasia dibangkitkan dari dua buah bilangan prima bersamaan dengan kunci publiknya. Untuk mentranformasikan pesan yang dapat dibaca (plainteks) menjadi pesan yang tida dapat dibaca (chiperteks), kita harus melewati dua tahap, yaitu pembangkitan kunci publik dan kunci rahasia, serta melakukan proses enkripsi. metode rsa 1.JPG

Cara kerja dari kunci publik dan kunci rahasia ini sama seperti halnya sistim pada email. Kita dapat menyimpan email di media sosial apapun yang bisa diakses oleh publik sehingga orang lain dapat mengirimkan pesan kepada kita. Alamat email ini dapat dikatakan sebagai kunci publik. Selanjutnya hanya kita yang dapat membuka email tersebut dan membaca pesan dari orang lain, karena hanya kita yang tahu password dari emailnya. Password ini bisa kita sebut juga sebagai kunci rahasia. Sekarang yang perlu dibayangkan dalam metode RSA ini adalah bentuk passwordnya tersebut secara matematis berkaitan dengan alamat emailnya. Jadi pasangan kunci ini akan berkaitan erat dengan angka-angka. Nah bagaimana cara membangkitkan pasangan kunci tersebut?

Pembangkitan Pasangan Kunci
Berikut ini merupakan algoritma membangkitkan pasangan kunci dalam metode RSA:
  1. Pilih dua buah bilangan prima sebarang, katakanlah p dan q. Besaran p dan q ini harus dirahasiakan dari siapapun ya! Contohnya kita pilih p=17 dan q=11;
  2. Hitunglah n=p.q. Berdasarkan contoh sebelumnya maka kita punya n=17.11=187. Besaran n ini boleh dipublikasikan;
  3. Tentukan \phi(n), di mana \phi(n) merupakan banyaknya bilangan bulat positif yang lebih kecil atau sama dengan n dan relatif prima terhadap n. Dapat juga dicari dengan persamaan \phi(n)=(p-1)(q-1). Dalam kasus ini berarti \phi(187)=160;
  4. Pilih sebuah bilangan bulat sebagai kunci publik, katakanlah e, yang relatif prima terhadap \phi(n). Misalkan kita pilih e=7. Dapat kita lihat bahwa 7 relatif prima terhadap 160 karena gcd(7,160)=1;
  5. Bangkitkan kunci rahasia d dengan menggunakan persamaan e.d\equiv 1(mod\phi(n)). Perhatikan bahwa e.d\equiv 1(mod\phi(n)) ekivalen dengan ed\equiv 1+k\phi(n) di mana k\in \mathbb{N}. Jadi kunci rahasia d dapat juga dihitung dengan cara yang sederhana sebagai d=\frac{1+k\phi(n)}{e}. Dalam hal ini kita peroleh kunci rahasianya d=23, sebab e.d=23.7=161\equiv 1(mod 160);
  6. Kunci publik adalah pasangan (e,n), dan kunci rahasia adalah pasangan (d,n). Jadi kita dapatkan kunci publiknya adalah (7,187) dan kunci rahasianya adalah (23,187).

Cukup mudah bukan untuk mengikuti algoritmanya?

Pada dasarnya jika kita memiliki kunci publik yang didapat dari perkalian dua buah bilangan prima yang sangat besar dan membagikan kunci tersebut kepada publik, maka semua orang dapat menggunakannya untuk mengenkripsi pesan kepada kita. Tetapi hanya kita yang tahu faktor prima dari bilangan tersebut untuk mendekripsikan pesannya, sementara orang lain harus menghitung faktor primanya dalam waktu yang sangat lama disebabkan bilangan tersebut terlalu besar.

Oleh karena itu untuk memperoleh kemanan yang lebih tinggi, nilai p dan q ini disarankan memiliki panjang lebih dari 100 digit, sehingga diperoleh perkalian keduanya n=p.q akan berukuran lebih dari 200 digit. Untuk menentukan faktor dari bilangan dengan digit lebih dari 200 akan membutuhkan waktu penghitungan selama 4 milyar tahun lamanya. Hal tersebut dikemukakan oleh Rivest dan rekan-rekannya dengan asumsi komputer yang digunakan memiliki kecepatan satu milidetik. Hal ini menjadi salah satu alasan mengapa orang berlomba-lomba untuk menemukan bilangan prima terbesar.

Di dalam postingan yang akan datang kita akan mempelajari bagaimana caranya mengenkripsi dan mendekripsikan suatu pesan dari pasangan kunci yang telah didapat.
Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s