Kode vigènere termasuk kode abjad-majemuk (polyalphabetic
substitution cipher). Dipublikasikan oleh diplomat (sekaligus seorang
kriptologis) Perancis, Blaise de Vigènere pada abad 16, tahun 1586. Sebenarnya Giovan Batista Belaso telah
menggambarkannya untuk pertama kali pada tahun 1533 seperti ditulis di dalam
buku La Cifra del Sig. Algoritma ini baru dikenal luas 200 tahun
kemudian dan dinamakan kode vigènere. Vigènere merupakan pemicu perang sipil di Amerika dan kode vigènere digunakan oleh Tentara Konfederasi (Confederate
Army) pada perang sipil Amerika (American Civil War). Kode vigènere berhasil dipecahkan oleh Babbage dan Kasiski pada
pertengahan abad 19. (Ariyus, 2008).
Algoritma enkripsi jenis ini sangat dikenal karena mudah dipahami dan
diimplementasikan. Teknik untuk menghasilkan ciphertext bisa dilakukan menggunakan substitusi
angka maupun bujursangkar vigènere. Teknik susbtitusi vigènere dengan menggunakan angka dilakukan dengan
menukarkan huruf dengan angka, hampir sama dengan kode geser. Contoh:
Gambar 1 Contoh Tabel Substitusi Algoritma Kriptografi Vigenere Cipher |
Plaintext: PLAINTEXT
Kunci: CIPHER
Gambar 2 Contoh Tabel Kriptografi dengan Algoritma Vigenere Cipher |
Dengan metode pertukaran angka dengan huruf di atas,
diperoleh bahwa teks asli (PLAINTEXT) memiliki kode angka (15,11, 0, 8, 13, 19,
4, 23, 19), sedangkan kode angka untuk teks kunci (CIPHER) yaitu (2, 8, 15, 7,
4, 17). Setelah dilakukan perhitungan, maka dihasilkan kode angka ciphertext (17, 19, 15, 15, 17, 10, 6,
5, 8). Jika diterjemahkan kembali menjadi huruf sesuai urutan awal, maka
menjadi huruf RTPPRKGFI.
Sedangkan metode lain untuk melakukan proses enkripsi dengan metode vigènere cipher yaitu menggunakan tabula recta
(disebut juga bujursangkar vigènere).
Gambar 3 Contoh Tabula Recta Algoritma Kriptografi Vigenere Cipher |
Kolom paling kiri dari
bujursangkar menyatakan huruf-huruf kunci, sedangkan baris paling atas
menyatakan huruf-huruf plaintext. Setiap baris di dalam bujursangkar
menyatakan huruf-huruf ciphertert yang diperoleh dengan Caesar cipher,
yang mana jumlah pergeseran huruf plaintext ditentukan nilai numerik
huruf kunci tersebut (yaitu, a=0, b=1, c=2, …, z=25). Sebagai contoh, huruf
kunci c (=2) menyatakan huruf-huruf plaintext digeser sejauh 2 huruf ke
kanan (dari susunan alfabetnya), sehingga huruf-huruf ciphertext pada
baris c adalah:
Gambar 4 Potongan Tabula Recta Baris ke-C |
Bujursangkar vigènere
digunakan untuk memperoleh ciphertert dengan menggunakan kunci yang
sudah ditentukan. Jika panjang kunci lebih pendek daripada panjang plaintext,
maka kunci diulang penggunaannya (sistem periodik). Bila panjang kunci adalah m,
maka periodenya dikatakan m. Sebagai contoh, jika plaintext
adalah THIS
PLAINTEXT dan kunci adalah sony,
maka penggunaan kunci secara periodik sebagai berikut:
Plaintext : THIS PLAINTEXT
Kunci : sony sonysonys
Untuk
mendapatkan ciphertext dari teks dan kunci di atas, untuk huruf plaintext
pertama T,
ditarik garis vertikal dari huruf T dan ditarik
garis mendatar dari huruf s, perpotongannya adalah
pada kotak yang berisi huruf L. Dengan cara yang
sama, ditarik garis vertikal dari huruf H dan ditarik
garis mendatar pada huruf o, perpotongannya adalah
pada kotak yang juga berisi berisi huruf V. hasil enkripsi
seluruhnya adalah sebagai berikut:
Plaintext : THIS PLAINTEXT
Kunci : sony sonysonys
Ciphertext :
LVVQ
HZNGFHRVL
Variasi-variasi vigènere
cipher pada dasarnya perbedaannya terletak pada cara membentuk tabel atau
cara menghasilkan kuncinya, sedangkan enkripsi dan dekripsi tidak berbeda
dengan vigènere cipher standar. Beberapa variasi tersebut sebagai
berikut:
1. Full Vigènere Cipher
Pada varian ini, setiap
baris di dalam tabel tidak menyatakan pergeseran huruf, tetapi merupakan
permutasi huruf-huruf alfabet. Misalnya, pada baris a susunan huruf-huruf
alfabet adalah acak seperti di bawah ini:
Gambar 5 Contoh Potongan Tabula Recta Full Vigenere Cipher |
2. Auto-Key
Vigènere cipher
Idealnya kunci tidak
digunakan secara berulang. Pada auto-key vigènere cipher, jika
panjang kunci lebih kecil dari panjang plaintext, maka kunci disambung
dengan plaintext tersebut. Misalnya, untuk mengenkripsi pesan NEGARA
PENGHASIL MINYAK dengan kunci INDO,
maka kunci tersebut disambung dengan plaintext semula sehingga panjang
kunci menjadi sama dengan panjang plaintext:
Plaintext: NEGARA PENGHASIL MINYAK
Kunci: INDONE GARAPENGH ASILMI
3. Running-Key
Vigènere cipher
Pada varian ini, kunci
bukan string pendek yang diulang secara periodik seperti pada vigènere
cipher standar, tetapi kunci adalah string yang sangat panjang yang
diambil dari teks bermakna (misalnya naskah proklamasi, naskah Pembukaan UUD
1945, terjemahan ayat di dalam kitab suci, dan lain-lain). Misalnya untuk
mengenkripsi plaintext NEGARA PENGHASIL MINYAK
dapat menggunakan kunci berupa sila ke-2 Pancasila: KEMANUSIAAN
YANG ADIL DAN BERADAB. Selanjutnya enkripsi dan dekripsi
dilakukan seperti biasa. (Munir, 2006)
Daftar
Referensi:
Ariyus, Dony., 2008, Pengantar
Ilmu Kriptografi: Teori, Analisis, dan Implementasi. Penerbit Andi,
Yogyakarta.
Munir,
Rinaldi.,
2006, Kriptografi. Penerbit
Informatika, Bandung.
Keyword:
algoritma vigenere cipher, kriptografi klasik, algoritma kriptografi, rinaldi
munir, keamanan pesan, enkripsi pesan, enkripsi vigenere cipher, ciphertext,
plaintext, penyandian pesan, algoritma enkripsi, pengertian enkripsi, sejarah
vigenere cipher, pengertian vigenere cipher ilmu kriptografi, dony ariyus.
great post, thanks
BalasHapusu're welcome.. :)
HapusSama-sama, terima kasih sudah sudi mampir..
BalasHapusmembantu sekali gan
BalasHapusSemoga bermanfaat, terima kasih sudah berkunjung..
HapusCara dekripsinya gmn kak untuk yang vignere bujur sangkar. Trus tolong dibahas juga dong untuk vignere 2 ke kanan. Makasih kakak ^_^
BalasHapusO iya, belum ada cara dekripsinya ya? Boleh juda masukannya, mungkin next post mungkin.
HapusVigenere 2 ke kanan maksudnya gimana?
membantu sekali artikelnya,
BalasHapusberikut artikel yang sudah saya rangkum http://arfianhidayat.com/algoritma-kriptografi-vigenere-cipher
sudah saya buat DEMO PROGRAMnya juga, bisa dilihat, makasih
Terima kasih sudah berkenan membuat programnya. :D
Hapus