• Tidak ada hasil yang ditemukan

4.1. Implementasi

Dalam penelitian ini, sistem dibangun dengan menggunakan bahasa pemrograman C#

dan Software (Perangkat Lunak) yang digunakan adalah SharpDevelop 4.4. Sistem yang diimplemetasikan ialah menggunakan algoritma ElGamal dan Spritz Cipher yang terdiri dari empat halaman interface.

4.1.1. Halaman Utama

Ketika user menjalankan sistem maka akan tampil halaman utama. Tampilan halaman utama dapat dilihat pada gambar 4.1., di mana terdapat tampilan halaman berupa beberapa tombol yaitu tombol enkripsi, dekripsi, pengujian file dan tentang penulis.

Gambar 4.1. Tampilan Halaman Utama

4.1.2. Halaman Tentang

Halaman ini berisi informasi mengenai judul penelitian, logo fakultas serta nama dan nim penulis, pada halaman ini juga terdapat tombol untuk kembali ke halaman utama.

Interface halaman ini dapat dilihat pada gambar 4.2.

Gambar 4.2. Tampilan Halaman Tentang

4.1.3. Halaman Enkripsi

Pada halaman ini pengguna dapat melakukan enkripsi pesan dan juga pembangkitan kunci. Enkripsi dilakukan dengan metode hibrida di mana pesan yang akan dikirim dienkripsi terlebih dahulu dengan Spritz Cipher lalu kunci hasil enkripsi dienkripsi kembali dengan public key hasil pembangkitan kunci ElGamal. Ciphertext dan Cipherkey hasil enkripsi akan disimpan dan waktu proses enkripsi pesan dan enkripsi kunci simetris dihitung dalam milisecond. Halaman enkripsi ditunjukkan pada gambar 4.3.

Gambar 4.3. Tampilan Halaman Enkripsi

4.1.4. Halaman Dekripsi

Pada halaman ini pengguna dapat melakukan dekripsi pesan agar pesan yang telah diterima dapat dibaca. Cipherkey yang diterima lalu diinput dan dilakukan proses dekripsi menggunakan algoritma ElGamal dan kunci hasil dekripsi akan digunakan untuk mendekripsi ciphertext menggunakan algoritma Spritz Cipher. Setelah dekripsi berhasil maka pesan kembali ke bentuk semula dan dapat dibaca. Tampilan halaman dekripsi dapat dilihat pada gambar 4.4.

Gambar 4.4. Tampilan Halaman Dekripsi

4.2. Pengujian

Pengujian dilakukan untuk mengetahui apakah sistem sudah berjalan dengan baik dalam melakukan enkripsi maupun dekripsi menggunakan algoritma ElGamal dan Spritz Cipher dengan metode hibrida. Kriteria pengujian sistem adalah :

1. Plaintext berupa file berekstensi .docx yang diinput oleh pengguna.

2. Ciphertext hasil enkripsi yang disimpan dalam bentuk file yang berekstensi .docx dan plaintext hasil dekripsi yang disimpan dalam bentuk file berekstensi .docx.

3. Menganalisa waktu enkripsi dan dekripsi pada pengamanan file teks dalam millisecond.

4. Menganalisa ukuran (besar data) pada ciphertext hasil enkripsi dalam kilobyte.

4.2.1. Pengujian Pembangkitan Kunci

Sebelum melakukan proses enkripsi, proses pembangkitan kunci harus dilakukan terlebih dahulu. Hasil pembangkitan kunci akan digunakan pada proses enkripsi maupun dekripsi. Untuk melakukan proses ini, user menekan tombol Generate agar nilai p, alpha, d dan beta dapat dihasilkan. Pembangkit kunci yang dihasilkan oleh sistem dapat dilihat pada Gambar 4.5.

Gambar 4.5. Hasil nilai pembangkitan kunci

Nilai yang didapat pada pembangkitan kunci dibagi menjadi dua bagian yaitu Public Key (𝑃 = 941, = 92, dan Ξ² = 544) dan Privat Key (𝑃 = 941 dan d = 44).

Maka dilakukan perhitungan untuk menguji apakah bilangan yang diambil sesuai dengan rumus seharusnya.

1. Bilangan Prima P = 941, diuji menggunakan teorema Agrawal Biswas : Tentukan nilai acak bilangan bulat X, dengan syarat 4< X< βˆ’ 2.

Contoh X = 350.

a. Lakukan perhitungan :

(1 + X)p mod p = (1 + 350)941 mod 941

= 351 b. Selanjutnya hitung :

(1 + Xp mod p) mod p = (1 + 350941 mod 941) mod 941

= (1 + 350) mod 941

= 351

Perhitungan pertama dan perhitungan kedua menghasilkan nilai yang sama, sehingga terbukti 941 merupakan bilangan prima.

