Analisis Sistem Enkripsi dan Dekripsi dengan Algoritma RSA

BAB 3 ANALISIS DAN PEMODELAN PERANGKAT LUNAK

3.1 Analisis Sistem Enkripsi dan Dekripsi dengan Algoritma RSA

Algoritma RSA merupakan salah satu algoritma kunci publik. Prinsip kerja algoritma RSA terletak pada sulitnya memfaktorkan bilangan yang besar yang menjadi faktor- faktor prima. Pemaktoran dilakukan untuk mendapatkan kunci privat. Selama bilangan tersebut tidak dapat difaktorkan selama itu pula keamanan algoritma RSA terjamin. Dalam algoritma RSA, ada tiga proses yang harus dilakukan yaitu: peroses pembangkitan kunci, proses enkripsi dan proses dekripsi.

3.1.1 Pembangkitan Kunci

Dalam proses pembangkitan kunci yang menjadi masalah utamanya adalah bagaimana menghasilkan kunci yang tidak dapat diprediksi. Ada berbagai metode yang dapat digunakan untuk menghasilkan sebuah bilangan prima yang besar. Pembangkitan kunci pada sistem ini menggunakan dua algoritma, yaitu CSPRNG berbasis RSA dan Algoritma lehmann.

3.1.1.1 CSPRNG Berbasis RSA

Pembangkit bilangan acak yang dapat menghasilkan bilangan yang tidak dapat diperdiksi oleh pihak lawan yang cocok untuk kriptografi: pembangkit tersebut dinamakan cryptographically secure pseudorandom generator CSPRNG . Perancanangan CSPRNG dapat dibagi kedalam beberapa kelompok. Dalam hal ini kita menggunakan perancangan CSPRNG berbasis teori bilangan. Contoh dua CSPRNG yang berdasarkan teori bilangan adalah Blum Blum Shut dan modifikasi RSA Munir,2006. Dalam penulisan CSPRNG yang digunakan adalah CSPRNG berbasis RSA. Algoritma pembangkit bilangan acak berbasis RSA adalah sebagai berikut: Universitas Sumatera Utara 6. Pilih 2 bilangan prima rahasia, p dan q, dan bilangan bulat e yang relatif prima dengan p-1q-1. 7. Kalikan keduanya menjadi n = pq 8. Pilih bilangan acak lain, s, sebagai x 9. Barisan bit acak dihasilkan dengan melakukan itersai berikut sepanjang yang diinginkan: yang dalam hal ini 2 ≤ s ≤ n. c. Hitung x i = x i - 1 e mod n dengan x d. Z = s. i = bit LSB Least Significant Bit dari x 10. Barisan bit acak adalah z i. 1, z 2, z 3, .... Sebagai contoh untuk menemukan bilangan acak berbasis RSA, yaitu: Misal p = 11 dan q = 5 N = p.q = 11.5 =55 E3, or S =3 X x = 3 i = x i - 1 e = 3 3 x mod 55 = 27 2 = 27 3 x mod 55 = 48 3 = 48 3 x mod 55 =42 4 = 42 3 karena x mod 55 = 3 4 = x 1 z berarti dilakukan pengulangan setelah 3 kali i z mod 2 1 z = 27 mod 2 = 1 2 = z 48 mod 2 = 0 3 z = 3 mod 2 = 1 4 karena z = 27 mod 2 = 1 4 = z 1 jadi baris acak yang dihasilkan maka pengulangan dilakukan setelah 3 kali 1011 0110 1101 1011 0101 dan seterusnya, kemudian dikonversikan ke bilangan desimal 11 6 13 11 5 ... Universitas Sumatera Utara

3.1.1.2 Algoritma Lehman

