Cryptanalysis adalah kajian dan analisis untuk memahami cara kerja sekaligus cara untuk memecahkan sistem cryptography. Dalam cryptanalysis dipelajari beberapa cara untuk memecahkan pesan rahasia (decrypt) dengan mendapatkan key. Beberapa cara yang sering digunakan ialah frequency analysis, dictionary attack, brute force attack, dan juga man in the middle attack.
Frequency Analysis
Frequency analysis mengkaji sekumpulan huruf yang terdapat dalam ciphertext dengan tujuan memperoleh isi pesan yang sebenarnya. Setiap bahasa memiliki frekuensi huruf yang sering digunakan dalam suatu kata. Bila cara encryption yang digunakan tidak dapat menutupi frekuensi kemunculan suatu huruf, maka dengan menggunakan statistik kemunculan suatu huruf dalam ciphertext, dapat diperkirakan kemungkinan isi pesan yang dikirimkan. Contohnya seperti dalam Caesar Cipher dengan menggunakan Python.
Dictionary Attack
Dictionary attack ialah serangan yang digunakan untuk menduga key dari suatu ciphertext dengan mencoba berbagai kata kunci yang umum digunakan oleh manusia, biasanya kata-kata dalam kamus. Dictionary attack bisa lebih efektif bila dibandingkan dengan brute force, karena tidak perlu mencoba berbagai kemungkinan, hanya sebatas kata-kata yang ada dalam kamus. Hanya saja ada kelemahan fatal, yakni bila key yang digunakan ialah kata yang tidak ada dalam kamus.
Brute Force Attack
Seperti telah disebutkan sebelumnya bahwa brute force attack ialah serangan untuk mendapatkan key dengan paksa mencoba setiap kemungkianan yang ada. Biasanya brute force attack digunakan sebagai jalan terakhir untuk menembus sistem. Hal tersebut dikarenakan semakin panjang password yang digunakan maka semakin rumit untuk memecahkannya. Berikut ini contoh brute force attack dengan mengunakan Python.
Man in the Middle Attack
Man in the middle attack merupakan serangan yang dilakukan pada saat terjadi komunikasi antara dua entitas, biasanya pada client-server. Secara sederhana man in the middle attack, pihak ketiga secara sembunyi-sembunyi akan berpura-pura sebagai server yang akan dituju oleh client. Pihak ketiga menghubungkan client dengan server, namun sekaligus mengintip informasi yang diberikan oleh pihak client.