Anda mungkin sering
mendengar istilah Cryptography. Istilah ini cukup asing untuk Anda,
namun tidak untuk peminat dunia keamanan komputer. Tak kenal maka tak
sayang, kali ini kami akan mengenalkan Anda dengan dengan dunia
Cryptography.
Jika bicara tentang
keamanan, maka kita tidak akan bisa melepaskan diri dari masalah
cryptography. Cryptography berisi berbagai rumus dan angka-angka yang
hanya bisa dipahami oleh “keturunan Einstein”. Belum lagi
istilah-istilah yang bahkan sangat susah untuk diucapkan. Namun,
kegunaan cryptography sendiri sudah tidak bisa diragukan. Dan belajar
untuk sedikit mengerti akan sangat membantu Anda dalam memahami berbagai
persoalan mengenai keamanan komputer.
Cryptography
Saya masih ingat ketika
beberapa tahun yang lalu, beberapa ABG (anak usia belia-red) dengan
bangganya berbicara dengan cara menambahkan akhiran untuk setiap
penggalan kata. Misalnya,
menambahkan kata “si” ke
dalam kalimat “kenapa” sehingga kata “kenapa” berubah menjadi “kesi nasi
pasi”. Mereka menggunakan cara seperti ini setiap kali hendak berbicara
sesuatu yang rahasia. Awalnya, saya tidak memahami dan mengerti ucapan
mereka. Namun setelah pelan-pelan diamati, saya bisa memahami apa yang
mereka bicarakan. Cukup seru yang mereka bicarakan, pantas saja main
rahasia-rahasiaan!
Bagaimanapun, apa yang
dilakukan oleh ABG ini merupakan suatu bentuk “pengacakan” atau proses
membuat sebuah kata biasa menjadi kata sampah yang tidak bisa
dimengerti. Di dalam ilmu keamanan data, kita bisa mengatakan bahwa ABG
ini telah melakukan proses enkripsi terhadap kata-kata yang digunakan.
Dan bidang ilmu yang mempelajari masalah ini dinamakan sebagai
Cryptography.
Bidang ilmu cryptography ini
sangat dekat dengan berbagai rumus dan algoritma sehingga biasanya
bidang ilmu cryptography dimasukkan ke dalam bagian ilmu matematika.
Namun sebaliknya, terdapat juga bidang ilmu yang mempelajari bagaimana
kelemahan dari sebuah cryptography, yaitu cryptanalysis. Kedua bidang
ilmu tersebut biasanya sangat dekat dengan keamanan negara. Di Indonesia
sendiri terdapat lembaga yang mempelajari masalah ini, yang dikenal
dengan Lembaga Sandi Negara (LSN).
Enkripsi, dekripsi, plain text, dan cipher text
Pada zaman perang dahulu,
komunikasi memegang peranan yang sangat vital. Komandan perlu memberikan
komando kepada anak buahnya dan pasukan perlu mendapatkan strategi
perang dari atasannya. Semua informasi ini tentu tidak bisa disampaikan
begitu saja dengan cara berbisik dari satu telinga ke telinga yang lain.
Pengiriman pesan melalui
radio merupakan teknologi yang telah digunakan dan tentu saja merupakan
cara yang sangat efektif. Namun, strategi perang tentu tidak boleh
diketahui oleh musuh. Apabila musuh sampai mengetahui strategi perang,
sudah bisa dipastikan kemenangan akan ada di pihak musuh.
Untuk itulah dibutuhkan
sebuah metode untuk mengacaukan informasi yang dikirim melalui udara.
Sehingga kalau pun data tersebut bisa diambil, musuh tidak akan membaca
pesan yang dikirimkan.
Data asli dalam bentuk teks
yang bisa dibaca — disebut sebagai plaintext — ini, kemudian akan diacak
dengan menjadi karakter “sampah” yang dinamakan sebagai ciphertext.
Metode pengacakan ini sendiri dinamakan sebagai enkripsi.
Setelah data sampai ke
tujuan, karakter sampah (ciphertext) ini kemudian akan didekripsi
kembali menjadi plaintext yang bisa dibaca kembali.
Algoritma dan key
Suatu ketika, Julius Caesar
ingin mengirimkan pesan kepada seorang jendral melalui kurir. Namun,
Julius khawatir bila kurir tersebut tertangkap atau berkhianat. Untuk
itu, pesan dikirim tidak ditulis dalam bentuk teks biasa, namun
berbentuk ciphertext!
Untuk mengubah plaintext
menjadi cipertext, Julius menggunakan algoritma yang sangat sederhana,
yaitu dengan mengubah setiap karakter dengan karakter pengganti. Sebagai
contoh, bila menggunakan algoritma geser 1 karakter, maka karakter A
akan diganti menjadi B, sedangkan karakter B akan diganti dengan C, dan
seterusnya.
Untuk itu, sebuah plaintext
“SERANG” akan berubah menjadi sebuah ciphertext “TFSBOH”. Aturan “geser 1
karakter” inilah yang kita namakan sebagai algoritma dari sebuah
enkripsi. Tentu saja ini merupakan algoritma yang sangat-sangat lemah
saat ini dan tidak seharusnya digunakan lagi karena sangat mudah untuk
dipelajari.
Andaikan algoritma dari
Julius Caesar ini digunakan oleh semua orang, hanya dalam waktu 1 detik
Anda sudah bisa membongkar pesan rahasia yang seharusnya dilindungi oleh
sebuah algoritma enkripsi. Anda bisa lansung mengganti huruf B menjadi
huruf A, huruf C menjadi huruf B, dan seterusnya.
Agar sebuah algoritma bisa
digunakan secara terus menerus, dibutuhkan sebuah kunci atau “Key” yang
hanya diketahui oleh orang yang menggunakan algoritma tersebut yang
menjadikannya unik untuk setiap orang. Misalnya, untuk si Ucup, karakter
A tidak diganti menjadi B namun diganti menjadi C sedangkan karakter B
akan diganti menjadi D. Jadi bisa dikatakan algoritma yang digunakan
oleh si Ucup masih tetap sama yaitu metode “pergeseran” hanya saja kali
ini bukan “pergeseran 1” tapi “geser 2”.
Adanya “key” yang ditentukan
oleh masing-masing orang yang menggunakan sebuah algoritma, membuat
sebuah algoritma hanya bisa dibalikkan apabila sang hacker mengetahui
“key” rahasia yang digunakan.
“Key” atau kunci rahasia ini
sering kali disebut juga sebagai password. Namun, beberapa orang
ternyata tidak senang dengan kata ini karena password terkesan “kurang
aman”. Oleh orangorang ini kemudian muncul lagi istilah (lagi-lagi)
passphrase. Secara singkat bisa saya katakan bahwa passphrase merupakan
password yang aman karena menggunakan jumlah karakter yang cukup banyak
dan juga penggunaan karakter acak.
Contoh algoritma yang
terkenal adalah DES (Digital Encryption Standard), 3DES (Triple Digital
Encryption Standard), RC4 (Rivest Cipher 4), RC5, RC6, Bowfish, dan AES
(Advanced Encryption Standard).
Metode enkripsi dan dekripsi
tidaklah sesederhana seperti yang Anda bayangkan. Para ahli membagi
teknik enkripsi dan dekripsi menjadi 2 jenis, yaitu Symmetric dan
Asymmetric Cryptography.
Symmetric cryptography
Ini merupakan jenis enkripsi
yang mudah untuk dipahami. Anda dapat menggunakan key atau kunci yang
sama untuk melakukan enkripsi dan dekripsi.
Jadi, ketika Anda
menggunakan kata kunci “xyz” guna melakukan enkripsi, maka untuk
melakukan dekripsi kembali, Anda harus menggunakan kata “xyz” juga. Anda
bisa membayangkan sebuah kunci rumah yang sama, digunakan untuk
mengunci pintu Anda dan juga untuk membuka pintu yang terkunci.
Symmetric Cryptography menggunakan dua teknik untuk melakukan enkripsi maupun dekripsi, yaitu Block Cipher dan Stream Cipher.
-
Block Cipher
Block Cipher akan melakukan
enkripsi terhadap sejumlah blok data sekaligus. Jadi, misalnya Anda
mempunyai kalimat “HalloApaKabar” dan blok cipher menggunakan blok
berukuran empat byte (4 karakter), maka proses enkripsi akan dilakukan
per-empat karakter.
Enkripsi pertama akan
dilakukan pada empat karakter pertama yaitu “Hall”, diikuti oleh
enkripsi kedua pada blok kedua, yaitu “oApa”, dan seterusnya. Algoritma
Enkripsi Block Cipher yang terkenal adalah RC4 yang juga digunakan oleh
jaringan wireless.
Saya pernah melihat adanya
kuis dari salah satu majalah. Tantangannya adalah memecahkan sandi
sebuah enkripsi. Soalnya kira-kira begini, apabila kalimat di bawah ini :
Bajingan dianggap pahlawan
Menghasilkan enkripsi sebagai berikut :
!@#$%*@% +$@%**@> >@&?@=@%
Lalu apa arti dari enkripsi berikut ini ?
%*$?@%*
Bila Anda perhatikan, semua
huruf mempunyai karakter penggantinya. Tanpa perlu mengetahui rumus atau
algoritma yang digunakan, Anda sudah bisa mencari arti dari sebuah
ciphertext. Semua huruf “B” telah diganti atau dienkripsi menjadi
karakter “!”, semua karakter “a” telah diganti atau dienkripsi menjadi
“@”, semua karakter “j” telah diganti atau dienkripsi menjadi “#”, dan
seterusnya.
Dengan mempelajari
karakter-karakter sebelum dan sesudah enkripsi, Anda bisa melihat bahwa
karakter “%” merupakan hasil dari enkripsi karakter “n”, karakter “*”
merupakan hasil enkripsi dari karakter “g”, dan seterusnya. Dari hasil
pemetaan ini, bisa diketahui bahwa hasil enkripsi %*$?@%* bila dilakukan
dekripsi kembali akan menghasilkan sebuah kata yaitu :
ngilang
Enkripsi semacam ini sangat
mudah dipecahkan, apalagi bila hacker sudah mempunyai contoh plaintext
dan ciphertext seperti pada contoh. Kasus yang sama terjadi pada
enkripsi yang dilakukan dengan Block Cipher dan masalah ini merupakan
masalah yang sangat besar untuk sebuah algoritma enkripsi.
Untuk itu, diperlukan suatu
metode agar suatu huruf atau karakter yang dienkripsi tidak akan selalu
menghasilkan ciphertext yang sama. Misalnya, hasil dari enkripsi huruf
“A”, terkadang be-rubah menjadi “*” dan terkadang berubah menjadi “^”.
Namun, mungkinkah hal ini dilakukan ?
Untuk menghasilkan hasil enkripsi yang selalu berbeda-beda dengan enkripsi yang sama adalah suatu pekerjaan yang rumit.
Namun, para ahli menemukan
suatu metode yang sederhana dan efektif yaitu dengan melakukan dua kali
enkripsi! Enkripsi pertama dilakukan antara plaintext dengan sebuah
nilai acak yang dinamakan sebagai Initialization Vector (IV). Karena
enkripsi pertama ini dilakukan antara plaintext dengan IV yang unik,
hasilnya akan membuat plaintext yang sama dan menghasilkan ciphertext
yang berbeda.
Enkripsi pertama ini cukup
dilakukan dengan metode yang paling sederhana dalam dunia enkripsi,
yaitu XOR. Ini dimaksudkan agar proses enkripsi secara keseluruhan tidak
terlalu terbebani. Hasil enkripsi pertama ini kemudian dilempar ke
proses enkripsi yang lebih rumit untuk menghasilkan sebuah ciphertext
yang kuat.
Syarat penting agar enkripsi
ini tidak bisa dibongkar adalah nilai IV yang digunakan haruslah selalu
berubah dan harus dipastikan IV tidak digunakan lebih dari sekali.
Permasalahan semacam inilah yang terjadi pada keamanan jaringan wireless
yang menyebabkan para produsen dan konsumen kebakaran jenggot. Contoh
dari Block Cipher yang terkenal dan digunakan secara luas adalah DES dan
AES.
-
Stream Cipher
Untuk menghindari hasil
enkripsi ciphertext yang sama ketika melakukan enkripsi plaintext yang
sama, metode stream cipher menggunakan pendekatan yang sedikit berbeda.
Stream Cipher menggunakan key yang berbeda-beda untuk melakukan proses
enkripsi, artinya pada metode ini dibutuhkan jumlah key yang sangat
banyak.
Misalnya, Anda mempunyai key
table yang berisi 1 dan 4, kemudian Anda mempunyai plaintext “aa”.
Untuk itu, stream cipher akan melakukan enkripsi karater “a” pertama
dengan key pertama yaitu 1. Sedangkan plaintext kedua yang ternyata juga
berisi karakter yang sama yaitu “a” akan dienkripsi dengan key kedua
dari key table yaitu 4. Dengan cara ini, plaintext yang sama akan
menghasilkan ciphertext yang berbeda.
Permasalahannya tentu saja
terletak pada key table. Bagaimana mendapatkan key table atau
menciptakan key table ini? Biasanya, key table diciptakan secara
otomatis berdasarkan sebuah key yang diberikan. Misalnya, Anda
memberikan sebuah key “xx”, berdasarkan “xx” ini kemudian akan
diciptakan sebuah key table. Contoh Algoritma dari Stream Cipher yang
secara luas digunakan adalah RC4.
Asymmetric cryptography
Suatu ketika, Anda ingin
mengirimkan pesan yang sangat rahasia kepada rekan mata-mata Anda di
luar negeri. Anda sudah mempelajari teknik enkripsi agar pesan Anda
tidak bisa dibaca oleh tukang intip. Masalahnya adalah, rekan Anda harus
mengetahui juga key yang Anda gunakan untuk melakukan enkripsi agar
rekan Anda bisa membaca ciphertext yang Anda kirimkan. Lalu, bagaimana
cara Anda memberikan key rahasia agar tidak jatuh ke tangan asing?
Telepon bisa disadap (ingat kasus Jaksa Agung M. Ghalib), email bisa
diintip, sedangkan kurir tidak bisa dipercaya. Jika Anda bisa
menggunakan telepati, tentu masalahnya selesai. Jadi, enkripsi symmetric
mempunyai permasalahan yang sangat mendasarkan, yaitu masalah
pendistribusian key yang aman.
Para pakar penyandian
menciptakan jenis enkripsi yang sangat-sangat unik yang dinamakan
Asymmetric Cryptography atau yang juga sering dinamakan Public Key
Cryptography. Berbeda dengan symmetric cryptography yang menggunakan key
yang sama untuk enkripsi dan dekripsi, pada asymmetric cryptography
Anda menggunakan key yang berbeda untuk enkripsi dan dekripsi.
Key yang berbeda ini
dinamakan sebagai private key dan public key. Private key merupakan key
yang dipegang sendiri oleh pemiliknya sendiri. Sedangkan public key
merupakan key yang boleh diketahui oleh siapa pun juga. Public key bisa
digunakan untuk melakukan enkripsi namun hanya bisa didekripsi kembali
dengan private key. Bingung? Jika Anda bingung, itu wajar.
Baiklah, penjelasan ini
untuk Anda yang mempunyai otak seperti saya, yang kebingungan dengan
konsep public dan private key. Anda membuat gembok-gembok spesial yang
Anda bagikan kepada semua orang namun Anda tidak memberikan kunci gembok
kepada orang-orang tersebut. Anda katakan kepada mereka “kalau Anda
ingin mengirimkan pesan kepada saya, gemboklah dengan gembok saya ini”.
Pesan di dalam gembok akan
aman karena tidak ada yang punya kunci gembok Anda. Setiap orang boleh
memiliki gembok Anda dan Anda tetap tidak perlu memberikan kunci kepada
siapa pun juga. Gembok merupakan “Public Key” sedangkan kunci merupakan
“Private key”. Public key dan private key dinamakan sebagai key pair.
sumber:
0 komentar:
Posting Komentar