• Tidak ada hasil yang ditemukan

BAB 1 PENDAHULUAN

1.7 Sistematika Penulisan Penelitian

Sistematika penulisan dalam penelitian ini memiliki lima bab, yaitu :

BAB I PENDAHULUAN

Bab ini terdiri dari tujuh bagian yang terkait dengan penelitian, yaitu latar belakang penelitian mengenai pemilihan judul skripsi β€œImplementasi Algoritma Spritz dan Algoritma Kunci Publik Rabin-p dengan Skema Hybrid Cryptosystem pada Pengamanan Teks”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian serta sistematika penulisan penelitian.

BAB II LANDASAN TEORI

Bab ini terdiri dari beberapa teori mengenai kriptografi, penjelasan dan perhitungan dasar dari algoritma Spritz maupun algoritma Rabin-p, dan skema Hybrid Cryptosystem.

BAB III ANALISIS DAN PERANCANGAN

Bab ini terdiri dari analisis mengenai algoritma Spritz dan algoritma Rabin-p dengan skema Hybrid Cryptosystem dan proses perancangan sistem yang akan dibuat dengan menggunakan Diagram Ishikawa, Diagram Umum Sistem, Use Case Diagram, Activity Diagram, Sequence Diagram, serta Flowchart.

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab ini terdiri dari implementasi dari sistem yang telah dibuat dengan menerapkan algoritma Spritz dan algoritma Rabin-p serta dilakukan pengujian terhadap sistem hingga memperoleh hasil analisisnya.

BAB V KESIMPULAN DAN SARAN

Bab ini terdiri dari kesimpulan dan saran yang diperoleh berdasarkan penelitian yang telah dilakukan dan hasil pengujian diharapkan dapat memudahkan untuk proses pengembangan penelitian selanjutnya

BAB II

LANDASAN TEORI

2.1 Kriptografi

Kriptografi (Cryptography) berasal dari bahasa yunani yang terdiri dari dua kata yaitu kryptos dan graphein. Kryptos artinya tersembunyi dan graphein artinya tulisan (Prayudi, 2005). Kriptografi terdiri dari 4 bagian utama yaitu plaintext, key, ciphertext dan algoritma. Plaintext merupakan pesan yang dikirim oleh si pengirim pesan. Key merupakan kunci yang digunakan dalam proses enkripsi dan dekripsi pesan. Sedangkan Ciphertext merupakan pesan yang telah di enkripsi menggunakan kunci dan algoritma merupakan langkah-langkah yang digunakan untuk teknik kriptografi secara sistematis.

2.1.1 Proses Kriptografi

Dalam prosesnya, kriptografi memiliki dua proses utama yaitu enkripsi dan dekripsi. Enkripsi merupakan proses pengubahan plaintext menjadi ciphertext sedangkan dekripsi merupakan proses pengubahan ciphertext menjadi plaintext kembali, sehingga dapat menghasilkan pesan awal atau pesan asli. Enkripsi dan dekripsi pesan dilakukan dengan sebuah kunci ataupun beberapa kunci. Proses Enkripsi dan Dekripsi dapat dilihat pada gambar 2.1 dibawah ini :

Gambar 2.1 Proses Enkripsi dan Dekripsi

2.1.2 Jenis Algoritma

Berdasarkan kunci yang digunakan, algoritma kriptografi dibedakan menjadi dua jenis yaitu algoritma simetris dan algoritma asimetris.

a. Algoritma Simetris

Algoritma simetris yaitu teknik yang digunakan pada kriptografi klasik (Kromodimoeljo, 2010). Kriptografi simetris adalah jenis kriptografi yang paling umum digunakan . Kunci yang digunakan untuk mengubah plaintext menjadi ciphertext sama dengan kunci yang digunakan untuk mengubah ciphertext menjadi plaintext. Keamanan algoritma simetri tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, kunci harus tetap dirahasiakan. Contoh dari algoritma kunci simetri adalah Beaufort, Spritz, Blowfish, Twofish, DES(Data Encryption Standard) (Schneier, 1996).

Kelebihan dari kriptografi simetris adalah kecepatan operasi lebih tinggi dibandingkan dengan kriptografi asimetris sesuai dengan ukuran file yang di enkripsi/dekripsi. Kelemahan dari kriptografi simetris adalah dalam hal penggunaan kunci yang sama untuk melakukan enkripsi dan dekripsi data. Bila kunci tersebar maka dekripsi data dapat dilakukan oleh siapapun dan untuk setiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda juga, sehingga akan terjadi kesulitan dalam memanajemen kunci tersebut. Proses Enkripsi dan Dekripsi pada Algoritma Simetris dapat dilihat pada gambar 2.2 dibawah ini :

Gambar 2.2 Proses Enkripsi dan Dekripsi pada Algoritma Simetris b. Algoritma Asimetris

Algoritma ini disebut asimetris karena kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan untuk dekripsi. Kunci yang digunakan untuk enkripsi adalah kunci publik atau public key sehingga algoritma ini disebut dengan algoritma kunci publik. Sedangkan kunci untuk dekripsi menggunakan kunci rahasia atau private key. Algoritma disebut kunci publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang boleh

mengetahuinya. Siapapun dapat menggunakan kunci enkripsi tersebut untuk mengenkripsi pesan, namun hanya orang tertentu (calon penerima pesan dan sekaligus pemilik kunci dekripsi yang merupakan pasangan kunci publik) yang dapat melakukan dekripsi terhadap pesan tersebut. Contoh algoritma asimetris yaitu Rabin-p, Elgamal, RSA (Rivest Shamir Adleman), ECC(Elliptic Curve Cryptography) (Schneier, 1996). Proses Enkripsi dan Dekripsi pada Algoritma Asimetris dapat dilihat pada gambar 2.3 dibawah ini:

