Anda di halaman 1dari 10

Meningkatkan Keamanan Vigenere Cipher

dengan Stream Cipher


ABSTRAK
Kriptografi merupakan ilmu yang berfungsi mengubah pesan jelas (dapat dibaca) ke pesan
rahasia (tidak dapat dibaca). Pesan jelas dienkripsi di sisi pengirim kemudian pesan terenkripsi tersebut didekripsi di sisi penerima. Vigenere cipher merupakan salah satu jenis dari
cipher substitusi. Vigenere cipher memiliki beberapa keterbatasan sehingga paper yang diusulkan berfungsi untuk meningkatkan keamanan dari Vigenere cipher dengan cara menggabungkannya dengan cipher modern, yaitu stream cipher. Stream cipher relatif dikenal
sebagai algoritma enkripsi yang tidak dapat dianalisis sandi dan menggunakan bilangan biner (selain serangkaian karakter) pada plaintext, ciphertext, dan kunci rahasianya.
Dengan menggabungkan suatu cipher dengan cipher lainnya, cipher gabungan yang diperoleh memiliki tingkat keamanan yang lebih tinggi daripada cipher yang independen. Oleh
karena itu, apabila hanya Vigenere cipher saja yang digunakan sebagai algoritma enkripsi
pada suatu sistem, sistem tersebut tidak cukup aman. Peningkatan keamanan Vigenere cipher yang diusulkan menyebabkan proses analisis sandi dengan serangan frekuensi relatif
huruf-huruf menjadi lebih sulit untuk dilakukan.
Istilah-istilah Umum : Keamanan Informasi, Kriptografi.
Kata kunci : Plaintext, Ciphertext, Kunci Rahasia, Cipher, Substitusi, Vigenere Cipher,
Stream Cipher.
1. PENDAHULUAN
Keamanan memiliki banyak aplikasi, antara lain secure commerce and payments, melindungi kata sandi, hingga mengamankan komunikasi yang bersifat privasi. Salah satu aspek
yang paling penting dari keamanan komunikasi adalah kriptografi.
Kriptografi berasal dari bahasa Yunani dan memiliki arti, yaitu tulisan rahasia. Saat ini, istilah kriptografi juga diartikan sebagai ilmu dan seni dalam membuat pesan menjadi aman
dan tahan dari berbagai jenis serangan. Untuk menunjang keamanan dan privasi pesan, pesan yang dikomunikasikan antar-dua entitas harus dienkripsi di sisi pengirim dan didekripsi di sisi penerima. Dalam kriptografi, pesan yang akan diubah disebut plaintext, sedangkan pesan yang telah diubah disebut ciphertext. Algoritma enkripsi merupakan suatu fungsi yang mengubah plaintext menjadi ciphertext dengan menggunakan kunci rahasia. Algoritma dekripsi merupakan suatu fungsi yang mengubah ciphertext menjadi plaintext.

