rsa

10
TUGAS KRIPTOGRAFI PENYANDIAN KUNCI ASIMETRIS “RSA” Disusun oleh : Aditya Wiyanto ( M0508080 ) Ahmad Aniq N M ( M0508082 ) Andreas Dony M S ( M0508084 ) Program Studi Teknik Informatika Fakultas Matematika dan Ilmu Pengetahuan Alam UNIVERSITAS SEBELAS MARET 2010

Upload: andreasstiawan

Post on 27-Jun-2015

453 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: RSA

TUGAS KRIPTOGRAFI

PENYANDIAN KUNCI ASIMETRIS

“RSA”

Disusun oleh :

Aditya Wiyanto ( M0508080 )

Ahmad Aniq N M ( M0508082 )

Andreas Dony M S ( M0508084 )

Program Studi Teknik Informatika

Fakultas Matematika dan Ilmu Pengetahuan Alam

UNIVERSITAS SEBELAS MARET

2010

RSA

1. Penjelasan Singkat

Page 2: RSA

Sandi RSA merupakan algoritma kriptografi kunci public (asimetris). Ditemukan

pertama kali pada tahun 1977 oleh R. Rivest, A. Shamir, dan L. Adleman. Nama

RSA sendiri diambil dari ketiga penemunya tersebut.

Sebagai algoritma kunci publik, RSA mempunyai dua kunci, yaitu kunci publik

dan kunci rahasia. Kunci publik boleh diketahui oleh siapa saja, dan digunakan untuk

proses enkripsi. Sedangkan kunci rahasia hanya pihak-pihak tertentu saja yang

boleh mengetahuinya, dan digunakan untuk proses dekripsi. Keamanan sandi RSA

terletak pada sulitnya memfaktorkan bilangan yang besar. Sampai saat ini RSA

masih dipercaya dan digunakan secara luas di internet.

Gambar 1. Skema Algoritma Kunci Publik

Sandi RSA terdiri dari tiga proses, yaitu proses pembentukan kunci, proses

enkripsi dan proses dekripsi. Sebelumnya diberikan terlebih dahulu beberapa

konsep perhitungan matematis yang digunakan RSA.

2. Dasar Teori

a. Konsep Dasar Perhitungan Matematis

Fungsi Phi-Euler

Fungsi Phi-Euler φ(n) merupakan fungsi terhadap bilangan bulat positif n

yang menyatakan banyaknya elemen ℤn yang mempunyai invers terhadap

operasi pergandaan. Ingat bahwa ℤn belum tentu merupakan grup terhadap

operasi pergandaan. Dengan kata lain, φ(n) adalah banyaknya elemen {x, 0 ≤

x < n | gcd(x,n) = 1}. Jika n = pq dengan p dan q adalah bilangan prima, maka

φ(n) = (p -1)(q -1). Jika n adalah bilangan prima, maka φ(n) = n -1.

Algoritma Euclide

Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar

dari dua bilangan bulat. Algoritma ini didasarkan pada pernyataan berikut ini.

Page 3: RSA

Diberikan bilangan bulat r0 dan r1, dengan r0 ≥ r1, kemudian dihitung

menggunakan algoritma pembagian :

r0 = q1r1 + r2, 0 < r2 < r1

r1 = q2r2 + r3, 0 < r3 < r2

...

rn-2 = qn-1rn-1 + rn, 0 < rn < rn-1

rn-1 = qnrn,

Dari pernyataan di atas, dapat ditunjukkan bahwa :

gcd(r0, r1) = gcd(r1, r2) = ... = gcd(rn-1, rn) = gcd(rn,0) = rn.

Contoh : Akan dihitung gcd(40 , 24)

Jawab :

75 = 1.24 + 16 n = 1, r1 = 24 , q1 = 1

24 = 1.16 + 8 n = 2, r2 = 16 , q2 = 1

16 = 2.8 n = 3, r3 = 8 , q3 = 2

Jadi, gcd(40 , 24) = 8

Algoritma Euclide Diperluas

Algoritma ini merupakan perluasan dari algoritma Euclide (Extended

Euclidean Algorithm), digunakan untuk mencari invers terhadap operasi

pergandaan. Algoritma ini didasarkan pada pernyataan berikut. Diberikan

bilangan bulat positif r0 dan r1, r0 > r1. Jika gcd(r0, r1) = 1, maka r1-1 mod r0 ada.

