Algoritma RSA Antonius C.P. 2016
Private-Key Cryptography kriptografi tradisional (private/secret/single key) menggunakan satu kunci dishare oleh sender dan receiver jika kunci ini terbuka maka komunikasi tidak aman lagi PrKC juga dikenal sebagai kriptografi symmetric, kunci enkripsi dan dekripsi sama. sehingga tidak melindungi sender dari receiver yang memalsukan pesan & mengklaim seolah-olah pesan dikirim oleh sender
Public-Key Cryptography pengembangan paling signifikan sepanjang 3000 tahun sejarah kriptografi mengunakan two kunci –public & private asymmetric, kunci enkripsi dan dekripsi berbeda menggunakan aplikasi yang cerdas dari konsep teori bilangan pada fungsi kriptografi PuKC lebih merupakan komplemen daripada pengganti PrKC
Public-Key Cryptography kriptografi public-key/two-key/asymmetric melibatkan penggunaan dua kunci: public-key, yang bisa diketahui oleh setiap orang, dan dapat digunakan untuk enkripsi pesan, dan verifikasi signature private-key, hanya diketahui oleh penerima pesan, digunakan untuk dekripsi pesan, and membangun (create) signature dikatakan asymmetric sebab mereka yang mengenkripsi pesan atau memverifikasi signature tidak dapat mendekripsi pesan atau membuat signature
Public-Key Cryptography
Mengapa Public-Key Cryptography? dibangun untuk mengatasi dua masalah utama: key distribution – bagaimana mengkomunikasikan kunci secara aman? digital signature – bagaimana memverifikasi signature digagas oleh Whitfield Diffie & Martin Hellman di Stanford University pada 1976 mula-mula dikenal dalam classified community
Karakteristik Public-Key Algoritma Public-Key bergantung pada dua kunci dengan sifat-sifat: secara komputasi, tidak mungkin bisa mendapatkan kunci dekripsi jika hanya diketahui algoritma dan kunci enkripsi secara komputasi mudah untuk en/dekripsi pesan jika kunci (en/dekripsi) yang relevan diketahui salah satu dari dua kunci yang berrelasi dapat digunakan untuk enkripsi, sedang yang lainnya untuk dekripsi
Public-Key Cryptosystems
Aplikasi Public-Key Dapat diklasifikasikan ke dalam 3 kategori: encryption/decryption (provide secrecy) digital signatures (provide authentication) key exchange (of session keys) beberapa algorithm cocok untuk semua penggunaan, sementara yang lain hanya cocok untuk satu aplikasi saja
Keamanan skema Public Key sebagaimana pada skema PrKC, serangan brute force exhaustive search terhadap PuKC selalu dimungkinkan secara teoritis tetapi kunci yang digunakan terlalu panjang (>512 bit) keamanan terletak pada perbedaan yang sangat besar antara masalah easy (en/decrypt) dan hard (cryptanalyse) secara umum hard problem diciptakan agar terlalu sulit untuk dikerjakan secara praktis mensyaratkan penggunaan very large numbers Sehingga PuKC adalah slow jika dibandingkan dengan PrKC.
RSA oleh Rivest, Shamir & Adleman of MIT pada 1977 paling terkenal & paling banyak digunakan Berdasarkan eksponensiasi dalam field (Galois) berhingga dari bilangan bulat modulo prima NB: eksponensiasi memerlukan O((log n)3) operasi (mudah) menggunakan bilangan bulat yang sangat besar (misal, 1024 bit) keamanan disebabkan oleh mahalnya faktorisasi bilangan yang sangat besar NB: faktorisasi membutuhkan O(e log n log log n) operasi (hard)
RSA - The authors [From Information Security Group, ICU]
Pengaturan Kunci RSA Setiap user membangun sebuah pasangan kunci public/private dengan: seleksi dua bilangan prima yang sangat besar secara random: p,q Hitung system modulo N=p.q Catatan ø(N)=(p-1)(q-1) Seleksi secara random, kunci enkripsi e dimana 1<e<ø(N), gcd(e,ø(N))=1 Selesaikan equation berikut untuk mendapatkan kunci dekripsi d e.d=1 mod ø(N) dan 0≤d≤N publikasikan kunci enkripsi publik: KU={e,N} Jaga kerahasiaan kunci dekripsi: KR={d,p,q}
Penggunaan RSA untuk enkripsi sebuah pesan M, pengirim: mendapatkan public key penerima KU={e,N} menghitung: C=Me mod N, dimana 0≤M<N untuk dekripsi ciphertext C, penerima: menggunakan private key-nya KR={d,p,q} menghitung: M=Cd mod N catatan: pesan M harus lebih kecil dari modulus N (dijadikan blok dulu bila perlu)
Bilangan Prima bilangan prima hanya terbagi oleh 1 dan dirinya sendiri mereka tidak dapat dinyatakan sebagai hasil kali dari bilangan lain Contoh: 2,3,5,7 prima, 4,6,8,9,10 bukan bilangan prima merupakan inti dari teori bilangan daftar bilangan prima kurang dari 200: 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
Faktorisasi Prima memfaktorkan sebuah bilagan n adalah menuliskannya sebagai hasilkali bilangan lain: n = a × b × c faktorisasi sebuah bilangan relatif sulit dibandingkan dengan mengalikan faktor-faktor untuk membangun bilangan tersebut faktorisasi prima dari sebuah bilangan n adalah menuliskannya sebagai hasilkali bilangan-bilangan prima contoh: 91=7×13 ; 3600=24×32×52
Bilangan Relative Prima & GCD dua bilangan a,b adalah relative prima jika tidak memiliki faktor persekutuan selain 1 8 & 15 relative prima sebab faktor 8 adalah1,2,4,8 dan 15 adalah 1,3,5,15 sehingga 1 adalah satu- satunya faktor persekultuan greatest common divisor (GCD) dapat ditentukan dengan membandingkan faktorisasi prima dan menggunakan pangkat terkecil misal 300=21×31×52 18=21×32 sehingga GCD(18,300)=21×31×50=6
Teorema Fermat ap-1 mod p = 1 dimana p prima dan gcd(a,p)=1 juga dikenal sebagai teorema kecil Fermat Sangat bermanfaat dalam public key dan uji primalitas
Euler Totient Function ø(n) digunakan dalam aritmatika modulo n himpunan residu lengkap: {0,...,n-1 } himpunan residu tereduksi adalah himpunan residu yang relative prime terhadap n misal untuk n=10, himpunan residu lengkap = {0,1,2,3,4,5,6,7,8,9} himpunan residu tereduksi = {1,3,7,9} banyaknya anggota himpunan residu tereduksi disebut Euler Totient Function ø(n)
Euler Totient Function ø(n) secara umum untuk menghitung ø(n) perlu faktorisasi prima, tetapi untuk p prima ø(p) = p-1 untuk p,q prima ø(p.q) = (p-1)(q-1) contoh: ø(37) = 36 ø(21) = (3–1)×(7–1) = 2×6 = 12
Teorema Euler generalisasi dari teorema Fermat aø(n)mod N = 1 contoh: dimana gcd(a,N)=1 contoh: a=3;n=10; ø(10)=4; sehingga 34 = 81 = 1 mod 10 a=2;n=11; ø(11)=10; sehingga 210 = 1024 = 1 mod 11
Bagaimana RSA dapat berlaku karena teorema Euler aø(n)mod N = 1 dimana gcd(a,N)=1 dalam RSA : N=p.q ø(N)=(p-1)(q-1) pilih e & d saling invers mod ø(N) sehingga e.d=1+k.ø(N) untuk suatu k sehingga : Cd = (Me)d = M1+k.ø(N) = M1.(Mø(N))k = M1.(1)k = M1 = M mod N
Contoh RSA Pilih bilangan prima: p=17 & q=11 Hitung n = pq =17×11=187 Pilih e : gcd(e,160)=1; misal e=7 Tentukan d: d.e=1 mod 160 dan d < 160 Nilai d=23 sebab 23×7=161= 1×160+1 Publikasikan public key KU={7,187} Jaga kerahasiaan private key KR={23,17,11}
Contoh RSA lanjutan proses enkripsi/dekripsi RSA adalah: misal pesan M = 88 (88<187) enkripsi: C = 887 mod 187 = 11 dekripsi: M = 1123 mod 187 = 88
Konstruksi kunci RSA pengguna RSA harus: menetapkan dua bil prima secara random p, q pilih salah satu e atau d dan hitung yang lain bil prima p,q harus sulit diturunkan dari modulus N=p.q artinya harus sangat besar eksponen e, d saling invers, sehingga gunakan algoritma Inverse untuk menghitungnya, misal dengan Algoritma Euclides yang diperbesar
Keamanan RSA tiga pendekatan serangan terhadap RSA: brute force key search (sangat sulit mengingat besarnya bilangan) mathematical attacks (sangat sulit menghitung ø(N) melalui faktorisasi modulus N) timing attacks (pada saat melakukan dekripsi)
Assignments Lakukan enkripsi dan dekripsi menggunakan algoritma untuk setiap komponen berikut: p = 3; q = 11, e = 7; M = 5 p = 5; q = 11, e = 3; M = 9 Pada sebuah sistem public-key menggunakan RSA, anda mendapatkan sebuah ciphertext C = 10 dikirimkan kepada user yang memiliki public key is e = 5, n = 35. Tentukan plaintext M?