Algoritma enkripsi dibagi menjadi dua jenis, yaitu simetrik dan asimetrik. Dalam algoritma enkripsi simetrik, enkripsi dan dekripsi menggunakan kunci rahasia yang sama.
Algoritma enkripsi asimetrik menggunakan kunci publik dan kunci privat yang mana kunci publik boleh disebar ke banyak orang dan kunci privat harus disimpan secara aman oleh
pembuat (misal user A). Pengirim menggunakan kunci publik milik user A untuk mengenkripsi plaintext lalu user A menggunakan kunci privatnya untuk mendekripsi plaintext
yang terenkripsi tersebut.
Dalam algoritma enkripsi simetrik klasik, terdapat dua jenis operasi yang digunakan, yaitu
substitusi dan transposisi. Teknik substitusi berfungsi memetakan elemen-elemen plaintext
menjadi elemen-elemen ciphertext. Terdapat dua jenis teknik substitusi, yaitu monoalphabetic cipher dan polyalfabetic cipher. Pada polyalfabetic cipher, satu elemen plaintext diubah menjadi banyak elemen ciphertext.
Teknik transposisi, atau disebut juga sebagai permutasi, berfungsi untuk membuat ciphertext dengan mengubah urutan dari elemen-elemen plaintext. Perlu diperhatikan di sini, ciphertext dibuat dengan hanya mengubah urutan elemen-elemen plaintext tanpa mengubah
elemen-elemen tersebut dengan elemen-elemen lain.
Dalam algoritma enkripsi simetrik modern, terdapat dua jenis algoritma enkripsi yang dapat digunakan, yaitu stream cipher dan block cipher. Kedua jenis cipher ini akan dijelaskan di bagian selanjutnya.
2. VIGENERE CIPHER
Vigenere cipher merupakan salah satu jenis dari polyalfabetic cipher yang sangat terkenal
di masa lampau karena algoritmanya yang sederhana dan cukup tahan terhadap serangan
frekuensi relatif huruf-huruf. Vigenere cipher merupakan monoalfabetic cipher yang
menggunakan 26 Caesar cipher dengan nilai pergeseran dari 0 sampai dengan 25. Pada algoritma enkripsi Caesar cipher, setiap karakter plaintext diubah menjadi karakter ciphertext dengan cara menggeser karakter plaintext tersebut. Misal, huruf plaintext B (interpretasi dalam bilangan bulat, yaitu 1) digeser menggunakan kunci rahasia 3 sehingga huruf
ciphertext-nya adalah (1 + 3) mod 26 = 4 atau huruf E.
2.1 Tabel Vigenere
Vigenere cipher menggunakan nilai-nilai pergeseran yang berbeda. Pergeseran nilai-nilai
untuk setiap huruf alfabet bahasa Inggris (A-Z) diperlihatkan pada tabel Vigenere. Tabel
Vigenere merupakan matriks berukuran 26 x 26 yang mana masing-masing huruf alfabet
bahasa Inggris ditulis di baris matriks yang berbeda (terdapat 26 baris). Setiap baris ini
memperlihatkan 26 Caesar Cipher untuk huruf alfabet bahasa Inggris yang bersangkutan.

Gambar 1. Tabel Vigenere.


Algoritma enkripsi pada Vigenere cipher dapat dilihat sebagai operasi aljabar. Apabila huruf alfabet A-Z direpresentasikan dengan bilangan bulat 0-25, rumus enkripsi Vigenere cipher E dengan kunci rahasia K dapat ditulis sebagai berikut :
Ci = E(Pi,K) = (Pi + K) mod 26 (1)
dan rumus dekripsi Vigenere cipher P dengan kunci rahasia K dapat ditulis sbb :
Pi = D(Ci,K) = (Ci + K) mod 26 (2)
dimana Ci adalah ciphertext dari huruf alfabet A-Z dalam representasi bilangan bulat (025), Pi adalah plaintext dari huruf alfabet A-Z dalam representasi bilangan bulat (0-25), K
adalah kunci rahasia dalam representasi bilangan bulat (0-25), E adalah fungsi enkripsi
Vigenere cipher, dan D adalah fungsi dekripsi Vigenere cipher.
2.2 Analisis Sandi pada Vigenere Cipher
Dengan meningkatnya kemampuan analisis sandi, Vigenere cipher sudah tidak lagi dianggap sebagai algoritma enkripsi yang aman sehingga Vigenere cipher tidak populer lagi untuk digunakan. Kelemahan utama Vigenere cipher adalah penggunaan kunci rahasia yang
berulang sehingga menimbulkan pola-pola ciphertext yang berulang. Dengan menentukan
ukuran kunci rahasia terlebih dahulu dari pola-pola ciphertext yang berulang ini, plaintext
dapat di-recovery dari ciphertext secara langsung menggunakan serangan frekuensi relatif
huruf-huruf. Serangan ini dikenal sebagai analisis sandi Kasiski.

Contoh analisis sandi pada ciphertext di bawah ini akan diperlihatkan :