Jika gcd(r0, r1) ≠ 1, maka r1-1 mod r0 tidak ada. Gunakan rumus rekurensi

berikut ini.

t0 = 0, t1 = 0

tj = tj-2 - qj-1tj-1, j ≥ 2 ....................... (1)

Ket : qj diperoleh dari perhitungan gcd(r0, r1) menggunakan algoritma Euclide.

Jika gcd(r0, r1) = 1, berarti r1-1 = tn. Sehingga rn = tnr1 atau 1 = tnr1.

Metode Fast Exponentiation

Page 4: RSA

Metode ini digunakan untuk menghitung operasi pemangkatan besar

bilangan bulat modulo dengan cepat. Metode ini memanfaatkan ekspansi

biner dari eksponennya dan didasarkan pada pernyataan berikut ini :

g2i+1

=(g2i )2

Untuk lebih jelasnya mengenai langkah-langkah metode fast exponentiation,

perhatikan contoh berikut ini.

Contoh : Akan dihitung 673 mod 100.

Jawab :

73 = 1.26 + 1.23 + 1.20 atau 73 = (1001001)2.

(semua perhitungan dilakukan dalam mod 100)

620

= 6, 621

= 36, 622

= 362 = 96, 623

= 16,

624

= 162 = 56, 625

= 562 = 36, 626

= 562 = 96 .

Sehingga diperoleh:

673 = 6 . 623

. 626

= 6 . 16 . 96 = 16.

Jadi, 673 mod 100 = 16.

b. Pembentukan / Pembangkitan Kunci

Berikut ini adalah proses pembentukan kunci. Proses ini dilakukan oleh

pihak penerima, dalam hal ini adalah B.

(1) Pilih bilangan prima p dan q.

(2) Hitung n = pq .

(3) Hitung φ(n) = ( p -1)(q -1) .

(4) Pilih sebarang bilangan b, 1 < b < φ(n), dengan gcd(b , φ(n)) = 1.

(5) Hitung invers dari b, yaitu a = b-1 mod φ(n) .

(6) Kunci publik: (n, b) dan kunci rahasia: a.

Agar mempermudah dalam memahami sandi RSA, khusus pada tulisan

ini, plainteks yang digunakan hanya berupa bilangan 0 s/d 25 yang

berkorespondensi dengan huruf a s/d z. Akan tetapi pada penggunaan yang

sebenarnya, digunakan korespondensi khusus seperti kode ASCII, serta

bilangan-bilangan yang sangat besar. Perhatikan, dalam pemilihan p dan q harus

memenuhi n = pq lebih dari atau sama dengan nilai plainteks yang mungkin.

Dalam hal ini n = pq ≥ 25 .

Page 5: RSA

Gambar 2. Tabel Korespondensi

c. Enkripsi

Berikut ini adalah proses enkripsi RSA. Dilakukan oleh pihak pengirim,

dalam hal ini adalah A. Seluruh perhitungan pemangkatan bilangan modulo

dilakukan menggunakan metode fast exponentiation.

(1) Ambil kunci publik (n,b).

(2) Pilih plainteks m, dengan 0 ≤ m ≤ n-1.

(3) Hitung c = mb mod n .

(4) Diperoleh cipherteks c, dan kirimkan kepada B.

d. Dekripsi

Berikut ini adalah proses dekripsi RSA. Dilakukan oleh pihak penerima

cipherteks, yaitu B.

(1) Ambil kunci publik (n,b) dan kunci rahasia a.

(2) Hitung m = ca mod n .

3. Penerapan dan Penyelesaian

Dalam bagian ini akan dilakukan penerapan dari langkah-langkah algoritma RSA di

atas dengan contoh soal : A ingin mengirimkan pesan kepada B. Misalkan plaintext-

nya “KRIPTO” dengan memilih bilangan prima p = 5 dan q = 11, sehingga n = 55

Page 6: RSA

dan φ(55) = (5 -1)(11-1) = 4.10 = 40. Berikut ini adalah langkah-langkah

penyelesaiannya :

a. Pendefinisian / Pembangkitan Kunci

B memilih sembarang bilangan b, 1 < b < φ(n), dengan gcd(b , φ(n)) = 1. Dalam

hal ini diambil b = 13 dengan syarat gcd(b , φ(n)) = gcd(13 , 40) = 1. Bila belum

memenuhi syarat maka dicari nilai b lainnya dengan batas 1 < b < 40. Berikut

langkah pembuktian syaratnya :

