Anda di halaman 1dari 6

ALGORITMA RSA

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.

Algortima Sandi Kunci Asimetris (kunci publik)


Skema ini adalah algoritma yang menggunakan kunci yang berbeda untuk proses
enkripsi dan dekripsinya. Skema ini disebut juga sebagai sistem kriptografi kunci publik
karena kunci untuk enkripsi dibuat untuk diketahui oleh umum (public-key) atau dapat
diketahui siapa saja, tapi untuk proses dekripsinya hanya dapat dilakukan oleh yang
berwenang yang memiliki kunci rahasia untuk mendekripsinya, disebut private key. Pada
Gambar 1 dijelaskan bagaimana skema enkripsi dan dekripsi Algoritma Kriptografi
Asimetris.
Gambar 1. Algoritma Kriptografi Asimetris
Sejarah RSA
Sandi RSA merupakan algoritma kriptografi kunci publik (asimetris). Ditemukan
pertama kali pada tahun 1976/1977 oleh Ron Rivest, Adi Shamir, dan Len Adleman. Nama
RSA sendiri diambil dari ketiga penemunya tersebut. Sebagai algoritma kunci publik, RSA
mempunyai dua kunci, yaitu kunci publik dan kunci rahasia. Keamanan algoritma RSA
terletak pada sulitnya memfaktorkan bilangan bulat yang besar menjadi factor=factor prima.

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)

Penurunan Rumus RSA


- Prisip: Teorema Euler a(n)= 1 (mod n)
- Syarat:
1. A harus relative prima terhadap n
2. (n) = Toitent Euler = fungsi yang menentukan berapa banyak dari bilangan -
bilangan 1,2,3,…,n yang relatif prima terhadap n.
Contoh : (20) = 8, sebab terdapat 8 buah yang relative 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) = (q)
= (p-1)(q-1).

a(n) ≡ 1 (mod n)
(pangkat dua ruas dengan k)
k(n)
a ≡ 1k (mod n)

ak(n) ≡ 1 (mod n) (ganti a dengan m)


mk(n) ≡ 1 (mod n) (kalikan kedua ruas dengan m)
mk(n)+1 ≡ m (mod n)
- Misalkan e dan d dipilih sedemikian sehingga

e.d ≡ 1 (mod (n)) atau e.d ≡ k(n)+1


Maka,
mk(n)+1 ≡ m (mod n)
me.d ≡ m (mod n) atau (me)d ≡ m (mod n)

- Enkripsi: Ee(m)= c = me mode n


- Deskripsi: Dd(c) = m = cd mode n
Penurunan Pembangkitan Sepasang Kunci
1. Pilih dua bilangan prima, p dan q
2. Hitung n = pq
3. Hitung (n) = (p-1)(q-1)
4. Pilih sebah bilangan bulat e seabgai kunci public, e harus relative prima terhadap (n)
5. Hitung kunci dekripsi d, dengan persamaan
ed = 1 (mod (n)) atau d ≡ e-1 mod ((n))
Hasil dari Algoritma di atas:
- Kunci public adalah pasangan (e,n)
- Kunci privat adalah pasangan (d,n)
Enkripsi
1. Nyatakan pesan menjadi blok-blok plainteks : m1, m2, m3….
(syarat: 0≤ mi < n- 1)
2. Hitunglah blok cipherteks ci untuk blok plainteks mi menggunakan kunci public e
dengan persamaan
ci = mie mod n
Dekripsi
1. Misalkan blok-blok cipherteks adalah c1, c2, c3….
2. Hitunglah kembali blok plainteks mi dari blok cipherteks ci menggunakan kunci privat
d dengan persamaan
mi = cid 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:

Dengan mencoba nilai-nilai k = 1, 2, 3, …, diperolah nilai d yang bulat adalah 1019.


Ini adalah kunci privat (untuk deskripsi).
- Misalkan Bob akan mengirim plainteks M = ‘HELLO ALICE’ kepada Alice
- Dengan memisalkan A = 00, B = 01, C = 02 …, Z = 25, maka pesan m dikodekan ke
dalam integer (spasi siabaikan ) menjadi
M = 07041111140011080204
Pecah M menjadi blok yang 4 digit:

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.

Anda mungkin juga menyukai