KRIPTANALISIS HASIL ENKRIPSI ALGORITMA VIGENERE CIPHER DAN TRANPOSISI MYSZKOWSKI
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Informatika
Oleh :
Mario Agustorius Lioda Gheta Seda 155314072
PROGRAM STUDI INFORMATIKA JURUSAN INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2021
i
KRIPTANALISIS HASIL ENKRIPSI ALGORITMA VIGENERE CIPHER DAN TRANPOSISI MYSZKOWSKI
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Informatika
Oleh :
Mario Agustorius Lioda Gheta Seda 155314072
PROGRAM STUDI INFORMATIKA JURUSAN INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
2021
ii
THE CRYPTANALYSIS OF ENCRYPTION RESULTS VIGENERE CIPHER AND MYSZKOWSKI TRANSPOSITION
THESIS
Present as Partial Fulfillment of the Requirement To Obtain Sarjana Komputer Degree in Informatics Study Program
By :
Mario Agustorius Lioda Gheta Seda 155314072
INFORMATICS STUDY PROGRAM DEPARTMENT OF INFORMATICS FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY YOGYAKARTA
iii 2021
iv
v
HALAMAN MOTTO
“Live life with no regret’s” -Marv
vi
vii
viii ABSTRAK
Penggunaan algoritma kriptografi modern yang ditemukan dan dikembangkan masih banyak ditemui, algoritma kriptografi klasik masih digunakan untuk mengenkripsi suatu plainteks. Salah satu metode enkripsi dalam algoritma kriptografi klasik adalah Vigenere Cipher. Dalam penerapannya metode enkripsi dengan algoritma klasik masih sangat mudah dipecahkan menggunakan komputer canggih. Metode enkripsi gabungan berfungsi untuk memperkuat penyandian pesan menggunakan algoritma vigenere dan transposisi myszkowski. Kriptanalisis Hasil Enkripsi Algoritma Vigenere Cipher Dan Tranposisi Myszkowski dilakukan untuk menganalisis hasil kekaburan enkripsi gabungan vigenere dan transposisi myszkowski menggunakan matriks unjuk kerja avalanche effect dan operasi XOR. Berdasarkan hasil penelitian, kombinasi algoritma vigenere dan transposisi myszkowski memiliki tingkat kekaburan yang lebih baik dibanding enkripsi algoritma vigenere. Kemudian untuk variasi pesan dan kunci 2 bit pada hasil enkripsi antara kombinasi algoritma vigenere dan transposisi myszkowski dengan algoritma vigenere lebih baik dari pada 1 bit pada hasil enkripsi.
Kata kunci : Vigenere Cipher, Transposisi Myszkowski, Kriptografi.
ix ABSTRACT
The use of modern cryptographic algorithms that are found and developed are still widely found, classical cryptographic algorithms are still used to encrypt a plaintext.
One of the encryption methods in classical cryptographic algorithms is the Vigenere Cipher. The encryption method with the classical algorithm is still very easy to crack using sophisticated computers. The combined method works to strengthen the encoding of messages using the vigenere algorithm and myszkowski transposition. The cryptanalysis of the results of the encryption of the Vigenere Cipher Algorithm and Myszkowski Transposition was carried out to analyze the combined blurring of the vigenere and myszkowski transposition using the avalanche effect performance and XOR operation. Based on the research, the combination of vigenere algorithm and myszkowski transposition has a better level of obscurity than the encryption algorithm of vigenere. Then for the variation of the message and the 2-bit key in the encryption results between the combination of the vigenere algorithm and myszkowski transposition with the vigenere algorithm, it is better than 1 bit in the encryption result.
Keywords: Vigenere Cipher, Myszkowski Transposition, Cryptography.
x
KATA PENGANTAR
Puji Syukur kepada Tuhan, atas segala berkat dan kelancaran yang diberikan sehingga penulis dapat menyelesaikan tugas akhir ini sebagai salah satu syarat memperoleh gelar sarjana program studi Informatika, Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
Penelitian dan penulisan tugas akhir ini berjalan cukup baik dari awal hingga akhir karena usaha dan simpatisan dari kerabat dekat penulis. Oleh karena itu, dengan segala hormat saya berikan ucapan terima kasih kepada :
1. Orang tua yang sangat saya hormati, Bernardus Seda dan Mariane Saloh yang selalu mendukung, menguatkan, memberikan masukan, serta solusi setiap harinya.
2. Bapak Bambang Soelistijanto Ph.D., selaku dosen pembimbing satu yang telah membimbing dengan baik dan sabar.
3. Ibu Vittalis Ayu, S.T., M.Cs., selaku dosen pembimbing dua yang telah membantu penulis dalam mempercepat penyelesaian tugas akhir.
4. Bapak Sudi Mungkasi S.Si., M.Math.Sc., Ph.D selaku Dekan Fakultas Sains dan Teknologi Universitas Sanata Dharma Yogyakarta.
5. Bapak Robertus Adi Nugroho S.T., M.Eng selaku Ketua Program Studi Informatika Universitas Sanata Dharma.
6. Seluruh jajaran dosen yang telah mendidik dan memberikan ilmu pengetahuan selama menempuh studi di Universitas Sanata Dharma Yogyakarta.
7. Kerabat dekat penulis diantaranya Galih Suprayogo dan Yasintha Puteri yang telah menjadi teman untuk bertukar pikiran selama menyelesaikan tugas akhir ini.
xi DAFTAR ISI
COVER
HALAMAN JUDUL ... i
HALAMAN PERSETUJUAN ... iii
HALAMAN PENGESAHAN ... iv
HALAMAN MOTTO ... v
PERNYATAAN KEASLIAN KARYA ... vi
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIA UNTUK KEPENTINGAN AKADEMIS ... vii
ABSTRAK ... viii
KATA PENGANTAR ... x
DAFTAR ISI ... xi
DAFTAR GAMBAR ... xiii
DAFTAR TABEL ... xiv
BAB I PENDAHULUAN ... 1
1.1 Latar Belakang ... 1
1.2 Rumusan Masalah ... 2
1.3 Tujuan... 2
1.4 Manfaat... 2
1.5 Batasan Masalah ... 2
1.6 Sistematika Penulisan ... 3
BAB II LANDASAN TEORI ... 4
2.1 Kriptografi ... 4
2.1.1 Tujuan Kriptografi ... 4
2.1.2 Terminologi Kriptografi ... 5
2.1.3 Kriptografi Klasik ... 5
2.2 Vigenere Cipher ... 6
2.2.1 Enkripsi Vigenere Cipher ... 8
2.3 Transposisi Myszkowski ... 10
BAB III METODOLOGI PENELITIAN... 12
xii
3.1 Proses Enkripsi ... 12
3.1.1 Kebutuhan Input ... 13
3.1.2 Kebutuhan Proses ... 13
3.1.3 Kebutuhan Output ... 13
3.2 Matriks Unjuk Kerja ... 14
3.2.1 Avalanche Effect (AE) ... 14
3.2.2 Running Time ... 14
3.3 Parameter Enkripsi ... 15
3.4 Alat Penelitian ... 15
3.4.1 Hardware ... 15
3.4.2 Software ... 15
BAB IV PENGUJIAN DAN ANALISIS ... 16
4.1 Hasil Simulasi ... 16
4.1.1 Perbandingan avalanche effect enkripsi berdasarkan variasi pesan antara Vigenere dengan Myszkowski ... 17
4.1.2 Perbandingan avalanche effect enkripsi berdasarkan variasi kunci antara Vigenere dengan Myszkowsk ... 18
4.1.3 Perbandingan running time variasi pesan antara Vigenere dengan Myszkowski ... 19
4.1.4 Perbandingan running time variasi kunci antara Vigenere dengan Myszkowski ... 19
BAB V KESIMPULAN DAN SARAN ... 20
5.1 Kesimpulan ... 20
5.2 Saran ... 20
DAFTAR PUSTAKA ... 21
xiii
DAFTAR GAMBAR
Gambar 2.1 Bujur Sangkar Vigenere Cipher ... 8
Gambar 3.1 Proses Enkripsi ... 12
Gambar 4.1 Grafik Perbandingan Avalanche Effect dari pesan atau plainteks ... 16
Gambar 4.2 Grafik Perbandingan Avalanche Effect dari kunci vigenere ... 17
Gambar 4.3 Grafik Perbandingan running time dari pesan atau plainteks ... 18
Gambar 4.4 Grafik Perbandingan running time dari kunci vigenere ... 19
xiv
DAFTAR TABEL
Tabel 2.1 10 Karakter dalam modulo 10 ... 9
Tabel 2.2 Enkripsi ADA_ECI Dengan Kunci Dia ... 9
Tabel 2.3 Matriks Transposisi Myszkowski ... 10
Tabel 3.1 Parameter Enkripsi ... 15
1 BAB I PENDAHULUAN 1.1 Latar Belakang
Kriptografi merupakan suatu bidang ilmu yang dikembangkan untuk melindungi data atau informasi dari akses illegal, dengan cara mengkonversi data atau informasi dari bentuk yang dapat dibaca (plainteks) ke dalam bentuk yang sulit bahkan tidak bisa dimengerti (cipherteks) oleh pihak yang menggunakan kunci tertentu. Untuk mengubah data menjadi sebuah sandi, diperlukan kunci serta algoritma kriptografi. Pada perkembangannya sudah banyak algoritma kriptografi yang digunakan, tetapi algoritma kriptografi klasik pun masih sering digunakan untuk mengenkripsi suatu plainteks. Salah satu teknik enkripsi dalam kriptografi klasik yaitu menggunakan algoritma Vigenere Cipher. Tetapi dalam penerapannya metode enkripsi dengan algoritma klasik mudah dipecahkan.
Menurut penelitian oleh Achmad Rezan (2011) dengan judul Pengukuran Kekuatan Kunci pada Vigenere Cipher, kelemahan algoritma vigenere cipher dapat dipecahkan menggunakan metode kasiski dengan memanfaatkan frasa yang berulang sehingga menghasilkan potongan cipherteks yang sama.
Berdasarkan hal tersebut dibuatlah metode enkripsi gabungan untuk memperkuat penyandian pesan menggunakan algoritma vigenere dan transposisi myszkowski. Pada penelitian ini, penulis melakukan analisis terhadap hasil kekaburan enkripsi gabungan Vigenere dan transposisi Myszkowski menggunakan matriks unjuk kerja avalanche effect dan operasi XOR.
2
1.2 Rumusan Masalah
Berdasarkan latar belakang yang telah dipaparkan di atas, dapat dirumuskan bagaimana tingkat kekaburan hasil enkripsi menggunakan algoritma Vigenere dan tranposisi Myszkowski.
1.3 Tujuan
Tujuan dari penelitian ini adalah sebagai berikut :
1. Melakukan proses analisis terhadap pesan yang telah dienkripsi menggunakan algoritma Vigenere dan transposisi Myszkowski.
2. Mengetahui kekaburan hasil enkripsi menggunakan operasi XOR dan matriks unjuk kerja avalanche effect.
3. Mengetahui beban komputasi atau running time dari proses enkripsi pada algoritma Vigenere dan transposisi Myszkowski.
1.4 Manfaat
Hasil dari penelitian ini dapat digunakan sebagai acuan dalam pertimbangan penggunaan kriptografi klasik.
1.5 Batasan Masalah
1. Penelitian ini melakukan proses enkripsi dan menganalisis.
2. Teks yang digunakan dalam proses enkripsi dan analisis yaitu Bahasa Indonesia.
3. Penelitian ini tidak melakukan proses dekripsi.
4. Algoritma yang digunakan adalah Vigenere dan transposisi Myszkowski.
5. Metode yang digunakan untuk melihat seberapa kabur hasil enkripsi adalah operasi XOR dan avalanche effect.
6. Pesan dan kunci telah ditentukan penulis.
7. Menggunakan matriks unjuk kerja running time.
1.6 Sistematika Penulisan 1. BAB I PENDAHULUAN
Bab ini berisi penjelasan tentang latar belakang masalah, rumusan masalah, tujuan penelitian, manfaat penelitian, batasan masalah, metodologi penelitian, dan sistematika penulisan.
2. BAB II LANDASAN TEORI
Bab ini berisi tentang dasar teori yang digunakan sebagai dasar dalam melakukan penelitian tugas akhir.
3. BAB III METODOLOGI PENELITIAN
Bab ini menjelaskan proses perancangan dari “Kriptanalisis Hasil Enkripsi Algoritma Vigenere Cipher dan Transposisi Myszkowski” meliputi langkah proses dari awal enkripsi dan proses analisis.
4. BAB IV PENGUJIAN DAN ANALISIS
Bab ini berisi tentang cara kerja untuk melakukan analisis kekaburan hasil perulangan enkripsi menggunakan operasi XOR dan avalanche effect.
5. BAB V KESIMPULAN DAN SARAN
Bab ini berisi tentang kesimpulan hasil penelitian dan saran dari penulis untuk penelitian selanjutnya.
4 BAB II
LANDASAN TEORI
2.1 Kriptografi
Kriptografi adalah ilmu mengenai teknik enkripsi dimana “naskah asli”
(plaintext) diacak menggunakan suatu kunci enkripsi menjadi “naskah acak yang sulit dibaca” (ciphertext) oleh seseorang yang tidak memiliki kunci dekripsi.
Dekripsi menggunakan kunci dekripsi bisa mendapatkan kembali data asli.
Probabilitas mendapat kembali naskah asli oleh seseorang yang tidak mempunyai kunci dekripsi dalam waktu yang tidak terlalu lama adalah sangat kecil.
Teknik enkripsi yang digunakan dalam kriptografi klasik adalah enkripsi simetris dimana kunci dekripsi sama dengan kunci enkripsi. Untuk public key cryptography, diperlukan teknik enkripsi asimetris dimana kunci dekripsi tidak sama dengan kunci enkripsi. Enkripsi, dekripsi dan pembuatan kunci untuk teknik enkripsi asimetris memerlukan komputasi yang lebih intensif dibandingkan enkripsi simetris, karena enkripsi asimetris menggunakan bilangan – bilangan yang sangat besar.
2.1.1 Tujuan Kriptografi
Ada empat tujuan mendasar dari ilmu kriptograpi ini juga merupakan aspek keamanan informasi yaitu:
1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.
2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan,
penghapusan, dan pensubtitusian data lain kedalam data yang sebenarnya.
3. Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri.
Informasi yang dikirimkan melalui kanal harusdiautentikasi keaslian isi datanya, waktu pengiriman dan lain-lain.
4. Non-repudiasi, atau penyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman / terciptanya suatu informasi oleh yang mengirimkan atau membuat.
2.1.2 Terminologi Kriptografi
Di dalam kriptografi kita akan sering menemukan berbagai istilah atau terminologi. Beberapa istilah yang harus diketahui yaitu :
1. Plainteks, informasi yang dapat dibaca dan dimengerti maknanya (baik dipersepsi secara visual maupun audial).
2. Sender, pihak yang mengirim pesan.
3. Receiver, pihak yang menerima pesan.
4. Cipherteks, pesan yang telah disandikan sehingga tidak bermakna lagi.
5. Enkripsi, proses menyandikan plainteks menjadi cipherteks.
6. Dekripsi, Proses mengembalikan cipherteks menjadi plainteks semula.
2.1.3 Kriptografi Klasik
Kriptografi klasik adalah algoritma kriptorafi (chiper) yang berbasis karakter yaitu enkripsi dan dekripsi dilakukan pada setiap karakter pesan.
Semua algoritma klasik termasuk ke dalam sistrm kriptografi simetris dan
6
digunakan jauh sebelum kriptografi kunci publik ditemukan. Kriptogarfi klasik termasuk ke dalam kriptografi kunci simetris. Pada dasarnya, algoritma kriptografi klasik dapat dikelompokkan ke dalam dua macam cipher, yaitu :
a. Cipher substitusi (substitution cipher)
Di dalam cipher substitusi setiap unit plainteks diganti dengan satu unit cipherteks. Satu unit di sini berarti satu huruf, pasangan huruf, atau dikelompokkan lebih dari dua huruf.
b. Cipher transposisi (transposition cipher)
Pada cipher transposisi, huruf-huruf di dalam plainteks diubah urutannya. Dengan kata lain algoritma ini melakukan transpose terhadap rangkaian karakter di dalam teks. Nama lain untuk metode ini adalah permutasi atau pengacakan (scrambling) karena transpose setiap karakter di dalam teks sama dengan mempermutasikan karakter- karkater tersebut. (Munir.2006).
2.2 Vigenere Cipher
Vigenere Cipher adalah suatu algoritma kriptografi klasik yang ditemukan oleh Giovan Battista Bellaso. Beliau menuliskan metodenya tersebut pada bukunya yang berjudul La Cifra del. Sig. Giovan Battista Bellaso pada tahun 1553. Nama vigenere sendiri diambil dari seorang yang bernama Blaise de Vigenere. Nama vigenere diambil sebagai nama algoritma ini karena beliau menemukan kunci yang lebih kuat lagi untuk algoritma ini dengan metode autokey cipher meskipun algoritma dasarnya telah ditemukan lebih dahulu oleh Giovan Battista Bellaso.
Algoritma ini menjadi terkenal karena cukup sulit dipecahkan. Matematikawan Charles Lutwidge Dodgson menyatakan bahwa algoritma ini tidak terpecahkan.
Pada tahun 1917, ilmuwan Amerika menyebutkan bahwa Vigenere cipher adalah sesuatu yang tidak mungkin untuk ditranslasikan. Namun hal ini terbantahkan sejak
Kasiski berhasil memecahkan algoritma pada abad ke-19. Pada dasarnya Vigenere Cipher serupa dengan Caesar Cipher, perbedaannya adalah pada Vigenere Cipher setiap huruf pesan aslinya digeser sebanyak satu huruf pada kuncinya sedangkan pada Caesar Cipher setiap huruf pesannya digeser sebanyak 1 huruf yang sama.
Algoritma Vigenere Cipher ini menggunakan bujursangkar Vigenere untuk melakukan enkripsi. Setiap baris di dalam bujursangkar menyatakan huruf-huruf ciphertext yang diperoleh dengan Caesar cipher. Untuk lebih jelasnya perhatikan gambar di bawah ini. Deretan huruf mendatar merepresentasikan plaintext, sedangkan deretan huruf menurun merepresentasikan kunci.
Vigenere chiper merupakan salah satu algoritma kriptografi klasik untuk menyandikan suatu plaintext dengan menggunakan teknik substitusi.Vigenere cipher pada dasarnya cukup rumit untuk dipecahkan. Meskipun begitu, Vigenere cipher tetap memiliki kelemahan. Salah satunya adalah dapat diketahui panjang kuncinya dengan menggunakan metode kasiski. Hal ini disebabkan karena umumnya terdapat frasa yang berulang-ulang pada ciphertext yang dihasilkan.
Enkripsi : Ci= (Pi+Ki) mod 26 Deskripsi : Pi= (Ci+Ki) mod 26
Untuk menyandikan pesan, digunakan sebuah pesan alphabetis yg di urut, dan di geser 1 shift untuk alphabet yg selanjut nya.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z B C D E F G H I J K L M N O P Q R S T U V W X Y Z A C D E F G H I J K L M N O P Q R S T U V W X Y Z A B Dst..
Contoh penyelesaian vigenere chiper sederhana:
Plainteks : azizul hakim prabowo
8
Key : inform atika informa
Maka, akan di dapat kan chiperteks : imnokx atssm xefpfio
Gambar 2.1 Bujur Sangkar Vigenere Cipher
2.2.1 Enkripsi Vigenere Cipher
Secara matematis, enkripsi Vigènere Cipher dengan jumlah karakter sebanyak 26 dapat ditulis seperti di bawah ini.
ci≡(pi+kj ) mod 26 atau
ci≡(pi+kj ) mod n (untukVigenere Cipher dengan jumlah karakter n) Keterangan :
p = plaintext, k = key
i = 1, 2, 3, …, (panjang kunci) j = (( i– 1) mod 25) +1
Contoh (Enkripsi Vigenere Cipher)
Terdapat 10 karakter (n=10) yang digunakan, yaitu "A", "B", "C", "D",
"E", "F", "G", "H", "I" dan "_", yang bersesuaian dengan bilangan bulat 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (modulo 10) seperti tabel 2.1.
Tabel 2.1 10 Karakter dalam modulo 10
A B C D E F G H I _ 0 1 2 3 4 5 6 7 8 9
Misalkan plainteks yang akan dienkripsikan adalah ADA_ECI.
Plainteks : ADA_ECI yang bersesuaian dengan 0 3 0 9 4 2 8 Dengan kunci DIA yang bersesuaian dengan 3 8 0
Tabel 2.2 Enkripsi ADA_ECI Dengan Kunci Dia A D A _ E C I
0 3 0 9 4 2 8 D I A D I A D 3 8 0 3 8 0 3
Maka berdasarkan tabel II :
E(A) = (0+3) mod 10 = 3 = D E(E) = (4+8) mod 10 = 2 = C E(D) = (3+8) mod 10 = 1 = B E(C) = (2+0) mod 10 = 2 = C E(A) = (0+0) mod 10 = 0 = A E(I) = (8+3) mod 10 = 1 = B E(_) = (9+3) mod 10 = 2 = C
Cipherteks : DBACCCB
10
2.3 Transposisi Myszkowski
Myszkowski Transposition merupakan sebuah variasi perkembangan dari columnar transposition cipher yang diusulkan oleh Emile Victor Thedore Myszkowski. Beliau adalah seorang pensiunan colonel dari Militer Perancis yang dipublikasikan melalui buku yang pernah ditulisnya yaitu “Cryptographie Indéchiffrable” di tahun 1902 yang memperkenalkan sebuah variasi metode penyadian dengan memerlukan sebuah kata kunci yang mempunyai karakter berulang. Kunci rahasia yang digunakan dalam algoritma Myszkowski Transposition adalah huruf yang sesuai dengan urutan abjad yang kemudian disusun menjadi urutan angka. Dalam metode penyandian kunci rahasia transposition dilakukan dengan cara meletakkan plaintext yang akan dienkripsi dan untuk membaca pesan aslinya kembali, dilakukan dengan mengembalikan letak dari pesan tersebut berdasarkan kunci rahasia dan algoritma pergeseran yang telah disepakati.
Berikut contoh dari algoritma Myszkowski Transposition: 1. Sebagai contoh untuk enkripsi, kita mempunyai kunci “SWINDON” dengan karakter
“A Midsummer Night's Dream”. Dalam algoritma Myszkowski Transposition proses penyandian didefinisikan sesuai urutan abjad serta kemunculan karakter yang sama diberi nomor urutan yang sama, sehingga kata kunci dapat dilihat pada tabel 2.3 sebagai berikut:
Tabel 2.3 Matriks Transposisi Myszkowski 5 6 2 3 1 4 3
A M I D S U M
M E R N I G H
T S D R E A M
Kunci “SWINDON” diambil sesuai dengan urutan abjad menjadi 5623143, dimana abjad paling kecil menempati urutan pertama dan diikuti oleh abjad berikutnya sesuai urutan alfabet. Penomoran atau indexing dimulai dari angka 1 dan seterusnya. Kemudian pesan “A Midsummer Night's Dream”
dimasukkan ke dalam matriks sesuai dengan urutan kunci “SWINDON” urut dari kiri ke kanan. Jika ada spasi dan karakter akan diabaikan.
Pengorderan diambil berdasarkan nomor indeks terkecil dari atas ke bawah. Jika ada nomor indeks yang sama, diambil secara urut dari kiri ke kanan atau secara horizontal. Sehingga, berdasarkan tabel 2.3 menghasilkan cipherteks sebagai berikut.
SIE IRD DMN HRM UGA AMT MES
12 BAB III
METODOLOGI PENELITIAN 3.1 Proses Enkripsi
Berdasarkan latar belakang penelitian, maka kebutuhan dari hasil penelitian ini adalah analisa proses terhadap pesan yang telah di enkripsi. Metode enkripsi Vigenere Cipher dan Transposisi Myszkowski adalah metode enkripsi dengan cara melakukan proses enkripsi gabungan Vigenere dan Myszkowski untuk sekali proses enkripsi dengan pesan dan kunci yang berubah. Metode enkripsi dapat digambarkan sebagai berikut:
Gambar 3.1 Proses Enkripsi
Proses yang terjadi hanya dilakukan sekali dan tanpa perulangan. Cipherteks hasil enkripsi kombinasi Vigenere dan Myszkowski diperoleh dengan enkripsi plainteks menggunakan Vigenere Cipher dan hasilnya di transposisi dengan Myzkowski. Untuk metode enkripsi ini, spasi akan diabaikan.
3.1.1 Kebutuhan Input
1. Menggunakan beberapa kalimat sebagai plainteks.
2. Menggunakan beberapa karakter huruf sebagai kunci Vigenere dan kunci Myszkowski.
3.1.2 Kebutuhan Proses
1. Enkripsi plainteks menggunakan Vigenere Cipher.
2. Hasil cipherteks enkripsi dengan Vigenere Cipher kemudian dienkripsi lagi menggunakan transposisi Myszkowski.
3.1.3 Kebutuhan Output
Dari proses enkripsi kombinasi Vigenere dan Myszkowski dihasilkan cipherteks kombinasi.
14
3.2 Matriks Unjuk Kerja
3.2.1 Avalanche Effect (AE)
Avalanche Effect adalah perubahan bit kecil (misalnya, satu bit) baik pada plainteks maupun kunci yang akan menyebabkan perubahan signifikan terhadap hasil cipherteks. Rumus untuk menghitung avalanche effect adalah sebagai berikut.
Avalanche Effect (AE) = jumlah bit berubah
total bit x 100%
Keterangan :
jumlah bit berubah = binary plain teks XOR binary cipherteks myszkowski.
total bit = panjang binary plain teks (length).
3.2.2 Running Time
Running Time adalah waktu yang dibutuhkan oleh sebuah algoritma untuk menyelesaikan proses enkripsi. Running time dihitung mulai dari algoritma dimulai sampai algoritma berhenti.
Running Time = waktu akhir – waktu awal
Keterangan :
waktu akhir = waktu yang diambil dari akhir proses enkripsi.
waktu awal = waktu yang diambil dari awal proses enkripsi.
3.3 Parameter Enkripsi
Tabel 3.1 Parameter Enkripsi
Parameter Inputan
Plainteks marioagustoriusliodaghetaseda
Kunci Vigenere marvnomercy
Kunci Myszkowski swindon
3.4 Alat Penelitian 3.4.1 Hardware
Dalam penelitian ini, penguji menggunakan laptop dengan spesifikasi prosesor AMD A10-9600P Radeon R5, 10 COMPUTE CORES 4C +6G (4 CPUs) 2.4Ghz RAM 8 GB dengan sistem operasi windows 10 64bit.
3.4.2 Software
1. Visual Studio Code (Vs Code) versi 1.56.2.
2. Git versi 2.31.1 64bit.
3. Cmder versi 1.3.18.1106.
16 BAB IV
PENGUJIAN DAN ANALISIS
Pengujian dan analisis hasil enkripsi dilakukan dengan menggunakan algoritma vigenere dan transposisi myszkowski, maka dilakukan running program sesuai dengan rancangan skenario yang sudah dijelaskan pada Bab III. Data dari output digunakan untuk proses analisis untuk mengetahui tingkat kekaburan hasil enkripsi.
4.1 Hasil Simulasi
4.1.1 Perbandingan avalanche effect enkripsi berdasarkan variasi pesan antara Vigenere dengan Myszkowski
Gambar 4.1 Grafik Perbandingan Avalanche Effect dari pesan atau plainteks.
Pengujian pertama perbandingan berapa persen avalanche effect enkripsi berdasarkan variasi pesan antara vigenere cipher dengan kombinasi myszkowski dengan pesan awal marioagustoriusliodaghetaseda dan kunci marvnomercy. Dari hasil penelitian ini terlihat pesan dengan perbebedaan 1 bit lebih tinggi dari pesan dengan perbedaan 2 bit.
31.47 32.33 31.47 31.90
34.91
32.76
29.00 30.00 31.00 32.00 33.00 34.00 35.00 36.00
pesan awal Beda 1 bit Beda 2 bit
TINGKAT KEKABURAN (%)
VARIASI PESAN
AVALANCHE EFFECT (%)
Vigenere Vigenere & Myszkowski
4.1.2 Perbandingan avalanche effect enkripsi berdasarkan variasi kunci antara Vigenere dengan Myszkowski
Gambar 4.2 Grafik Perbandingan Avalanche Effect dari kunci vigenere.
Pengujian kedua perbandingan berapa persen avalanche effect enkripsi berdasarkan variasi kunci antara vigenere cipher dengan kombinasi myszkowski dengan pesan awal marioagustoriusliodaghetaseda dan kunci marvnomercy. Dari hasil penelitian ini terlihat kunci dengan perbebedaan 1 bit memiliki nilai yang sama dengan pesan 2 bit.
31.47
31.90
31.03 32.33
32.76 32.76
30.00 30.50 31.00 31.50 32.00 32.50 33.00
kunci awal Beda 1 bit Beda 2 bit
TINGKAT KEKABURAN (%)
VARIASI KUNCI
AVALANCHE EFFECT (%)
Vigenere Vigenere & Myszkowski
18
4.1.3 Perbandingan running time variasi pesan antara Vigenere dengan Myszkowski
Gambar 4.3 Grafik Perbandingan Running Time pesan atau plainteks.
Pengujian ketiga perbandingan running time enkripsi berdasarkan variasi pesan antara vigenere cipher dengan kombinasi myszkowski dengan pesan awal marioagustoriusliodaghetaseda dan kunci marvnomercy. Dari hasil penelitian ini terlihat hasil running time dengan perbedaan 2 bit lebih tinggi sedikit dari perbedaan 1 bit.
0.002 0.002 0.002
0.005 0.005
0.006
0.000 0.002 0.004 0.006 0.008
pesan awal Beda 1 bit Beda 2 bit
WAKTU (M/S)
VARIASI PESAN
RUNNING TIME
Vigenere Vigenere & Myszkowski
4.1.4 Perbandingan running time variasi kunci antara Vigenere dengan Myszkowski
Gambar 4.4 Grafik Perbandingan Running Time dari kunci vigenere.
Pengujian keempat perbandingan running time enkripsi berdasarkan variasi kunci antara vigenere cipher dengan kombinasi myszkowski dengan pesan awal marioagustoriusliodaghetaseda dan kunci marvnomercy. Dari hasil penelitian ini terlihat hasil running time perbedaan 2 bit jauh lebih tinggi dari perbedaan 1 bit dan pesan awal.
0.002 0.002
0.004
0.005 0.006
0.012
0.000 0.005 0.010 0.015
kunci awal Beda 1 bit Beda 2 bit
WAKTU (M/S)
VARIASI KUNCI
RUNNING TIME
Vigenere Vigenere & Myszkowski
20 BAB V
KESIMPULAN DAN SARAN 5.1 Kesimpulan
Setelah melakukan pengujian dan analisis pada data hasil simulasi, kesimpulan yang didapat adalah sebagai berikut:
1. Berdasarkan hasil analisis, tingkat kekaburan kombinasi algoritma vigenere dan transposisi myszkowski lebih baik dibanding enkripsi vigenere.
2. Berdasarkan hasil pengujian pada variasi pesan dan kunci, dapat disimpulkan bahwa perbedaan 2 bit pada pesan dan kunci tidak selalu baik dari pada 1 bit.
5.2 Saran
Untuk penelitian lebih lanjut diharapkan dapat menggunakan Bahasa komputer untuk menghasilkan tingkat kekaburan yang lebih baik.
21
DAFTAR PUSTAKA
Aized Amin Soofi, I. R., & Rasheed, U. (2016). An Enhanced Vigenere Cipher For Data Security. International Journal of Scientific & Technology Research Vol.
5, Issue 03, 141-143.
Andriyani, S. Y. (2019). Implementasi Algoritma Kriptografi Rail Fence Cipher dan Algoritma Myszkowski Transposition dan Algoritma Kompresi Fibonacci Code. Medan: Universitas Sumatera Utara.
Permanasari, Y. (2017). Kriptografi Klasik Monoalphabetic. Jurnal Matematika Vol.
16, No. 1 ISSN : 1412-5056, 7.
Sanjaya, G. M. (2019). Analisis Kekaburan Chiperteks Hasil Perulangan Enkripsi Algoritma Substitusi Vigenere dan Transposisi Columnar. Yogyakarta:
Universitas Sanata Dharma.
Sugiyanto, & Hapsari, R. K. (2016). Pengembangan Algoritma Advanced Encryption Standard pada Sistem Keamanan SMS Berbasis Android Menggunakan Algoritma Vigenere. Jurnal Teknik Informatika ISSN 2085-4552, 133-135.
LAMPIRAN 1 Kelas List
public class List {
LinkedList<Integer> indexSpace;
LinkedList<Character> indexChar;
public List() {
indexSpace = new LinkedList<Integer>();
indexChar = new LinkedList<Character>();
}
public LinkedList<Character> getIndexChar() { return indexChar;
}
public void setIndexChar(LinkedList<Character> indexChar) { this.indexChar = indexChar;
}
public void add(int x) { indexSpace.add(x);
}
public void addChar(char x) { indexChar.add(x);
}
public boolean checkCharacter(int x) {
for (int i = 0; i < indexSpace.size(); i++) { if (indexSpace.get(i) == x) {
return true;
} }
return false;
}
public boolean checkKey(char x) {
for (int i = 0; i < indexChar.size(); i++) { if (indexChar.get(i) == x) {
return true;
}
}
return false;
}
public int checkIndex(char x) { int temp = 0;
for (int i = 0; i < indexChar.size(); i++) { if (indexChar.get(i) == x) {
temp = i + 1;
} }
return temp;
}
public void sortKey() {
Collections.sort(indexChar);
}
public void print() {
for (int i = 0; i < indexSpace.size(); i++) { System.out.print(indexSpace.get(i) + " ");
} } }
LAMPIRAN 2 Kelas Vigenere
public class Vigenere {
List L = new List();
public String encriptLowerCase;
public Vigenere() { }
public String getEncriptLowerCase() { return encriptLowerCase.toLowerCase();
}
public void setEncriptLowerCase(String encriptLowerCase) { this.encriptLowerCase = encriptLowerCase;
}
public String encrypt(final String message, final String key) { String result = "";
int decrement = 1;
for (int i = 0, j = 0; i < message.length(); i++) { char c = message.charAt(i);
if (Character.isLetter(c)) {
if (Character.isUpperCase(c)) {
result += (char) ((c + key.toUpperCase().charAt(j) - 2 * 'A') % 26 + 'A');
} else {
result += (char) ((c + key.toLowerCase().charAt(j) - 2 * 'a') % 26 + 'a');
} } else {
L.add(i - decrement);
decrement++;
continue;
}
j = ++j % key.length();
}
setEncriptLowerCase(result);
return result;
}
public String removeHelper(String x) { String result = "";
for (int i = 0; i < x.length(); i++) { char c = x.charAt(i);
if (Character.isLetter(c)) { result += c;
} else { continue;
} }
return result.toLowerCase();
} }
LAMPIRAN 3 Kelas Myszkowski
public class Myszkowski { public String key;
public String chiperText;
int[] matrix;
char[][] two;
List L = new List();
public Myszkowski() { }
public Myszkowski(String key, String chiperText) { this.key = this.removeSpace(key.toLowerCase());
this.chiperText = this.removeSpace(chiperText.toLowerCase());
matrix = new int[getKey().length()];
two = this.checkLength();
}
public String getKey() { return key;
}
public void setKey(String key) { this.key = key;
}
public String getChiperText() { return chiperText;
}
public void setChiperText(String chiperText) { this.chiperText = chiperText;
}
public char[][] checkLength() {
if (getChiperText().length() > getKey().length()) {
two = new char[getChiperText().length()][getChiperText().le ngth()];
} else {
two = new char[getKey().length()][getKey().length()];
}
return two;
}
public String removeSpace(String x) { String result = "";
for (int i = 0; i < x.length(); i++) { char c = x.charAt(i);
if (Character.isLetter(c)) { result += c;
} else { continue;
} }
return result;
}
public String removeHelper(String x) { String result = "";
for (int i = 0; i < x.length(); i++) { char c = x.charAt(i);
if (Character.isLetter(c)) { result += c;
} else { continue;
} }
return result.toLowerCase();
}
public void convertKeyToNumbers() {
for (int i = 0; i < getKey().length(); i++) { char temp = getKey().charAt(i);
if (!L.checkKey(temp)) { L.addChar(temp);
} }
L.sortKey();
}
public void getIndexKey() {
for (int i = 0; i < getKey().length(); i++) { char c = getKey().charAt(i);
matrix[i] = L.checkIndex(c);
} }
public void createMatrix() { int j = 0;
for (int i = 0; i < getChiperText().length(); i++) { char karakter = getChiperText().charAt(i);
if (j < matrix.length) {
two[i][matrix[j]] = karakter;
} else { j = 0;
two[i][matrix[j]] = karakter;
} j++;
} }
public String rekursif() { String result = "";
for (int j = 1; j <= L.indexChar.size(); j++) { result += this.getMyszkowski(j);
}
return result;
}
public String getMyszkowski(int x) { String result = "";
for (int i = 0; i < two.length; i++) { if (Character.isLetter(two[i][x])) { result += two[i][x];
} }
return result;
} }
LAMPIRAN 4 Kelas Performance
public class Performance { ArrayList<String> xor;
public double changeBit;
public double totalBit;
public Performance() {
xor = new ArrayList<String>();
}
public double getChangeBit() { return changeBit;
}
public void setChangeBit(double changeBit) { this.changeBit = changeBit;
}
public double getTotalBit() { return totalBit;
}
public void setTotalBit(double totalBit) { this.totalBit = totalBit * 8;
}
public String convertStringToBinary(String input) { String result = "";
char[] chars = input.toCharArray();
for (char aChar : chars) {
result += String.format("%8s", Integer.toBinaryString(aChar )).replaceAll(" ", "0");
}
return result;
}
public String printBinary(String binary, int blockSize, String sepa rator) {
List<String> result = new ArrayList<>();
int index = 0;
while (index < binary.length()) {
result.add(binary.substring(index, Math.min(index + blockSi ze, binary.length())));
index += blockSize;
}
return result.stream().collect(Collectors.joining(separator));
}
public String xOR(String plainBinary, String myszkowskiBinary) { String result = "";
int count = 0;
for (int i = 0; i < plainBinary.length(); i++) { char p = plainBinary.charAt(i);
char m = myszkowskiBinary.charAt(i);
if (p == '1' && m == '1') { result += '0';
}
if (p == '1' && m == '0') { result += '1';
count++;
}
if (p == '0' && m == '1') { result += '1';
count++;
}
if (p == '0' && m == '0') { result += '0';
} }
setChangeBit(count);
return result;
}
public double avalancheEffect() {
double aE = (getChangeBit() * 100) / getTotalBit();
return aE;
} }
LAMPIRAN 5 Kelas TextReader
public class TextReader { public String directory;
public TextReader() { }
public TextReader(String directory) { this.directory = directory;
}
public String getDirectory() { return directory;
}
public void setDirectory(String directory) { this.directory = directory;
}
public String textReader() throws IOException { String input = "";
Path path = Paths.get(getDirectory());
DirectoryStream<Path> directoryStream = null;
if (Files.isDirectory(path)) {
directoryStream = Files.newDirectoryStream(path);
} else {
System.out.printf("%s does not exist%n", path);
}
for (Path p : directoryStream) {
Scanner sc = new Scanner(new FileReader(p.toString()));
while (sc.hasNext()) {
input = input + sc.next() + " ";
} }
return input;
} }
LAMPIRAN 6 Kelas VigenereMyszkowski
public class VigenereMyszkowskiMain {
public static void main(String[] args) throws IOException { TextReader psn = new TextReader("message");
String keyMyszkowski = "swindon";
String keyVigenere = "marvnomercy";
Vigenere v = new Vigenere();
System.out.println("message : " + psn.textReader());
System.out.println("vigenere key : " + keyVigenere);
System.out.println("myszkowski key : " + keyMyszkowski);
System.out.print("===================================");
System.out.println();
long startVige = System.currentTimeMillis();
String ciphertext = v.encrypt(psn.textReader(), keyVigenere);
long endVige = System.currentTimeMillis();
long totalTimeVige = (endVige - startVige);
System.out.println("Encrypt vigenere : " + v.getEncriptLowerC ase());
long startMyz = System.currentTimeMillis();
Myszkowski m = new Myszkowski(keyMyszkowski, ciphertext);
m.convertKeyToNumbers();
m.getIndexKey();
m.createMatrix();
String resultMyszkowski = m.rekursif();
long endMyz = System.currentTimeMillis();
long totalTimeMyz = (endMyz - startMyz);
System.out.println("Encrypt Myszkowski : " + resultMyszkowski);
System.out.print("===================================");
System.out.println();
Performance p = new Performance();
String plainNoSpace = m.removeHelper(psn.textReader());
String binaryPlain = p.convertStringToBinary(plainNoSpace);
String binaryMyszkowski = p.convertStringToBinary(resultMyszkow ski);
System.out.println("Binary Plain Text : " + p.printBinary(bin aryPlain, 8, " "));
System.out.println("Binary Myszkowski : " + p.printBinary(bin aryMyszkowski, 8, " "));
String xor = p.xOR(binaryPlain, binaryMyszkowski);
System.out.println("Operasi XOR : " + p.printBinary(xor , 8, " "));
System.out.println("Jumlah bit berubah : " + p.getChangeBit())
;
p.setTotalBit(plainNoSpace.length());
System.out.println("Total bit : " + p.getTotalBit());
System.out.println("Avalanche Effect : " + p.avalancheEffect () + " %");
System.out.println("thout time vige "+ totalTimeVige + " m/s");
System.out.println("thout time myz "+ totalTimeMyz + " m/s");
System.out.println("thout time gabungan "+ ( totalTimeVige + to talTimeMyz ) + " m/s");
} }