Jason Mraz - I'm Yours

Monday 1 July 2013

Dasar Kriptografi: Enkripsi dan Dekripsi


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:
  1. Plaintext, yaitu pesan yang dapat dibaca
  2. Ciphertext, yaitu pesan acak yang tidka dapat dibaca
  3. Key, yaitu kunci untuk melakukan teknik kriptografi
  4. Algorithm, yaitu metode untuk melakukan enkrispi dan dekripsi
Kemudian, proses yang akan dibahas dalam artikel ini meliputi 2 proses dasar pada Kriptografi yaitu:
  1. Enkripsi (Encryption)
  2. 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 KeyShared 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):
PlaintextCiphertext
hellokhoos
byeebh
freelynxiuhhobqa
dst…
dalam melakukan proses untuk meng-enkripsi diperlukan sebuah algoritma dan key. Pada contoh diatas, algoritma yang digunakan adalah:
  1. Konversikan huruf menjadi angka
  2. Masing-masing angka yang diperoleh jumlahkan dengan $n
  3. konversikan angka yang diperoleh kembali menjadi huruf
dengan:
  • $n adalah Key yang dapat ditentukan sendiri.
Jika key yang kita gunakan adalah 1, algortima tersebut akan mengubah huruf:
  • 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:
CiphertextPlaintext
khooshello
ebhbye
iuhhobqafreelynx
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:
  1. Konversikan huruf menjadi angka
  2. Masing-masing angka yang diperoleh kurangkan dengan $n
  3. Konversikan angka yang diperoleh kembali menjadi huruf
dengan
  • $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 functiondan key adalah parameter dari fungsi tersebut.
function encrypt($key) {

/* algoritma ditulis disini */

}
function decrypt($key) {

/* algoritma 'pembalik' ditulis disini */

}