APLIKASI KRIPTOGRAFI DENGAN METODE VIGENERE CIPHER BERBASIS WEB
Melati Mawardina1 Entik Insanudin, M.T.2
Teknik Inforatika Fakultas Sains dan Teknologi UIN Sunan Gunung Djati Bandung Jalan A.H Nasution No 151 Cibiru Bandung Email :
[email protected]
Perkembangan Teknologi Informasi saat ini sangat berkembang pesat sehingga informasi menjadi hal yang sangat penting di dunia ini. Informasi menjadi hal yang sangat penting maka harus adanya proses pengamanan yang dapat mengamankan informasi dengan cara proses kriptografi. Kriptografi adalah Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Pada pengamanan dalam kriptografi ini banyak metode atau algoritma yang dapat digunakan, salah satunya yaitu vigenere cipher. Algoritma Vigenere cipher termasuk pada kriptografi klasik yang memiliki kunci simestris ( hanya ada satu kunci) yang digunakan untuk menekripsi ataupun mendekripsi. Karena vigenere merupakan kriptografi klasik maka proses enkripsi dan dekrispisnyapun cukup mudah dengan cara subtitusi atau dengan tabel bujur sangkar vigenere. Pada tugas akhir ini, dibuat aplikasi kriptografi yang dapat melakukan enkirpsi dan dekripsi terhadap suatu kata atau kalimat berbasis web sehingga mudah diakses oleh setiap orang karena online. Tools yang digunakan pada aplikasi ini adalah php.Tujuan pembuatan aplikasi ini untuk megubah pesan yang akan dirahasikan atau diamankan agar tidak diketahui orang yang tidak berhatk tahu atau orang selain yang dituju Kata kunci: Kriptografi, Vigerene Cipher, PHP
Latar Belakang Masalah Berkat perkembangan teknologi yang begitu pesat memungkinkan manusia dapat berkomunikasi dan saling bertukar informasi/data secara jarak jauh. Antar kota antar wilayah antar negara bahkan antar benua bukan merupakan suatu kendala lagi dalam melakukan komunikasi dan pertukaran data. Seiring dengan itu tuntutan akan sekuritas (keamanan) terhadap kerahasiaan informasi yang saling dipertukarkan tersebut semakin meningkat. Begitu banyak pengguna seperti departemen pertahanan, suatu perusahaan atau bahkan individu-individu tidak ingin informasi yang disampaikannya diketahui oleh orang lain atau kompetitornya atau negara lain. Oleh karena itu dikembangkanlah cabang ilmu yang mempelajari tentang cara-cara pengamanan data atau dikenal dengan istilah Kriptografi. Dalam kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi. Enkripsi adalah proses dimana informasi/data yang hendak dikirim diubah menjadi bentuk
yang hampir tidak dikenali sebagai informasi awalnya dengan menggunakan algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu mengubah kembali bentuk tersamar tersebut menjadi informasi awal. Algoritma kriptografi berdasarkan jenis kunci yang digunakan dapat dibedakan menjadi dua jenis yaitu :
Algoritma simetris Dimana kunci yang digunakan untuk proses enkripsi dan dekripsi adalah kunci yang sama
Algoritma asimetris Dimana kunci yang digunakan untuk proses enkripsi dan dekripsi menggunakan kunci yang berbeda.
Sedangkan berdasarkan besar data yang diolah dalam satu kali proses, maka algoritma kriptografi dapat dibedakan menjadi dua jenis yaitu :
Algoritma block cipher
Informasi/data yang hendak dikirim dalam bentuk blok-blok besar (misal 64bit) dimana blok-blok ini dioperasikan dengan fungsi enkripsi yang sama dan akan menghasilkan informasi rahasia dalam blok-blok yang berukuran sama.
Algoritma stream cipher Informasi/data yang hendak dikirim dioperasikan dalam bentuk blok-blok yang lebih kecil (byte atau bit), biasanya satu karakter persatuan persatuan waktu proses, menggunakan tranformasi enkripsi yang berubah setiap waktu.
Landasan Teori Kriptografi Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak ketiga. Menurut Bruce Scheiner dalam bukunya "Applied Cryptography", kriptografi adalah ilmu pengetahuan dan seni menjaga message-message agar tetap aman (secure). Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada peradaban Mesir dan Romawi walau masih sangat sederhana. Prinsip-prinsip yang mendasari kriptografi yakni:
Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin). Data integrity (keutuhan data) yaitu layanan yang mampu mengenali/mendeteksi adanya manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain). Authentication (keotentikan) yaitu layanan yang berhubungan dengan identifikasi. Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).
Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui maka pesan sudah jelas "bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut kehilangan kerahasiaan bagi para pemakainya. Berikut adalah istilah-istilah digunakan dalam bidang kriptografi :
yang
Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli). Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi. Enkripsi (fungsi E) adalah proses pengubahan plaintext menjadi ciphertext. Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal/asli. Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi. Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi. Seperti yang telah dijelaskan di atas, proses enkripsi mengubah plaintext menjadi ciphertext (dengan menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti.
Cipher Substitusi Prinsip utama cipher substitusi adalah menukarkan setiap huruf pada plainteks dengan sesuatu. Cipher substitusi termasuk algoritma kriptografi klasik. Idenya adalah menggantikan sebuah atau lebih huruf pada plainteks dengan sebuah atau lebih huruf pada plainteks dengan aturan tertentu. Aturan tersebut bergantung cara proses
enkripsi dan dekripsi. Cipher subtitusi memiliki beberapa varian atau jenis. Jenis-jenis Cipher substitusi adalah: 1. Cipher substitusi abjad-tunggal (monoalphabetic substitution cipher). Jenis cipher substitusi ini sering juga disebut cipher substitusi sederhana. Ide cipher substitusi abjad-tunggal adalah menggantikan satu karakter pada plainteks menjadi satu karakter pada cipherteks dengan aturan tertentu. Fungsi ciphering-nya merupakan fungsi satu ke satu. 2. Cipher substitusi homofonik (homophonic substitution cipher) Ide cipher substitusi homofonik adalah menggantikan satu karakter pada plainteks menjadi satu atau lebih karakter pada cipherteks. Fungsi ciphering-nya merupakan fungsi satu ke banyak. 3. Cipher substitusi abjad-majemuk (polyalphabetic substitution cipher). Jenis cipher substitusi ini dapat disebut sebagai cipher substitusi ganda. Cipher substitusi abjadmajemuk merupakan cipher substitusi abjad-tunggal yang menggunakan kunci berbeda-beda. Karena itu, cipher substitusi abjadmajemuk memiliki periode m, m merupakan panjang kunci. 4. Cipher substitusi poligram (polygram substitution cipher). Ide cipher substitusi poligram adalah menggantikan sebuah blok karakter dengan sebuah blok cipherteks. Blok terdiri dari satu atau lebih karakter. Misalnya AAA diganti menjadi BCD tau PAP, dan lain-lain. Vigenere Cipher Ditemukan oleh diplomat (sekaligus seorang kriptologis) Perancis, Blaise de Vigènere pada abad 16. Gambar. 2.3.1 Blaise de Vigènere Pada kriptografi caesar
pergeseran akan sama pada seluruh pesan, Jika kunci yang digunakan adalah huruf E, maka setiap huruf pada pesan akan bergeser 4 huruf. Begitu juga bila digunakan kuncikunci lainnya, pada kriptografi Vigenere, plaintext akan dienkripsi dengan pergeseran huruf seperti pada kriptografi Caesar tetapi setiap huruf di dalam plaintext akan mengalami pergeseran yang berbeda. Vigenere cipher mungkin adalah contoh terbaik dari cipher alphabet-majemuk ‘manual’. Algoritma ini dipublikasikan oleh diplomat (sekaligus seorang kriptologis) perancis, Blaise de Vigènere pada abad 16. Vigènere cipher dipublikasikan pada tahun 1586. Cipher ini berhasil dipecahkan oleh Babbage dan Kasiski pada pertengahan abad 19. Vigènere cipher digunakan oleh tentara Konfiderasi (Confederate Army) pada perang sipil Amerika (American Civil war). Vigènere cipher sangat dikenal karena mudah dipahami dan diimplementasikan.Cipher menggunakan bujursangakar Vigènere untuk melakukan enkripsi. Kolom paling kiri dari bujursangkar menyatakan huruf-hurf kunci, sedangkan baris paling atas menyatakan huruf-huruf plainteks. Setiap baris dalam bujursangkar menyatakan huruf-huruf cipherteks, yang mana jumlah pergesaran huruf plainteks ditentukan nilai numerik huruf kunci tersebut ( yaitu, A = 0, B = 1, C = 2,…, Z = 25).
Gambar 1. Tabel Vigenere
Proses yang terjadi pada algoritma ini sama dengan proses yang ada pada proses
kriptografi yaitu enkipsi dan dekripsi. Enkirpsi adalah proses pengubahan pesan asli (ciphertteks) menjadi pesan yang disembunyikan sulit dimengerti (ciphertext) sesuai dengan kunci yang telah ditentukan. Sedangkan dekripsi kebalikan dari enkripsi yaitu proses perubahan pesan yang tersembunyi (ciphertext) menjadi pesan asli (plainteks) agar pesan dapat dimengerti oleh orang yanag dituju menggunakan kunci yang diberikan.Proses tersebut dapat digambarkan seperti gambar seperti pada gambar 2.
Gambar 2 Proses Enkripsi-Dekripsi
Proses tersebut dapat ditulis sebagai berikut: Enkripsi Ek(P) = C E = fungsi enkripsi C = ciphertext P = plaintext K = key Dekripsi Dk(C) = P D = fungsi dekripsi C = ciphertext P = plaintext K = key
jaringan halaman (hyperlink). (Kadir, Abdul, 2008) Pengertian PHP PHP adalah sebuah bahasa pemograman yang berjalan dalam sebuah web-server (server side). PHP diciptakan oleh programmer unix dan Perl yang bernama Rasmus Lerdoft pada bulan Agustus-September 1994. Pada awalnya, Rasmus mencoba menciptakan sebuah script dalam wesite pribadinya dengan tujuan untuk memonitor siapa saja yang pernah mengunjungi website-nya. (Kadir, Abdul, 2008) Pada awalnya PHP merupakan kependekan dari Personal Home Page (Situs personal). Selanjutnya Rasmus merilis kode sumber tersebut untuk umum dan menamakannya PHP/FI pada sekitar tahun 1995, dan diperkenalkan kepada beberapa programmer pemula dengan alasan bahasa yang digunakan oleh PHP cukup sederhana dan mudah dipahami. Selanjutnya Rasmus menulis ulang PHP dengan bahsa C untuk meningkatkan kecepatan aksesnya.
Pengertian Web ( Website ) Website adalah kumpulan dari halaman - halaman situs, yang terangkum dalam sebuah domain atau subdomain, yang tempatnya berada di dalam World Wide Web (WWW) di dalam Internet. Sebuah halaman web biasanya berupa dokumen yang ditulis dalam format HTML ( Hyper Text Markup Language ), yang selalu bisa diakses melalui HTTP, yaitu sebuah protokol yang menyampaikan informasi dari server website untuk ditampilkan kepada para pemakai melalui web browser.dan Website atau situs dapat juga diartikan sebagai kumpulan halaman yang menampilkan informasi data teks, data gambar diam atau gerak, data animasi, suara, video dan atau gabungan dari semuanya, baik yang bersifat statis maupun dinamis yang membentuk satu rangkaian bangunan yang saling terkait dimana masingmasing dihubungkan dengan jaringan-
PEMBAHASAN Proses Enkripsi Kunci pada kriptografi Vigenere adalah sebuah kata bukan sebuah huruf. Kata kunci ini akan dibuat berulang sepanjang plaintext, sehingga jumlah huruf pada kunci akan sama dengan jumlah huruf pada plaintext. Pergeseran setiap huruf pada plaintext akan ditentukan oleh huruf pada kunci yang mempunyai posisi yang sama dengan huruf pada plaintext. fungsi enkripsi dan dekripsi adalah • ci = E(pi) = (pi + k) mod 26) (1) Cara lain untuk melakukan enkripsi dan dekripsi adalah dengan menggunakan Vigenere Square seperti pada gambar 2. Atau bisa juga dengan langkah berikut : 1. Ubah plaintext kedalam urutan bilangan integer dengan memperhatikan table ASCII
2. Tambahkan nilai K (kunci yang berisi besar pergeseran) pada masing-masing urutan bilangan yang merupakan plaintext dan mereduksikan sebagai penjumlahan modulo 95 karena disini penulis menggunakan range dari bilangan ASCII yakni antara karakter space dengan nilai ASCII 32 dan karakter dengan nilai ASCII 126. Maka jumlah karakter yang digunakan dalam system ini ada 95 buah. 3. Konversikan kembali urutan bilangan kedalam karakter dengan kembali mengacu pada table konversi ASCII seperti terlihat pada tabel berikut.
Gambar 3. Tabel konversi ASCII
Pseudocode Enkripsi
ciphertext←(char) (((95+((karakter[i]-‘ ’)+key(i)-‘ ‘)) mod 95+’ ’); end for write (ciphertext);
Proses Dekripsi Proses dekripsi adalah proses selelah dilakukannya proses enkirpsi yaitu mengubah pesan yang disembunyikan menjadi sebuah pesan asli yang akan diketahui oleh penerima pesan apa maksud dari si pengirim pesan. Langkah Dekripsi : 1. Ubah ciphertext dan kunci kedalam urutan bilangan integer dengan memperhatikan table konversi. 2. Pada masing-masing urutan bilangan yang merupakan ciphertext kurangkan dengan nilai K dan mereduksikan sebagai penjumlahan modulo 95. 3. Konversikan kembali urutan bilangan kedalam karakter dengan kembali mengacu pada tabel konversi standarisasi ASCII seperti pada gambar 3. Atau dapat menggunakan tabel bujur sangkar vigenere seperti pada gamar 2 atau juga dapat menggunakan fungsi berikut :
Deklarasi Key, newKey, plaintext : string;
• pi = D(ci) = (ci – k) mod 26) (2)
karakter:array[1 string;
Pseudocode Dekripsi
…..
karakter.length]of
i, j : integer; Dekripsi input (key); input (plaintext); for (int i ← 0; i < plaintext.length)do j ← i mod key.length(); newKey ← key(j); end for; write(newKey); karakter [i] ← plaintext; key ← get(key.plaintext); for (int i ← 0; i < karakter.length)do
Deklarasi Key, newKey, ciphertext : string; karakter:array[1 ….. karakter.length]of string; i, j : integer; Dekripsi input (key); input (ciphertext); for (int i ← 0; i < ciphertext.length)do j ← i mod key.length(); newKey ← key.charAt(j); end for; write(newKey); karakter [i] ← ciphertext; key ← get(key. ciphertext); for (int i ← 0; i < karakter.length)do plaintext ← (char) (((95+((karakter[i] – ‘ ’)-key.charAt(i) – ‘ ‘)) mod 95)+’ ’);
end for write (plaintext);
Design Interface Aplikasi
Flowchart Proses enkripsi Algoritma Vigenere
Berikut adalah design interface dari aplikasi kriptografi menggunakan algoritma vigenere cipher yang berbasis Web
Dari penjelasan pseudocode proses enkripsi diatas, maka dapat dijabarkan menjadi diagram alir seperti berikut :
Gambar 6. Tampilan Utama
Dari tampilan utama, ada empat menu yang dapat dipilih oleh user yaitu enkripsi, dekripsi atau teori. Apabila user memilih menu Enkripsi maka akan tampil halaman seperti berikut :
Gambar 4. Flowchart Proses Enkripsi
Flowchart Proses Dekripsi Algoritma Vigenere
Gambar 6.Halaman proses enkripsi
Dari halaman ini, field yang memerintahkan untuk memasukkan palinteks dan kunci, Misal : Plainteks : melatimawardina Kunci : kripto apabila user telah mengisi field tersebut maka klik button ekripsi plainteks.
Maka akan tampil seperti berikut :
Gambar 5. Flowchart Proses Dekripsi
Gambar 7.Tampilan hasil enkripsi (cipherteks)
Apabila user memilih menu dekripsi, maka akan tampil seperti berikut :
Gambar 8. Halaman proses dekripsi
Pada halaman ini, ada field dengan perintah masukkan cipher teks dan kunci. Misal : Cipher text : ZVLYFXYEEPKU Kunci : praktikum Setelah mengisi field yang diperintahkan, maka klik button dekripsi Cipherteks. Akan tampil seperti berikut :
berbasis web dapat disimpulkan bahwa proses ekripsi dan dekripsi kata atau kalimat dapat dilakukan secara komputasi sehingga tidak perlu menjabarkan proses enkripsi dan dekripsi secara manual yang dapat membuang-buang waktu, dengan kata lain aplikasi ini untuk mengefisiensikan waktu untuk proses enkrpsi dan dekripsi. Selain itu, dipilihnya metode vigenere cipher kareena metode ini dikenal mudah dipahami dan mudah diimplementasikan. Saran Dari penjabaran tentang perancangan program enkripsi, dekripsi sampai tahapan implementasi perlu dilakukan pengembangan agar menjadi aplikasi yang sepurna seperti 1. memperindah tampilan agar lebih menarik danlebih interaktif 2. menambahkan metode cipher lainnya sehingga lebih variatif dan beragam.
DAFTAR PUSTAKA Halim, Abd. (2010).Pembuatan Perangkat Lunak meda pembelajaran kriptografi Klasik.Institut Teknologi Sepuluh November : Surabaya Gambar 9. Tampilan Hasil Dekripsi (Cipherteks)
Apabila user memilih menu teori, maka akan yang akan muncul adalah materi mengenai algoritma vigenere seperti pengertian serta proses enkirpsi dan dekripsi, seperti gambar berikut :
Subimawanto, Damai (2014).Implementasi Algoritma Kriptografi Kode Caesar, Vigenere, dan Transposisi untuk Sistem Proteksi Penggunaan Pesan Singkat (SMS) Pada Smartphone Android.Universitas Gunadarma : Jakarta Cybernur,https://cybernur.wordpress.com/ta g/pseudocode-enkripsi-dan-dekripsivigenere-cipher/ Mairzati,https://maizarti.wordpress.com/2011 /04/01/substitusi-chiper-dan-shiftchiper/
Gambar 10. Tampilan Menu Teori
PENUTUP Simpulan Hasil perancangan aplikasi kriptografi dengan metode Vigenere Cipher