Pengenalan Algoritma RSA

Tedi Heriyanto <tedi-h@usa.net>

12 Oktober 2000

Celebrating the expiration of RSA algorithm patent



Algoritma RSA :
---------------

Key generation :

1. Hasilkan dua buah integer prima besar, p dan q
   Untuk memperoleh tingkat keamanan yang tinggi pilih p dan q 
   yang berukuran  besar, misalnya 1024 bit.
2. Hitung m = (p-1)*(q-1)
3. Hitung n = p*q
4. Pilih d yg relatively prime terhadap m 
   e relatively prime thd m artinya faktor pembagi terbesar keduanya 
   adalah 1, secara matematis disebut gcd(e,m) = 1. Untuk mencarinya 
   dapat digunakan algoritma Euclid.
5. Cari d, sehingga e*d = 1 mod (m), atau d = (1+nm)/e
   Untuk bilangan besar, dapat digunakan algoritma extended Euclid.
6. Kunci publik  : e, n
   Kunci private : d, n


Public key encryption

B mengenkripsi message M untuk A

Yg harus dilakukan B :
  1. Ambil kunci publik A yg otentik (n, e)
  2. Representasikan message sbg integer M dalam interval [0,n-1]
  3. Hitung C = M ^ e (mod n)
  4. Kirim C ke A

Untuk mendekripsi, A melakukan :
  Gunakan kunci pribadi d untuk menghasilkan M = C^(d)  (mod n)


Contoh Penerapan :
------------------

Misalkan :
Di sini saya pilih bilangan yg kecil agar memudahkan perhitungan, 
namun dalam aplikasi nyata pilih bilangan prima besar untuk 
meningkatkan keamanan.
 
p = 3
q = 11

n = 3 * 11 = 33
m = (3-1) * (11-1) = 20

e = 2 => gcd(e, 20) = 2
e = 3 => gcd(e, 20) = 1 (yes)

n = 0 => e = 1 / 3
n = 1 => e = 21 / 3 = 7 (yes)


Public key  : (3, 33)
Private key : (7, 33)


Let's check the math using numbers
----------------------------------

* Try encryption : message "2"

  C = 2 ^ 3 (mod 33)
    = 8

  Try to decrypt : ciphertext "8"

  M = 8 ^ 7 (mod 33)
    = 2097152 (mod 33)
    = 2

** Encrypt : message " " (ASCII=20)

  C = 20 ^ 3 (mod 33)
    = 8000 (mod 33)
    = 14

  Decrypt : ciphertext 32 
  
  M = 14 ^ 7 (mod 33)
    = 105413504 (mod 33)
    = 20


Make as many as software using this RSA algorithm.