Saat di Paris, pakar simbologi Harvard, Robert Langdon, menerima telepon tengah malam yang penting. Seorang kurator senior di Museum Louvre, Jacques Sauniere, terbunuh dengan tubuh bugil dan posisi terlentang, simbol pentakel (bintang lima dikelilingi lingkaran yang dikenal sebagai simbol pemuja setan) terukir di dada sang kurator dengan darahnya sendiri, dan pesan-pesan tulisan rahasia yang mengherankan ditemukan dekat tubuhnya :
“13-3-2-21-1-1-8-5. O, Draconian devil. Oh, lame saint”
Langdom dan seorang kriptolog berbakat prancis, Sophie Neveu, mengupas lapis demi lapis teka-teki aneh itu. Ternyata, deret angka yang ditemukan itu adalah “Rangkaian Fibonancci” (Deret ukur matematika yang berkualitas dan terkenal sejak abad ketiga belas yang diciptakan oleh ahli matematika Leonardo Fibonancci), yang diacak. Sedangkan kalimat “O, Draconian devil. Oh, lame saint” (O, setan draconia. Oh, orang yang suci) adalah sebuah anagram (Anagram adalah seni mengatur kembali huruf-huruf dari sebuah kata/kalimat untuk membuat arti baru, raja-raja Prancis di zaman Renaissance percaya bahwa seni anagram mengandung kekuatan magis). Pesan tersebut adalah anagram yang sempurna dari “Leonardo da Vinci” dan “The Monalisa” yang merupakan kata kunci untuk teka-teki berikutnya dan akan membawa mereka kesebuah rahasia besar yang telah disimpan selama berabad-abad dan memakan ribuan nyawa manusia.
Pendahuluan
Cerita diatas dikutip dari sebuah Novel yang baru-baru ini telah menggemparkan diseluruh dunia, “The DaVinci Code” karangan Dan Brown. Novel yang penuh muatan sejarah dan teka-teki yang “memukau nalar” pembacanya, sebuah seni kriptografi yang diangkat melalui sebuah novel fiksi. Dari cerita diatas, dapat disimpulkan bahwa seni kriptografi sudah ada sejak berabad-abad lamanya.
Seiring dengan berkembangnya zaman, seni kriptografi juga berkembang menjadi seni modern yang diadopsi oleh sistem kemanan komputer untuk menjaga kerahasiaan sebuah informasi. Algoritma-algoritma kompleks telah diciptakan oleh para programmer untuk menjaga kerahasiaan informasi-informasi penting diseluruh dunia.
Kriptografi (Cryptography)
Kriptografi merupakan seni untuk menjaga pesan agar aman dari orang-orang yang tidak berhak menerima pesan tersebut. “crypto” berarti “secret” (rahasia) dan “graphy” berarti “writing” (tulisan), jadi criptography bisa diartikan pesan rahasia. Pesan tersebut diacak sedemikian rupa dengan metode atau algoritma tertentu agar tidak mudah dibaca. Sebuah algoritma kriptografik (cryptographic algorithm) merupakan persamaan matematik yang digunakan untuk proses enkripsi dan dekripsi, kedua persamaan matematis untuk enkripsi dan dekripsi tersebut biasanya memiliki hubungan matematis yang cukup erat. Para pelaku atau praktisi kriptografi disebut cryptographers atau kriptolog.
Pengamanan data dengan menggunakan kriptografi dilakukan dengan dua cara, yaitu Transposisi (Transpotition) dan Substitusi (Substitution). Pada penggunaan transposisi, posisi dari hurufnya yang diubah-ubah. Sementara pada substitusi, huruf (atau kata) digantikan dengan huruf atau simbol lain. Jadi, pesan tersembunyi yang dibuat Jacques Sauniere menjelang detik-detik kematiannya, merupakan seni kriptografi dengan metode transposisi ditambah dengan seni anagram.
Enkripsi (Encryption) dan Dekripsi (Decryption)
Enkripsi (encryption) yang merupakan bagian dari seni kriptografi, adalah proses yang dilakukan untuk mengamankan sebuah pesan (plaintext) menjadi pesan yang tersembunyi (ciphertext). Plaintext adalah pesan yang belum dienkripsi, sedangkan ciphertext adalah pesan setelah dienkripsi yang sudah tidak dapat dibaca dengan mudah. Sedangkan proses sebaliknya, untuk mengubah ciphertext menjadi plaintext atau proses untuk menterjemahkan pesan yang sudah dienkripsi kedalam bentuk pesan aslinya disebut dekripsi (decryption).
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 algoritma. Untuk membuka pesan rahasia tersebut (decrypt) digunakan juga sebuah algoritma yang berkaitan erat dengan algoritma untuk enkripsi.
Substitution Cipher, Caesar Cipher
Substitution cipher adalah metode enkripsi dengan cara menggantikan huruf yang digunakan untuk mengirim pesan dengan huruf lain. Salah satu dari substitution cipher yang cukup terkenal adalah Caesar Cipher yang digunakan oleh Julius Caesar untuk mengirimkan pesan rahasia pada jamannya. Pada prinsipnya, caesar chiper mempunyai cara kerja mengganti setiap huruf didalam pesan dengan huruf yang berada tiga (3) posisi dalam urutan alphabet. Sebagai contoh, huruf “A” digantikan dengan huruf “D”, huruf “B” digantikan dengan huruf “E” dan seterusnya.
Transformasi yang digunakan untuk menggeser huruf tersebut adalah :
Tabel 1. Transformasi Caesar Cipher (geser 3 ke kanan).
Jadi, kata “BSI” setelah enkripsi akan menjadi “EVL” (Lihat Tabel 1)
Penggunaaan Caesar Cipher ini dapat dimodifikasi jumlah geseran (bukan hanya 3) dan juga arah geserannya (kekanan atau kekiri). Jadi kita dapat menggunakan Caesar Cipher ini dengan menggeser 13 ke kiri misalnya. Hal ini dapat menyulitkan orang yang ingin menyadap pesan, sebab dia harus mencoba semua kombinasi (52 kemungkinan). Atau memodifikasi satu huruf didalam pesan menjadi dua huruf dengan jumlah geseran yang berbeda setelah dienkripsi. Misalnya geser tiga (3) dan geser lima (5) dengan transformasi sebagai berikut :
Tabel 2. Substitution cipher dengan kombinasi geser 3 dan 5 ke kanan.