Gambar 2.3 Proses Enkripsi dan Dekripsi pada Algoritma Asimetris

2.2 Metode Hybrid Cryptosystem

Hybrid Cryptosystem merupakan metode yang mengkombinasikan antara algoritma simetris dan algoritma asimetris. Kelebihan dari metode ini adalah algoritma simetris dengan proses data yang cepat ditambah algoritma asimetris dengan transfer kunci yang mudah menyebabkan peningkatan kecepatan dan keamanan yang baik (Annelis, 2010). Metode ini menerapkan kriptosistem yang sangat aman dengan proses enkripsi maupun dekripsi pesan menggunakan algoritma simetris dan proses pertukaran kunci menggunakan algoritma asimetris (Gutub & Khan, 2012). Pada penelitian ini, digunakan hybrid cryptosystem dengan memanfaatkan algoritma simetris Spritz dan algoritma asimetris Rabin-p yang dijelaskan pada gambar 2.4 dan gambar 2.5 :

Gambar 2.4 Proses Enkripsi Hybrid Cryptosystem dengan menggunakan Algoritma Spritz dan Algoritma Rabin-p

Gambar 2.5 Proses Dekripsi Hybrid Cryptosystem dengan menggunakan Algoritma Spritz dan Algoritma Rabin-p

2.3 Teori Bilangan 2.3.1 Bilangan Prima

Bilangan prima merupakan bilangan yang hanya memiliki dua faktor pembagi yaitu 1 dan bilangan itu sendiri (Untoro, 2010). Contoh bilangan prima yaitu 2, 3, 5, 7, dan 11.

2.3.2 Euclidean Greatest Common Divisor (GCD)

Greatest Common Divisor (GCD) merupakan bilangan bulat terbesar yang membagi kedua angka dengan sisa 0 (Upadhay, 2013). Seorang matematikawan Yunani menemukan cara untuk mencari bilangan bulat terbesar dengan algoritma Euclidean yang tertulis pada bukunya yaitu β€œElements”. Pada algoritma ini menggunakan sisa pembagian (modulo) (Munir, 2003).

Langkah-langkah Algoritma Euclidean :

1. Jika 𝑛 = 0, maka π‘š adalah GCD(π‘š, 𝑛) dan stop. Jika 𝑛 β‰  0, maka lanjut ke langkah 2

2. Bagilah π‘š dengan 𝑛 dan misalkan π‘Ÿ adalah sisanya

3. Ganti nilai π‘š dengan 𝑛 dan nilai 𝑛 dengan nilai π‘Ÿ, lalu ulang kembali ke langkah 1, hingga 𝑛 = 0.

Contoh : Berapa GCD(27,6)?

Jawab : GCD(27,6) adalah :

27 π‘šπ‘œπ‘‘ 6 = 3 6 π‘šπ‘œπ‘‘ 3 = 0

Karena telah menghasilkan sisa pembagiannya 0, maka proses berakhir dan hasilnya adalah GCD(27,6) = 3.

2.3.3 Algoritma Extended Euclidean

Algoritma ini digunakan untuk memecahkan Persamaan Diophantine Linear yang memenuhi identitas Bezout. Contoh : Berapa nilai π‘₯ dan 𝑦 yang memenuhi 100π‘₯ + 29𝑦 ?

Jawab : a = 100 dan b = 29. Maka, GCD(100,29) = 1 = c (yang memenuhi syarat) Tabel 2.1 Contoh perhitungan m-1

π‘₯ 𝑦 𝑑 π‘˜

1 0 100

0 1 29 3

1 βˆ’3 13 2

βˆ’2 7 3 4

9 βˆ’31 1

Maka, diperoleh nilai dari π‘₯ adalah 9 dan nilai dari 𝑦 adalah (-31).

2.3.4 Blum Integer

Blum Integer adalah bilangan bulat positif yang merupakan hasil dari perkalian dua buah bilangan prima dimana 𝑝 ≑ π‘ž ≑ 3(π‘šπ‘œπ‘‘ 4). Contoh : beberapa angka yang termasuk 𝑝 ≑ π‘ž ≑ 3(π‘šπ‘œπ‘‘ 4) adalah 15, 47, 59, 131, dan 251.

2.3.5 Miller-Rabin

Miller-Rabin digunakan untuk menentukan suatu bilangan prima dengan menggunakan eksponensial modular dan jika akar kuadrat dari 1 π‘šπ‘œπ‘‘ 𝑛 adalah Β±1.

Selain itu, maka bilangan tersebut adalah merupakan bilangan komposit. Contoh : Menentukan bilangan prima.

Jawab : Diambil nilai 𝑛 = 23

a. Nyatakan (n-1) = 2π‘˜. π‘ž, tentukan nilai π‘˜, π‘ž dengan π‘˜ > 0 dan π‘ž bilangan ganjil.

𝑛 βˆ’ 1 = 22 = 21. 11, π‘˜ = 1, π‘ž = 11

b. Pilih nilai π‘Ž secara random, dimana (1 < π‘Ž < 𝑛 βˆ’ 1) π‘Ž = 2

c. 𝑖𝑓 π‘Žπ‘ž π‘šπ‘œπ‘‘ 𝑛 = 1, π‘Ÿπ‘’π‘‘π‘’π‘Ÿπ‘› π‘π‘Ÿπ‘–π‘šπ‘’ 211 π‘šπ‘œπ‘‘ 23 = 2048 π‘šπ‘œπ‘‘ 23 = 1 𝑛 = 23β†’ Bilangan Prima

2.4 Algoritma Spritz

Algoritma Spritz merupakan algoritma simetris yang memiliki dua bagian yaitu Key Scheduling Algorithm (KSA) dan Pseudo-Random Generation Algorithm (PRGA).

