Jumat, 31 Mei 2013

KRIPTOGRAFI

secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier - Applied Cryptography]. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data [A. Menezes, P. van Oorschot and S. Vanstone - Handbook of Applied Cryptography]. Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu : 1. Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi. 2. Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya. 3. Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain. 4. Non-repudiasi., atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat. jadi mudahnya kriptografi adalah ilmu yang mempelajari tentang urusan sandi menyandi pesan/informasi. 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. Dibuat untuk tugas kuliah Sistem Terdistribusi (Keamanan Jaringan). Sumber: www.stevan777.wordpress.com dan wikipedia 

0 komentar:

Posting Komentar

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More