Gambar 2. Ciphertext Hasil Vigenere Cipher.


Langkah pertama adalah mencari seluruh ciphertext yang berulang beserta perbedaan letak
posisinya dan nilai faktor-faktornya. Berikut adalah hasilnya :

Gambar 3. Ciphertext 4-gram (atas) dan 3-gram (bawah).


Pada Gambar 3, nilai di sebelah huruf yang berulang menunjukkan perbedaan letak posisinya, sedangkan kolom-kolom pada tabel menunjukkan nilai faktor-faktor dari nilai perbedaan letak posisi tersebut. Misal, ciphertext ZFOK berulang setelah 18 huruf dan nilai
faktor-faktor dari 18 adalah 2, 3, 6, 9, dan 18.

Langkah kedua adalah menentukan panjang kunci rahasia menggunakan Gambar 3. Langkah ini dilakukan dengan cara mencari nilai-nilai faktor yang sama (FPB) yang dimiliki
oleh setiap ciphertext berulang. Dengan demikian, nilai-nilai FPB yang diperoleh adalah 2,
3, dan 6. Ciphertext berulang FEN tidak memiliki faktor 2, 3, ataupun 6, tetapi hal ini tidak mengubah nilai-nilai FPB yang telah diperoleh karena pengaruh nilai faktor-faktor
ciphertext berulang FEN dapat dianggap minoritas. Dari nilai-nilai FPB yang diperoleh,
ukuran kunci rahasia yang dipilih ada nilai FPB yang terbesar, yaitu 6. Jika ukuran kunci
sebenarnya adalah 3, hal yang tidak mungkin nilai faktor 6 banyak bermunculan.
Langkah ketiga adalah mengelompokkan setiap huruf ciphertext ke dalam tabel baru yang
memiliki kolom sebanyak ukuran kunci rahasia yang telah ditentukan. Kemudian, isi tabel
tersebut dengan huruf-huruf ciphertext dari awal sampai akhir dengan ketentuan, yaitu baris pertama diisi secara berurutan dari kolom 1 sampai dengan kolom 6 dan baru pindah ke
baris berikutnya. Dengan demikian, banyaknya baris ditentukan oleh banyaknya huruf-huruf ciphertext. Berikut cuplikasn pengisian tabel yang dimaksud :

Gambar 4. Cuplikan Pengisian Tabel dengan Huruf-huruf Ciphertext.


Langkah keempat adalah menggunakan serangan frekuensi relatif huruf-huruf pada setiap
kolom tabel yang telah diisi dengan huruf-huruf ciphertext. Berikut merupakan prosedur
penyerangannya untuk satu kolom tabel :
1) Pilih satu kolom (L1-L6) untuk dicari kunci rahasia monoaplhabetic cipher-nya. Misal,
kolom yang dipilih adalah kolom L1.
2) Pilih secara sembarang kunci rahasia monoalphabetic cipher-nya (A-Z). Misal, kunci
rahasia yang dipilih adalah A.
3) Dengan menggunakan kunci rahasia A, dekripsi semua huruf ciphertext pada kolom L1
sehingga diperoleh hasil (sebagian) dekripsi sebagai berikut (lihat di halaman selanjutnya) :

Gambar 5. Hasil Dekripsi Kolom L1 dengan Kunci Rahasia A.


Terdapat dua grafik pada Gambar 5, yaitu grafik berwarna merah dan grafik berwarna
kuning. Grafik berwarna merah menunjukkan frekuensi relatif huruf-huruf yang dijadikan acuan, sedangkan grafik berwarna kuning menunjukkan frekuensi relatif huruf-huruf dekripsi kolom L1. Karena distribusi frekuensi relatif huruf-huruf antara grafik berwarna merah dengan grafik berwarna kuning tidak mirip (cukup berbeda jauh), kunci
rahasia A bukanlah kunci rahasia yang benar. Dengan demikian, kunci rahasia perlu diganti menjadi B. Berikut hasil dekripsi kolom L1 dengan kunci rahasia B :

