Apa sih Cryptography itu?
Apa sih Cryptography itu?
Berkenalan dengan Cryptography
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 :
Komentar
Posting Komentar