Implementasi Algoritma Vigenere Subtitusi dengan Shift Indeks Prima Muslim Ramli Magister Teknik Informatika, Universitas Sumatera Utara muslimramli@students.usu.ac.id Rahmadi Asri Magister Teknik Informatika, Universitas Sumatera Utara rahmadiasri@students.usu.ac.id Muhammad Zarlis Magister Teknik Informatika, Universitas Sumatera Utara m.zarlis@usu.ac.id Abstrak Kriptografi klasik seperti vigenere cipher merupakan salah satu algoritma kriptografi yang implementasinya sangat sederhana namun cukup kuat di zamannya. Setelah ditemukan metode kasiski, maka vigenere cipher sangat mudah untuk dianalisis oleh kriptanalis sehingga mendapatkan kunci kriptografinya. Hal ini disebabkan karena masih ada keterhubungan yang erat antara cipher, plainteks dan kunci kriptografi. Algoritma vigenere cihper ternyata dapat dimodifikasi dan dibuat pengamanan berlapis, begitu juga dengan kunci untuk proses enkripsi dan sebaliknya. Penambahan lapis kemanaan shift indeks prima dianggap dapat menambah langkah untuk memecahkan informasi rahasia. Keywords: Kriptografi, Vigenere, Cipher, plaintext, ciphertext, bilangan prima, kriptanaslis I. LATAR BELAKANG Keamanan data dan informasi merupakan hal sangat penting di era reformasi saat ini. Umumnya, setiap institusi memiliki dokumendokumen penting dan bersifat rahasia yang hanya boleh diakses oleh orang tertentu. Sistem informasi yang dikembangkan harus menjamin keamanan dan kerahasiaan dokumen-dokumen tersebut. Namun kendalanya bahwa media-media yang digunakan seringkali dapat disadap oleh pihak lain [1]. Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan agar aman. (Cryptography is the art and science of keeping messages secure) Crypto berarti secret (rahasia)vdan graphy berarti writing (tulisan). Para pelaku atau praktisi kriptografi disebut cyrptographers. Sebuah algoritma kriptografik (cryptographic algorithm), disebut cipher, merupakan persamaan matematik yang 149
digunakan untuk proses enkripsi dan dekripsi. Biasanya persamaan kedua matematik (untuk enkripsi dan dekripsi) tersebut memiliki hubungan matematis yang cukup erat [2]. Salah satu algoritma kriptografi klasik yang terkenal adalah Vigenere Cipher. Vigenere Cipher merupakan bentuk pola alphabetic subtitution seperti yang diungkapkan Caesar Chiper, namun menambahkan kunci lebih aman. Ide ini sudah diterapkan berkali-kali, namun pada tahun 1553 metode ini baru dikemukakan oleh Giovan Battista Bellaso di bukunya La cifra del. Sig. Giovan Battista Bellaso. Algoritma ini akhirnya terkenal dengan nama Vigenere Cipher karena pada tahun 1586 Blaise de Vigenere mempublikasikan ide yang sama namun dengan generator kunci yang lebih kuat, yaitu autokey cipher, Hallim (2010: 3). Vigenere Cipher sangat terkenal karena mudah untuk dimplementasikan. Metode ini juga cukup kuat untuk menghindari kriptanalis yang menggunakan analisis frekuensi.pada masa kejayaannya, sistem ini disebut sebagai le chiffre indechifferable. Hingga akhirnya seseorang bernama Frederich Kasiski dapat membuat metode yang efisien dalam memecahkan cipher vigenere. Algoritma kriptografi klasik seperti Vigenere Cipher sudah ditinggalkan oleh orang-orang karena cukup mudah dianalisis oleh kriptanalis. Apalagi dengan teknologi yang sudah ada saat ini dan ditemukannya metode kasiski, maka bila ingin menggunakan Vigenere Cipher ini dengan aman, kita perlu melakukan modifikasi dari cara sistem ini bekerja. Cara yang diusulkan kali ini adalah meng-generate sebuah urutan kunci secara random dari kunci yang telah disepakati bersama. II. TINJAUAN PUSTAKA 1. Kriptografi Kriptografi adalah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. Dalam ilmu kriptografi, terdapat dua buah proses yaitu melakukan enkripsi dan dekripsi. Pesan yang akan dienkripsi disebut sebagai plaintext (teks biasa). Disebut demikian karena informasi ini dengan mudah dapat dibaca dan dipahami oleh siapa saja. Algoritma yang dipakai untuk mengenkripsi dan mendekripsi sebuah plaintext melibatkan penggunaan suatu bentuk kunci. Pesan plaintext yang telah dienkripsi (atau dikodekan) dikenal sebagai ciphertext (teks sandi). Menurut Kaufman et. al. (2002) menjelaskan bahwa kata Kriptografi berasal dari bahasa yunani dan memiliki makna seni dalam menulis pesan rahasia (The art of secret writing), dimana kriptografi terdiri dari 2 kata yaitu yang berarti rahasia atau tersembunyi dan yang berarti tulisan. (Apriandala, 2013: 114). Di dalam kriptografi kita akan sering menemukan berbagai istilah atau terminology. Beberapa istilah yang harus diketahui yaitu : a. Pesan, Plainteks, dan Cipherteks Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah (plaintext) atau teks jelas (cleartext). b. Pengirim dan Penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim (sender) adalah entitas yang mengirim pesan kepada entitas lainnya. Penerima (receiver) adalah entitas yang menerima pesan. c. Enkripsi dan dekripsi Proses menyandikan plainteks menjadi cipherteks disebut enkripsi (encryption) atau enciphering (standard nama menurut ISO 7498-2). Sedangkan proses mengembalikan cipherteks menjadi plainteks semula disebut dekripsi (decryption) atau deciphering (standard nama menurut ISO 7498-2). d. Cipher dan kunci Algoritma kriptogarfi disebut juga cipher, yaitu aturan untuk enkripsi dan dekripsi, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk enkripsi dan dekripsi. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yang berisi elemenelemen plainteks dan himpunan yang berisi cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-elemen antara 150
dua himpunan tersebut. Misalkan P menyatakan plainteks dan C menyatakan cipherteks, maka : Karena proses enkripsi kemudian dekripsi mengembalikan pesan ke pesan asal, maka persamaan D(E(P)) = P harus benar. Kriptografi mengatasi masalah keamanan data dengan menggunakan kunci, yang dalam hal ini algoritma tidak dirahasiakan lagi, tetapi kunci harus tetap dijaga kerahasiaannya. Kunci (key) adalah parameter yang digunakan untuk transformasi enkripsi dan dekripsi. Kunci biasanya berupa string atau deretan bilangan. Dengan menggunakan kunci K, maka fungsi enkripsi dan dekripsi dapat ditulis sebagai skema diperlihatkan pada Gambar 1. Gambar 1. Skema enkripsi dan deskripsi dengan menggunakan kunci 2. Vigenere Chiper 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 menunjukkan plaintext, sedangkan huruf menurun menunjukkan kunci. Cara kerja table tersebut adalah berdasarkan kunci. Kunci ditentukan oleh si pembuat pesan. Kunci akan menjadi penentu sebuah pesan dengan menggunakan algoritma vegenere cipher berhasil di enkripsi dan dekripsi. Gambar 2. Tabel Vegenere Cipher 3. Metode Kasiski Kekuatan dari algoritma kriptografi Vigenere adalah tidak mudah dilakukan analisis frekuensi pada cipher karena keterkaitan antara plainteks dan cipher sudah cukup dikurangi dengan penggunaan kunci. Kasiski menemukan sebuah metode analisis dengan mendeduksi panjang dari kunci yang tidak diketahui. Bila panjang kunci telah diketahui dengan pasti misalkan n, maka cipher dibariskan secara terurut menjadi n baris, kemudian masingmasing baris kita lakukan analisis frekuensi karena masing-masing baris tersebut adalah monoalphabetic substitution seeprti Caesar Cipher. Namun, permasalahannya di sini adalah bagaimana kita dapat dengan cukup akurat mendeduksi panjang dari kunci yang belum kita ketahui? Metode kasiski memanfaatkan analisis frekuensi namun tidak dengan analisis frekuensi alphabet tunggal. Tetapi menggunakan analisis frekuensi beberapa karakter berurutan yang sering ditemui pada bahasa plainteks tersebut dibuat. Bila kita memiliki urutan karakter yang sama berulang-ulang maka jarak-jarak tersebut harus kita rekam. Kemudian dari semua jarakjarak karakter beurutan yang sering muncul tersebut, kita mencari factor persekutuan terbesar dari selisih-selisih tersebut. Angka inilah yang dapat dijadikan dasar yang kuat dalam mendeduksi panjang kunci yang digunakan. Sehingga proses selanjutnya menjadi 151
lebih mudah karena seperti menyelesaikan Caesar Cipher yang sudah terbukti cukup mudah. Setelah menggunakan Caesar Cipher dengan dalam proses tersebut, maka kunci tersebut harus disusun ulang agar menjadi kunci yang utuh, namun terkadang kunci yang dihasilkan dari analisis frekuensi tidak akurat sehingga kita harus mencoba-coba dari kunci yang dihasilkan pada cipher teks, apakah benar-benar menjadi plainteks bermakna. Bila masih belum ditemukan plain teks yang benar-benar bermakna, maka kita harus melakukan perubahan pada kunci sesuai dengan kondisi plainteks yang dihasilkan saat ini dengan kemungkinan plainteks yang seharusnya. Dalam hal ini, penguasaan kata-kata dalam bahasa yang digunakan pada plainteks harus cukup baik agar deduksinya benar. Namun, mengapa cara dalam menentukan kunci tersebut dapat digunakan adalah bila sebuah substring yang diulang muncul di plainteks dan jarak antar karakter adalah kelipatan dari panjang kunci, maka plainteks yang berulang tersebut dienkripsi dengan urutan kunci yang sama. Kekuatan dari algoritma kriptografi Vigenere adalah tidak mudah dilakukan analisis frekuensi pada cipher karena keterkaitan antara plainteks dan cipher sudah cukup dikurangi dengan penggunaan kunci. Kasiski menemukan sebuah metode analisis dengan mendeduksi panjang dari kunci yang tidak diketahui. Bila panjang kunci telah diketahui dengan pasti misalkan n, maka cipher dibariskan secara terurut menjadi n baris, kemudian masingmasing baris kita lakukan analisis frekuensi karena masing-masing baris tersebut adalah monoalphabetic substitution seeprti Caesar Cipher. Namun, permasalahannya di sini adalah bagaimana kita dapat dengan cukup akurat mendeduksi panjang dari kunci yang belum kita ketahui? Metode kasiski memanfaatkan analisis frekuensi namun tidak dengan analisis frekuensi alphabet tunggal. Tetapi menggunakan analisis frekuensi beberapa karakter berurutan yang sering ditemui pada bahasa plainteks tersebut dibuat. Bila kita memiliki urutan karakter yang sama berulang-ulang maka jarak-jarak tersebut harus kita rekam. Kemudian dari semua jarakjarak karakter beurutan yang sering muncul tersebut, kita mencari factor persekutuan terbesar dari selisih-selisih tersebut harus melakukan perubahan pada kunci sesuai dengan kondisi plainteks yang dihasilkan saat ini dengan kemungkinan plainteks yang seharusnya. Dalam hal ini, penguasaan kata-kata dalam bahasa yang digunakan pada plainteks harus cukup baik agar deduksinya benar. Namun, mengapa cara dalam menentukan kunci tersebut dapat digunakan adalah bila sebuah substring yang diulang muncul di plainteks dan jarak antar karakter adalah kelipatan dari panjang kunci, maka plainteks yang berulang tersebut dienkripsi dengan urutan kunci yang sama. 1. VIGENERE CIPHER SUBTITUSI DENGAN SHIFT INDEX BILANGAN PRIMA Pada penelitian ini algoritma yang diterapkan adalah Vigenere Cipher dengan metode Subtitusi, dimana juga terdapat modifikasi dalam menentukan Ciphertext dari hasil enkripsi. Rumus dalam Vigenere Cipher Subtitusi adalah sebagai berikut: Enkripsi C = P + K mod 26 Dekripsi P = C - K mod 26 Berikut merupakan table Vigenere Subtitusi sebagai acuan dari pada proses pengujian beserta dengan indeks huruf 152
Contoh berikut ini merupakan hasil enkripsi dari suatu plaintext Terdapat plainteks KRIPTOGRAFI dengan masing-masing indeks pada setiap hurufnya dan key PYTHON, jika panjang plainteks lebih besar dari key maka key tersebut akan berulang setiap karakter sampai dengan panjang plainteks tersebut. Pada cipherteks BSGDSOMIQPB didapat dengan rumus. Enkripsi C = P + K mod 26 + Indeks Bilangan Prima Sehingga: Karakter cipherteks K yaitu C 1 = 10 + 15 = 25 mod 26 = 25 + 2 = 27 = B Karakter cipherteks R yaitu C 2 = 17 + 24 = 41 mod 26 = 15 + 3 = 18 = S Karakter cipherteks I yaitu C 3 = 8 + 19 = 27 mod 26 = 1 + 5 = 6 = G Karakter cipherteks P yaitu C 4 = 15 + 7 = 22 mod 26 = 22 + 7 = 29 = D, dst Pada tahap dekripsi dilakukan dengan cara yang sama dengan rumus 153
Dekripsi (+) C = P - K mod 26 - Indeks Bilangan Prima Dekripsi (-) C = P - K mod 26 - Indeks Bilangan Prima + 26 Proses penyisipan indeks bilangan prima terhadap chiperteks dapat menjadi salah satu tehnik yang digunakan untuk mempersulit pada proses kriptanalisis. bilangan prima dapat berjalan dengan baik. III.KESIMPULAN DAN SARAN 1. Kesimpulan 1. Algoritma Vigenere Cipher bekerja lebih optimal apabila menggunakan metode subtitusi shif indeks bilangan prima. 2. Penggunaan module dan penyematan shift index bilangan prima akan menambah langkah kriptanalis dalam memecahkan informasi pesanyang dirahasiakan 3. Proses enkripsi dan dekripsi algoritma vigenere cipher menggunakan shift indeks 2. Saran a. Untuk meningkatkan level keamanan dapat menggunakan modifikasi lain selain penggunaan bilangan prima dan penambahan nilai module. B. Sangat disaranakan untuk membuat sebuah algoritma baru untuk key atau kunci yang akan digunakan untuk me-enkripsi dan dekripsi sebuah plaintext dan ciphertext. Hal ini dilakukan untuk menambah level keamanan bagi kriptanalis. DAFTAR PUSTAKA [1] Apriandala, Rio, 2013, Sistem Keamanan Menggunakan Rubik Dengan Algoritma Kriptografi Encryption, Tugas Besar I Makalah Kriptografi, Universitas Bengkulu. 375 Hal Daryanto. 2003. Belajar Komputer Visual Basic [2] Jati Sasongko, "Pangamanan Data Informasi menggunakan Kriptografi Klasik," DINAMIK, vol. X, no. 3, pp. 160-167, September 2005. [3] Hallim, Abd, 2010, Pembuatan Perangkat Lunak Me- dia Pembelajaran Kriptografi Klasik. Sura- baya.politeknik Eletronika Negeri. [4] Muhammad Fairuzabadi, "Implemetasi Kriptografi Klasik menggunakan Borland Delphi," Jurnal Dinamika Informatika, pp. 65-78, September 2010. [5] Wade Trappe and Lawrence C. Washington,Introduction to Cryptography with Coding Theory. Second edition. Pearson Prentice Hall, 2006. 154