Gambar 6. Hasil Dekripsi kolom L1 dengan Kunci Rahasia B.

Gambar 6 memperlihakan bahwa distribusi frekuensi relatif huruf-huruf antara grafik


berwarna merah dengan grafik berwarna kuning hampir mirip. Dengan demikian, kunci
rahasia B adalah kunci rahasia monoaphabetic cipher yang benar untuk kolom L1.
Lakukan prosedur di atas untuk mencari kunci rahasia monoalphabetic cipher kolom L2L6. Di sini tidak akan diperlihatkan cara mencari kunci rahasia monoalphabetic cipher kolom L2-L6. Namun, kunci rahasia yang digunakan untuk menghasilkan ciphertext, seperti
yang ditunjukkan pada Gambar 2, yaitu brutus. Berikut merupakan hasil dekripsinya :

Gambar 7. Hasil Dekripsi Ciphertext dengan Kunci Rahasia brutus.


3. ENKRIPSI MODERN
Terdapat dua jenis algoritma enkripsi simetrik modern, yaitu stream cipher dan block cipher. Berikut merupakan penjelasan dari stream cipher dan block cipher (lihat halaman selanjutnya) :

1) Stream cipher mengenkripsi plaintext setiap satu bit. Hal ini dilakukan dengan cara melakukan operasi XOR pada bit-bit plaintext dengan bit-bit key stream. Terdapat dua jenis stream cipher, yaitu stream cipher sinkron yang mana key stream-nya hanya bergantung pada kunci rahasianya dan stream cipher asinkron yang mana key stream-nya
juga bergantung pada ciphertext selain kunci rahasianya.
2) Block cipher merupakan algoritma enkripsi simetrik yang bersifat multiguna karena banya mekanisme kriptografi yang dapat dilakukan, antara lain block cipher dapat direalisasikan dengan menggunakan skema enkripsi blok yang berbeda dan blok cipher juga
dapat direalisasikan laiknya stream cipher. Bentuk-bentuk realisasi mekanisme kriptografi ini disebut juga sebagai mode operasi block cipher. Block cipher juga digunakan
untuk membangun algoritma pseudo-random generator fungsi hash, Messsage Authentication Codes (MACs), atau protokol-protokol tertentu yang berfungsi untuk membuat
kunci rahasia.
4. ALGORITMA YANG DIUSULKAN
Pada umumnya, algoritma enkripsi modern menggunakan kombinasi antara operasi substitusi dan permutasi dengan satu atau lebih transformasi yang kompleks dalam membuat
ciphertext dari plaintext. Teknik yang diusulkan pada paper adalah mengombinasikan
Vigenere cipher dengan stream cipher karena Vigenere cipher saja tidak cukup aman.
Berikut merupakan penjelasan singkat dari algoritma yang diusulkan :
Langkah 1 : Mulai.
Langkah 2 : Baca plaintext P.
Langkah 3 : Baca kunci rahasia untuk Vigenere cipher K.
Langkah 4 : Baca serangkaian bit acak untuk stream cipher Kbin. Kbin dapat dibuat dengan
menggunakan metoda key stream generator.
Langkah 5 : Lakukan enkripsi Vigenere cipher dengan menggunakan Persamaan (1) atau
tabel Vigenere untuk huruf-huruf plaintext yang terletak di lokasi genap (0, 2, 4, dst).
Langkah 6 : Lakukan stream cipher untuk mengenkripsi huruf-huruf plaintext yang terletak di lokasi ganjil (1, 3, 5, dst) dengan ketentuan-ketentuan sebagai berikut :
i.
ii.
iii.

Ubah huruf-huruf plaintext ke format ASCII lalu ubah lagi ke format biner.
Enkripsi huruf-huruf plaintext dilakukan dengan cara Ci = Pi Kbin.
Ubah bit-bit ciphertext ke format ASCII lalu ubah lagi ke huruf-huruf ciphertext.