40 = 3.13 + 1 n = 1, r1 = 13 , q1 = 3

13 = 13.1 n = 2, r2 = 1 , q2 = 13

Jadi, gcd(40 , 13) = 1

Karena gcd(40 , 13) = 1, maka invers-nya / a = b-1 mod φ(n) = 13-1 mod 40 ada

atau memiliki nilai. Berikut perhitungannya :

t0 = 0, t1 = 1

t2 = t0 – q1t1 = 0 - 3.1 = -3 = 37

t3 = t1 – q2t2 = 1 - 13.(-3) = 38]

Diambil r2 sebagai acuan karena memiliki nilai 1

r2 = t2r1 = 37.13 mod 40 = 1 ↔ 37 = 13-1

Dari hasil terakhir di atas, diperoleh 13-1 mod 40 = 37.

Sehingga di dapat kunci public dan kunci private-nya, yaitu :

Kunci Public → (n,b) = (55,13) → (dikirimkan ke A)

Kunci Private → (n,a) = (55,37) / a = 37 → (disimpan oleh B)

b. Enkripsi

Sebelum dilakukan enkripsi ubah plainteks dalam bentuk angka sesuai dengan

tabel korespondensi sebelumnya, berikut pengubahannya :

Plain : K R I P T O

Angka: 10 17 8 15 19 14

m1 m2 m3 m4 m5 m6

Page 7: RSA

Selanjutnya dilakukan perhitungan c = mb mod n oleh A dengan kunci public

yang telah dibangkitkan B pada tiap plaintext m dengan cara metode fast

exponentiation :

c1 = m1b mod n = 1013 mod 55 = 10

Cara perhitungan :

13 = 1.23 + 1.22 + 1.20 atau 13 = (1101)2.

(semua perhitungan dilakukan dalam mod 55)

1020

= 10, 1021

= 45, 1022

= 452 = 45, 1023

= 45,

Sehingga diperoleh:

1013 = 10 . 1022

. 1023

= 10 . 45 . 45 = 10.

Jadi, 1013 mod 55 = 10.

Cara itu berlaku untuk plaintext lainnya sehingga didapat hasilnya :

c2 = m2b mod n = 1713 mod 55 = 7

c3 = m3b mod n = 813 mod 55 = 28

c4 = m4b mod n = 1513 mod 55 = 20

c5 = m5b mod n = 1913 mod 55 = 39

c6 = m6b mod n = 1413 mod 55 = 49

Sehingga, didapatkan cipherteksnya adalah 10-7-28-20-39-49. Selanjutnya A

mengirimkan cipherteks ini kepada B untuk di-dekripsi.

c. Dekripsi

Setelah B memperoleh cipherteks dari A, yaitu 10-7-28-20-39-49, maka diambil

kunci rahasia a = 37 untuk di-dekripsi menggunakan perhitungan m = ca mod n

pada tiap ciphertext m dengan cara metode fast exponentiation :

m1 = c1a mod n = 1037 mod 55 = 10

m2 = c2a mod n = 737 mod 55 = 17

m3 = c3a mod n = 2837 mod 55 = 8

m4 = c4a mod n = 2037 mod 55 = 15

Page 8: RSA

m5 = c5a mod n = 3937 mod 55 = 19

m6 = c6a mod n = 4937 mod 55 = 14

Diperoleh plainteks 10-17-8-15-19-14, kemudian dilakukan korespondensi ke

dalam bentuk abjad dengan table korespondensi sebelumnya :

m1 m2 m3 m4 m5 m6

Angka: 10 17 8 15 19 14

Plain : K R I P T O

Dari hasil korespondesi di atas didapat hasil dekripsinya sama dengan plaintext

sebelumnya yaitu ”KRIPTO”.

4. Kesimpulan

Algoritma kunci publik seperti sandi RSA, baik digunakan untuk mengatasi

masalah distribusi kunci, dan apabila jalur komunikasi yang digunakan tidak

aman.

Untuk menembus keamanan RSA, pihak penyerang cukup hanya dengan

memfaktorkan nilai n menjadi p dan q yang sesuai dengan kunci publik.

Untuk memperkuat tingkat keamanan, sebaiknya digunakan / dipilih bilangan

prima p dan q yang besar, sehingga pihak penyerang akan kesulitan dan

membutuhkan waktu yang sangat lama untuk memfaktorkan n, dan tidak

sepadan dengan nilai informasi yang dicari.