170 likes | 401 Views
Sekuriti Digital, Teori dan Praktek. Algoritme Enkripsi RSA. Bab 19.1, 19.3, 11.3 - 11.6. Sistem Enkripsi Asimetris. Nama lain : sistem enkripsi menggunakan kunci publik Dicetuskan pertama kali secara independen oleh Whitfield Diffie & Martin Hellman (76) dan Ralph Merkle (78).
E N D
Sekuriti Digital, Teori dan Praktek Algoritme Enkripsi RSA Bab 19.1, 19.3, 11.3 - 11.6
Sistem Enkripsi Asimetris • Nama lain : sistem enkripsi menggunakan kunci publik • Dicetuskan pertama kali secara independen oleh Whitfield Diffie & Martin Hellman (76) dan Ralph Merkle (78). • Banyak algoritme yang diusulkan tapi hanya sedikit yang 'masih kedap air' dan bisa digunakan untuk enkripsi maupun tanda tangan digital. Beberapa algoritme yang bertahan : RSA, El Gamal, dan Rabin. • Sangat lambat dibandingkan sistem enkripsi simetris. • Rentan terhadap chosen chiphertext attack.
Review tentang Notasi • Sistem enkripsi asimetris mengenal dua macam kunci : kunci privat dan kunci publik. Kunci privat adalah privat dan harus dijaga kerahasiaannya. Kunci publik boleh disebarkan ke publik. • Asumsikan bahwa d dan e adalah pasangan kunci privat dan publik. Sifat Inversa : [[m]d]e = [[m]e]d = m Sifat Keunikan : [[m]d]f = m f=e [[m]c]e=m c=d [[m]e]c= m c=d [[m]f]d=m f=e
Ron Rivest, Adi Shamir, Leonard Adleman (1978)Algoritme RSA : (1) Key Generation 1. Ambil sembarang bilangan prima p dan q • ukuran paling tidak 200 digit • panjang p dan q (dalam digit) sama 2. Hitung n = pq (parameter sekuriti) 3. Hitung bilangan Euler dari n • (y) = jumlah bilangan x<y yang relatif prima terhadap y • (n) = (p-1)(q-1) 4. Pilih e (kunci publik) e<(y) sehingga e relatif prima thd (y) 5. Hitung d (kunci privat), d = e-1mod (n). • Gunakan algoritme extended Euclidean untuk menghitung inversa mod k. 6. Simpan d sebagai kunci privat 7. Publikasikan n sebagai parameter sekuriti 8. Publikasikan e sebagai kunci publik
Algoritme RSA : (2) Enkripsi dan Dekripsi • [m]e = memod n • [m]d = mdmod n [[m]d]e = (mdmod n)emod n = mdemod n = mk(n)+1mod n = m1modn = m mod n (… so m has to be smaller than n) • Brute force attack : • Coba berbagai d' sampai (memod n)d'mod n = m • Coba faktorkan n menjadi p' dan q'. Kunci privat d' = (p'-1)(q'-1)
Contoh • Ambil p = 47 (2 digit) dan q = 71 • Jadi n = pq = 3337 (empat digit) • (n) = (p-1)(q-1) = 3220 • Ambil e = 79. Maka d = e-1mod 3220 = 1019 • d privat, n dan e publik • Misalnya m (dinyatakan dalam natural number) : 688232687966668003 • Bagi m menjadi blok2 terdiri dari tiga digit • Enkrip masing2 blok dengan dengan e • Misalnya untuk blok pertama : 68879 mod 3337 = 1570 • Hasil enkripsi m : 1570 2756 2091 2276 2423 158
Meninjau Kembali Berbagai Ingridien dari RSA • Aritmatik sistem modulo • Bilangan Euler • Menghitung invers dalam sistem modulo • Pemangkatan dalam sistem modulo • Fermat's Little Theorem • Faktorisasi bilangan • Menghitung logaritma dalam sistem modulo • Generator bilangan prima / menguji keprimaan • topik minggu depan
Aritmatik Modulo n • Aritmatik modulo n banyak dipakai dalam kriptografi: • x mod n menghasilkan value antara 0 … (n-1) • jadi sedikit beda dengan % di C yang bisa menghasilkan bilangan negatif • Finite dan siklis (tidak ada komplikasi dengan overflow) • Operasi * dan + memiliki unit (1 dan 0) • Operasi * dan + bersifat komutatif, asosiatif, dan distributif • (x + y) mod n = (y+x) mod n • etc ... • Melakukan mod dua kali sama efeknya dengan mod satu kali • contoh : (((x + y) mod n) * z) mod n = ((x+y)*z) mod n • (x + y) mod n dan (x*y) mod n bisa dengan mudah diimplementasi dengan + dan * dalam representasi unsigned integer.
FieldEvariste Galois … abad 18 • Aritmatik Modulo n banyak berhubungan dengan teori dari struktur aljabar yang dikenal sebagai field. • Sebuah field G adalah tupel (A,,,nul) yang memenuhi sifat : • A adalah sebuah set (disebut carrier dari G) • Operasi : • tertutup, komutatif, dan asosiatif di A{nul}, • memiliki nul sebagai unit • setiap x A{nul} memiliki invers thd (ada sebuah y A{nul} sehingga x y = nul) • Operasi : • tertutup, komutatif dan asosiatif didalam A • memiliki unit eA • setiap x A memiliki invers relatif thd . (ada sebuah y A sehingga x y= e) • distributif thd
Contoh Field • Teorem : jumlah elemen dari sebuah finite field selalu merupakan perpangkatan dari bilangan prima (pn). • Teorem : Finite field dengan jumlah elemen yang sama semuanya isomorfis. • Contoh field adalah GF(24) … Galois Field: + 0 1 x x+1 0 0 1 x x+1 1 1 0 x+1 x x x x+1 0 1 x+1 x+1 x 1 0 * 1 x x+1 1 1 x x+1 x x x+1 1 x+1 x+1 1 x Dimana x memenuhi x2 = x+1
Bilangan Euler • Bilangan Euler (totient) (n) dari n adalah jumlah bilangan x<n yang relatif-prime thd n. • dua bilangan x dan y dikatakan relatif prime jika GCD(x,y)=1 • Bila p adalah bilangan prima maka (p) = p-1 • Bila n adalah produk dari dua bilangan prime, ie n=pq, maka (n) = (p-1)(q-1)
Invers dan Pemangkatan mod n • Invers x (ditulis x-1) dalam sistem mod n adalah sebuah bilangan sehingga xx-1 = 1 (mod n) • Menghitung invers x dalam sistem mod n tidak trivial. • Hanya apabila x relative prime thd n maka x punya invers • Extended Euclid Algorithm (11.3) dapat menghitung invers mod n dalam waktu berorde panjang n dalam bit (2log n) • Untuk pemangkatan, gunakan tehnik Chaining (11.3) untuk melakukan pemangkatan secara efesien. • Melakukan pemangkatan yang efesien juga tidak trivial • Kebanyakan algoritme rata-rata waktu komputasinya berorde 1.1 - 1.5 kali panjang n (dalam bit) • Batas bawah teoretis adalah orde k-1 dimana k adalah panjang n dalam bit.
Fermat's Little Theorem • RSA memakai teorema ini. • Teorema Fermat : bila p adalah bilangan prima dan a bukan kelipatan p, maka ap-1 = 1 (mod p) • Generalisasi Euler : bila a dan n relatif prime satu sama lain maka a(n) = 1 (mod p)
Faktorisasi • Memfaktorkan sebuah bilangan n artinya "mencari semua faktor prima dari n". • Kunci rahasia RSA bisa dihitung dari kunci publik kalau orang berhasil memfaktorkan parameter sekuriti n. Caranya : • faktorkan n menjadi p dan q, lalu hitung (n)=(p-1)(q-1). Lalu hitung invers kunci publik k dalam mod (n) (gunakan algoritme extended Euclid). • Algoritme faktorisasi n menjadi dua bilangan prima: • naïve : coba satu persatu semua bilangan akar n • Algoritme tercepat: Number Field Sieve e(1.9 + O(1))(ln(n))^(1/3)(ln(ln(n)))^(2/3) • 1972 : 41 digit dalam beberapa jam di Cray • 1993 : 120 digit dalam beberapa bulan
Menghitung Logaritma mod n • Kunci rahasia RSA juga bisa bocor kalau orang bisa menghitung logaritma mod n. Caranya : • M minta A menandatangani x dengan kunci rahasianya, yaitu a • A mengirim y = [x]a = xamod n ke M • M xlog y mod n … hasilnya adalah a.
Chosen Chiphertext Attack thd RSA • B mengirim c = [m]1/a = m1/amod n ke A. Eve berhasil mendapatkan kopi dari c dan ingin mendapatkan m. Caranya : • Eve membuat r (r<n) secara acak • Eve menghitung : • x = r1/amod n • y = xc mod n • t = r-1mod n • Eve minta A menandatangani y dengan a. • A mengirimkan [y]a = yamod n ke Eve • Eve menghitung: • t(yamod n) mod n = r-1yamod n = r-1(xc)amod n = r-1(r1/am1/a)a mod n = m mod n
Attack yang Lain • Common Modulus Attack • bisa dengan efektif merecover pesan m dalam implementasi dimana semua orang memperoleh parameter sekuriti n yang sama • Low Decryption Exponent Attack • Algoritmen Wiener • Bisa mendapatkan kunci privat bila ukurannya (dalam bit) kurang dari 1/4 ukuran n • Always sign first! Then encrypt! (lihat 19.3)