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