Algoritma Spritz merupakan sebuah varian dari RC4 yang memiliki kompleksitas tinggi karena sponge-based construction meningkatkan keamanan dari algoritma RC4 yang menyebabkan waktu yang digunakan untuk mengenkripsi sebuah data juga meningkat meskipun tingkat keamanan dari algoritma Spritz lebih tinggi dari RC4 (Rivest dan Schuldt, 2014).

2.4.1 Key Scheduling Algorithm (KSA)

Key-Scheduling Algorithm (KSA) pada algoritma Spritz dimulai dengan mendeklarasikan titik awal berupa larik yang terdiri dari 256 kemungkinan bytes yang ada pada array S. Dimana S adalah permutasi 256-byte yang di deklarasi oleh KSA, variabel i dan j merupakan variabel integer yang mempunyai nilai awal 0.

Adapun key adalah kunci rahasia yang akan dimasukkan.

Contoh :

Plaintext = β€œDEA”

Kunci = β€œAMD”

Maka panjang kuncinya adalah 3 karakter dengan key[0] = β€œA”, key[1] = β€œM”, key[2] = β€œD”. Nilai ASCII dari tiga kunci tersebut yaitu key=[65,77,68]. Selanjutnya perhitungan nilai j yang pertama dengan nilai awal 𝑖 = 0 dan 𝑗 = 0 sebagai berikut:

𝑗 = (𝑗 + 𝑆[𝑖] + π‘˜π‘’π‘¦[𝑖 π‘šπ‘œπ‘‘ π‘˜π‘’π‘¦ π‘™π‘’π‘›π‘”π‘‘β„Ž]) π‘šπ‘œπ‘‘ 256

𝑗 = (0 + 𝑆[0] + π‘˜π‘’π‘¦[0 π‘šπ‘œπ‘‘ 3])π‘šπ‘œπ‘‘ 256 = (0 + 0 + 65)π‘šπ‘œπ‘‘ 256 = 65 π‘ π‘€π‘Žπ‘(𝑆[𝑖], 𝑆[𝑗]) = π‘ π‘€π‘Žπ‘(𝑆[0], 𝑆[65])

𝑆[0] = 65 𝑆[65] = 0

Kemudian dilanjutkan perhitungan nilai 𝑗 yang dimulai dengan 𝑖 = 1 dan 𝑗 = 65 sebagai berikut :

Tabel 2.2 Larik 256 Byte Hasil Perhitungan Tahap Key Scheduling

0 1 2 3 4 5 6 7 8 9 10 11 12 13

112 113 114 115 116 117 118 119 120 121 122 123 124 125

2.4.2 Pseudo-Random Generation Algorithm (PRGA)

Pseudo-Random Generation Algorithm (PRGA) menginisialisasikan nilai 𝑖 = 0, 𝑗 = 0, π‘˜ = 0, 𝑧 = 0, dan 𝑀 = bilangan acak yang merupakan bilangan GCD atau relatif prima dengan panjang 𝑆 yaitu 256.

for l=0 to plainLength-1

Variabel 𝑖, 𝑗 merupakan variabel integer yang mempunyai nilai awal 0 dan 𝑧 merupakan variabel integer yang merupakan output dan mempunyai nilai awal 0.

Contoh Enkripsi : Karakter β€œD”

𝑖 = 0; 𝑗 = 0; π‘˜ = 0; 𝑧 = 0; 𝑀 = 15

β€’ 𝑖 = (𝑖 + 𝑀) = (0 + 15)π‘šπ‘œπ‘‘ 256 = 15

β€’ 𝑗 = (π‘˜ + 𝑆[𝑗 + 𝑆[𝑖]]) = (0 + 𝑆[0 + 𝑆[15]])π‘šπ‘œπ‘‘ 256

= (0 + 𝑆[0 + 182])π‘šπ‘œπ‘‘ 256

= (0 + 𝑆[182])π‘šπ‘œπ‘‘ 256

= 10 π‘šπ‘œπ‘‘ 256 = 10

β€’ π‘˜ = (𝑖 + π‘˜ + 𝑆[𝑗]) = (15 + 0 + 𝑆[10])π‘šπ‘œπ‘‘ 256

= (15 + 0 + 194)π‘šπ‘œπ‘‘ 256

= 209 π‘šπ‘œπ‘‘ 256 = 209

β€’ 𝑆[𝑖], 𝑆[𝑗] = 𝑆[𝑖] = 𝑆[15] = 182, 𝑆[𝑗] = 𝑆[10] = 194

β€’ π‘ π‘€π‘Žπ‘ 𝑆[𝑖] π‘€π‘–π‘‘β„Ž 𝑆[𝑗] = 𝑆[𝑖] = 𝑆[15] = 194, 𝑆[𝑗] = 𝑆[10] = 182

β€’ 𝑧 = 𝑆[𝑗 + 𝑆[𝑖 + 𝑆[𝑧 + π‘˜]]] = 𝑆[10 + 𝑆[15 + 𝑆[0 + 209]]] π‘šπ‘œπ‘‘ 256

= 𝑆[10 + 𝑆[15 + 180]] π‘šπ‘œπ‘‘ 256

