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.
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 :
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
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.