Monday, May 7, 2012

Prinsip dari Penyandian(Chipers) Pada Kriptografi


Enkripsi mengubah sebuah pesan dengan cara tertentu sehingga menjadi tidak dikenali oleh pihak manapun yang tidak mempunyai ‘rahasia’ bagaimana cara membalik proses pengubahan(transformasi). Pengirim menerapkan fungsi enkripsi pada pesan teks awal(plaintext), yang menghasilkan sebuah pesan cipher text(teks tersandi) yang dikirim melalui jaringan seperti digambarkan pada gambar  9.2.1A. penerima menerima menerapkan sebuah fungsi dekripsi(membalik enkripsi) rahasia yang membalik fungsi fungsi enkripsi untuk mengembalikan plaintext awal. Ciphertext terkirim melalui jaringan yang tidak bisa tidak bisa diketahui(dimata-matai) oleh eavesdropper(penyadap) manapun, misalkan si eavesdropper tidak mengetahui fungsi dekripsi.
 
Gambar 8.2.1A Proses Pengiriman pesan
Transformasi yang diwakili oleh sebuah fungsi enkripsi dan fungsi dekripsi pasangannya yang disebut sebagai cipher(penyandian). Ahli kriptografi telah diarahkan pada prinsip, yang pertama dinyatakan pada 1883, bahwa fungsi enkripsi dan dekripsi harus diberikan parameter oleh sebuah key(kunci), dan lebih jauh fungsi-fungsi tersebut harus diakui oleh khalayak umum, hanya kuncinya saja yang harus dirahasiakan. Oleh karena itu, ciphertext yang dihasilkan oleh sebuah pesan plaintext tergantung baik pada fungsi enkripsi dan kunci.
Salah satu alasan dari prinsip ini adalah jika kita tergantung pada penyandian yang dibuat rahasia, maka kita harus menyerahkan penyandian (bukan hanya pada kunci-kunci saja) ketika cipher tidak lagi rahasia. Hal ini berarti berpotensi penggantian cipher yang berulang-kali, dimana menjadi sumber masalah karena akan memakan banyak tenaga untuk mengembangkan sebuah cipher baru. Selain itu, salah satu cara terbaik untuk mengetahui bahwa sebuah cipher itu aman adalah dengan menggunakan cipher tersebut untuk waktu yang lama. Jika tidak ada yang berhasil memecahkan cipher tersebut, mungkin saja cipher tersebut aman. Untungnya, terdapat beberapa orang yang akan mencoba untuk memecahkan cipher-cipher yang ada dan akan memberitahukan tersebar secara luas ketika mereka telah berhasil, sehingga tidak ada berita yang secara umum merupakan berita baik. Oleh karena itu, terdapat pertimbangan biaya dan resiko dalam menjalankan sebuah cipher baru. Akhirnya , memberikan parameter sebuah cipher dengan key-key menyediakan kita dengan apa yang ada di dalam akibat sebuah keluarga cipher yang yang sangat besar; dengan mengganti key-key, kita pada dasarnya mengganti cipher, oleh karena itu membatasi jumlah data yang seorang cryptanalyst(pemecah kode) bisa gunakan untuk mencoba memecahkan cipher atau key kita dan jumlah yang bisa dia baca jika dia berhasil.