Langkah 7 : Selesai.

Berikut contoh proses enkripsi menggunakan algoritma yang disulkan yang mana :

Plaintext P : cowardsdiemanytimesbeforetheirdeath
Kunci rahasia Vigenere cipher K : file
Key stream Kbin : 0110010001111000011101110001

Gambar 8. Proses Enkripsi Plaintext P dengan Algoritma yang Diusulkan.


Pada contoh proses enkripsi di atas, serangkaian bit acak 1001001 yang digunakan pada
stream cipher berfungsi untuk menjauhkan huruf-huruf ciphertext berulang yang letaknya
berdekatan. Berikut merupakan hasil ciphertext-nya :

Gambar 9. Hasil Ciphertext dari Plaintext P.


5. PERBANDINGAN ANTARA ALGORITMA YANG DIUSULKAN DENGAN
METODA KOMBINASI KONVENSIONAL
Hampir seluruh jenis kombinasi algoritma enkripsi simetrik klasik dilakukan dengan cara
meng-gabungkan operasi substitusi dan permutasi saja. Pada bagian ini, perbedaan antara
kombinasi algoritma enkripsi simetrik klasik dengan algoritma yang diusulkan akan dijelaskan secara singkat.

Sampai saat ini, kombinasi algoritma enkripsi simetrik hanya melibatkan algoritma enkripsi simetrik klasik saja, seperti kombinasi antara Caesar cipher dengan Rail Fence cipher.
Kombinasi algoritma enkripsi simetrik klasik seperti ini tetap membuat enkripsi dan dekripsi mudah dilakukan, tetapi masih tergolong lemah terhadap analisis sandi dengan frekuensi relatif huruf-huruf. Selain itu, algoritma enkripsi klasik tidak menggunakan serangkaian bit acak sebagai kunci rahasianya, berbeda dengan algoritma yang diusulkan. Pada
algoritma yang diusulkan, algoritma enkripsi simetrik klasik, yaitu Vigenere cipher, digabungkan dengan algoritma enkripsi simetrik modern, yaitu stream cipher, sehingga membuat hasil enkripsi menjadi lebih sulit untuk diserang dengan analisis sandi frekuensi relatif huruf-huruf. Hal ini disebabkan oleh digunakannya serangkaian bit acak sebagai salah
satu kunci rahasianya. Dengan adanya kunci rahasia ini, tentu saja keamanan data menjadi
lebih baik.
6. KESIMPULAN
Vigenere cipher dikenal sebagai algoritma enkripsi simetrik yang sederhana, tetapi juga
sangat lemah terhadap analisis sandi frekuensi relatif huruf-huruf. Untuk mengatasi kelemahan ini, paper yang dibuat mengusulkan untuk membuat algoritma baru yang menggabungkan antara Vigenere cipher dengan stream cipher. Pada algoritma yang diusulkan, ciphertext dibuat dengan cara mengenkripsi huruf-huruf plaintext yang berlokasi genap dengan Vigenere cipher dan mengenkripsi huruf-huruf plaintext yang berlokasi ganjil dengan stream cipher. Dengan hasil ciphertext seperti ini, hubungan antara plaintext dan ciphertext menjadi hilang sehingga analisis sandi frekuensi relatif huruf-huruf menjadi lebih
sulit untuk dilakukan. Terlebih lagi, untuk huruf yang sama, huruf plaintext kapital dan
huruf plaintext kecil menghasilkan huruf ciphertext yang berbeda.
7. SARAN
Key stream pada algoritma yang diusulkan menjadi faktor yang paling esensial. Oleh karena itu, algoritma yang diusulkan akan lebih aman lagi apabila ukuran key stream sama dengan atau lebih dari jumlah bit huruf-huruf plaintext yang terletak di lokasi genap. Hal ini
disebabkan karena tidak ada huruf ciphertext yang dihasilkan dari key stream yang sama.

Anda mungkin juga menyukai