Salah satu metode yang dapat digunakan adalah dengan metode Lehmann. Algoritma penentuan bilangan prima yang digunakan adalah sebagai berikut : Dari hasil bilangan acak p = 11 Apakah 11 adalah bilangan prima? 1. a = 3 2. L = 3 11-12 = 3 mod 11 5 = 243 mod 11 mod 11 = 1 mungkin prima 3. a = 2 L = 2 5 = 32 mod 11 mod 11 = 10-11 = -1 yakin Jadi 11 adalah bilangan prima dan secara otomatis maka 11 menjadi nilai p. hal yang sama juga dilakukan untuk mencari nilai q. Dari proses ini kita akan mendapatkan pembangkit kuncinya yang akan digunakan dalam proses enkripsi dan deskripsi. Algoritmanya pembangkitan kuncinya adalah sebagai berikut : 1. Pilih p dan q, dimana p dan q adalah bilangan prima dan nilai p dan q tidak sama. 2. Hitung n = p.q 3. Hitung φn = p-1q-1 4. Pilih integer e, dimana gcd φn, e = 1; 1 e φn 1. Ambil sembarang 1 a p 2. Hitung simbol Legendre � � = L = a p-12 3. Bila L ≠ 1 dan L ≠ -1 maka p bukan bilangan prima mod p 4. Bila L = 1 atau L = -1 maka p kemungkinan besar bilangan prima Universitas Sumatera Utara 5. Hitung d, dimana d = 1+k .φn e dengan nilai k merupakan bilangan bulat positif yang menghasilkan nilai dyang merupakan bilangan bulat positif. 1. Nilai p dan q yang diperoleh dari perhitungan bilangan acak CSPRNG berbasis RSA dan telah melalui proses uji prima dengan algoritma Lehmann. Sifat dari kedua bilangan ini adalah rahasia. Ini berarti hanya pihak pengirim dan penerima saja yang mengetahuinya. Misalnya: Nilai p = 11, q = 13 2. Hitungn = p.q, sehingga nilai n = 11 x 13 adalah 143 3. Hitung φn = p-1q-1, sehingga nilai φn = 11-113-1 adalah 120 4. Pembangkitan kunci ekripsi e dimana e relatif prima terhadap φn. Nilai GCD φn, e harus bernilai 1. Untuk menentukan nilai kunci publik e yang relatif prima terhadap φn dapat ditunjukkan pada perhitungan dibawah ini. Jadi, nilai dari kunci publik e yang diperoleh adalah 7. 5. Hitung kunci dekripsi d dengan menggunakan persamaan � = 1+k .φn e Nilai k dapat dihitung dengan mencoba nilai-nilai = 1,2,3,4...sehingga diperoleh nilai d bilangan bulat. Mulai dari Nilai GCD120, e e = 2 120 mod 2 = 0 GCD2, 120 = 2 e = 3 120 mod = 0 GCD3, 120 = 3 e = 4 120 mod 4 = 0 GCD4, 120 = 4 e = 5 120 mod 5 = 0 GCD5, 120 = 5 e = 6 120 mod 6 = 0 GCD6, 120 = 6 e = 7 120 mod 7 = 6 7 mod 6 = 1 6 mod 1 = 0 GCD7, 120 = 1 Universitas Sumatera Utara Nilai k Persamaan � = 1+k .φn e Hasil 1 � = 1 + 1 . 120 7 17,2857142857 2 � = 1 + 2 .120 7 34,4205714286 3 � = 1 + 3 . 120 7 51,5714285714 4 � = 1 + 4 . 720 7 68,7148571485 5 � = 1 + 5 . 120 7 85,8571428571 6 � = 1 + 6. 120 7 103 Jadi, nilai dari kunci dekripsi d yang diperoleh adalah 103

3.1.2 Enkripsi

Proses enkripsi merupakan proses untuk mengubah plainteks menjadi cipherteks. Algoritma proses enkripsi adalah sebagai berikut: 1. Penentuan kunci enkripsi e dan modulus n dari pesan dengan terlebih dahulu melakukan proses pembangkitan kunci sehingga mendapatkan nilai e = 7 dan nilai n = 143. 2. Input plaintext yang akan disandikan. Contohnya: HELP GlupGlup. menggunakan tabel AACII. Dari tabel ASCII diperoleh hasil sebagai berikut. Pesan teks = P Kunci Publik = {e, n} Enkripsi : C i = P i e mod n dimana C i adalah ciphernumber ke i Universitas Sumatera Utara P 1 =72 P 2 =69 P 3 =76 P 4 =80 P 5 =33 P 6 P =33 7 =33 P 8 =65 P 9 =71 P 10 =117 P 11 =108 P 12 P = 112 13 =71 P 14 =117 P 15 =108 P 16 3. Setiap hasil yang diperoleh akan dienkripsi menjadi blok C =112 i C dengan rumus i = P i e Pada tahap ini pengirim memberikan kunci ke pada penerima yaitu e = 7 dan nilai n =143. Pengirim melakukan enkripsi setiap blok pesan sebagai berikut: mod n P Cipherteks i C i = P i e mod n 72 19 69 108 76 54 80 141 33 110 33 110 33 110 65 65 71 124 108 4 117 39 112 18 71 124 108 4 117 39 112 18 4. Jadi, hasil dari enkripsi atau cipherteks yang akan dikirimkan ke penerima adalah 19-108-54-141-110-110-110-65-124-4-39-18-124-4-39-18. Universitas Sumatera Utara

3.1.3 Dekripsi

Proses dekripsi merupakan proses untuk mengubah cipherteks menjadi plainteks. Proses dekripsi dapat dilakukan dengan menggunakan kunci yang telah diperoleh.Algoritma proses dekripsi adalah sebagai berikut: Cipherteks = C Enkripsi : P= C d mod n 1. Setiap blok ciphertext didekripsi kembali menjadi blok P i dengan rumus P i = C i d Dekripsi dilakukan dengan menggunakan kunci d = 103, kemudian blok-blok ciphertext yang diterima didekripsikan sebagai berikut: mod n. C Plaintext i P i = C i d mod n 19 72 108 69 54 76 141 80 110 33 110 33 110 33 65 65 124 71 4 108 39 117 18 112 124 71 4 108 Universitas Sumatera Utara 39 117 18 112 2. Semua hasil cipherteks yang diperoleh pada proses dekripsi akan diubah kembali menjadi plainteks dengan mencocokkan karakter yang ada pada tabel ASCII. Bilangan Karakter Sesuai ASCII 72 H 69 E 76 L 80 P 33 33 33 65 spasi 71 G 108 l 117 u 112 p 71 G 108 l 117 u 112 p 3. Jadi bentuk plainteks yang diperoleh adalah HELP GlupGlup.

3.2 Pemodelan Use Case Diagram