Dasar Kriptografi: Enkripsi dan Dekripsi
Introduction
Beberapa abad yang silam, di jaman kebesaran Romawi, seorang Kaisar pernah mengirimkan perintah kepada sang Jendral yang sedang berada dimedan pertempuran dengan menggunakan sebuah pesan acak. Pesan/dokumen tersebut merupakan perintah langsung dari sang Kaisar yang isinya hanya dapat dibaca oleh sang kaisar dan sang Jendral yang bersangkutan, sehingga baik kurir yang ditugasi untuk menyampaikan pesan tersebut ataupun orang lain yang berhasil mencuri dokumen rahasia tersebut tidak ada yang dapat membaca isi pesan Kaisar kepada sang Jendral. Teknik yang digunakan oleh Kaisar ini dinamakan teknik Kriptografi, dan sang Kaisar jenius itu sendiri bernama Julius Caesar.
Julius Caesar memang tercatat dalam sejarah sebagai seorang yang pertama kali menggunakan teknik kriptografi untuk mengirimkan pesan. Meskipun demikian, penggunaan kriptografi sendiri dipercaya telah hadir sekitar 4000 tahun yang lalu dan digunakan oleh bangsa Mesir pada ukiran makam seorang bangsawan besar yang bernama KHNUMHOTEP II. Ide dari kriptografi yang digunakan oleh Julius Caesar telah sebelumnya ditulis oleh seorang pujangga Yunani yang bernama Polyibus.
Hingga saat ini, teknik kriptografi masih digunakan dengan tujuan yang tidak berbeda dari yang ingin dicapai oleh sang Kaisar, yaitu: Sebuah pesan yang hanya dapat dibaca oleh orang yang dikehendaki. Teknik dan algoritma kriptografi ini terus berkembang hingga sekarang dan tentu saja semakin canggih dari yang digunakan oleh kaisar besar Romawi tersebut.
Dalam artikel ini akan dibahas ide dasar dari teknik kriptografi.
Definisi dan Konsep
Saya terus terang tidak dapat mendefinisikan apa itu kriptografi selain dari teknik untuk menyamarkan pesan. Tentu saja definisi tersebut sangat ambigu terutama terhadap teknik-teknik lainnya seperti steganografi, dan lain sebagainya. Namun, Kaufman et. al. (2002) menjelaskan bahwa kata Kriptografi berasal dari bahasa Yunani dan memiliki makna seni dalam menulis pesan rahasia (The art of secret writing), dimana kriptografi terdiri dari 2 kata yaitu κρυπτό yang berarti rahasia atau tersembunyi dan γραφή yang berarti tulisan.
Pada prinsipnya, Kriptografi memiliki 4 komponen utama yaitu:
- Plaintext, yaitu pesan yang dapat dibaca
- Ciphertext, yaitu pesan acak yang tidka dapat dibaca
- Key, yaitu kunci untuk melakukan teknik kriptografi
- Algorithm, yaitu metode untuk melakukan enkrispi dan dekripsi
Kemudian, proses yang akan dibahas dalam artikel ini meliputi 2 proses dasar pada Kriptografi yaitu:
- Enkripsi (Encryption)
- Dekripsi (Decryption)
dengan key yang digunakan sama untuk kedua proses diatas. Penggunakan key yang sama untuk kedua proses enkripsi dan dekripsi ini disebut juga dengan Secret Key, Shared Keyatau Symetric Key Cryptosystems.
Berikut adalah ilustrasi 4 komponen dan 2 proses yang digunakan dalam teknik kriptografi.
Enkripsi
Enkripsi (Encryption) adalah sebuah proses menjadikan pesan yang dapat dibaca (plaintext) menjadi pesan acak yang tidak dapat dibaca (ciphertext). Berikut adalah contoh enkripsi yang digunakan oleh Julius Caesar, yaitu dengan mengganti masing-masing huruf dengan 3 huruf selanjutnya (disebut juga Additive/Substitution Cipher):
Plaintext | Ciphertext |
---|---|
hello | khoos |
bye | ebh |
freelynx | iuhhobqa |
dst… |
dalam melakukan proses untuk meng-enkripsi diperlukan sebuah algoritma dan key. Pada contoh diatas, algoritma yang digunakan adalah:
- Konversikan huruf menjadi angka
- Masing-masing angka yang diperoleh jumlahkan dengan $n
- konversikan angka yang diperoleh kembali menjadi huruf
- $n adalah Key yang dapat ditentukan sendiri.
- A menjadi B
- B menjadi C
- D menjadi E
- s menjadi t
- dlsb
Dekripsi
Dekripsi merupakan proses kebalikan dari enkripsi dimana proses ini akan mengubah ciphertext menjadi plaintext dengan menggunakan algortima ‘pembalik’ dan key yang sama. Contoh:
Ciphertext | Plaintext |
---|---|
khoos | hello |
ebh | bye |
iuhhobqa | freelynx |
dst… |
Untuk melakukan dekripsi ini, algoritma yang digunakan tentu saja berbeda dengan algortima enkripsi, namun pada dasarnya adalah “membalik” algoritma enkripsi. Perhatikan contoh algortima dekripsi berikut yang diambil dari algoritma enkripsi diatas:
- Konversikan huruf menjadi angka
- Masing-masing angka yang diperoleh kurangkan dengan $n
- Konversikan angka yang diperoleh kembali menjadi huruf
- $n adalah key yang sama dengan yang digunakan dalam proses enkripsi.
Jika diperhatikan, baik algoritma enkripsi maupun dekripsi tidak jauh berbeda, yang berbeda hanyalah ketika memasukkan unsur key kedalam algoritma tersebut, dimana enkripsi menggunakan proses penjumlahan sedangkan dekripsi menggunakan pengurangan.
Masih menggunakan contoh yang sama dengan enkripsi, apabila kita gunakan key sama dengan 1, algoritma dekripsi diatas akan mengubah huruf:
- B menjadi A
- C menjadi B
- Z menjadi Y
- A menjadi Z
- dst
Sintaks Pemrograman
Berbicara mengenai algoritma dan key memang tampaknya sangat abstrak sekali. Namun akan lebih jelas beda kedua komponen ini jika dituliskan dalam sintaks pemrograman dimana, secara sederhana, algoritma adalah semua yang berada didalam blok
function
dan key adalah parameter
dari fungsi tersebut.function encrypt($key) { /* algoritma ditulis disini */ }
function decrypt($key) { /* algoritma 'pembalik' ditulis disini */ }