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.
plain-text.jpg

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.
 algoritma-dan-key.jpg

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.
symmetric-cryptography.jpg

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.
enkripsi.jpg

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.
xor.jpg

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.
stream-cipher.jpg

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

sealkazzsoftware.blogspot.com resepkuekeringku.com