Cryptography Caesar Cipher
Halo, setelah sebelumnya saya membahas mengenai cryptography secara general pada Cryptography… Apaan-tuh? Pada kesempatan kali ini saya akan membahas salah satu contoh dari symmetric cryptography yaitu Caesar Cipher. Dan juga saya akan membagikan cara melakukan “pembobolan” pada algoritma ini dengan menggunakan pemograman python. Mari langsung ke pembahasan.
Caesar Cipher
Caesar cipher merupakan salah satu algoritma yang sudah ada sejak lama dan digunakan pertama kali oleh Julius Caesar lebih dari 2000 tahun lalu. Algoritma ini sangat mudah, prinsip dasarnya adalah dengan melakukan subtitusi setiap huruf pada plaintext dengan melakukan pergeseran berdasarkan pemetaan huruf dan juga key yang digunakan.
Contohnya kita gunakan pemetaan dengan 26 huruf alfabet. Pertama-tama kita lakukan pemetaan huruf pada alfabet untuk dapat dilakukan operasi matematika saat proses encryption dan decryption.
Berikut adalah formula yang digunakan untuk encryption dan decryption pada Caesar cipher.
Dimana:
- E(x) adalah hasil encryption, dimana x adalah dari huruf original atau plaintext.
- D(x) adalah hasil decryption, dimana x adalah dari huruf yang telah terdecrypt atau ciphertext.
- n adalah nilai atau key yang digunakan untuk menggeser huruf.
- Mod 26 digunakan dikarenakan huruf alfabet terdapat 26 buah, sehingga ketika nilai operasinya lebih atau kurang dari 26 maka kita akan tetap dapat melakukan pemetaannya.
- Kita ingin memastikan bahwa hasil dari encryption masih berada dalam rentang dari [0, ukuran_alfabet-1], sehingga kita gunakanlah mod26.
Contoh Kasus:
Kita akan melakukan encryption pada kalimat “HALO BUDY” dimana key yang kita gunakan adalah 4. Maka untuk menghasilkan ciphertext hal yang kita lakukan adalah
Sedangkan untuk melakukan decrpytion kita hanya akan melakukan hal yang sebaliknya
Mudah sekali bukan!!! Karena kemudahannya inilah algoritma jenis ini sangat mudah untuk dibobol, sehingga untuk menyimpan informasi yang penting, cara seperti ini hampir sudah tidak digunakan.
Untuk lebih jelasnya saya sudah membuat contoh penggunaan caesar cipher dengan menggunakan pemograman Python pada jupyter notebook yang bisa diakses di Example Caesar Cipher. Pada contoh di jupyter notebook, list alphabet ditambahkan “spasi” yang berada pada index 0, sehingga totalnya list alphabet berubah menjadi 27.
Selanjutnya mari kita bahas bagaimana cara membobolnya.
Cracking Caesar Cipher
Masalah utama pada Caesar cipher adalah keyspace nya yang sangat kecil, yaitu sebanyak dari jumlah alfabet yang digunakan. Dari contoh di atas terdapat 26 pada alfabet, sehingga banyaknya key yang memungkinkan hanyalah 26 saja.
Apa benar begitu???? Mungkin bisa dengan menaikan nilai keynya…. mari kita coba. Kita gunakan key 108 pada contoh encryption sebelumnya.
Jika kita tambahkan E(x) = (7+108) mod 26 = 11. Nah sama saja bukan !!!
Kalau begitu bagaimana dengan jika kita mengulang operasinya agar menjadi lebih aman? pertama kita lakukan encryption dengan key 4, lalu kita lakukan lagi encryption dengan key 5. Sebenarnya hasilnya akan sama saja dengan melakukan encryption dengan key 9. Sehingga Caesar cipher tidak akan menjadi lebih aman dengan menambahkan operasinya.
Terdapat dua cara untuk membobol Caesar cipher:
Brute Force Attack
Dikarenakan key yang mungkin digunakan hanya 26, kita dapat memeriksa semua kasusnya dengan kemungkinan key yang ada, prosesnya pun akan berjalan cepat. Dari hasil decryption kita lihat kalimat yang memiliki sebuah arti. Analisa bisa dilakukan secara manual ataupun otomatis, dimana jika kita ingin melakukan secara otomatis, kita perlu sistem tambahan untuk mengecek kemungkinan bahasa yang digunakan. Kita bisa menggunakan dictionary code atau menggunakan Deep Learning.
Untuk lebih jelasnya saya telah membuat contoh program pada python notebook yang bisa diakses di Example Caesar Cipher Brute Force.
Frequency Analysis
Kita dapat melakukan analisa pada distribusi frekuensi dari berbagai macam huruf. Misalnya, dalam bahasa Inggris huruf yang paling sering digunakan adalah E, A, O, I, dan T. Namun dalam suatu kalimat utuh kontribusi “spasi” juga merupakan komponen terbanyak dalam suatu kalimat. Dengan menganalisa distribusi terbanyak kita akan mengetahui key yang digunakan.
Contohnya pada kalimat berikut (tanda baca saya hapus untuk mempermudah pemograman):
This page shares my best articles to read on topics like health happiness creativity productivity and more The central question that drives my work is How can we live better To answer that question I like to write about science based ways to solve practical problems
Jika kita lihat dari grafik tersebut, distribusi terbanyak pada kalimat tersebut adalah “spasi”. Maka jika mengasumsikan “spasi” adalah alfabet terbanyak yang muncul pada suatu kalimat, kita bisa menjadikannya sebagai referensi. Kembali lagi untuk melndapatkan key dari frekuensi analisis.
Misalnya kita memiliki ciphertext sebagai berikut:
YMNXEUFLJEXMFWJXERCEGJXYEFWYNHQJXEYTEWJFIETSEYTUNHXEQNPJEMJFQYMEMFUUNSJXXEHWJFYN NYCEUWTIZHYN NYCEFSIERTWJEYMJEHJSYWFQEVZJXYNTSEYMFYEIWN JXERCEATWPENXEMTAEHFSEAJEQN JEGJYYJWEYTEFSXAJWEYMFYEVZJXYNTSENEQNPJEYTEAWNYJEFGTZYEXHNJSHJEGFXJIEAFCXEYTEXTQ JEUWFHYNHFQEUWTGQJRX
Dari distribusi frekuensinya kita dapat mengetahui bahwa nilai terbanyak adalah huruf E. Jika kita mengasumsikan nilai real (plaintext) sebelum kalimat diencrypt adalah “spasi”. Maka terjadi pergeseran sebanyak 5 huruf. Sehingga key dari caesar cipher mungkin saja adalah 5. Jika kita lakukan decryption dengan key 5. Hasilnya adalah
Yaaa hasilnya benar !!!
Jika hal ini terjadi, berarti telah terjadi “information leaking” sehingga kita dapat menganalisanya untuk mendapatkan key. Karena nilai distribusi bisa berbeda-beda gunakanlah 4 ranking terbesar dari hasil distribusi frekuensi (alfabet yang paling banyak digunakan).
Untuk lebih jelasnya saya telah membuat contoh program pada python notebook yang bisa diakses di Example Caesar Cipher Frequency Analysis.
Penutup
Sekian dulu penjelasan mengenai algoritma Caiser Cipher, selanjutnya saya akan membahas contoh-contoh dari cryptography symmetric lainnya dan tentunya cara-cara untuk “membobolnya”.
Materi terkait lainnya:
- Cryptography… Apaan-tuh?
- Cryptography Caesar Cipher
- Cryptography Vigenere Cipher
- Cryptography: Data Encryption Standard (DES)
-Terimakasih-