Jadi, kata “AMIK” setelah dikonversi akan menjadi : “DFPRLNNP”
“DF” hasil konversi dari “A” (A+3=D dan A+5=F), “PR” hasil konversi dari “M” (M+3=P dan M+5=R)
“LN” hasil konversi dari “I” (I+3=L dan I+5=N), “NP” hasil konversi dari “K” (K+3=N dan K+5=P)
Algoritma Enkripsi Data Sederhana dengan Visual Basic 6.0
Okey.. setelah membahas enkripsi data secara teoritis dan sedikit sejarah dan ilustrasinya, penulis akan memberikan trik-trik enkripsi data sederhana secara praktis menggunakan bahasa pemrograman Visual Basic 6.0. Penulis akan memberikan beberapa contoh program sederhana untuk menerapkan cara-cara enkripsi data dengan metode substitution cipher yang digunakan oleh Julius Caesar dan dengan sedikit modifikasi untuk menghasilkan pesan rahasia yang akan sulit dibaca oleh mata-mata musuh Julius Caesar J.
Trik Pertama :
Kita mulai dari substitution cipher pertama yang menggunakan cara menggeser tiga (3) huruf yang terdapat pada pesan (plaintext) (Lihat Tabel 1).
1. Desain form :

Gambar 1. Trik Pertama
2. Skenario Program :
A. Cara Konversi
Setiap karakter yang dapat kita ketikan melalui keyboard selalu memiliki kode ascii berupa angka-angka (data numerik) yang terurut. Misalnya kode ascii dari karakter “A” adalah 65, “B” adalah 66 dan seterusnya. Jadi untuk merubah/menggeser karakter “A” menjadi “D” (geser 3) dapat menggunakan perintah :
CipherText = Chr(Asc(“A”)+3)
Fungsi Chr() digunakan untuk mengkonversi data angka menjadi karakter sesuai dengan tabel ascii, sedangkan Fungsi Asc() digunakan sebaliknya, untuk mengkonversi data karakter menjadi data numerik sesuai dengan kode ascii. Pada contoh-contoh dalam artikel ini, kedua fungsi tersebut selalu digunakan.
B. Penjelasan Program
Pada saat form aktif, Text1 akan berisi urutan huruf dari “A” sampai “Z” (Penulis sengaja membatasi karakter alphabet A – Z untuk memudahkan pemahaman pembaca), sedangkan Text2 akan berisi urutan huruf dari Text1 yang digeser 3 dimulai dari “D” sampai “Z”, “A”, “B”, “C” (3 huruf pertama akan berada dibelakang). (Lihat Tabel1)
Masukan sebuah kata pada Text3 (Text3 hanya bisa menerima masukan huruf “A” sampai “Z” / huruf besar tanpa spasi, dan backspace).
Klik Tombol Encrypt untuk mengkonversi (Enkripsi) kata pada Text3, hasil enkripsi (CipherText) dari Text3 akan tampil pada Text4.
Klik Tombol Decrypt untuk mengkonversi (Dekripsi) kata pada Text4, hasil dekripsi (PlainText) dari Text4 akan tamnpil pada Text5.
Klik Tombol Hapus untuk mengosongkan Text3, Text4 dan Text5.
3. Listing program :
Private Sub cmdDecrypt_Click()
Text5 = ""
'Mengetahui panjang text pada Text4
N = Len(Trim(Text4))
'Mengkonversi setiap karakter satu-persatu pada text4 (geser -3)
For i = 1 To N
Cipher = Mid(Text4, i, 1)
Plain = Chr(Asc(Cipher) - 3)
'Jika Plaintext adalah huruf A, B atau C,
'maka ubah menjadi X, Y atau Z
If Asc(Plain) <>
Text5.SelText = Chr((Asc(Plain) - 64) + 90)
Else
Text5.SelText = Plain
End If
Next
End Sub
Private Sub cmdEncrypt_Click()
Text4 = ""
'Mengetahui panjang text pada Text3
N = Len(Trim(Text3))
'Mengkonversi setiap karakter satu-persatu pada text3 (geser 3)
For i = 1 To N
Plain = Mid(Text3, i, 1)
Cipher = Chr(Asc(Plain) + 3)
'Jika Ciphertext adalah huruf X, Y atau Z
'maka ubah menjadi A, B, atau C
If Asc(Cipher) > 90 Then
Text4.SelText = Chr(64 + (Asc(Cipher) - 90))
Else
Text4.SelText = Cipher
End If
Next
End Sub
Private Sub cmdHapus_Click()
Text3 = "": Text4 = "": Text5 = ""
Text3.SetFocus
End Sub
Private Sub Form_Activate()
Text1 = "": Text2 = "": Text3 = ""
Text4 = "": Text5 = ""
'Menampilkan karakter A - Z secara urut ke Text1
For i = 65 To 90
Text1.SelText = Chr(i)
Next
'Menampilkan karakter A - Z setelah digeser 3 ke Text2
For i = 65 + 3 To 90 + 3
If i > 90 Then
Text2.SelText = Chr(64 + (i - 90))
Else
Text2.SelText = Chr(i)
End If
Next
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
'Jika yang ditekan tombol Backspace,
'maka keluar dari sub procedure
If KeyAscii = 8 Then Exit Sub
'Mengubah huruf kecil menjadi huruf besar
KeyAscii = Asc(UCase(Chr(KeyAscii)))
'jika karakter yang dimasukan di Text3
'bukan karakter A - Z, maka ubah karakter menjadi kosong
If Not (KeyAscii >= 65 And KeyAscii <= 90) Then
KeyAscii = 0
End If
End Sub
4. Jalankan program dan masukan sebuah kata pada Text3. Klik Encrypt untuk mengenkripsi kata tersebut. Klik Decrypt untuk mengembalikan pesan yang sudah di-enkripsi ke pesan semula. Klik Hapus untuk mengulangi langkah diatas.
Algoritma Enkripsi diatas masih bisa dikembangkan lebih jauh lagi, misalnya kita ingin menyimpan data penting seperti data password ke database. Dengan cara diatas, password yang akan disimpan di database bisa kita enkripsi terlebih dahulu, jadi yang tersimpan di database adalah ciphertext-nya. Jika kita ingin mengambil password tersebut dari database, kita bisa menggunakan cara dekripsi untuk mengembalikan ciphertext ke plaintext.
Enkripsi data dengan cara ini masih sangatlah sederhana. Karena antara plaintext dan ciphertext panjangnya sama, orang lain akan dengan mudah menganalisa isi dari ciphertext dengan mencoba-coba (brute atack) beberapa kombinasi jumlah pergeseran posisi huruf dalam alphabet dan arah pergeserannya (kanan/kiri). Orang lain hanya perlu mencari tau berapa jumlah pergeseran huruf yang dilakukan. Jika sudah diketahui bahwa pergeseran yang dilakukan (misalnya 3 huruf kekanan), maka cara untuk menterjemahkan pesan rahasia itu hanya menggeser setiap huruf kearah sebaliknya (kiri) sebanyak tiga (3) juga. Jika pesan rahasia yang akan disampaikan adalah strategi perang sang Julius Caesar, dan pesan tersebut berhasil diterjemahkan oleh mata-mata musuh, maka tamatlah riwayat kejayaan Sang Caesar J.
Untuk menghasilkan ciphertext yang lebih sulit dibaca, maka diperlukan modifikasi dari enkripsi diatas. Misalnya merubah satu huruf pada plaintext menjadi beberapa huruf dengan geseran yang berbeda. (Bersambung)
Referensi :
- Keamanan Sistem Informasi Berbasis Internet - Budi Raharjo
- The DaVinci Code - Dan Brown
NB :
- Sambungannya adalah trik untuk enkripsi substitution cipher dengan modifikasi geser 3 dan 5, dan enkripsi tingkat lanjut yang penulis beri nama “CipherText with Key”.