2. Menguji Elemen Primitif =92 470 Hitung : Ξ±2 mod p = 922 mod 941

= 8464 mod 941

= 936

Ξ±q mod p = 92470 mod 941

= 940

Terbukti = 92 merupakan elemen primitif karena Ξ±2 π‘šπ‘œπ‘‘ 11 β‰ 1 dan Ξ±q π‘šπ‘œπ‘‘

β‰ 1.

3. Menguji bilangan 544 Nilai = 44

= Ξ±d mod p

= 9244 mod 941

= 544

Terbukti, nilai Ξ² yang dihasilkan sesuai dengan perhitungan oleh sistem.

Maka, berdasarkan perhitungan di atas dihasilkan Public Key (p,Ξ±,Ξ²) = (941,92,544) dan Private Key (p,d) = (941, 44).

4.2.2. Pengujian Enkripsi Spritz Cipher

Setelah melakukan proses pembangkitan kunci, maka selanjutnya user melakukan proses enkripsi. Pada pengujian enkripsi, file yang akan dienkripsi diinputkan dari penyimpanan dengan cara menekan tombol Browse. Kemudian user memasukkan kunci yang akan digunakan untuk proses enkripsi. Selanjutnya user menekan tombol Enkripsi Spritz dan sistem akan menampilkan ciphertext hasil enkripsi pada richtextbox. Kemudian menekan tombol Save File untuk menyimpan ciphertext. Hasil pengujian enkripsi Algoritma Spritz Cipher ditunjukkan pada gambar 4.6.

Gambar 4.6. Hasil Enkripsi Spritz Cipher

Perhitungan dilakukan dengan menggunakan kode ASCII (American Standard Code For Information Intercharge) 256 karakter (8 bit). Plaintext yang digunakan adalah file berisi karakter β€œstring” dan kunci yang dimasukkan user adalah β€œridho”.

Plaintext = [s t r i n g]

Key = [r i d h o] = [114 105 100 104 111] (dalam nilai ASCII) Key akan di-generate dengan Key Scheduling Algorithm (KSA)

1. i = 0 to 255 S[i]:= i

S = [0, 1, 2, …, 255]

2. j = 0

3. j = [(j + S[i] + key[i mod keylength]) mod 256]

j = [(0 + S[0]+ key[0 mod 5]) mod 256]

j = [(0 + 0 + key[0]) mod 256]

j = [(0 + 0 + 114) mod 256]

j = [114 mod 256]

j = 114

4. Swap (S[i], S[j]) Swap (P[0], P[114]) Swap (0, 114)

3. j = [(j + S[i] + key[i mod keylength]) mod 256]

j = [(114 + S[1]+ key[1 mod 5]) mod 256]

j = [(114 + 1 + key[1]) mod 256]

j = [(114 + 1 + 105) mod 256]

j = [220 mod 256]

Tabel 4.1. Larik 256 byte hasil perhitungan key scheduling

Plaintext = [s t r i n g]

Plaintext = [115 116 114 105 110 103] (dalam nilai ASCII)

Plaintext akan di-generate dengan Pseudo-Random Generation Algorithm (PRGA)

Nilai random w = 153

i = i + w = 0 + 153 mod 256

= 153

j = k + S[j + S[i]] = 0 + S[0 + S[153]] mod 256

= 0 + S[0 + 100] mod 256

= 0 + S[100] mod 256

= 0 + 107 mod 256

= 107

k = i + k + S[j] = 153 + 0 + S[107] mod 256

= 153 + 0 + 69 mod 256

= 222

S[i] , S[j] = S[i] = S[153] = 100, S[j] = S[107] = 69 Swap S[i] with S[j] = S[i] = S[153] = 69, S[j] = S[107] = 100 z = S[j + S[i + S[z+k]]] = S[107 + S[153 + S[256 + 222]]] mod 256

= S[107 + S[153 + S[222]]] mod 256

= S[107 + S[153 + 99]] mod 256

