Vous êtes sur la page 1sur 13

Algoritma RSA

Sejarah
Algoritma ini dikembangkan oleh Ron
Rivest, Adi Shamir, dan Len Adleman pada
tahun 1977.
Algoritma
ini
sekaligus
menjawab
tantangan dari sebuah paper yang dibuat
oleh
Diffie
dan
Hellman
tentang
pendekatan baru mengenai algoritma
kriptografi
yang
dapat
memenuhi
kebutuhan untuk metode kunci publik.
Algoritma Rivest Shamir Adleman (RSA) ini
adalah algoritma metode kunci publik yang
paling banyak dipakai sampai saat ini.

Cara Kerja
RSA
merupakan
algoritma
yang
melibatkan ekspresi dengan fungsi
eksponensial.
Plaintext dienkripsi dalam blok-blok,
dimana
setiap
blok
tersebut
mempunyai nilai biner yang kurang
dari angka tertentu (n).
Proses enkripsi dan dekripsi untuk
plaintext blok M dan ciphertext blok C
dapat digambarkan sebagai berikut :
C = Me mod n
M = Cd mod n = (Me)d mod n = Med mod n

Besaran-besaran yang
digunakan pada algoritma RSA
1. p dan q bilangan prima (rahasia)
2. n = p q (tidak rahasia)
3. m = (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)

Pembuatan Kunci
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 terhadap 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.

Enkripsi & Dekripsi


B mengenkripsi message M untuk A

Yg harus dilakukan B :
1. Ambil kunci publik A yg otentik (n, e)
2. Representasikan message sebagai 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 M = C^(d) (mod n)
Nb: jika nilai dari pesan > nilai dari mod, maka proses
dekripsi tidak akan berjalan dengan baik

Bilangan Prima 2-256

Contoh
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)

d = 0 => e = 1 / 3
d = 1 => e = 21 / 3 = 7
(yes)
Public key : (3, 33)

Pilih d yg relatively prime


terhadap m
gcd(e,m) = 1
gcd(e, 20 ) = 1
e = 2 => gcd(e, 20) = 2 (tidak)
e = 3 => gcd(e, 20) = 1 (ya)
e = 5 => gcd(5,20) =5 (tidak)
e = 7 => gcd(7,20) =1 (ya)
Asumsi dipilih e =3
Cari nilai d
e*d mod (m) = 1
3*d mod 20 = 1
Dari hasi l perhitungan: misal
dipilih d=7

21 mod 20 =1

Contoh (2)
Try encryption :
Try encryption :
message 14
message "2
C = 2 ^ 3 (mod 33) C = 14 ^ 3 (mod 33)
= 2744 (mod 33)
=8
= 5

Try to decrypt :
ciphertext "8
Decrypt : ciphertext 5
M = 8 ^ 7 (mod 33) M = 5 ^ 7 (mod 33)
= 2097152 (mod 33) = 78125 (mod 33)
= 14
=2

Contoh (3)

Pilih 2 bilangan prima p dan q, misalnya 7 dan 17


Cari n = pq = 7 x 17 = 119
Hitung (n)=(p1)(q1)= (71)(171)= 96
Pilih e yang relatif prima terhadap (n) = 96 dan kurang dari
(n), dalam
hal ini e = 5
Tentukan d dimana ed = 1 mod (n) dan d < (n), berarti 5 x d
= 1 mod 96, d = 77 karena 5 x 77 = 4 x 96 + 1
Didapat kunci publik {5,119 } dan kunci pribadi {77,119 }

Jika kita menggunakan kunci tersebut untuk mengenkripsi


pesan M = 19, maka
C = Me mod n = 195 mod 119 = 66 (ciphertext yang
dihasilkan)

Jika kita ingin mendekripsi ciphertext tersebut, kita masukkan


rumus dengan kunci pribadi : M = Cd mod n = 6677 mod 119

Contoh (4)
Misalkan p = 47 dan q = 71 (keduanya prima).
n= p x q = 3337 dan m= (p 1)(q 1) = 3220.
Pilih kunci publik e = 79, karena 79 relatif prima
dengan 3220. e dan n dapat dipublikasikan ke
umum. (e,n) = (79, 3337)
Selanjutnya akan dihitung kunci dekripsi d
Dengan mencoba nilai-nilai m = 1, 2, 3, ,
diperoleh nilai SK yang bulat adalah 1019. Ini
adalah kunci dekripsi yang harus dirahasiakan.
(d,n) = (1019, 3337)
C=m^e (mod n) = 10^79 mod 3337 = 3269
M=c^d (mod n) = 3269^1019 mod 3337 =
10

Aktifitas Cyptanalysis utk


memecahkan kode RSA
Brute force : mencoba semua
kemungkinan kunci pribadi
Mencoba mencari faktor p dan q, sehingga
dapat dihitung (n). Dengan mengetahui
(n), maka dapat ditentukan faktor d.
Menentukan (n) secara langsung tanpa
menentukan p dan q. Hal ini juga dapat
menemukan hasil perhitungan dari faktor
d.
Menentukan d secara langsung, tanpa
menentukan (n).

Terima
Kasih