Back to IF4020 Kriptografi
Algoritma RSA
Questions/Cues
- Siapa pembuat RSA dan pada persoalan sulit apa keamanannya bersandar?
- Apa saja properti dan parameter RSA (p, q, n, φ(n), e, d)?
- Bagaimana rumus enkripsi/dekripsi diturunkan dari Teorema Euler?
- Bagaimana membangkitkan pasangan kunci RSA?
- Bagaimana contoh enkripsi pesan angka dan teks (blok)?
Reference Points
- IF4020 Kriptografi — Algoritma RSA (Slides 2-16)
Pendahuluan
RSA adalah algoritma kunci-publik paling terkenal dan paling luas aplikasinya, dibuat tiga peneliti MIT: Ronald Rivest, Adi Shamir, Leonard Adleman (RSA = Rivest-Shamir-Adleman; slide menyebut 1976). Keamanannya terletak pada sulitnya memfaktorkan bilangan bulat besar menjadi faktor primanya.
Properti RSA
Parameter Keterangan Status bilangan prima rahasia modulus tidak rahasia fungsi totient Euler rahasia kunci enkripsi, syarat tidak rahasia (kunci publik) kunci dekripsi rahasia (kunci privat) plainteks rahasia cipherteks tidak rahasia Penurunan Rumus
Berdasar Teorema Euler: untuk . Totient Euler = banyak bilangan di yang relatif prima dengan . Contoh (yaitu 1, 3, 7, 9, 11, 13, 17, 19). Bila dengan prima, (lihat Teori Bilangan untuk Kriptografi).
Pangkatkan kedua ruas dengan , ganti dengan , lalu kalikan :
Pilih dan dengan , yaitu . Maka , sehingga:
Pembangkitan Kunci
- Pilih dua bilangan prima dan (sebaiknya ).
- Hitung .
- Hitung .
- Pilih relatif prima terhadap .
- Hitung , atau (cari hingga bulat).
Kunci publik = , kunci privat = .
flowchart TD PQ["Pilih prima p, q"] --> N["n = p x q"] PQ --> PHI["phi(n) = (p-1)(q-1)"] PHI --> E["Pilih e,<br/>gcd(e, phi) = 1"] E --> D["d = e^-1 mod phi(n)"] N --> PUB["Kunci publik (e, n)"] E --> PUB D --> PRIV["Kunci privat (d, n)"] N --> PRIVEnkripsi dan Dekripsi
- Enkripsi: (1) preprocessing: kodekan pesan menjadi integer ; bila besar, pecah menjadi blok dengan . (2) .
- Dekripsi: (1) . (2) postprocessing: kodekan kembali menjadi pesan.
Contoh: Pembangkitan Kunci Alice
, , (slide menulis 60; yang benar , sehingga ). Pilih (). Kunci publik .
Hitung : , , …, (bulat). Kunci privat .
Contoh 1: Pesan Angka
Bob mengirim : . Alice mendekripsi: .
Contoh 2: Teks
HELLO ALICEKodekan (spasi diabaikan): . Terlalu besar untuk , jadi dipecah blok 4 digit: .
Blok 0704 328 1111 301 1400 2653 1108 2986 0204 1164 Cipherteks:
0328 0301 2653 2986 1164. Dekripsi mengembalikan blok-blok itu, dikodekan kembali menjadiHELLO ALICE.
RSA (Rivest-Shamir-Adleman) berbasis kesulitan memfaktorkan . Kunci: pilih prima rahasia , , , pilih dengan , hitung ; publik , privat . Berdasar Teorema Euler, sehingga dan . Pesan panjang dipecah menjadi blok . Contoh , , memberi ; , dan
HELLO ALICEterenkripsi blok 4 digit menjadi0328 0301 2653 2986 1164. Keamanan, ukuran kunci, hybrid, dan implementasi ada di Keamanan dan Praktik RSA.
Additional Information
Pilihan e dan Efisiensi
biasanya 65537 (): bit-1 hanya dua, sehingga enkripsi (kuadrat-dan-kali) cepat. Dekripsi lebih berat karena besar, dipercepat dengan CRT (Chinese Remainder Theorem): hitung modulo dan secara terpisah lalu gabungkan (~4 kali lebih cepat).
Mengapa Benar: Kasus
Teorema Euler menuntut , namun RSA tetap benar untuk semua (bila kelipatan atau , gunakan CRT dan Teorema Kecil Fermat pada tiap faktor). Kasus ini langka untuk prima besar tetapi menjelaskan kenapa dekripsi tidak gagal.
Cara Menghitung
Gunakan perpangkatan modular cepat (square-and-multiply), kompleksitas perkalian modular, bukan menghitung lalu memodulo. Tanpa itu, saja sudah 96 digit dan jauh lebih besar.
Proyek Eksplorasi Mandiri
- Implementasikan RSA “kertas”: bangkitkan kunci dari dua prima kecil,
modinvdengan extended Euclid, enkripsi teks blok demi blok, dan verifikasi angka328, 301, 2653, 2986, 1164.- Tambahkan dekripsi dengan CRT dan bandingkan kecepatannya pada modulus 2048 bit.
Bacaan Lanjutan
- R. Rivest, A. Shamir, L. Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems”, CACM, 1978.
- Demo:
steyrerbrains.at/math/rsa.html,umaranis.com/rsa_calculator_demo.html,lddgo.net/en/encrypt/rsa.