= S[107 + S[252] mod 256

= S[107 + 188] mod 256

= S[39]

= 139

Lakukan operasi XOR pada karakter plaintext dengan nilai akhir perhitungan.

115 = 01110011 139 = 10001011

= 11111000 = 2 (dalam nilai ASCII)

i = i + w = 153 + 153 mod 256

= 50

j = k + S[j + S[i]] = 222 + S[107 + S[50]] mod 256

= 222 + S[107 + 200] mod 256

= 222 + 100 mod 256

Lakukan operasi XOR pada karakter plaintext dengan nilai akhir perhitungan.

116 = 01110100

= S[230 + S[130] mod 256

= S[230 + 205] mod 256

= S[179]

= 226

Lakukan operasi XOR pada karakter plaintext dengan nilai akhir perhitungan.

114 = 01110010 226 = 11100010

= 10010000 = (dalam nilai ASCII)

i = i + w = 203 + 153 mod 256

= 100

j = k + S[j + S[i]] = 208 + S[203 + S[100]] mod 256

= 208 + S[203 + 107] mod 256

= 208 + S[54] mod 256

= 208 + 216 mod 256

= 168

k = i + k + S[j] = 100 + 208 + S[168] mod 256

= 100 + 208 + 145 mod 256

= 197

S[i] , S[j] = S[i] = S[100] = 107, S[j] = S[168] = 145 Swap S[i] with S[j] = S[i] = S[100] = 145, S[j] = S[168] = 107 z = S[j + S[i + S[z+k]]] = S[168 + S[100 + S[226 + 197]]] mod 256

= S[168 + S[100 + S[167]]] mod 256

= S[168 + S[100 + 136]] mod 256

= S[168 + S[236] mod 256

= S[168 + 36] mod 256

= S[204]

= 229

Lakukan operasi XOR pada karakter plaintext dengan nilai akhir perhitungan.

105 = 01101001 229 = 11100101

= 10001100 = (dalam nilai ASCII)

i = i + w = 100 + 153 mod 256

Lakukan operasi XOR pada karakter plaintext dengan nilai akhir perhitungan.

110 = 01101110

S[i] , S[j] = S[i] = S[150] = 39, S[j] = S[159] = 133 Swap S[i] with S[j] = S[i] = S[150] = 133, S[j] = S[159] = 39 z = S[j + S[i + S[z+k]]] = S[159 + S[150 + S[101 + 54]]] mod 256

= S[159 + S[150 + S[155]]] mod 256

= S[159 + S[150 + 37]] mod 256

= S[159 + S[187] mod 256

= S[159 + 211] mod 256

= S[114]

= 70

Lakukan operasi XOR pada karakter plaintext dengan nilai akhir perhitungan.

103 = 01100111 70 = 01000110

= 00100001 = (dalam nilai ASCII)

Plaintext = [s t r i n g]

Plaintext = [115 116 114 105 110 103] (dalam nilai ASCII)

Plaintext = [01110011, 01110100, 01110010, 01101001, 01101110, 01100111]

Keystream = [139 89 226 229 101 70]

Keystream = [10001011, 01011001, 11100010, 11100101, 01100101, 01000110]

Ciphertext = Plaintext XOR Keystream

Ciphertext = [00010110, 00101101, 10010000, 10001100, 00001011, 00100001]

Ciphertext = [248 45 144 140 11 33] (dalam nilai ASCII)

4.2.3. Pengujian Enkripsi Algoritma ElGamal

Kunci publik hasil pembangkitan kunci digunakan dalam melakukan enkripsi algoritma ElGamal. Pada tahap ini, user menekan tombol Enkripsi Elgamal untuk melakukan enkripsi kunci Spritz Cipher. Kemudian sistem akan menampilkan hasil enkripsi pada textbox C1 dan C2. Selanjutnya menekan tombol Save Key untuk menyimpan hasil enkripsi. Hasil proses enkripsi Algoritma ElGamal ditunjukkan pada gambar 4.7.

Gambar 4.7. Hasil Enkripsi Algoritma ElGamal

Karakter kunci yang dimasukkan user pada tahap sebelumnya yaitu β€œridho”

akan digunakan dalam proses enkripsi dengan cara diubah ke dalam bentuk ASCII dan kemudian dienkripsi menggunakan Public Key yang telah dibangkitkan sebelumnya pada tahap pembangkitan kunci.

Key = [r i d h o]

Key= [114 105 100 104 111] (dalam nilai ASCII) Kunci public (p, Ξ±, Ξ²) = (941, 92, 544).

a. Enkripsi β€œr” [114] (dalam nilai ASCII) 1. Tentukan bilangan asli r < p-1. (r = 100) 2. Hitung, C1 = Ξ±r mod p

= 92100 mod 941

= 339

C2= P1 x Ξ²r mod p

= 114 x 544100 mod 941

= 431

b. Enkripsi β€œi” [105] (dalam nilai ASCII) 1. Tentukan bilangan asli r < p-1. (r = 62)

c. Enkripsi β€œd” [100] (dalam nilai ASCII) 1. Tentukan bilangan asli r < p-1. (r = 144)

d. Enkripsi β€œh” [104] (dalam nilai ASCII) 1. Tentukan bilangan asli r < p-1. (r = 180)

e. Enkripsi β€œo” [111] (dalam nilai ASCII) 1. Tentukan bilangan asli r < p-1. (r = 54)

Setelah proses enkripsi selesai, maka didapatkan hasil enkripsi Key secara keseluruhan yang ditunjukkan pada tabel 4.2.

Tabel 4.2. Hasil Enkripsi Algoritma ElGamal

Key ASCII C1 C2

r 114 339 431

i 105 38 77

d 100 921 136

h 104 630 79

o 111 387 582

4.2.4. Pengujian Dekripsi Algoritma ElGamal

Dalam tahap ini private key yang telah dibangkitkan pada proses pembangkitan kunci akan digunakan untuk proses dekripsi cipherkey. Dekripsi dilakukan dengan cara menekan tombol Import kemudian sistem akan mengarahkan user untuk memilih key hasil enkripsi ElGamal. Setelah key dimasukkan pada sistem maka akan tampil pada textbox. Selanjutnya user menekan tombol Dekripsi ElGamal dan kunci hasil dekripsi akan tampil pada textbox. Hasil proses dekripsi algoritma ElGamal ditunjukkan pada gambar 4.8.

Gambar 4.8. Hasil Dekripsi Algoritma ElGamal

Kunci yang dimasukkan terdiri dari beberapa bilangan yaitu Private Key (p, d), C1 dan C2. Selanjutnya seluruh bilangan akan di proses oleh sistem dan menghasilkan

Key yang akan digunakan pada proses dekripsi Spritz Cipher agar ciphertext dapat

4. Dekripsi (C1, C2) = (630, 79) Hitung Z = π‘šπ‘œπ‘‘

= 630941-1-44 mod 941 = 630896 mod 941 = 716

Hitung P = 𝑍 π‘šπ‘œπ‘‘

= 79 716 mod 941 = 104

Maka diperoleh P = 104, dalam karakter dalam ASCII adalah h, sesuai dengan key.

5. Dekripsi (C1, C2) = (387, 582) Hitung Z = π‘šπ‘œπ‘‘

= 387941-1-44 mod 941 = 387896 mod 941 = 558

Hitung P = 𝑍 π‘šπ‘œπ‘‘

= 582 558 mod 941 = 111

Maka diperoleh P = 111, dalam karakter dalam ASCII adalah o, sesuai dengan key.

Setelah proses dekripsi selesai, maka didapatkan hasil dekripsi Key secara keseluruhan yang ditunjukkan pada tabel 4.3.

Tabel 4.3. Hasil Dekripsi Algoritma ElGamal

C1 C2 Z P ASCII Key

339 431 819 114 114 r

38 77 258 105 105 i

921 136 748 100 100 d

630 79 716 104 104 h

387 582 558 111 111 o

4.2.5. Pengujian Dekripsi Spritz Cipher

Sama seperti pada saat melakukan proses enkripsi, key akan diacak dengan KSA dan PRGA. Untuk melakukan proses dekripsi ciphertext menjadi plaintext semula, user menekan tombol Browse kemudian sistem akan mengarahkan user ke penyimpanan file hasil enkripsi. Kemudian isi karakter file akan tampil pada richtextbox. Setelah itu menekan tombol Dekripsi Spritz dan sistem akan menampilkan hasil proses dekripsi Spritz Cipher pada richtextbox. Hasil dekripsi dapat disimpan dengan menekan tombol Save File. Hasil dekripsi Spritz Cipher ditunjukkan pada gambar 4.9.

Gambar 4.9. Hasil Dekripsi Spritz Cipher Key = [r i d h o]

Key = [82, 65, 77, 65] (dalam nilai ASCII)

Ciphertext = [248 45 144 140 11 33] (dalam nilai ASCII)

Ciphertext = [00011101, 00101101, 10010000, 10001100, 00001011, 00100001]

Keystream = [139 89 226 229 101 70]

Keystream = [10001011, 01011001, 11100010, 11100101, 01100101, 01000110]

Plaintext = Ciphertext XOR Keystream

Plaintext = [01110011, 01110100, 01110010, 01101001, 01101110, 01100111]

Plaintext = [115 116 114 105 110 103] (dalam nilai ASCII) Plaintext = [s t r i n g]

4.2.6. Waktu Proses (Real Running Time)

Waktu yang digunakan dalam proses enkripsi maupun dekripsi akan dianalisa dan dihitung berdasarkan panjang karakter dalam milisecond.

4.2.6.1. Waktu Proses Enkripsi Spritz Cipher

Percobaan enkripsi dilakukan dengan panjang karakter 100, 1000, 5000, 10000 dan 50000 karakter, dengan panjang kunci 20 karakter. Hasil waktu proses enkripsi dapat dilihat pada tabel 4.4.

Tabel 4.4. Waktu Proses Pengujian Enkripsi Spritz Cipher Panjang Spritz Cipher. Hasil pengujian ini dapat diilustrasikan dengan grafik yang dapat dilihat pada Gambar 4.10.

Gambar 4.10. Grafik Hubungan Panjang Plaintext dan Waktu Proses Enkripsi Spritz Cipher

Dokumen terkait