Kriptografi (cryptography) merupakan ilmu dan seni untuk menjaga pesan
agar aman. (Cryptography is the art and science of keeping messages
secure. [45]) “Crypto” berarti “secret” (rahasia) dan “graphy” berarti
“writing” (tulisan) [3]. Para pelaku atau praktisi kriptografi disebut
cryptographers. Sebuah algoritma kriptografik (cryptographic algorithm),
disebut cipher, merupakan persamaan matematik yang digunakan untuk
proses enkripsi dan dekripsi. Biasanya kedua persamaan matematik (untuk
enkripsi dan dekripsi) tersebut memiliki hubungan matematis yang cukup
erat.
Proses yang dilakukan untuk mengamankan sebuah pesan (yang disebut
plaintext) menjadi pesan yang tersembunyi (disebut ciphertext) adalah
enkripsi (encryption). Ciphertext adalah pesan yang sudah tidak dapat
dibaca dengan mudah. Menurut ISO 7498-2, terminologi yang lebih tepat
digunakan adalah “encipher”.
Proses sebaliknya, untuk mengubah ciphertext menjadi plaintext, disebut
dekripsi (decryption). Menurut ISO 7498-2, terminologi yang lebih tepat
untuk proses ini adalah “decipher”.
Cryptanalysis adalah seni dan ilmu untuk memecahkan ciphertext tanpa
bantuan kunci. Cryptanalyst adalah pelaku atau praktisi yang menjalankan
cryptanalysis. Cryptology merupakan gabungan dari cryptography dan
cryptanalysis.
Enkripsi
Enkripsi digunakan untuk menyandikan data-data atau informasi sehingga
tidak dapat dibaca oleh orang yang tidak berhak. Dengan enkripsi data anda
disandikan (encrypted) dengan menggunakan sebuah kunci (key). Untuk
membuka (decrypt) data tersebut digunakan juga sebuah kunci yang dapat
sama dengan kunci untuk mengenkripsi (untuk kasus private key
cryptography) atau dengan kunci yang berbeda (untuk kasus public key
cryptography). Gambar 2.1 pada halaman 36 menunjukkan contoh proses
enkripsi dan dekripsi dengan dua kunci yang berbeda.
Secara matematis, proses atau fungsi enkripsi (E) dapat dituliskan sebagai:
E ( M ) = C (1)
dimana: M adalah plaintext (message) dan C adalah ciphertext.
Proses atau fungsi dekripsi (D) dapat dituliskan sebagai:
D ( C ) = M (2)
Elemen dari Enkripsi
Ada beberapa elemen dari enkripsi yang akan dijabarkan dalam beberapa
paragraf di bawah ini.
Algoritma dari Enkripsi dan Dekripsi. Algoritma dari enkripsi adalah
fungsi-fungsi yang digunakan untuk melakukan fungsi enkripsi dan dekripsi. Algoritma yang digunakan menentukan kekuatan dari enkripsi,
dan ini biasanya dibuktikan dengan basis matematika.
Berdasarkan cara memproses teks (plaintext), cipher dapat dikategorikan menjadi dua jenis: block cipher and stream cipher. Block cipher bekerja dengan memproses data secara blok, dimana beberapa karakter / datadigabungkan menjadi satu blok. Setiap proses satu blok menghasilkankeluaran satu blok juga. Sementara itu stream cipher bekerja memprosesmasukan (karakter atau data) secara terus menerus dan menghasilkan data pada saat yang bersamaan.
Kunci yang digunakan dan panjangnya kunci.
Kekuatan dari penyandian bergantung kepada kunci yang digunakan. Beberapa algoritma enkripsi memiliki kelemahan pada kunci yang digunakan. Untuk itu, kunci yang lemah tersebut tidak boleh digunakan. Selain itu, panjangnya kunci, yang biasanya dalam ukuran bit, juga menentukan kekuatan dari enkripsi. Kunci yang lebih panjang biasanya lebih aman dari kunci yang pendek. Jadi enkripsi dengan menggunakan kunci 128-bit lebih sukar dipecahkan dengan algoritma enkripsi yang sama tetapi dengan kunci 56-bit. Semakin panjang sebuah kunci, semakin besar keyspace yang harus dijalani untuk mencari kunci dengan cara brute force attack atau coba-coba karena keyspace yang harus dilihat merupakan pangkat dari bilangan 2. Jadi kunci 128-bit memiliki keyspace 2128, sedangkan kunci 56-bit memiliki keyspace 256. Artinya semakin lama kunci baru bisa ketahuan.
Plaintext.
Plaintext adalah pesan atau informasi yang akan dikirimkan dalam format yang mudah dibaca atau dalam bentuk aslinya.
Ciphertext.
Ciphertext adalah informasi yang sudah dienkripsi. Kembali ke masalah algoritma, keamanan sebuah algoritma yang digunakan dalam enkripsi atau dekripsi bergantung kepada beberapa aspek. Salah satu aspek yang cukup penting adalah sifat algoritma yang digunakan. Apabila kekuatan dari sebuah algoritma sangat tergantung kepada pengetahuan (tahu atau tidaknya) orang terhadap algoritma yang digunakan, maka algoritma tersebut disebut “restricted algorithm”. Apabila algoritma tersebut bocor atau ketahuan oleh orang banyak, maka pesan-pesan dapat terbaca. Tentunya hal ini masih bergantung kepada adanya kriptografer yang baik. Jika tidak ada yang tahu, maka sistem tersebut dapat dianggap aman (meskipun semu).
Meskipun kurang aman, metoda pengamanan dengan restricted algorithm
ini cukup banyak digunakan karena mudah implementasinya dan tidak perlu
diuji secara mendalam. Contoh penggunaan metoda ini adalah enkripsi
yang menggantikan huruf yang digunakan untuk mengirim pesan dengan
huruf lain. Ini disebut dengan “substitution cipher”.
Substitution Cipher dengan Caesar Cipher
Salah satu contoh dari “substitution cipher” adalah Caesar Cipher yang
digunakan oleh Julius Caesar. Pada prinsipnya, setiap huruf digantikan
dengan huruf yang berada tiga (3) posisi dalam urutan alfabet. Sebagai
contoh huruf “a” digantikan dengan huruf “D” dan seterusnya.
Transformasi yang digunakan adalah:
plain : a b c d e f g h i j k l m n o p q r s t u v w x y z
cipher: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Penggunaan dari Caesar cipher ini dapat dimodifikasi dengan mengubah
jumlah gesaran (bukan hanya 3) dan juga arah geseran. Jadi kita dapat
menggunakan Caesar cipher dengan geser 7 ke kiri, misalnya. Hal ini
dilakukan untuk lebih menyulitkan orang yang ingin menyadap pesan sebab
dia harus mencoba semua kombinasi (26 kemungkinan geser).
ROT13
Substitution cipher yang masih umum digunakan di sistem UNIX adalah
ROT13. Pada sistem ini sebuah huruf digantikan dengan huruf yang letaknya 13 posisi darinya. Sebagai contoh, huruf “A” digantikan dengan huruf “N”, huruf “B” digantikan dengan huruf “O”, dan seterusnya. Secara matematis, hal ini dapat dituliskan sebagai:
C = ROT13 ( M) (3)
Untuk mengembalikan kembali ke bentuk semulanya dilakukan proses
enkripsi ROT13 dua kali [42].
M = ROT13 ( ROT13 (M)) (4)
ROT13 memang tidak didisain untuk keamanan tingkat tinggi. ROT13, misalnya digunakan untuk menyelubungi isi dari artikel (posting) di Usenet
news yang berbau ofensif. Sehingga hanya orang yang betul-betul ingin
membaca dapat melihat isinya. Contoh penggunaan lain adalah untuk menutupi jawaban dari sebuah teka teki (puzzle) atau jika kita ingin marah marah (memaki) akan tetapi ingin agar orang lain tidak tersinggung. (Orang
yang ingin membaca makian kita harus melakukan konversi ROT13 sendiri.) Beberapa editor, seperti vi dan emacs, memiliki fungsi rot13 agar mudah digunakan. Tahukah anda kunci / cara mengaktifkan rot13 pada kedua editor tersebut? Caesar cipher dan ROT13 disebut juga “monoalphabetic ciphers” karena setiap huruf digantikan dengan sebuah huruf. Huruf yang sama akan memikili pengganti yang sama. Misalnya huruf “a” digantikan dengan huruf “e”, maka setiap huruf “a” akan digantikan dengan huruf “e”. Mono alphabetic cipher ini agak mudah dipecahkan dengan menganalisa ciphertext apabila beberapa informasi lain (seperti bahasa yang digunakan) dapat diketahui. Salah satu cara penyerangan (attack) yang dapat dilakukan adalah dengan menganalisa statistik dari frekuensi huruf yang muncul. Cara ini disebut frequency analysis [44] dan dimotori oleh Al-Kindi sebagai salah seorang jagoan statistik. Stallings dalam bukunya [45] menunjukkan statistik kemunculan huruf untuk tulisan dalam bahasa Inggris, dimana huruf “e” yang paling banyak muncul. Cara yang sama dapat dilakukan untuk mencari distribusi penggunaan huruf dalam teks berbahasa Indonesia.
Frequency analysis bermanfaat jika teks yang tersedia cukup panjang. Teks yang pendek, dengan jumlah huruf yang lebih sedikit, biasanya memiliki deviasi dari data-data statistik munculnya huruf. Selain itu ada beberapa kasus dimana sengaja dibuat teks yang “merusak” struktur frekuensi tersebut. Sebagai contoh, pengarang Perancis yang bernama Georges Perec di tahun 1969 menulis “La Disparition” (sebuah novel dengan 200 halaman) tanpa kata yang menggunakan huruf “e”. Karya ini kemudian
diterjemahkan oleh ke dalam bahasa Inggris oleh seorang pengarang Inggris
yang bernama Gilbert Adair dengan tetap tanpa menggunakan huruf “e”.
Judul terjemahannya adalah “A Void”. Cerita ini diulas dalam buku [44].
Meskipun banyak usaha dilakukan untuk mempersulit frequency analysis,
monoalphabetic cipher relatif tetap mudah dipecahkan. Salah satu cara
untuk mempersulit adalah dengan menggunakan polyalphabetic cipher.
Contoh implementasinya dari Caesar cipher adalah dengan menggunakan
dua tabel, dimana yang satu digeser 3 dan satunya lagi digeser 7, misalnya.
Huruf pertama dari plain text akan digantikan dengan menggunakan tabel
pertama (yang digeser 3), huruf kedua digantikan dengan menggunakan
tabel kedua (yang digeser 7), huruf selanjutnya menggunakan tabel pertama
kembali dan seterusnya. Dengan mekanisme ini, huruf “b” ada
kemungkinan dipetakan ke huruf lain, tidak sama. Hal ini mengacaukan analisis yang menggunakan statistik. Kita juga dapat mempersulit lebih lanjut dengan menggunakan lebih dari dua tabel konversi.
Multiple-letter encryption
Untuk meningkatkan keamanan, enkripsi dapat dilakukan dengan mengelompok kan beberapa huruf menjadi sebuah kesatuan (unit) yang kemudian dienkripsi. Ini disebut multiple-letter encryption. Salah satu contoh multiple-letter encryption adalah “Playfair”.
Enigma Rotor Machine
Enigma rotor machine merupakan sebuah alat enkripsi dan dekripsi mekanik yang digunakan dalam perang dunia ke dua oleh Jerman. Dia terdiri atas beberapa rotor dan kabel yang silang menyilang menyebabkan substitusi alfabet yang selalu berubah sehingga Enigma mengimplementasikan polyalphabetic chiper. Setiap huruf diketikkan, rotor berputar untuk mengubah tabel konversi. Susunan dari rotor dan kondisi awalnya merupakan kunci dari enkripsinya. Perubahan ini sangat menyulitkan analisis biasa dan statistik. Buku “Code Book” [44] banyak membahas tentang Enigma ini. Penyandian yang menggunakan Enigma ini akhirnya berhasil dipecahkan oleh Alan Turing dan kawan-kawannya di Inggris dengan menggunakan komputer. Jadi aplikasi komputer yang pertama adalah untuk melakukan cracking terhadap Enigma. Banyak orang yang percaya bahwa perang dunia kedua menjadi lebih singkat dikarenakan Sekutu berhasil memecahkan sandi Jerman yang menentukan posisi U-boat nya.
Penggunaan Kunci
Salah satu cara untuk menambah tingkat keamanan sebuah algoritma
enkripsi dan dekripsi adalah dengan menggunakan sebuah kunci (key) yang
biasanya disebut K. Kunci K ini dapat memiliki rentang (range) yang cukup lebar. Rentang dari kemungkinan angka (harga) dari kunci K ini disebut keyspace. Kunci K ini digunakan dalam proses enkripsi dan dekripsi sehingga persamaan matematisnya menjadi:
Ek (M) = C (5)
Dk ( M)= M (6)
Keamanan sistem yang digunakan kemudian tidak bergantung kepada pengetahuan algoritma yang digunakan, melainkan bergantung kepada kunci yang digunakan. Artinya, algoritma dapat diketahui oleh umum atau dipublikasikan. Usaha untuk memecahkan keamanan sistem menjadi usaha untuk memecahkan atau mencari kunci yang digunakan. Usaha mencari kunci sangat bergantung kepada keyspace dari kunci K. Apabila keyspace ini cukup kecil, maka cara brute force atau mencoba semua kunci dapat dilakukan. Akan tetapi apabila keyspace dari kunci yang digunakan cukup besar, maka usaha untuk mencoba semua kombinasi kunci menjadi tidak realistis. Keyspace dari DES, misalnya, memiliki 56-bit. Untuk mencoba semua kombinasi yang ada diperlukan kombinasi 2 pangkat 56. (Cerita tentang kelemahan DES akan diutarakan di bagian lain.)