Kriptologi adalah gabungan dari ilmu kriptografi dan analisis sandi. Kriptografi merupakan teknik untuk mengamankan data dari sisi kerahasiaan (confidentiality), keabsahan pengirim/penerima(authentication), keaslian data(integrity) dan pertanggungjawaban telah mengirim/menerima(nonrepudiation). Analisis sandi (cryptanalysis, attack) adalah teknik untuk memecahkan algoritma kriptografi.

Algoritma Kriptografi dapat dikategorikan ke dalam algoritma kunci simetri, kunci asimetri dan fungsi hash. Termasuk algoritma kunci simetri adalah block cipher dan stream cipher. Block cipher adalah algoritma enkripsi yang memiliki masukan/keluaran sebanyak 1 blok. Setiap blok pada umumnya terdiri atas 64 bit atau 128 bit. Algoritma enkripsi berfungsi untuk menjaga confidentiality (kerahasiaan) data. Stream cipher adalah algoritma enkripsi yang memiliki masukan/keluaran 1 bit atau 1 karakter.

Pesan yang menjadi masukan algoritma enkripsi biasanya dapat dibaca, dilihat dan dapat dipahami. Pesan ini disebut plaintext. Keluaran algoritma enkripsi disebut sebagai ciphertext. Ciphertext selalu sulit dibaca atau tidak dapat dipahami sama sekali.

Untuk merancang block cipher perlu diperhatikan hal-hal berikut:

  1. kecepatan vs keamanan : Semakin cepat biasanya semakin tidak aman
  2. efisiensi implementasi pada berbagai software dan hardware. Efisiensi pada suatu platform terkadang menimbulkan ketidakefisienan pada platform lain. Sebagai contoh, DES memiliki kecepatan yang tinggi pada hardware akan tetapi memiliki kecepatan yang lambat pada software akibat banyaknya penggunaan permutasi bit
  3. Kesederhanaan. Semakin rumit algoritma, semakin sulit pula pembuktian keamanannya. Yang ideal tentu saja membuat algoritma yang nampaknya sangat rumit bagi orang lain, namun sangat mudah bagi kita membuktikan keamanannya. Kemungkinan terburuk adalah sedemikian rumitnya bagi kita sehingga kita tidak dapat membuktikan keamanannya, akan tetapi sangat mudah bagi lawan untuk memecahkannya.

Perlukah algoritma enkripsi kita dipublikasikan?

  1. Kadangkala, algoritma yang kita sembunyikan dalam file exe ataupun dalam perangkat keras dapat di-reverse-engineering sehingga dapat dibaca orang lain. Dalam kasus ini, merahasiakan algoritma menjadi sesuatu yang sia-sia.
  2. Lebih mudah hanya menjaga kerahasiaan kunci (password) daripada harus menjaga kerahasiaan algoritmanya pula. Lebih mudah menjaga sedikit rahasia daripada banyak rahasia.
  3. Algoritma yang dipublikasikan dapat menerima banyak kritik dari para ahli untuk perbaikannya.

Jika kita telah menguasai teknik desain algoritma kelas dunia dengan baik, maka dengan menjaga kerahasiaan algoritma, mungkin semakin aman algoritma kita. Akan tetapi merahasiakan algoritma sekali lagi bukanlah tugas yang ringan. Untuk merahasiakan algoritma kita, kita harus mengimplementasikannya dalam hardware yang akan rusak begitu ada usaha untuk melakukan reverse engineering.

Bila kita membeli perangkat buatan asing yang mudah kita isi implementasi algoritma kita, maka tidak ada jaminan bahwa perangkat yang kita beli tersebut tidak akan mengirimkan password (key) yang kita simpan didalamnya kepada pembuat perangkat tersebut, misalnya dengan teknologi semacam RFID.

Terdapat beberapa jenis keamanan yang harus diperhatikan :

  1. Keamanan algoritma
  2. Keamanan implementasi
  3. Keamanan fisik
  4. Keamanan organisasi

Keamanan algoritma adalah cara memecahkan algoritma kriptografi tanpa memperhatikan lingkungannya. Teknik pemeriksaannya disebut sebagai analisis sandi. Ilmu ini belum banyak diminati di negeri kita, sementara itu di berbagai universitas di luar negeri dan berbagai lembaga penelitian lainnya, ilmu ini sangat diperhatikan. Sehingga kita merasa cukup mengatakan suatu algoritma dikatakan aman apabila para pakar asing mengatakannya demikian.

Keamanan implementasi adalah keamanan implementasi dari algoritma kriptografi. Kadangkala kita mengira sudah dapat meng-crack algoritma kriptografi, padahal yang kita lakukan adalah meng-crack implementasinya. Misalkan dengan tool software yang dapat kita peroleh dari internet kita dapat memperoleh password Windows orang lain. Ini bukan meng-crack algoritma, akan tetapi meng-crack implementasinya. Contoh lain adalah menerobos password pengaman WiFi versi WEP. Meng-crack implementasi seringkali lebih mudah daripada meng-crack algoritma kriptografinya.



souce code