= 𝑆[10 + 𝑆[195] π‘šπ‘œπ‘‘ 256

= 𝑆[10 + 83] π‘šπ‘œπ‘‘ 256

= 𝑆[93] π‘šπ‘œπ‘‘ 256

= 34 π‘šπ‘œπ‘‘ 256 = 34

Operasi XOR dilakukan untuk mendapatkan hasil enkripsinya dengan nilai dari karakter β€œD” adalah 68 dan nilai z yang diperoleh adalah 34.

68 = 01000100 34 = 00100010

= 01100110 = 10210 dalam tabel ASCII merupakan β€œ f β€œ

Karakter β€œE”

𝑖 = 15; 𝑗 = 10; π‘˜ = 209; 𝑧 = 34; 𝑀 = 15

β€’ 𝑖 = (𝑖 + 𝑀) = (15 + 15)π‘šπ‘œπ‘‘ 256 = 30

β€’ 𝑗 = (π‘˜ + 𝑆[𝑗 + 𝑆[𝑖]]) = (209 + 𝑆[10 + 𝑆[30]])π‘šπ‘œπ‘‘ 256

= (209 + 𝑆[10 + 16])π‘šπ‘œπ‘‘ 256

= (209 + 𝑆[26])π‘šπ‘œπ‘‘ 256

= (209 + 219)π‘šπ‘œπ‘‘ 256

= [172]π‘šπ‘œπ‘‘ 256 = 233 π‘šπ‘œπ‘‘ 256 = 233

β€’ π‘˜ = (𝑖 + π‘˜ + 𝑆[𝑗]) = (30 + 209 + 𝑆[233])π‘šπ‘œπ‘‘ 256

= (30 + 209 + 243)π‘šπ‘œπ‘‘ 256

= [226] π‘šπ‘œπ‘‘ 256 = 68

β€’ 𝑆[𝑖], 𝑆[𝑗] = 𝑆[𝑖] = 𝑆[30] = 16, 𝑆[𝑗] = 𝑆[233] = 243

β€’ π‘ π‘€π‘Žπ‘ 𝑆[𝑖] π‘€π‘–π‘‘β„Ž 𝑆[𝑗] = 𝑆[𝑖] = 𝑆[30] = 243, 𝑆[𝑗] = 𝑆[233] = 16

β€’ 𝑧 = 𝑆[𝑗 + 𝑆[𝑖 + 𝑆[𝑧 + π‘˜]]] = 𝑆[233 + 𝑆[30 + 𝑆[34 + 68]]] π‘šπ‘œπ‘‘ 256

= 𝑆[233 + 𝑆[30 + 116]] π‘šπ‘œπ‘‘ 256

= 𝑆[233 + 𝑆[146] π‘šπ‘œπ‘‘ 256

= 𝑆[233 + 172] π‘šπ‘œπ‘‘ 256

= 𝑆[149] π‘šπ‘œπ‘‘ 256

= 213 π‘šπ‘œπ‘‘ 256 = 213

Operasi XOR dilakukan untuk mendapatkan hasil enkripsinya dengan nilai dari karakter β€œE” adalah 69 dan nilai z yang diperoleh adalah 213.

69 = 01000101 213 = 11010101

= 10010000 = 14410 dalam tabel ASCII merupakan β€œ Ğ β€œ

Karakter β€œA”

𝑖 = 30; 𝑗 = 233; π‘˜ = 68; 𝑧 = 213; 𝑀 = 15

β€’ 𝑖 = (𝑖 + 𝑀) = (30 + 15)π‘šπ‘œπ‘‘ 256 = 45

β€’ 𝑗 = (π‘˜ + 𝑆[𝑗 + 𝑆[𝑖]]) = (68 + 𝑆[233 + 𝑆[45]])π‘šπ‘œπ‘‘ 256

= (68 + 𝑆[233 + 102])π‘šπ‘œπ‘‘ 256

= (68 + 𝑆[79])π‘šπ‘œπ‘‘ 256

= 175 π‘šπ‘œπ‘‘ 256 = 175

β€’ π‘˜ = (𝑖 + π‘˜ + 𝑆[𝑗]) = (45 + 68 + 𝑆[175])π‘šπ‘œπ‘‘ 256

= (45 + 68 + 200)π‘šπ‘œπ‘‘ 256

= [57]π‘šπ‘œπ‘‘ 256 = 60 π‘šπ‘œπ‘‘ 256 = 60

β€’ 𝑆[𝑖], 𝑆[𝑗] =𝑆[𝑖] = 𝑆[45] = 102, 𝑆[𝑗] = 𝑆[175] = 200

β€’ π‘ π‘€π‘Žπ‘ 𝑆[𝑖] π‘€π‘–π‘‘β„Ž 𝑆[𝑗] =𝑆[𝑖] = 𝑆[45] = 200, 𝑆[𝑗] = 𝑆[175] = 102

β€’ 𝑧 = 𝑆[𝑗 + 𝑆[𝑖 + 𝑆[𝑧 + π‘˜]]] = 𝑆[175 + 𝑆[45 + 𝑆[213 + 60]]] π‘šπ‘œπ‘‘ 256

= 𝑆[175 + 𝑆[45 + 12]] π‘šπ‘œπ‘‘ 256

= 𝑆[175 + 𝑆[57] π‘šπ‘œπ‘‘ 256

= 𝑆[175 + 60] π‘šπ‘œπ‘‘ 256

= 𝑆[235] π‘šπ‘œπ‘‘ 256

= 153 π‘šπ‘œπ‘‘ 256 = 153

Operasi XOR dilakukan untuk mendapatkan hasil enkripsinya dengan nilai dari karakter β€œA” adalah 65 dan nilai z yang diperoleh adalah 153.

65 = 01000001 153 = 10011001

= 11011000 = 21610 dalam tabel ASCII merupakan β€œ Ø β€œ

Contoh Dekripsi : Karakter β€œ f ”

𝑖 = 0; 𝑗 = 0; π‘˜ = 0; 𝑧 = 0; 𝑀 = 15

β€’ 𝑖 = (𝑖 + 𝑀) = (0 + 15)π‘šπ‘œπ‘‘ 256 = 15

β€’ 𝑗 = (π‘˜ + 𝑆[𝑗 + 𝑆[𝑖]]) = (0 + 𝑆[0 + 𝑆[15]])π‘šπ‘œπ‘‘ 256

= (0 + 𝑆[0 + 182])π‘šπ‘œπ‘‘ 256

= (0 + 𝑆[182])π‘šπ‘œπ‘‘ 256

= 10 π‘šπ‘œπ‘‘ 256 = 10

β€’ π‘˜ = (𝑖 + π‘˜ + 𝑆[𝑗]) = (15 + 0 + 𝑆[10])π‘šπ‘œπ‘‘ 256

= (15 + 0 + 194)π‘šπ‘œπ‘‘ 256

= 209 π‘šπ‘œπ‘‘ 256 = 209

β€’ 𝑆[𝑖], 𝑆[𝑗] = 𝑆[𝑖] = 𝑆[15] = 182, 𝑆[𝑗] = 𝑆[10] = 194

β€’ π‘ π‘€π‘Žπ‘ 𝑆[𝑖] π‘€π‘–π‘‘β„Ž 𝑆[𝑗] = 𝑆[𝑖] = 𝑆[15] = 194, 𝑆[𝑗] = 𝑆[10] = 182

β€’ 𝑧 = 𝑆[𝑗 + 𝑆[𝑖 + 𝑆[𝑧 + π‘˜]]] = 𝑆[10 + 𝑆[15 + 𝑆[0 + 209]]] π‘šπ‘œπ‘‘ 256

= 𝑆[10 + 𝑆[15 + 180]] π‘šπ‘œπ‘‘ 256

= 𝑆[10 + 𝑆[195] π‘šπ‘œπ‘‘ 256

= 𝑆[10 + 83] π‘šπ‘œπ‘‘ 256

= 𝑆[93] π‘šπ‘œπ‘‘ 256

= 34 π‘šπ‘œπ‘‘ 256 = 34

Operasi XOR dilakukan untuk mendapatkan hasil enkripsinya dengan nilai dari karakter β€œf” adalah 102 dan nilai z yang diperoleh adalah 34.

102 = 01100110

Operasi XOR dilakukan untuk mendapatkan hasil enkripsinya dengan nilai dari karakter β€œΔžβ€ adalah 144 dan nilai z yang diperoleh adalah 213.

144 = 10010000 213 = 11010101

= 01000101 = 6910 dalam tabel ASCII merupakan β€œ E β€œ

Karakter β€œ Ø ”

𝑖 = 30; 𝑗 = 233; π‘˜ = 68; 𝑧 = 213; 𝑀 = 15

β€’ 𝑖 = (𝑖 + 𝑀) = (30 + 15)π‘šπ‘œπ‘‘ 256 = 45

β€’ 𝑗 = (π‘˜ + 𝑆[𝑗 + 𝑆[𝑖]]) = (68 + 𝑆[233 + 𝑆[45]])π‘šπ‘œπ‘‘ 256

= (68 + 𝑆[233 + 102])π‘šπ‘œπ‘‘ 256

= (68 + 𝑆[79])π‘šπ‘œπ‘‘ 256

= 175 π‘šπ‘œπ‘‘ 256 = 175

β€’ π‘˜ = (𝑖 + π‘˜ + 𝑆[𝑗]) = (45 + 68 + 𝑆[175])π‘šπ‘œπ‘‘ 256

= (45 + 68 + 200)π‘šπ‘œπ‘‘ 256

= [57]π‘šπ‘œπ‘‘ 256 = 60 π‘šπ‘œπ‘‘ 256 = 60

β€’ 𝑆[𝑖], 𝑆[𝑗] =𝑆[𝑖] = 𝑆[45] = 102, 𝑆[𝑗] = 𝑆[175] = 200

β€’ π‘ π‘€π‘Žπ‘ 𝑆[𝑖] π‘€π‘–π‘‘β„Ž 𝑆[𝑗] =𝑆[𝑖] = 𝑆[45] = 200, 𝑆[𝑗] = 𝑆[175] = 102

β€’ 𝑧 = 𝑆[𝑗 + 𝑆[𝑖 + 𝑆[𝑧 + π‘˜]]] = 𝑆[175 + 𝑆[45 + 𝑆[213 + 60]]] π‘šπ‘œπ‘‘ 256

= 𝑆[175 + 𝑆[45 + 12]] π‘šπ‘œπ‘‘ 256

= 𝑆[175 + 𝑆[57] π‘šπ‘œπ‘‘ 256

= 𝑆[175 + 60] π‘šπ‘œπ‘‘ 256

= 𝑆[235] π‘šπ‘œπ‘‘ 256

= 153 π‘šπ‘œπ‘‘ 256 = 153

Operasi XOR dilakukan untuk mendapatkan hasil enkripsinya dengan nilai dari karakter β€œΓ˜β€ adalah 216 dan nilai z yang diperoleh adalah 153.

216 = 11011000 153 = 10011001

= 01000001 = 6510 dalam tabel ASCII merupakan β€œ A β€œ

2.5 Algoritma Rabin-p

Algoritma Rabin-p adalah algoritma yang memiliki dua jenis kunci yaitu kunci publik dan kunci privat. Kunci publik digunakan untuk enkripsi pesan sedangkan kunci privat digunakan untuk dekripsi pesan (Asbullah et.al, 2016).

2.5.1 Pembangkit Kunci Algoritma Rabin-p

Pada proses ini, kunci publik dan kunci privat dibangkitkan dengan cara : 1. Tentukan π‘˜ sebagai parameter keamanan.

2. Pilih dua bilangan prima acak untuk nilai 𝑝 dan π‘ž dimana 2π‘˜ < 𝑝, π‘ž < 2π‘˜+1 memenuhi 𝑝 ≑ π‘ž ≑ 3 (π‘šπ‘œπ‘‘ 4).

3. Hitung 𝑁 = 𝑝2π‘ž.

4. Nilai dari 𝑁 dianggap sebagai kunci publik dan nilai dari 𝑝, π‘ž dianggap sebagai kunci privat.

Contoh : Diketahui 𝑝 = 59; π‘ž = 47; π‘˜ = 5 Hitung : 𝑁 = 𝑝2. π‘ž = 592. 47 = 163.607

Maka, 𝑁 = 163.607 sebagai kunci publik dan 𝑝 = 59 sebagai kunci privat.

2.5.2 Metode Enkripsi

Pada proses ini, pesan akan di enkripsi dengan cara :

1. Pilih plaintext 0 < π‘š < 22π‘˜βˆ’1 dimana GCD (π‘š, 𝑁) = 1 2. Hitung 𝑐 ≑ π‘š2(π‘šπ‘œπ‘‘ 𝑁).

Contoh :

1. Pilih plaintext (π‘š) yang memiliki panjang antara lebih besar dari 0 dan lebih kecil dari 22π‘˜βˆ’1 . Misalkan plaintext adalah karakter β€œt”. Karakter β€œt” dalam tabel ASCII adalah β€œ116” dan dalam biner yaitu β€œ01110100”.

π‘š = 116, maka 0 < π‘š < 22π‘˜βˆ’2 = 0 < 116 < 512.

116 π‘šπ‘œπ‘‘ 163607 = 116 163607 π‘šπ‘œπ‘‘ 116 = 47 116 π‘šπ‘œπ‘‘ 47 = 22 47 π‘šπ‘œπ‘‘ 22 = 3 22 π‘šπ‘œπ‘‘ 3 = 1

Maka syarat terpenuhi yaitu GCD (116, 163607) = 1.

2. Hitung 𝑐 ≑ π‘š2(π‘šπ‘œπ‘‘ 𝑁)

Karakter β€œt” memiliki kode ASCII = 116

𝑐 ≑ π‘š2 π‘šπ‘œπ‘‘ 𝑁 ≑ 1162 π‘šπ‘œπ‘‘ 163607 ≑ 13456

2.5.3 Metode Dekripsi

Pada proses ini, pesan akan di dekripsi dengan cara : 1. Hitung 𝑀 ≑ 𝑐(π‘šπ‘œπ‘‘ 𝑝).

2. Hitung π‘šπ‘ ≑ 𝑀𝑝+1

Beberapa penelitian terdahulu yang relevan dengan penelitian yang akan dilakukan oleh penulis antara lain :

1. Penelitian yang berjudul β€œThe cryptanalysis of the Rabin public key algorithm using Fermat factorization method”menyatakan bahwa pemfaktoran kunci

publik Rabin menggunakan metode Fermat tidak selalu berkorelasi dengan waktu proses. Kecepatan pemfaktoran kunci terletak pada perbedaan kunci (p - q), semakin besar perbedaan kunci (p - q) maka waktu proses yang dibutuhkan akan semakin lama (Budiman, et al., 2019).

2. Penelitian yang berjudul β€œAnalysis of Rabin and Rabin-p Cryptosystem for specifying correct plain text” menyimpulkan bahwa proses dekripsi Rabin-p membutuhkan waktu yang lebih sedikit dibandingkan dengan proses dekripsi Rabin dikarenakan kinerja Rabin-p yang lebih baik (Nayak, Rakesh., 2015).

3. Berdasarkan jurnal yang berjudul β€œSpritz – A Spongy RC4-Like Stream Cipher and Hash Function.” menyimpulkan bahwa algoritma Spritz meningkatkan kompleksitas dari RC4, maka waktu yang digunakan dalam mengenkripsi sebuah pesan lebih meningkat dan tingkat keamanan algoritma Spritz lebih baik dari RC4 (Rivest dan Schuldt, 2014).

4. Penelitian yang berjudul β€œRabin-p Cryptosystem: Practical and Efficient Method for Rabin based Encryption Scheme” menyimpulkan bahwa kriptosistem algoritma Rabin-p merupakan cara yang paling efektif dalam pengamanan dan lebih cepat dibandingkan dengan metode yang ada (Asbullah dan Ariffin, 2014).

BAB III

ANALISIS DAN PERANCANGAN

3.1 Analisis Sistem

Analisis sistem merupakan tahapan awal dalam membuat suatu sistem. Hal ini dilakukan agar menemukan solusi dari masalah yang terjadi pada sistem, sehingga dapat melakukan perbaikan terhadap sistem dan menganalisa kebutuhan yang akan diterapkan. Adapun beberapa tahapan pada analisis sistem yaitu analisis masalah, analisis kebutuhan sistem dan analisis proses.

3.1.1 Analisis Masalah

Pada tahapan ini, akan identifikasi penyebab masalah yang sedang terjadi. Pada penelitian ini, masalah terdapat pada cara penerapan algoritma Spritz dan algoritma kunci publik Rabin-p dengan skema Hybrid Cryptosystem pada pengamanan teks.

Dalam prosesnya, analisis masalah akan menggunakan Diagram Ishikawa atau yang biasa disebut dengan Fishbone Diagram.Diagram Ishikawa memiliki bentuk seperti ikan yang terdiri atas kepala ikan (fish’s head) sebagai tujuan dari masalah yang diidentifikasi dan tulang-tulang ikan (fish’s bones) sebagai petunjuk dalam memperoleh penyebab terjadinya masalah. Masalah dalam penelitian dibuat ke dalam bentuk diagram Ishikawa yang dapat dilihat sebagai berikut :

Gambar 3.1 Diagram Ishikawa

Gambar 3.1 menyimpulkan bahwa masalah yang muncul diakibatkan oleh kecurigaan terhadap pihak ketiga yang ingin mengetahui isi pesan yang dikirim.

Penyelesaian masalah tersebut dapat dilakukan dengan mengkombinasi algoritma Spritz dan algoritma Rabin-p dengan skema Hybrid Cryptosystem, sehingga sulit untuk diketahui oleh pihak ketiga. Algoritma Spritz akan melakukan enkripsi pada

pesan. Sedangkan Algoritma Rabin-p akan melakukan enkripsi pada kunci dari algoritma Spritz.

3.1.2 Analisis Kebutuhan

Pada tahapan ini, akan dilakukan analisis terhadap kebutuhan. Analisis kebutuhan memiliki dua bagian yaitu kebutuhan fungsional dan kebutuhan nonfungsional.

Kebutuhan fungsional menjelaskan proses-proses yang dapat dilakukan oleh sistem. Sedangkan kebutuhan nonfungsional menjelaskan tentang hal yang digunakan untuk melengkapi sistem dengan menerapkan hal-hal seperti fitur, karakteristik dan batasan lainnya.

3.1.2.1 Kebutuhan Fungsional

Kebutuhan Fungsional merupakan proses yang dapat dilakukan oleh sistem agar berjalan dengan lancar. Kebutuhan fungsional yang harus dipenuhi dari kombinasi algoritma Spritz dan algoritma Rabin-p dalam skema Hybrid Cryptosystem untuk pengamanan teks adalah sebagai berikut :

1. Pembangkit kunci

Membangkitkan kunci publik dan kunci privat secara acak dengan algoritma Rabin-p.

2. Memasukkan file

User menggunakan file yang berekstensi docx. dan diproses oleh sistem.

3. Enkripsi teks

Teks dienkripsi menggunakan algoritma Spritz dan menghasilkan ciphertext.

4. Enkripsi kunci simetris

Kunci algoritma Spritz dienkripsi dengan kunci publik algoritma Rabin-p dan cipherkey.

5. Menyimpan hasil enkripsi

Ciphertext dan cipherkey akan disimpan oleh sistem untuk digunakan pada proses dekripsi.

6. Dekripsi kunci simetris

Cipherkey didekripsi dengan kunci privat algoritma Rabin-p dan menghasilkan kunci algoritma Spritz.

7. Dekripsi teks

Ciphertext didekripsi menggunakan kunci algortima Spritz dan menghasilkan teks seperti yang dimasukkan.

8. Menyimpan hasil dekripsi

Menyimpan teks yang sudah didekripsi.

3.1.2.2 Kebutuhan Nonfungsional

Kebutuhan nonfungsional merupakan kebutuhan yang digunakan dalam proses kerja sistem. Berikut merupakan kebutuhan non-fungsional pada penerapan algoritma Spritz dan algoritma Rabin-p dalam skema Hybrid Cryptosystem :

1. Kinerja Sistem

Sistem dapat menampilkan kunci publik dan kunci privat yang akan digunakan untuk melakukan proses enkripsi dan dekripsi kunci. Kemudian sistem juga dapat menampilkan kunci Spritz yang akan digunakan untuk proses enkripsi dan dekripsi pesan.

2. Dokumentasi

Sistem dapat menampilkan petunjuk penggunaan sistem, penyimpanan data dan penjelasan tentang algoritma Spritz dan algoritma Rabin-p serta metode Hybrid Cryptosystem.

3. Pengendalian

Sistem dapat menampilkan pesan error jika ditemukan inputan yang tidak sesuai.

4. Kualitas

Sistem akan menghasilkan output yang bersifat benar dan akurat pada saat melakukan proses enkripsi dan dekripsi pesan.

3.1.3 Diagram Umum Sistem

Diagram umum sistem dapat dilihat pada gambar 3.2 yang terdapat di halaman 25.

Gambar 3.2 Diagram Umum Sistem

Diagram umum sistem dimulai dengan membangkitkan public key dan private key dari Algoritma Rabin-p yang dilakukan oleh recipient. Kemudian public key diberikan kepada sender. Sender akan mengenkripsi dokumen menggunakan Algoritma Spritz yang menghasilkan ciphertext. Kemudian kunci Spritz dienkripsi dengan public key Algoritma Rabin-p. Recipient memperoleh ciphertext dan cipherkey yang digunakan untuk mendekripsi file. Cipherkey didekripsi menggunakan private key dari algoritma Rabin-p. Lalu ciphertext didekripsi menggunakan kunci dari algoritma Spritz. Setelah file berhasil didekripsi, maka didapatlah dokumen yang dikirimkan oleh sender.

3.2 Pemodelan Sistem

Pemodelan sistem betujuan untuk menggambarkan semua kondisi dari bagian yang berperan pada sistem yang dirancang. Pemodelan sistem ditampilkan dengan menggunakan use case diagram, sequence diagram dan activity diagram dan flowchart.

3.2.1 Use Case Diagram

Use case diagram merupakan gambaran dari beberapa atau semua actor, dan interaksi diantaranya yang diperkenalkan dalam suatu sistem. Use case pada sistem dapat ditunjukkan pada Gambar 3.3.

Gambar 3.3 Diagram Use Case Sistem

Gambar 3.3 menunjukkan penggunaan sistem oleh dua aktor yaitu pengirim pesan dan penerima pesan. Dalam sistem ini penerima pesan memiliki hak akses melihat halaman awal, informasi, dan melakukan pembangkitan kunci privat dan kunci publik dari algoritma Rabin-p. Kunci publik Rabin-p yang telah dibangkitkan akan digunakan oleh pengirim pesan untuk melakukan enkripsi kunci Spritz sedangkan, kunci privat digunakan untuk melakukan dekripsi kunci Spritz.

Pengirim pesan memiliki hak akses melihat halaman awal, enkripsi pesan dan bantuan. Dalam melakukan enkripsi pesan pengirim pesan akan menginput file yang akan dienkripsi, melakukan enkripsi teks dengan algoritma Spritz dan melakukan enkripsi kunci Spritz dengan menggunakan kunci publik Rabin-p. Hasil enkripsi teks (ciphertext) dan hasil enkripsi kunci (cipherkey) akan diberikan kepada penerima pesan.

3.2.2 Activity Diagram

Activity Diagram menggambarkan alur kerja atau interaksi aktivitas antara pengirim dan sistem dari sebuah sistem atau perangkat lunak yang dikembangkan, dari aktivitas mulai, decision yang mungkin terjadi sampai aktivitas berhenti.

3.2.2.1 Diagram Aktivitas Pembangkit Kunci

Gambar 3.4 Diagram Aktivitas Proses Pembangkitan Kunci

Gambar 3.4 menunjukkan diagram aktivitas proses pembangkitas kunci. Tahap awal, user harus menekan tombol bangkit kunci untuk mendapatkan nilai bilangan prima p, q, dan N. N akan diperoleh dari perkalian p dan q. Sedangkan p diperloeh dari nilai p acak yang sudah ditetapkan rumusnya.

3.2.2.2 Diagram Aktivitas Enkripsi

Gambar 3.5 Diagram Aktivitas Proses Enkripsi

Gambar 3.5 menunjukkan proses enkripsi dari sistem. Untuk tahap awal file yang berisi pesan akan enkripsi dan dimasukkan kedalam sistem. Kemudian sistem akan menampilkan open file dialog dan selanjutnya user memilih file yang akan dienkripsi. Setelah dipilih, user memasukkan kunci Spritz yang nantinya akan digunakan untuk mengenkripsi file. Kemudian user menekan tombol simpan kunci Spritz dan sistem akan menyimpan kunci. Selanjutnya, enkripsi teks dengan algoritma Spritz. Kemudian user menekan tombol simpan ciphertext dan sistem akan menampilkan jendela simpan file. Selanjutnya user menginputkan nama file dan menyimpan file tersebut. Kemudian, user menekan tombol kunci publik dan sistem akan mencari filenya. Lalu user menginputkan kunci Spritz dan dienkripsi hingga menampilkan cipherkey dan tekan tombol simpan cipherkey untuk menyimpan cipherkey.

3.2.2.3 Diagram Aktivitas Dekripsi

Gambar 3.6 Diagram Aktivitas Proses Dekripsi

Gambar 3.6 menunjukkan proses dekripsi dari sistem. Pada tahap awal yaitu file yang berisi cipherkey yang akan didekripsi dimasukkan pada sistem. Sistem akan menampilkan open file dialog dan user memilih file cipherkey yang akan didekripsi.

Kemudian user membuka kunci privat dan menampilkannya. Setelah dipilih, user menekan tombol dekripsi kunci dan hasil dekripsi akan muncul pada sistem.

Kemudian tekan tombol browse untuk memilih file ciphertext yang akan didekripsi.

Setelah fie dipilih lalu user menekan tombol dekripsi teks dan sistem akan mendekripsi file dan menampilkan hasil dekripsi yaitu plaintext semula.

Selanjutnya untuk menyimpan file, user menekan tombol simpan plaintext dan sistem akan menyimpan file tersebut.

3.2.3 Sequence Diagram

Sequence diagram adalah suatu diagram yang menggambarkan interaksi antar objek. Diagram ini menunjukkan serangkaian pesan yang dipertukarkan oleh objek-objek yang melakukan suatu tugas atau aksi tertentu dalam suatu urutan waktu.

Aktivitas yang terjadi ketika pengguna sistem atau objek berinteraksi ke objek lain digambarkan dengan tanda panah garis penuh, sedangkan garis putus-putus menggambarkan respon sistem terhadap pengguna sistem yaitu pengirim dan penerima.

Gambar 3.7 Diagram Sequence Sistem

Gambar 3.7. menggambarkan user dan objek saling berinteraksi di mana seluruh objek mengirimkan pesan perintah yang akan dieksekusi. Pengguna sistem

awalnya melakukan pembangkitan kunci, setelah itu melakukan proses enkripsi pesan dan kunci. Kemudian menuju halaman dekripsi dan melakukan dekripsi kunci lalu dekripsi pesan untuk mendapatkan pesan kembali ke bentuk asli.

3.2.4 Flowchart

Flowchart merupakan bagan-bagan yang memiliki arus yang menggambarkan langkah-langkah dalam penyelesaian suatu masalah. Flowchart merupakan cara penyajian dari suatu algoritma (Ladjamudin, 2013).

3.2.4.1. Flowchart Sistem

Flowchart sistem merupakan gambaran dari proses terjadinya enkripsi dan dekripsi pada file yang diinputkan. Selanjutnya flowchart akan dijelaskan dalam tiga bagian yaitu flowchart pembangkit kunci, flowchart enkripsi dan flowchart dekripsi.

Gambar 3.8 Flowchart Sistem

3.2.4.2. Flowchart Pembangkit Kunci

Gambar 3.9 Flowchart Proses Pembangkitan Kunci

Berdasarkan gambar 3.9, dijelaskan bahwa untuk melakukan pembangkit kunci, hal pertama yang dilakukan adalah user membangkitkan kunci Rabin-p, dibangkitkan dua buah bilangan prima 𝑝 dan π‘ž, dimana 𝑝 ≑ π‘ž ≑ 3(π‘šπ‘œπ‘‘ 4). Jika nilai memenuhi maka akan didapat nilai 𝑝 dan π‘ž. Setelah itu maka proses selanjutnya adalah membangkitkan kunci publik, lalu setelah proses tersebut berhasil maka kunci publik (N) dan kunci privat (p) akan ditampilkan.

3.2.4.3. Flowchart Algoritma Rabin-p

Gambar 3.10 Flowchart Enkripsi Algoritma Kunci Publik Rabin-p

Flowchart enkripsi Algoritma Rabin-p menunjukan proses enkripsi kunci mulai dari menginputkan kunci dari algoritma Spritz dan kunci publik dari algoritma

Flowchart enkripsi Algoritma Rabin-p menunjukan proses enkripsi kunci mulai dari menginputkan kunci dari algoritma Spritz dan kunci publik dari algoritma

Dokumen terkait