Kebutuhan dasar sebuah algoritma enkripsi adalah mengubah plaintext menjadi ciphertext(teks tersandi) dengan cara tertentu yang diinginkan recipient (penerima/pemilik kunci dekripsi) agar bisa mendapatkan kembali plaintext. Hal ini berarti bahwa pesan yang terenkripsi tidak bisa dibaca oleh orang orang yang tidak mempunyai kunci.
Menjadi penting untuk menyadari bahwa ketika seorang attacker(penyerang) menerima sebuah bagian dari ciphertext(teks yang tersandikan), dia mungkin mempunyai informasi lebih pada kemampuannya lebih dari hanya sekedar ciphertext itu sendiri. Sebagai contoh, attacker mungkin mengetahui bahwa plaintext telah ditulis dalam bahasa inggris, yang mana huruf ‘e’ paling sering muncul di dalam plaintext dari pada huruf yang lain, frekuensi dari banyak huruf lain dan kombinasi huruf yang umum juga bisa ditebak. Informasi ini bisa secara besar mempermudah tugas untuk menemukan key tersebut. Hal yang sama, si attacker mungkin mengetahui beberapa hal tentang isi yang mungkin dari message; sebagai contoh kata ‘login’ sering muncur pada awal sesi dari login jarak jauh(remote login). Hal ini bisa memungkinkan sebuah serangan terhadap plaintext yang diketahui(known plaintext attack), yang mana mempunyai kesempatan yang jauh lebih tinggi untuk berhasil dari pada hanya serangan ciphertext semata(ciphertext only attack). Bahkan, lebih baik untuk menggunakan serangan plaintext terpilih(chosen plaintext attack) yang mana bisa dimungkinkan dengan memberikan umpan beberapa informasi pada sender yang mana anda tahu tentang apa yang mungkin dikirimkan oleh sender(pengirim),sebagai contoh, hal seperti ini telah terjadi pada masa perang.
Oleh karena itu Algoritma-algoritma kriptografis terbaik bisa mencegah attacker dari menduga key bahkan ketika seseorang mengetahui baik plaintext dan ciphertext. Hal ini membuat si attacker harus mencoba-coba semua kunci yang mungkin yaitu secara menyeluruh,yang disebut pencarian ‘brute force’. Jika key-key mempunyai n bits, maka terdapat 2n kemungkinan nilai untuk sebuah key(dimana setiap bit bisa jadi 0 atau 1). Seorang attacker bisa jadi sangat beruntung jika berhasil mencoba nilai yang benar seketika, atau menjadi sangat tidak beruntung ketika mencoba semua kemungkinan yang salah sampai pada akhirnya mencoba nilai yang tepat untuk sebuah key, setelah mencoba semua 2n kemungkinan nilai; rata-rata jumlah percobaan untuk menyingkap nilai yang tepat adalah separuh jalan antara kedua nilai ekstrim yaitu 2n/2. Hal ini bisa dibuat tidak praktis secara komputasi dengan memilih key yang cukup panjang dan dengan membuat operasi pemeriksaan sebuah kunci dianggap cukup berat. Hal yang membuat hal ini sulit adalah kecepatan komputasi terus meningkat, dan membuat hal yang sebelumnya komputasi tidak layak menjadi layak. Lebih jauh, walaupun kita konsentrasi pada keamanan data ketika bergerak melalui jaringan, yang mana, data terkadang menjadi rentan(vulnerable) hanya pada waktu yang sangat singkat, secara umum, orang-orang keamanan harus mempertimbangkan kerentanan(vulnerability) dari data yang harus disimpan pada arsip selama puluhan tahun. Hal ini mempertimbangkan untuk sebuah ukuran kunci yang besar. Di sisi lain, semakin panjang kunci membuat enkripsi dan dekripsi menjadi lebih lambat.

Gambar 9.2.1B Blok cipher
Sebagian besar cipher adalah block cipher; dimana cipher tersebut digunakan untuk mengambil input sebuah blok plaintext dengan ukuran tetap, antara 64 sampai 128 bit. Menggunakan sebuah block cipher untuk meng-enkripsi setiap blok secara independen(tidak tergantung dengan blok lainnya) yang disebut mode enkripsi Electronic CodeBook(ECB) yang mempunyai kelemahan berupa sebuah blok nilai plaintext yang diberikan akan menghasilkan blok ciphertext yang sama. Oleh karena itu nilai blok dalam plaintext bisa dikenali dari bedasarkan ciphertext nya, yang membuatnya  lebih mudah untuk seorang cryptanalyst untuk memecahkan cipher. Untuk mencegah hal ini, cipher blok selalu ditumpuk untuk membuat ciphertext untuk sebuah blok berbeda tergantung pada konteks. Cara dimana sebuah blok cipher akan ditumpuk yang disebut mode operasi(modes of operation). Sebuah mode yang umum dari operasi adalah cipher block chaining(CBC), yang mana tiap blok plaintext di-XOR-kan dengan dengan blok ciphertext sebelumnya sebelum dilakukan enkripsi. Hasil dari tiap blok ciphertext tergantung pada bagian dari blok sebelumnya(contohnya misalkan dari konteks). Karena blok plainteks pertama tidak mempunyai blok sebelumnya, maka di-XOR-kan dengan sebuah angka acak. Angka acak tersebut, disebut sebagai sebuah Initialization Vector(IV), yang termasuk dalam urutan blok cipher sehingga blok ciphertext pertama bisa di-dekripsi. Mode ini digambarkan pada Gambar 9.2.1B. mode operasi yang lain yaitu counter mode(mode pencacah), yang mana nilai berurutan dari pencacah(counter, missal 1,2,3…) dimasukkan pada enkripsi dari blok yang berurutan dari plaintext.

No comments:

Post a Comment