Document

advertisement
RSA
(Rivest—Shamir—Adleman)
Pendahuluan
• Algoritma kunci-publik yang paling terkenal dan
paling banyak aplikasinya.
• Ditemukan oleh tiga peneliti dari MIT
(Massachussets Institute of Technology), yaitu
Ron Rivest, Adi Shamir, dan Len Adleman, pada
tahun 1976.
• Keamanan algoritma RSA terletak pada sulitnya
memfaktorkan bilangan yang besar menjadi
faktor-faktor prima.
2
Prinsip RSA
• “User A” menciptakan sebuah public key yang kemudian
dipublikasikan agar semua orang yang akan mengirim pesan
dapat mengenkripsikan pesan dan data yang akan dikirimkan.
• Karena public key merupakan one way function maka mustahil
bagi orang untuk membalik prosesnya dan mendeskripsikan
pesan yang dikirim.
• Orang yang menciptakan public key tersebut kemudian dapat
mendeskripsikan pesan tersebut dengan menggunakan privat key
yang dimilikinya sendiri sehingga dengan menggunakan algoritma
ini hanya “ User A ” sajalah yang dapat mendeskripsikan pesanpesan dan data-data yang dikirim.
1.
2.
3.
4.
p dan q bilangan prima
(rahasia)
n=pq
(tidak rahasia)
(n) = (p – 1)(q – 1)
(rahasia)
e (kunci enkripsi)
(tidak rahasia)
Syarat: PBB(e, (n)) = 1
5. d (kunci dekripsi)
(rahasia)
d dihitung dari d  e-1 mod ((n) )
6. m (plainteks)
(rahasia)
7. c (cipherteks)
(tidak rahasia)
Rinaldi Munir/Teknik
Informatika - STEI - ITB
Properti Algoritma RSA
4
Pembangkitan Sepasang Kunci
1.
2.
3.
4.
Pilih dua bilangan prima, p dan q (rahasia)
Hitung n = pq.
Hitung (n) = (p – 1)(q – 1).
Pilih sebuah bilangan bulat e untuk kunci publik, sebut, e
relatif prima terhadap (n) .
5. Hitung kunci dekripsi, d, dengan persamaaan
ed  1 (mod (n)) atau d  e-1 mod ((n) )
Hasil dari algoritma di atas:
- Kunci publik adalah pasangan (e, n)
- Kunci privat adalah pasangan (d, n)
5
(n) ??
(n) = Toitent Euler = fungsi yang menentukan berapa
Contoh: (20) = 8, sebab terdapat 8 buah yang relatif
prima dengan 20, yaitu 1, 3, 7, 9, 11, 13, 17, 19.
Jika n = pq adalah bilangan komposit dengan p dan q
prima, maka (n) = (p) (q) = (p – 1)(q – 1).
Rinaldi Munir/Teknik
Informatika - STEI - ITB
banyak dari bilangan-bilangan 1, 2, 3, …, n yang
relatif prima terhadap n.
6
Rumus dari RSA
• Enkripsi
• Cipher = Plaintext ^ e (mod n)
• Dekripsi
• Plaintext = Cipher ^ d (mod n)
Note:
Public Key = e, n
Private Key= d, n
Prosedur Pembuatan Key
1.
Pilih dua buah bilangan prima sembarang, p dan q.
(Diutamakan bilangan prima terbesar)
Misal: p = 5, q = 11
2.
Hitung n = p  q. Sebaiknya p  q, sebab jika p = q maka n = p2
sehingga p dapat diperoleh dengan menarik akar pangkat
dua dari n.
n=p.q
n = 55
3.
Hitung (n) = (p – 1)(q – 1).
(n) = (5-1)(11-1)
(n) = 40
Dalam kasus ini (n) = 40, maka,
n = 2, => FPB (2,40) = 2 (Salah)
n= 3, => FPB (3,40) = 1 (BENAR)
Prosedur Pembuatan Key (Cont.)
4.Buat kunci publik, PK (Public Key), yang relatif prima terhadap
(n)
Relatif prima = “Dua buah bilangan dikatakan relatif prima jika
FPB (Faktor Persekutuan Terbesar) dari dua bilangan tersebut
adalah 1 algoritma Euclid”
Dalam kasus ini (n) = 40, maka,
n = 2, => FPB (2,40) = 2 (Salah)
n= 5, => FPB (3,40) = 1 (BENAR)
karena FPB (3,40) = 1, maka PK = 1
Prosedur Pembuatan Key (Cont.)
5. Buat kunci private, SK (Secret Key / Private Key), dengan rumus:
SK = 1 +( m (n) )
PK
*Syarat SK = Bilangan Bulat
𝟏 + ( 𝒌 ∗ (n))
𝒅=
𝒆
Misal:
m=0, 1+( 0(40) ) /3 = 1/3
m=1, 1+( 1(40) ) /3 = 41/3
m=2, 1+( 2(40) ) /3 = 27
(Salah)
(Salah)
(Benar)
m=0, 1+( 0(40) ) /7 = 1/7
m=1, 1+( 1(40) ) /7 = 41/7
m=2, 1+( 2(40) ) /7 = 81/7
M=4, 1+(4(40) ) /7 = 161/7 => 23
(Salah)
(Salah)
(salah)
(Benar)
Karena SK = 27 (Bilangan Bulat), maka SK = 27
Jadi PK = (3,55)
SK = (27,55)
Enkripsi
Cipher = Plaintext ^ e (mod n)
• Misalkan plainteks M = ‘HARI INI’
atau dalam ASCII: 7265827332737873
Pecah M menjadi blok yang 3 digit:
726.582.733.273.787.003
m1 = 726
m4 = 273
m2 = 582
m5 = 787
m3 = 733
m6 = 003
• Enkripsi setiap blok e = 3:
c1 = 7263 mod 55 = 11
c2 = 5823 mod 55 = 43
dst
• Enkripsi setiap blok e = 3:
c1 = 7263 mod 55 = 11
c2 = 5823 mod 55 = 43
dst
• Dekripsi (menggunakan kunci privat sk= 27)
m1 = 1127 mod 55 = 726
m2 = 4327 mod 55 = 582
dst untuk sisi blok lainnya
Contoh 1 Pembentukan
Sepasang Kunci
Contoh lain:
n = p  q = 3337
(n) = (p – 1)(q – 1) = 3220.
• Pilih kunci publik e = 79 (yang relatif prima
dengan 3220 karena pembagi bersama
terbesarnya adalah 1).
• Nilai e dan n dapat dipublikasikan ke umum.
Rinaldi Munir/Teknik
Informatika - STEI - ITB
• Misalkan dipilih p = 47 dan q = 71 (keduanya
prima), maka dapat dihitung:
15
Bagaimana dikatakan Relatif
Prima ??
• Definisi:
Jika faktor persekutuan terbesar dua bilangan bulat positif p dan q
adalah 1, maka p dan q disebut relatif prima.
• Contoh :
3 dan 5 adalah relatif prima karena FPB(3, 5) = 1
31 dan 120 adalah relatif prima karena FPB(31, 120) = 1.
9 dan 132 bukan relatif prima karena FPB(9, 132) = 3.
• Perhatikan bahwa semua bilangan bulat positif kurang dari bilangan
prima p adalah relatif prima terhadap p.
• Misalkan setiap bilangan 1, 2, 3, 4, 5, dan 6 adalah relatif prima
terhadap bilangan prima 7.
• Selanjutnya akan dihitung kunci privat d dengan
kekongruenan:
atau
𝟏 + ( 𝒌 ∗ (n))
𝒅=
𝒆
1  (k  3220 )
d
79
Dengan mencoba nilai-nilai k = 1, 2, 3, …, diperoleh
nilai d yang bulat dengan k=25 adalah 1019. Ini adalah
kunci privat (untuk dekripsi).
Rinaldi Munir/Teknik
Informatika - STEI - ITB
e  d  1 (mod (n))
17
Pecah M menjadi blok yang 3 digit:
726.582.733.273.787.003
m1 = 726
m4 = 273
m2 = 582
m5 = 787
m3 = 733
m6 = 003
Rinaldi Munir/Teknik
Informatika - STEI - ITB
• Misalkan plainteks M = ‘HARI INI’
atau dalam ASCII: 7265827332737873
18
• Dekripsi (menggunakan kunci privat d = 1019)
m1 = 2151019 mod 3337 = 726
m2 = 7761019 mod 3337 = 582
dst untuk sisi blok lainnya
Plainteks M = 7265827332737873
yang dalam ASCII adalah ‘HARI INI’.
Rinaldi Munir/Teknik
Informatika - STEI - ITB
• Enkripsi setiap blok e = 79:
c1 = 72679 mod 3337 = 215
c2 = 58279 mod 3337 = 776
dst
Hasil: C = 215 776 1743 933 1731 158.
19
Kekuatan dan Keamanan
RSA
• Kekuatan algoritma RSA terletak pada tingkat
kesulitan dalam memfaktorkan bilangan menjadi
faktor-faktor prima, yang dalam hal ini n = a  b.
• Sekali n berhasil difaktorkan menjadi a dan b,
maka (n) = (a – 1)(b – 1) dapat dihitung.
Selanjutnya, karena kunci enkripsi e diumumkan
(tidak rahasia), maka kunci dekripsi d dapat
dihitung dari persamaan ed  1 (mod n).
20
• Penemu algoritma RSA menyarankan nilai a dan b
panjangnya lebih dari 100 digit. Dengan demikian
hasil kali n = a  b akan berukuran lebih dari 200
digit.
• Usaha 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).
21
Contoh RSA 512 bit
(dikutip dari Sarwono Sutikno, EL)
• Modulus n = 81 5a d0 b9 0a ac 9f 4c da cc 57 6e ca a7 6a
c3 46 92 a7 81 68 ec 08 ec 77 dd 40 c2 ec 97 52 cb 3b 34
2c b6 a6 e2 76 3a ed 42 84 fa 55 ac 0d 6c 10 39 a2 7e a3
09 be 40 35 38 04 7d 06 43 1f 6f
• e = 29 40 70 02 50 db 19 6b b1 f4 8a a7 b4 59 6c 4b 66 b5
94 f6 15 ae e4 69 44 95 23 f3 d0 fc ea 84 19 7c 55 e0 27
40 2d 19 18 15 08 05 51 ac f5 98 91 f0 98 5f c4 17 05 eb
3b e8 a3 04 32 d4 20 2f
• d = 59 f1 2f 29 73 d0 bc 8e 13 6e 2a 21 53 2c b7 4d 69 82
c9 54 92 6c 64 43 0d 69 15 83 e9 44 a6 de 5e 30 e9 ae 48
f9 c8 84 a4 16 44 4d df 50 f2 0e 96 3e 24 df a4 f4 ec 3d c6
db 61 a7 e6 dc ea cf
22
Panjang
desimal n
100
110
120
129
130
Panjang n
dalam bit
(perkiraan)
332
365
398
428
431
Perolehan
Data
April 1991
April 1992
June 1993
April 1994
April 1996
MIPS-Year
7
75
830
5000
500
Ket: MIPS-Year = million instructions-per-second processor running
for one year, setara dengan eksekusi 3 x 1013 instruksi
Prosesor Pentium 200 MHz setara dengan mesin 50-MIPS
23
• Secara umum dapat disimpulkan bahwa RSA
hanya aman jika n cukup besar.
• Jika panjang n hanya 256 bit atau kurang, ia
dapat difaktorkan dalam beberapa jam saja
dengan sebuah komputer PC dan program yang
tersedia secara bebas.
• Jika panjang n 512 bit atau kurang, ia dapat
difaktorkan dengan beberapa ratus komputer
[WIK06]
24
• Tahun 1977, 3 orang penemu RSA membuat
sayembara untuk memecahkan cipherteks
dengan menggunakan RSA di majalah Scientific
American.
• Hadiahnya: $100
• Tahun 1994, kelompok yang bekerja dengan
kolaborasi internet berhasil memecahkan
cipherteks hanya dalam waktu 8 bulan.
25
Kelemahan RSA
• RSA lebih lambat daripada algoritma kriptografi kuncisimetri seperti DES dan AES
• Dalam praktek, RSA tidak digunakan untuk mengenkripsi
pesan, tetapi mengenkripsi kunci simetri (kunci sesi)
dengan kunci publik penerima pesan.
• Pesan dienkripsi dengan algoritma simetri seperti DES
atau AES.
• Pesan dan kunci rahasia dikirim bersamaan.
• Penerima mendekripsi kunci simetri dengan kunci
privatnya, lalu mendekripsi pesan dengan kunci simetri
tersebut.
26
Serangan terhadap RSA
1. Man-in-the-middle attack
Pihak “di tengah” berlaku sebagai salah satu
pihak yang berkomunikasi.
Tujuan: memperoleh pesan rahasia
2. Chosen-Plaintext Attack
Tujuan: mempelajari isi pesan.
27
quiz
p = any prime number
(24 – 42)
q=5
1.
2.
3.
4.
5.
Public Key = ??
Private Key = ??
Plaintext :
K R I P T O
75 82 73 80 84 79
Pilih dua bilangan prima,
p dan q
(rahasia)
Hitung n = p.q
Hitung (n) = (p – 1)(q – 1).
Pilih sebuah bilangan bulat e untuk kunci
publik, sebut, e relatif prima terhadap
(n) .
Hitung kunci dekripsi, d, dengan
persamaaan
ed  1 (mod (n)) atau d  e-1 mod ((n) )
𝟏 + ( 𝒌 ∗ (n))
𝒅=
𝒆
Hasil dari algoritma di atas:
- Kunci publik adalah pasangan (e, n)
- Kunci privat adalah pasangan (d, n)
Sekian dan Terima Kasih
Download