Algoritma Asimetrik menggunakan dua kunci berbeda untuk proses enkripsi dan
dekripsinya, yaitu kunci umum (public key) yang digunakan untuk proses enkripsi yaitu
perubahan data teks asli (plain text) menjadi teks rahasia (cipher text) yang sifatnya tidak
rahasia, dan kunci pribadi (private key) yang digunakan untuk proses dekripsi yaitu
pengembalian data teks rahasia (cipher text) menjadi teks asli (plain text) yang sifatnya
rahasia dan masing-masing pihak memiliki kunci pribadi yang berbeda. Penggunaan kunci
pribadi dapat digunakan untuk autentikasi (pengenalan identitas pengirim) dan non repudiasi
(pencegahan penyangkalan pengiriman data) karena dalam proses dekripsi dapat diketahui
siapa pihak pengirim dengan melihat kunci pribadi yang dipakai.
Contoh algoritma kriptografi yang dapat dihandalkan adalah RSA, dimana RSA
merupakan proses penyandian kunci asimetrik (asymmetric key). Proses perumusan RSA
didasarkan pada Teorema Euler, sedemikian sehingga menghasilkan kunci umum dan kunci
pribadi yang saling berkaitan. Sehingga meskipun proses enkripsi dan dekripsi menggunakan
dua kunci yang berbeda hasilnya akan tetap benar. Kunci umum dan kunci pribadi yang
digunakan adalah suatu bilangan prima, dan disarankan bilangan prima yang besar. Hal ini
digunakan untuk pencegahan usaha pemecahan teks rahasia, karena semakin besar bilangan
prima yang digunakan sebagai kunci maka semakin sulit mencari bilangan besar sebagai
faktornya.
RSA mendasarkan proses enkripsi dan dekripsinya pada konsep bilangan prima dan
aritmetika modulo. Baik kunci enkripsi maupun dekripsi keduanya merupakan bilangan bulat.
Kunci enkripsi tidak dirahasiakan dan diberikan kepada umum (sehingga disebut dengan
kunci publik), namun kunci untuk dekripsi bersifat rahasia (kunci privat). Untuk menemukan
kunci dekripsi, dilakukan dengan memfaktorkan suatu bilangan bulat menjadi faktor-faktor
primanya. Kenyataannya, memfaktorkan bilangan bulat menjadi faktor primanya bukanlah
pekerjaan yang mudah. Karena belum ditemukan algoritma yang efisien untuk melakukan
pemfaktoran. Cara yang bisaa digunakan dalam pemfaktoran adalah dengan menggunakan
pohon faktor. Jika semakin besar bilangan yang akan difaktorkan, maka semakin lama waktu
yang dibutuhkan. Jadi semakin besar bilangan yang difaktorkan, semakin sulit
pemfaktorannya, semakin kuat pula algoritma RSA.
Properti Algoritma RSA:
1. p dan q bilangan prima (rahasia)
2. r = p q (tidak rahasia)
3. (n) = (p – 1)(q – 1) (rahasia)
4. e (kunci enkripsi) (tidak rahasia)
Syaray: PBB (e, (n))=1, PBB = pembagi Bersama terbesae = gcd
5. d (kunci dekripsi) (rahasia)
d dihitung dari d ≡ e-1 mod ((n)) (kongruen)(tutions)
6. m (plainteks) (rahasia)
7. c (cipherteks) (tidak rahasia)
a(n) ≡ 1 (mod n)
(pangkat dua ruas dengan k)
k(n)
a ≡ 1k (mod n)
Contoh:
Pembangkitan kunci oleh Alice
- Alice memilih p = 47 dan q = 71 (keduanya prima), dapat dihitung :
N = p x q = 3337
(n) = (p-1)(q-1) = 3220.
- Alice memilih kunci public e = 79 (relative prima dengan 3220 pbb 1)
- Nilai e dan n dapat dipublikasikan ke umum.
- Selanjutnya Alice menghitung kunci privat d dengan kekongruenan:
ed = 1 (mod (n))
d adalah balikan e dalam modulus (n)
d dapat dihitung dengan algoritma Euclidean atau dengan rumus:
m1 = 0704
m2 = 1111
m3 =1400
m4 = 1108
m5 = 0204
(perhatikan, mi masih terletak di dalam selang [0, 3337-1]
- Bob mengenkripsi setiap blok dengan menggunakan kunci public Alice (e=79):
c1 = 070479 mod 3337 = 328;
c2 = 111179 mod 3337 =301;
c3 =140079 mod 3337 =2653;
c4 = 110879 moda3337 = 2986;
c5 = 020479 moda 3337 = 1164;
Cipherteks : C = 0328 0301 2653 2986 1164 Enkripsi : c = me mod n
- Bob mengirim cipherteks C kepada Alice
- Alice mendekripsikan cipherteks dengan menggunakan kunci privatnya, yaitu d =
1019
m1 = 03281019 mod 3337 =704 = 0704
m2 = 03011019 mod 3337 = 1111
m3 =26531019 mod 3337 = 1400
m4 = 29861019 mod 3337 = 1108
m5 = 11641019 mod 3337 = 204 = 0204
- Alice memperoleh kembali plainteks dari Bob
M = 07041111140011080204 dekripsi : m = cd mod n
Yang dikodekan kembali menjadi
M = HELLO ALICE
Kelemahan RSA
- RSA lebih lambat daripada algoritma kriptografi kunci-simentri seperti DES dan AES
- Dalam praktek, RSA tidak digunakan untuk mengenkripsikan pesan, tetapi
mengenkripsi kunci simetri (kunci sesi) dengan kunci public penerima pesan.
- Pesan tetap dienkripsikan dengan algoritma simetri seeprti DES atau AES
- Pesan dan kunci simetri (yang terenkripsi) dikrim bersamaan.
- Penerima mendekripsikan kunci simetri dengan kunci privatnya, lalu mendekripsi
pesan dengan kunci simetri tersebut.