KRIPTOGRAFI
Oleh : Suyatno Budiharjo (
[email protected])
Page 1
BAB DASAR KRIPTOGRAFI
Ketika Yulius Caesar mengirimkan pesan ke para Jenderalnya, dia tidak percaya begitu saja pada pembawa pesan atau kurir-kurirnya. Sehingga dia memindahkan setiap huruf A dalam pesannya dengan huruf D, huruf B dengan huruf E dan seterusnya. Hanya seseorang yang mengetahui bahwa aturan “geser 3“ yang dapat mendekripsi pesannya.
Enkripsi dan Dekripsi Data yang dapat dibaca dan dipahami tanpa beberapa manipulasi tertentu disebut plaintext atau cleartext. Metode untuk mengacak plaintext sebagai cara untuk menyembunyikan substansi pesan disebut enkripsi. Hasil mengenkripsi plaintext dalam bentuk yang tidak dapat dibaca disebut ciphertext. Anda menggunakan enkripsi untuk menjamin bahwa informasi tidak terbaca dari seseorang yang tidak berkepentingan, meskipun mereka dapat melihat data terenkripsinya. Proses untuk membalikkan kembali dari ciphertext ke plaintext yang awalnya disebut Dekripsi. Model umum dari metode kriptografi diilustrasikan seperti gambar sebagai berikut :
Gambar 1-1. Model enkripsi dan dekripsi
Apa itu Kriptografi ? Kriptografi adalah ilmu pengetahuan yang menggunakan matematik untuk mengenkripsi dan mendekripsi data. Kriptografi memungkinkan Anda menyimpan atau mengirimkan informasi yang sensitif melalui jaringan yang tidak aman, seperti internet sehingga ini tidak dapat terbaca oleh seseorang kecuali penerima yang berkepentingan. Sehingga kriptografi adalah seni dan ilmu pengetahuan untuk menjaga keamanan data. Sedangkan Cryptanalysis merupakan ilmu pengetahuan dari penganalisaan dan pemecahan komunikasi keamanan komunikasi. Cryptanalysis klasik meliputi kombinasi yang menarik dari alasan secara analitik, aplikasi dari tool matematika, penemuan pola, kesabaran, determinasi, dan keberuntungan. Cryptanalyst adalah orang yang melakukan Cryptanalysis atau disebut juga dengan Attacker. Cabang matematika yang mempelajari kriptografi dan Cryptanalysis disebut kriptologi.
Kekuatan Kriptografi “Terdapat dua jenis kriptografi di dunia ini : kriptografi yang akan menahan anak kecil dari pembacaan file anda, dan kriptografi yang akan menghentikan pemerintah pusat
Oleh : Suyatno Budiharjo (
[email protected])
Page 2
dari pembacaan file anda“ Bruce Schneier, Applied Crytography: protocols, Algorthms, and Source Code in C. Kriptografi dapat menjadi kuat atau lemah, sebagaimana dijelaskan diatas. Kekuatan kriptografi diukur dalam waktu dan resource yang diperlukan untuk menemukan kembali plaintext. Hasil dari kriptografi yang kuat adalah ciphertext yang sangat sulit untuk didekripsi tanpa penggunaan tool pendekodean yang sesuai. Seberapa Sulitnya ? Diberikan semua kekuatan komputasi saat ini dan waktu yang tersedia, walaupun Komputer biliun (1000 triliun) mengerjakan biliun hitungan per detik – adalah tidak mungkin mendekripsi hasil kriptografi yang kuat sebelum akhir dari dunia. Seseorang kemudian akan berpikir, bahwa kriptografi yang kuat akan menahan lebih baik dari serangan yang secara ekstrim dilakukan oleh cryptanalyst.. Siapa yang benarbenar mengatakan hal ini ? Tidak seorangpun yang dapat membuktikan bahwa Enkripsi terkuat yang diperoleh saat ini yang akan menahannya dibawah kekuatan komputasi yang akan datang. Bagaimanapun, kriptografi kuat yang ditawarkan PGP adalah yang terbaik yang saat ini tersedia. Bagaimana Cara Kerja Kriptografi ? Algoritma kriptografi atau cipher merupakan fungsi matematik yang digunakan dalam proses enkripsi dan dekripsi. Algoritma kriptografi bekerja didalam kombinasi dengan sebuah kunci berupa kata, angka atau phrase untuk mengenkripsi plaintext. Plaintext yang sama yang dienkripsi dengan kunci yang berbeda akan diperoleh ciphertext yang berbeda pula. Keamanan dari data terenkripsi merupakan sesuatu yang tergantung pada 2 hal : kekuatan dari algoritma kriptografi dan kerahasiaan dari kunci. Algoritma kriptografi ditambah semua kemungkinan kunci dan semua protokol yang untuk membuatnya bekerja tercakup dalam cryptosystem. Dan Pretty Good Privacy (PGP merupakan sebuah cryptosystem.
Kriptografi Konvensional Dalam kriptografi konvensional, atau yang disebut juga dengan enkripsi kunci rahasia atau kunci simetrik, satu kunci yanf digunakan keduanya baik untuk enkripsi dan dekripsi. Data Encryption Standard (DES) nerupakan salah contoh dari crytosystem konvensional yang secara luas digunakan. Gambar 1-2 adalah ilustrasi dari proses enkripsi konvensional.
Oleh : Suyatno Budiharjo (
[email protected])
Page 3
Gambar 1-2 Enkripsi konvensional
Cipher Caesar Secara tajam contoh sederhana dari kriptografi konvensional adalah cipher substitusi. Cipher Substitusi akan menggantikan satu bagian dari inormasi dengan yang lain. Hal ini paling sering dilakukan dengan offsetting huruf dari alphabet. Dua contoh adalah Captain Midnight's Seceret Decoder Ring, yang dapat dimiliki ketika anda adalah anak kecil dan Cipher Julius Caesar. Dalam kedua kasus, algoritma adalah cara untuk melakukan offset alphabet dan kunci adalah jumlah karakter yang digunakan untuk melakukan offset. Sebagai contoh, jika kita ingin mengkodekan kata “RAHASIA“ menggunakan nilai kunci Caesar dari 3, maka kita akan mengeset alphabet sehingga huruf ketiga kebawah memulai alphabet. Sehingga permulaan dengan : ABCDEFGHIJKLMNOPQRSTUVWXYZ dan menggeser setiap huruf dengan 3, sehingga diperoleh : DEFGHIJKLMNOPQRSTUVWXYZABC dimana D=A, E=B, F=C dan seterusnya. Dengan skema ini, maka plaintext “RAHASIA“ akan dienkripsi sebagai “UDKDVLD“. Untuk mengijinkan orang lain membaca ciphertext, anda dapat memberitahu mereka bahwa kuncinya adalah 3. Tentunya, hal ini akan dimasukkan sebagai kriptografi yang lemah oleh standar saat ini, tetapi ini dilakukan untuk Caesar dan hal ini juga mengilustrasikan bagaimana kriptografi konvensional bekerja. Dan dengan sangat mudah dapat dibuat program untuk kriptografi Caesar ini, dimisalkan nama fungsi tersebut adalah plain2cipher_caesar yang akan mengubah dari Plaintext menjadi Ciphertext dengan sebuah kunci. Berikut cara menjalankannya : >> y=plain2cipher_caesar(plaintext,kunci) Dan jika plaintext = Saya ingin membuat sebuah Buku kecil tentang ini kunci = 3
Oleh : Suyatno Budiharjo (
[email protected])
Page 4
maka ciphertext yang akan diperoleh adalah sebagai berikut : y = Vdbd#lqjlq#phpexdw#vhexdk#Exnx#nhflo#whqwdqj#lql Dengan kunci yang berbeda tentu akan diperoleh ciphertext yang berbeda, jika kunci = 5, maka ciphertext yang diperoleh adalah : y = Xfdf%nslns%rjrgzfy%xjgzfm%Gzpz%pjhnq%yjsyfsl%nsn
Manajemen Kunci dan Enkripsi Konvensional Enkripsi Konvensional mempunyai keunggulan yaitu sangat cepat. Ini secara khusus bermanfaat untuk mengenkripsi data yang tidak dikirimkan kemana-mana. Bagaimanapun, Enkripsi Konvensional saja sebagai pengenkripsi utama dalam transmisi data yang aman dapat menjadi kemudahan yang cukup mahal yang menyebabkan kesulitan dalam pendistribusian kuncinya dengan aman. Memperhatikan kembali sebuah karakter dari film mata-mata favorit Anda : seseorang dengan sebuah jam terkunci yang membelenggu pergelangan tangannya. Apa yang ada didalam jam tersebut ? Ini mungkin bukan kode peluncuran misil, formula biotonik, rencana penyerangan itu sendiri, melainkan hanya sebuah kunci yang akan mendekripsi data rahasia. Bagi pengirim dan penerima yang berkomunikasi secara aman dengan menggunakan enkripsi konvensional, mereka harus menyetujui sebuah kunci dan menjaga kerahasiaannya diantara mereka berdua. Jika mereka berada dalam lokasi yang secara fisik berbeda, maka mereka harus mempercayai seorang kurir, telepon atau beberapa media komunikasi aman lainnya untuk mencegah pengungkapan kunci rahasia selama transmisi. Siapapun yang mendengar atau menangkap kunci dalam pengiriman kemudian akan dapat membaca, memodifikasi dan memalsukan semua informasi yang terenkripsi atau terotentikasi dengan kunci tersebut. Dari DES sampai Captain Midnight’s Secret Decoder Ring, permasalahan utama dari Enkripsi konvensional adalah pensitribusian kunci, bagaimana anda mengirimkan kunci ke penerima tanpa seseorang yang menangkap atau mengambil kunci tersebut ? Kriptografi Kunci Publik Permasalahan dari pendistribusian kunci dapat diselesaikan dengan public key cryptoghrapy atau kriptografi kunci publik, konsep yang diperkenalkan oleh Whitfield Diffie dan Martin Hellman pada tahun 1975 (Sekarang terdapat keterangan bahwa British Secret Service menciptkannya bebrapa tahun sebelum Diffie dan Hellman, tetapi menjadi rahasia militer dan tidak ada yang menggunakannya) Kriptografi kunci publik amerupakan skema asimetrik yang menggunakan sepasang kunci untuk pengenkripsian sebuah kunci publik, yang mengenkripsi data dan yang berkorespondensi dengan kunci pribadi, atau rahasia rahasia untuk dekripsi. Anda dapat mengumumkan kunci publik anda ke luar sebaliknya merahasiakan kunci pribadi anda.
Oleh : Suyatno Budiharjo (
[email protected])
Page 5
Seseorang dengan sebuah kopi dari kunci publik anda dapat mengenkripsi informasi yang hanya anda yang dapat membacanya. Meskipun seseorang itu belum pernah bertemu dengan Anda. Hal ini secara komputasi tidak mudah dilakukan untuk menemukan kunci pribadi dari kunci publik. Siapapun yang memiliki kunci publik dapat mengenkripsi informasi tetapi tidak dapat mendekripsinya. Hanya seseorang yang mempunyai kunci pribadi yang berkorespondensi yang dapat mendekripsikan informasi.
Gambar 1-3. Metode Enkripsi Kunci Publik Keunggulan utama dari kriptografi kunci publik adalah bahwa ini mengijinkan orang yang tidak memiliki susunan keamanan yang ada dapat melakukan pertukaran pesan secara aman. Kebutuhan untuk pengirim dan penerima untuk berbagi kunci rahasia melalui beberpa kanal aman dapat dihilangkan. Semua komunikasi hanya menggunakan kunci publik dan tidak ada kunci pribadi yang pernah ditransmisikan atau dibagi. Beberapa contoh dari kriptosistem kunci publik adalah Elgamal (yakni untuk penemunya, Taher Elgamal), RSA (yaitu untuk penemunya, Ron Rivest, Adi Shamir, dan Leonard Adleman), Diffie-Hellman (yaitu untuk penemunya, Whietfield Diffie dan Martin Hellman), dan DSA (Digital Signature Algorithm (ditemukan oleh David Kravitz). Karena kriptografi konvensional hanya mempunyai pengertian yang tersedia untuk menyampaikan informasi sekali, biaya dari kanal yang aman dan distribusi kunci dan yang mengatur penggunaannya, hanya mereka yang dapat mengadakannya, seperti pemerintah dan bank-bank besar ( atau anak kecil dengan cincin pendekode rahasia ). Enkripsi kunci publik adalah revolusi teknologi yang menyediakan kriptografi yang kuat untuk massa dewasa. Ingat kurir dengan borgol terkunci yang membelenggu tangannya ? Enkripsi kunci publik menempatkannya diluar bisnis (ini memungkinkan untuk kebebasannya) Bagaimana PGP Bekerja ? PGP mengkombinasikan beberapa fitur terbaik dari metode kriptografi konvensional dan public key. PGP merupakan kriptosistem hibrid. Ketika pengguna mengenkripsi plaintext dengan PGP, PGP pertama kali akan
Oleh : Suyatno Budiharjo (
[email protected])
Page 6
mengkompresi plaintext. Kompresi data menghemat waktu transmisi modem dan space memori dan yang lebih penting lagi adalah untuk keamanan kriptografi. Kebanyakan dari teknik cryptanalys mengeksploitasi pola yang ditemukan dalam plaintext untuk memecahkan cipher. Kompresi akan mereduksi pola di dalam plaintext kemudian diperbaiki ketahanannya terhadap cryptanalys. (File yang terlalu pendek untuk dikompresi atau yang tidak terkompresi tidak akan dikompresi). Kemudian PGP membuat session key, yang merupakan sebuah kunci rahasia yang hanya sekali pakai. Kunci ini dibangkitkan secara random dari perpindahan acak mouse dan tekanan keyboard untuk mengetikkan sesuatu. Kunci sesi ini bekerja dengan sangat aman, dengan algoritma enkripsi konvensional yang cepat untuk mengenkripsi plaintext, yang menghasilkan ciphertext. Sekali data terenkripsi, kunci sesi kemudian dienkripsi ke kunci publik penerima. Kunci sesi terenkripsi kunci publik ini ditransmisikan sepanjang ciphertext ke penerima.
Gambar 1-4. Metode Enkripsi dengan PGP Dekripsi bekerja dalam bentuk kebalikannya. Penerima kopi dari PGP menggunakan kunci pribadinya untuk mengembalikan kunci sesi sementara, yang kemudian PGP menggunakannya untuk mendekripsi ciphertext terenkripsi secara konvensional.
Gambar 1-5. Bagaimana Dekripsi dengan PGP bekerja Kombinasi dari dua metode enkripsi menggabungkan kelebihan dari enkripsi kunci
Oleh : Suyatno Budiharjo (
[email protected])
Page 7
publik dengan kecepatan dari enkripsi konvensional. Enkripsi konvensional kira-kira 1000 kali lebih cepat dibandingkan enkripsi kunci publik. Enkripsi Kunci publik dengan tujuan menyediakan solusi dari isu pendistribusian kunci dan transmisi data. Digunakan bersama, performansi dan pendistribusian kunci diperbaiki tanpa harus mengorbankan keamanannya. KUNCI Sebuah kunci merupakan nilai yang bekerja dengan algoritma kriptografi untuk menghasilkan ciphertext tertentu. Pada dasarnya kunci merupakan bilangan yang benar-benar sangat besar. Ukuran kunci diukur dalam bit, bilangan yang merepresentasikan kunci 1024 bit merupakan benteng yang cukup besar. Dalam kriptografi kunci publik, kunci yang lebih besar membuat ciphertext yang lebih aman. Bagaimanpun, ukuran kunci publik dan ukuran kunci rahasia kriptogrsfi konvensional merupakan sesuatu yang tidak berhubungan. Sebuah kunci 80-bit konvensional ekivalen dengan panjang 1024-bit kunci publik, Kunci 128-bit konvensional sama ekivalen engan 3000-bit kunci publik. Lagi, kunci yang lebih besar, lebih aman, tetapi algoritma yang digunakan untuk setiap tipe dari kriptografi adalah sangat berbeda yang dapat dianalogikan dengan perbandingan antara apel dengan jeruk. Sedangkan kunci publik dan kunci pribadi berhubungan. Ini sangat sulit menurunkan kunci pribadi bila hanya diberikan kunci publik, bagaimanapun penurunan kunci pribadi selalu mungkin jika diberikan daya komputasi dan waktu yang cukup. Hal ini menjadi sangat penting untuk memilih kunci dengan ukuran yang tepat, cukup besar untuk menjadi aman, tetapi cukup kecil untuk diterapkan dengan cukup cepat. Sebagai tambahan, anda perlu mempertimbangkan siapa yang mungkin mencoba untuk membaca file anda, bagaimana menentukan mereka, berapa lama waktu yang mereka punya, dan apa sumber mereka yang mungkin. Kunci yang lebih besar secara teori kriptografi akan aman untuk periode waktu yang lebih panjang. Jika apa yang anda inginkan untuk mengenkripsi perlu untuk disembunyikan dalam beberapa tahun, anda mungkin ingin menggunakan kunci yang sangat besar. Tentu saja, siapa yang tahu berapa lama ini dilakukan untuk mennentukan kunci anda menggunakan sesuatu yang besok mungkin terdapat komputer lebih cepat, lebih efisien? Terdapat satu waktu krtika kunci simetrik 56-bit dipertimbangkan secara ekstrim aman. Kunci disimpan dalam bentuk terenkripsi. PGP menyimpan kunci didalam dua file pada hard disk anda. Satu untuk kunci publik dan satu untuk kunci pribadi. File ini disebut keyring. Seperti anda menggunakan PGP, umumnya anda akan menambahkan kunci publik dari penerima anda pada keyring publik anda. Kunci pribadi anda disimpan pada keyring pribadi anda. Jika anda kehilangan keyring pribadi anda, anda tidak akan dapat mendekripsi informasi yang terenkripsi dengan kunci pada ring tersebut. Tanda Tangan Digital Keunggulan utama dari kriptografi kunci publik adalah bahwa ini menyediakan sebuah metode untuk menerapkan tanda tangan digital (digital signature ). Tanda tangan digital memungkinkan penerima dari informasi untuk membuktikan otentikasi dari keaslian dari informasi, dan juga menguji bahwa informasi adalah lengkap / utuh. Kemudian, tanda tangan kunci publik menyediakan otentikasi dan integritas data. Tanda tangan digital juga menyediakan non-repudiation (tidak dapat menyangkal lagi), yang berarti bahwa ini
Oleh : Suyatno Budiharjo (
[email protected])
Page 8
mencegah pengirim dari pengakuan bahwa dia tidak secara nyata mengirimkan informasi. Fitur ini menyatakan setiap bit sebagai dasar untuk kriptografi adalah pribadi, jika tidak lebih. Tanda tangan digital melayani tujuan yang sama dengan tanda tangan dengan tulisan tangan. Bagaimanapun tanda tangan manual sangat mudah dipalsukan. Tanda tangan digital lebih unggul daripada tulisan tangan manual oleh karena itu hampir tidak mungkin memalsukannya, ditambah ini menegaskan pada isi dari informasi yang sama baiknya dengan untuk mengidentifikasi penanda tangannya. Beberapa orang cenderung menggunakan tanda tangan daripada mereka menggunakan enkripsi. Sebagai contoh, Anda mungkin tidak peduli jika siapapun mengetahui bahwa anda telah mendepositokan $1000 dalam rekening anda, tetapi anda akan menginginkan untuk menyakinkan bahwa teller bank telah mencatatnya dengan benar. Cara dasar dalam tanda tangan digital dapat diilustrasikan dalam gambar 1-6. Secara singkat dari pengenkripsian informasi menggunakan kunci publik orang lain, anda mengenkripsinya dengan kunci pribadi anda. Jika informasi dapat didekripsi dengan kunci publik anda, maka ini harus berasal dari anda.
Gambar 1-6. Tanda tangan digital sederhana Fungsi HASH Sistem yang dideskripsikan diatas mempunyai beberapa permasalahan. Sistem ini lambat, dan hal ini menghasilkan volume data yang cukup besar- sekurang-kurangnya 2 kali ukuran dari informasi awal. Untuk memperbaiki skema diatas adalah penambahan satu jalur fungsi HASH dalam proses. Fungsi HASH satu jalur mengambil masukan panjang variabel- dalam kasus ini, sebuah pesan dengan beberapa panjang, ribuan atau jutaan bit dan menghasilkan keluaran dengan panjang yang tetap, katakanlah 160 bit. Fungsi HASH menjamin bahwa jika informasi diubah dalam beberapa cara- meski hanya satu bit, maka secara keseluruhan nilai keluaran yang berbeda yang dihasilkan. PGP menggunakan sebuah fungsi HASH yang kuat secara kriptografi pada plaintext yang diberitanda pengguna. Ini membangkitkan data dengan panjang tetap yang disebut
Oleh : Suyatno Budiharjo (
[email protected])
Page 9
dengan message digest. (Lagi, beberapa perubahan pada informasi menghasilkan digest yang berbeda total). Kemudian PGP menggunakan digest dan kunci pribadi untuk membuat tanda tangan. PGP mengirimkan tanda tangan dan plaintext bersama-sama.
Gambar 1-7. Tanda tangan digital yang aman
Oleh : Suyatno Budiharjo (
[email protected])
Page 10