Catatan
Tulisan ini dimaksudkan sebagai pengantar bagi Anda yang berminat mendalami bidang
kriptografi, dan tulisan ini bukanlah sebuah referensi lengkap tentang kriptografi. Untuk
mempelajari kriptografi lebih lanjut silakan Anda lihat pada bagian Sumber Informasi Lebih Lanjut
tentang Kriptografi. Bila ada saran ataupun kritik tentang tulisan ini, silakan layangkan ke email
penulis.
Pendahuluan
Kemajuan di bidang telekomunikasi dan komputer telah memungkinkan seseorang untuk
melakukan transaksi bisnis secara cashless, selain itu ia juga dapat mengirimkan informasi
kepada temannya secara on-line.
Kegiatan-kegiatan tersebut tentu saja akan menimbulkan resiko bilamana informasi yang sensitif
dan berharga tersebut diakses oleh orang-orang yang tidak berhak (unauthorized persons).
Misalnya, informasi mengenai nomor kartu kredit anda, bila informasi ini jatuh kepada orangorang yang jahat maka anda harus bersiap-siap terhadap melonjaknya tagihan kartu kredit anda.
Sebelum tahun 1970-an, teknologi kriptografi digunakan terbatas hanya untuk tujuan militer dan
diplomatik. Akan tetapi kemudian bidang bisnis dan perorangan mulai menyadari pentingnya
melindungi informasi berharga.
Pengertian Dasar
Suatu pesan yang tidak disandikan disebut sebagai plaintext ataupun dapat disebut juga sebagai
cleartext. Proses yang dilakukan untuk mengubah plaintext ke dalam ciphertext disebut
encryption atau encipherment. Sedangkan proses untuk mengubah ciphertext kembali ke
plaintext disebut decryption atau decipherment. Secara sederhana istilah-istilah di atas dapat
digambarkan sebagai berikut :
Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh
cryptographer. Sedang, cryptanalysis adalah suatu ilmu dan seni membuka (breaking) ciphertext
dan orang yang melakukannya disebut cryptanalyst.
Cryptographic system atau cryptosystem adalah suatu fasilitas untuk mengkonversikan plaintext
ke ciphertext dan sebaliknya. Dalam sistem ini, seperangkat parameter yang menentukan
Desep_priandes_1206541
transformasi pencipheran tertentu disebut suatu set kunci. Proses enkripsi dan dekripsi diatur
oleh satu atau beberapa kunci kriptografi. Secara umum, kunci-kunci yang digunakan untuk
proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung pada sistem yang
digunakan.
Secara umum operasi enkripsi dan dekripsi dapat diterangkan secara matematis sebagai berikut
:
EK (M) = C
DK (C) = M
(Proses Enkripsi)
(Proses Dekripsi)
Pada saat proses enkripsi kita menyandikan pesan M dengan suatu kunci K lalu dihasilkan pesan
C. Sedangkan pada proses dekripsi, pesan C tersebut diuraikan dengan menggunakan kunci K
sehingga dihasilkan pesan M yang sama seperti pesan sebelumnya.
Dengan demikian keamanan suatu pesan tergantung pada kunci ataupun kunci-kunci yang
digunakan, dan tidak tergantung pada algoritma yang digunakan. Sehingga algoritma-algoritma
yang digunakan tersebut dapat dipublikasikan dan dianalisis, serta produk-produk yang
menggunakan algoritma tersebut dapat diproduksi massal. Tidaklah menjadi masalah apabila
seseorang mengetahui algoritma yang kita gunakan. Selama ia tidak mengetahui kunci yang
dipakai, ia tetap tidak dapat membaca pesan.
Cryptographic system (cryptosystem)
Suatu cryptosystem terdiri dari sebuah algoritma, seluruh kemungkinan plaintext, ciphertext dan
kunci-kunci. Secara umum cryptosystem dapat digolongkan menjadi dua buah, yaitu :
1. Symmetric Cryptosystem
Dalam symmetric cryptosystem ini, kunci yang digunakan untuk proses enkripsi dan dekripsi
pada prinsipnya identik, tetapi satu buah kunci dapat pula diturunkan dari kunci yang lainnya.
Kunci-kunci ini harus dirahasiakan. Oleh karena itulah sistem ini sering disebut sebagai secretkey ciphersystem. Jumlah kunci yang dibutuhkan umumnya adalah :
nC2
= n . (n-1)
-------2
dengan n menyatakan banyaknya pengguna.
Contoh dari sistem ini adalah Data Encryption Standard (DES), Blowfish, IDEA.
2. Assymmetric Cryptosystem
Dalam assymmetric cryptosystem ini digunakan dua buah kunci. Satu kunci yang disebut kunci
publik (public key) dapat dipublikasikan, sedang kunci yang lain yang disebut kunci privat (private
key) harus dirahasiakan. Proses menggunakan sistem ini dapat diterangkan secara sederhana
sebagai berikut : bila A ingin mengirimkan pesan kepada B, A dapat menyandikan pesannya
dengan menggunakan kunci publik B, dan bila B ingin membaca surat tersebut, ia perlu
mendekripsikan surat itu dengan kunci privatnya. Dengan demikian kedua belah pihak dapat
menjamin asal surat serta keaslian surat tersebut, karena adanya mekanisme ini. Contoh sistem
ini antara lain RSA Scheme dan Merkle-Hellman Scheme.
Setiap cryptosytem yang baik harus memiliki karakteristik sebagai berikut :
Desep_priandes_1206541
Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan
algoritma yang digunakan.
Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.
Cryptosystem yang baik akan menghasilkan ciphertext yang terlihat acak dalam seluruh
tes statistik yang dilakukan terhadapnya.
Cryptosystem yang baik mampu menahan seluruh serangan yang telah dikenal
sebelumnya
Namun demikian perlu diperhatikan bahwa bila suatu cryptosystem berhasil memenuhi seluruh
karateristik di atas belum tentu ia merupakan sistem yang baik. Banyak cryptosystem lemah yang
terlihat baik pada awalnya. Kadang kala untuk menunjukkan bahwa suatu cryptosystem kuat atau
baik dapat dilakukan dengan menggunakan pembuktian matematika.
Hingga saat ini masih banyak orang yang menggunakan cryptosystem yang relatif mudah dibuka,
alasannya adalah mereka tidak mengetahui sistem lain yang lebih baik serta kadang kala
terdapat motivasi yang kurang untuk menginvestasikan seluruh usaha yang diperlukan untuk
membuka suatu sistem.
Cryptographic Protokol
Pengertian
Suatu protokol adalah serangkaian langkah yang melibatkan dua pihak atau lebih dan dirancang
untuk menyelesaikan suatu tugas. Dari definisi ini dapat diambil beberapa arti sebagai berikut :
Selain itu, suatu protokol pun memiliki karakteristik yang lain, yaitu :
setiap orang yang terlibat dalam protokol harus mengetahui terlebih dahulu mengenai
protokol dan seluruh langkah yang akan dilaksanakan;
setiap orang yang terlibat dalam protokol harus menyetujui untuk mengikutinya;
protokol tidak boleh menimbulkan kerancuan;
protokol harus lengkap;
Cryptographic protocol adalah suatu protokol yang menggunakan kriptografi. Protokol ini
melibatkan sejumlah algoritma kriptografi, namun secara umum tujuan protokol lebih dari sekedar
kerahasiaan. Pihak-pihak yang berpartisipasi mungkin saja ingin membagi sebagian rahasianya
untuk menghitung sebuah nilai, menghasilkan urutan random, atau pun menandatangani kontrak
secara bersamaan. Penggunaan kriptografi dalam sebuah protokol terutama ditujukan untuk
mencegah atau pun mendeteksi adanya eavesdropping dan cheating.
Fungsi Protokol
Dalam kehidupan kita sehari-hari terdapat banyak sekali protokol tidak resmi, misalnya saja
dalam permainan kartu, pemungutan suara dalam pemilihan umum. Akan tetapi tidak ada
seorang pun yang memikirkan mengenai protokol-protokol ini, protokol-protokol ini terus
berkembang, semua orang mengetahui bagaimana menggunakannya.
Desep_priandes_1206541
Saat ini, semakin banyak interaksi antar manusia dilakukan melalui jaringan komputer. Komputer
ini tentu saja memerlukan suatu protokol formal agar dapat melakukan hal yang biasa dilakukan
manusia tanpa berpikir. Bila kita berpindah dari satu daerah ke daerah lain dan mengetahui
bahwa kartu pemilihan suaranya berbeda dengan yang biasa kita gunakan, kita dapat
beradaptasi dengan mudah. Akan tetapi kemampuan ini belum dimiliki oleh komputer, sehingga
diperlukan suatu protokol.
Protokol digunakan untuk mengabtraksikan proses penyelesaian suatu tugas dari mekanisme
yang digunakan. Protokol komunikasi adalah sama meskipun diimplementasikan pada PC atau
VAX. Bila kita yakin bahwa kita memiliki protokol yang baik, kita dapat mengimplementasikannya
dalam segala benda mulai dari telepon hingga pemanggang roti cerdas.
Penyerangan terhadap protokol
Penyerangan cryptographic dapat ditujukan pada beberapa hal berikut :
Seseorang dapat mencoba berbagai cara untuk menyerang suatu protokol. Mereka yang tidak
terlibat dalam protokol dapat menyadap sebagian atau seluruh protokol. Tindakan ini disebut
penyerangan pasif, karena si penyerang tidak mempengaruhi atau mengubah protokol, ia hanya
mengamati protokol dan berusaha untuk memperoleh informasi.
Selain itu, seorang penyerang dapat berusaha untuk mengubah protokol demi keuntungannya
sendiri. Ia dapat mengirimkan pesan dalam protokol, menghapus pesan, atau bahkan mengubah
informasi yang ada di dalam suatu komputer. Tindakan-tindakan ini disebut sebagai penyerangan
aktif, karena ia membutuhkan suatu campur tangan aktif.
Seorang penyerang tidaklah hanya berasal dari lingkungan luar protokol, namun ia mungkin juga
berasal dari dalam protokol itu sendiri, ia dapat merupakan salah satu pihak yang terlibat dalam
protokol. Tipe penyerang semacam ini disebut sebagai cheater. Passive cheater mengikuti
protokol, tetapi berusaha memperoleh informasi lebih banyak daripada yang diperbolehkan
protokol bagi dirinya. Active cheater mengubah protokol dalam usahanya untuk berbuat curang.
Usaha untuk menjaga keamanan protokol akan semakin sulit apabila pihak-pihak yang terlibat
umumnya merupakan active cheater, oleh karena itu suatu protokol yang baik harus mampu atau
pun harus aman terhadap kemungkinan passive cheating.
Berbagai macam basic cryptanalytic attacks
Tujuan cryptanalytic attack adalah untuk mengetahui beberapa plaintext yang sesuai dengan
ciphertext yang ada dan berusaha menentukan kunci yang memetakan satu dengan yang
lainnya. Plaintext ini dapat diketahui karena ia merupakan standar atau karena pendugaan. Jika
suatu teks diduga berada di dalam suatu pesan, posisinya mungkin tidak diketahui, tetapi suatu
pesan lazimnya cukup pendek sehingga memungkinkan cryptanalyst menduga plaintext yang
diketahui dalam setiap posisi yang mungkin dan melakukan penyerangan pada setiap kasus
secara paralel.
Suatu algoritma enkripsi yang kuat tidak hanya mampu bertahan terhadap serangan plaintext
yang dikenal tetapi juga mampu bertahan terhadap adaptive chosen plaintext. Dalam
Desep_priandes_1206541
penyerangan ini, cryptanalyst berkesempatan memilih plaintext yang digunakan dan dapat
melakukannya secara berulang kali, memilih plaintext untuk tahap N+1 setelah menganalisis
hasil tahap N.
Yang dimaksud cryptanalytic attacks adalah usaha-usaha yang dilakukan seseorang untuk
memperoleh informasi ataupun data yang telah dienkripsi. Secara ringkas terdapat tujuh macam
basic cryptanalytic attacks berdasarkan tingkat kesulitannya bagi penyerang, dimulai dari yang
paling sulit adalah :
Desep_priandes_1206541
lain, suatu serangan akan merupakan trivial bila ia tidak benar-benar menggunakan enkripsi
EK(P1),,EK(Pn).
Dengan merumuskan penyerangan secara matematis, kita dapat secara tepat memformulasikan
dan bahkan membuktikan pernyataan bahwa suatu cryptosystem itu kuat. Kita katakan, sebagai
contoh, bahwa suatu cryptosystem adalah aman terhadap seluruh penyerangan pasif jika
sembarang penyerangan nontrivial terhadapnya tidak praktis. Jika kita dapat membuktikan
pernyataan ini maka kita akan memiliki keyakinan bahwa cryptosystem kita akan bertahan
terhadap seluruh teknik cryptanalytic pasif. Jika kita dapat mereduksi pernyataan ini hingga pada
beberapa masalah yang tidak terpecahkan maka kita masih tetap memiliki keyakinan bahwa
cryptosystem kita tidak mudah dibuka.
Ciphertext-only attack
Dengan menggunakan notasi di atas, suatu ciphertext-only attack adalah suatu penyerangan
dengan F adalah konstanta. Diberikan hanya beberapa informasi G(EK(P1),..EK(Pn)) tentang n
ciphertext, penyerangan harus memiliki kesempatan menghasilkan beberapa informasi
H(P1,,Pn) tentang plaintext. Penyerangan akan merupakan suatu trivial bila ia hanya
menghasilkan H(P1,,Pn) ketika diberikan G(C1,,Cn) untuk C1,,Cn acak.
Sebagai contoh, misalkan G ( C ) = C dan misalkan H(P) adalah bit pertama P. Kita dapat secara
mudah menulis suatu penyerangan, pendugaan, yang menduga bahwa H(P) adalah 1.
Penyerangan ini adalah trivial karena tidak menggunakan ciphertext, probabilitas
keberhasilannya adalah 50 %. Di lain pihak, terdapat penyerangan atas RSA yang memproduksi
satu bit informasi tentang P, dengan probabilitas keberhasilan 100 %, menggunakan C. Jika
diberikan suatu C acak maka tingkat kesuksesan turun menjadi 50%. Inilah yang disebut
penyerangan nontrivial.
Known-plaintext attack
Penyerangan known-plaintext klasik memiliki F(P1,P2) = P1, G(C1,C2) = (C1,C2), dan H(P1,P2)
tergantung hanya pada P2. Dengan kata lain, bila diberikan dua ciphertext C1 dan C2 dan satu
dekripsi P1, penyerangan known-plaintext seharusnya menghasilkan informasi tentang dekripsi
P2.
Brute-force attack
Umpamakan penyerangan known-plaintext berikut. Kita diberikan sejumlah plaintext P1,,Pn-1
dan ciphertext C1,,Cn-1. Kita juga diberikan sebuah ciphertext Cn. Kita jalankan seluruh kunci K.
Bila kita temukan K sedemikian sehingga EK(P1) = Ci untuk setiap I<n, kita cetak DK(Cn).
Jika n cukup besar sehingga hanya satu kunci yang bekerja, penyerangan ini akan sukses untuk
seluruh input yang valid pada setiap waktu, sementara ia akan menghasilkan hasil yang tepat
hanya sekali untuk input acak. Penyerangan ini adalah nontrivial, masalahnya ia sangat lambat
bila terdapat banyak kemungkinan kunci.
Desep_priandes_1206541
Desep_priandes_1206541
Key-encripting Key
Kunci kriptografi yang digunakan untuk mengenkripsi kunci lain, tetapi biasanya tidak digunakan untu...
Cipher
Algoritma kriptografi (cryptographic algorithm) berupa persamaan matematik yang digunakan dalam
pros...
RSA
Merupakan algoritma kriptografi untuk kunci public (public key cryptography) yang umum digunakan
saa...
Cryptographers
Para pelaku atau praktisi kriptografi.
KRIPTOGRAFI
Sebelum melangkah lebih jauh untuk melakukan analisis terhadap beberapa SPI yang
ada, diperlukan perangkat-perangkat untuk membantu proses analisis tersebut. Salah satu
dasar yang penting adalah penggunaan kriptografi sebagai landasan-landasan teoritis
bagaimana sistem-sistem perdagangan di Internet tersebut melakukan pengamanan.
Kriptografi adalah ilmu yang mempelajari bagaimana membuat suatu pesan yang dikirim
pengirim dapat disampaikan kepada penerima dengan aman [Schn 96]. Kriptografi dapat
memenuhi kebutuhan umum suatu transaksi:
1. Kerahasiaan (confidentiality) dijamin dengan melakukan enkripsi (penyandian).
2. Keutuhan (integrity) atas data-data pembayaran dilakukan dengan fungsi hash
satu arah.
3. Jaminan atas identitas dan keabsahan (authenticity) pihak-pihak yang melakukan
transaksi dilakukan dengan menggunakan password atau sertifikat digital.
Sedangkan keotentikan data transaksi dapat dilakukan dengan tanda tangan
digital.
4. Transaksi dapat dijadikan barang bukti yang tidak bisa disangkal (nonrepudiation) dengan memanfaatkan tanda tangan digital dan sertifikat digital.
Pembakuan penulisan pada kriptografi dapat ditulis dalam bahasa matematika. Fungsifungsi yang mendasar dalam kriptografi adalah enkripsi dan dekripsi. Enkripsi adalah
proses mengubah suatu pesan asli (plaintext) menjadi suatu pesan dalam bahasa sandi
(ciphertext).
C = E (M)
dimana
M = pesan asli
E = proses enkripsi
C = pesan dalam bahasa sandi (untuk ringkasnya disebut sandi)
Desep_priandes_1206541
Sedangkan dekripsi adalah proses mengubah pesan dalam suatu bahasa sandi menjadi
pesan asli kembali.
M = D (C)
D = proses dekripsi
Umumnya, selain menggunakan fungsi tertentu dalam melakukan enkripsi dan dekripsi,
seringkali fungsi itu diberi parameter tambahan yang disebut dengan istilah kunci.
Untuk memudahkan penggambaran suatu skenario komunikasi dalam pembahasan
selanjutnya, maka dipergunakan nama-nama orang yang relevan dengan peran yang
dilakukannya dalam komunikasi itu.
Kode & nama
Penjelasan
A: Anto
Pihak pertama
B: Badu
Pihak kedua
C: Chandra
Pihak ketiga
E: Edi
M: Maman
T: Tari, Tata,
Tania
Bab ini akan menguraikan mengenai beberapa jenis serangan, jenis-jenis kunci
kriptografi, berbagai jenis perangkat dan protokol kriptografi, serta masalah panjang
kunci kriptografi.
Jenis Serangan
Selain ada pihak yang ingin menjaga agar pesan tetap aman, ada juga ternyata pihakpihak yang ingin mengetahui pesan rahasia tersebut secara tidak sah. Bahkan ada pihakpihak yang ingin agar dapat mengubah isi pesan tersebut. Ilmu untuk mendapatkan pesan
yang asli dari pesan yang telah disandikan tanpa memiliki kunci untuk membuka pesan
Desep_priandes_1206541
rahasia tersebut disebut kriptoanalisis. Sedangkan usaha untuk membongkar suatu pesan
sandi tanpa mendapatkan kunci dengan cara yang sah dikenal dengan istilah serangan
(attack).
Di bawah ini dijelaskan beberapa macam penyerangan terhadap pesan yang sudah
dienkripsi:
1. Ciphertext only attack, penyerang hanya mendapatkan pesan yang sudah
tersandikan saja.
2. Known plaintext attack, dimana penyerang selain mendapatkan sandi, juga
mendapatkan pesan asli. Terkadang disebut pula clear-text attack.
3. Choosen plaintext attack, sama dengan known plaintext attack, namun penyerang
bahkan dapat memilih penggalan mana dari pesan asli yang akan disandikan.
Berdasarkan bagaimana cara dan posisi seseorang mendapatkan pesan-pesan dalam
saluran komunikasi, penyerangan dapat dikategorikan menjadi:
1. Sniffing: secara harafiah berarti mengendus, tentunya dalam hal ini yang diendus
adalah pesan (baik yang belum ataupun sudah dienkripsi) dalam suatu saluran
komunikasi. Hal ini umum terjadi pada saluran publik yang tidak aman. Sang
pengendus dapat merekam pembicaraan yang terjadi.
2. Replay attack [DHMM 96]: Jika seseorang bisa merekam pesan-pesan handshake
(persiapan komunikasi), ia mungkin dapat mengulang pesan-pesan yang telah
direkamnya untuk menipu salah satu pihak.
3. Spoofing [DHMM 96]: Penyerang misalnya Maman bisa menyamar menjadi
Anto. Semua orang dibuat percaya bahwa Maman adalah Anto. Penyerang
berusaha meyakinkan pihak-pihak lain bahwa tak ada salah dengan komunikasi
yang dilakukan, padahal komunikasi itu dilakukan dengan sang
penipu/penyerang. Contohnya jika orang memasukkan PIN ke dalam mesin ATM
palsu yang benar-benar dibuat seperti ATM asli tentu sang penipu bisa
mendapatkan PIN-nya dan copy pita magentik kartu ATM milik sang nasabah.
Pihak bank tidak tahu bahwa telah terjadi kejahatan.
4. Man-in-the-middle [Schn 96]: Jika spoofing terkadang hanya menipu satu pihak,
maka dalam skenario ini, saat Anto hendak berkomunikasi dengan Badu, Maman
di mata Anto seolah-olah adalah Badu, dan Maman dapat pula menipu Badu
sehingga Maman seolah-olah adalah Anto. Maman dapat berkuasa penuh atas
jalur komunikas ini, dan bisa membuat berita fitnah.
Kabel koaksial yang sering dipergunakan pada jaringan sangat rentan terhadap serangan
vampire tap [Tane 89], yakni perangkat keras sederhana yang bisa menembus bagian
dalam kabel koaksial sehingga dapat mengambil data yang mengalir tanpa perlu
memutuskan komunikasi data yang sedang berjalan. Seseorang dengan vampire tap dan
komputer jinjing dapat melakukan serangan pada bagian apa saja dari kabel koaksial.
Desep_priandes_1206541
Penyerang juga bisa mendapatkan kunci dengan cara yang lebih tradisional, yakni dengan
melakukan penyiksaan, pemerasan, ancaman, atau bisa juga dengan menyogok seseorang
yang memiliki kunci itu. Ini adalah cara yang paling ampuh untuk mendapat kunci.
Kunci Simetris
Ini adalah jenis kriptografi yang paling umum dipergunakan. Kunci untuk membuat
pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu.
Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis. Siapapun
yang memiliki kunci tersebut termasuk pihak-pihak yang tidak diinginkan dapat
membuat dan membongkar rahasia ciphertext. Problem yang paling jelas disini terkadang
bukanlah masalah pengiriman ciphertext-nya, melainkan masalah bagaimana
menyampaikan kunci simetris tersebut kepada pihak yang diinginkan. Contoh algoritma
kunci simetris yang terkenal adalah DES (Data Encryption Standard) dan RC-4.
Kunci Asimetris
Pada pertengahan tahun 70-an Whitfield Diffie dan Martin Hellman menemukan teknik
enkripsi asimetris yang merevolusi dunia kriptografi. Kunci asimetris adalah pasangan
kunci-kunci kriptografi yang salah satunya dipergunakan untuk proses enkripsi dan yang
satu lagi untuk dekripsi. Semua orang yang mendapatkan kunci publik dapat
menggunakannya untuk mengenkripsikan suatu pesan, sedangkan hanya satu orang saja
yang memiliki rahasia tertentu dalam hal ini kunci privat untuk melakukan
pembongkaran terhadap sandi yang dikirim untuknya.
Dengan cara seperti ini, jika Anto mengirim pesan untuk Badu, Anto dapat merasa yakin
bahwa pesan tersebut hanya dapat dibaca oleh Badu, karena hanya Badu yang bisa
melakukan dekripsi dengan kunci privatnya. Tentunya Anto harus memiliki kunci publik
Badu untuk melakukan enkripsi. Anto bisa mendapatkannya dari Badu, ataupun dari
pihak ketiga seperti Tari.
Desep_priandes_1206541
Teknik enkripsi asimetris ini jauh lebih lambat ketimbang enkripsi dengan kunci simetris.
Oleh karena itu, biasanya bukanlah pesan itu sendiri yang disandikan dengan kunci
asimetris, namun hanya kunci simetrislah yang disandikan dengan kunci asimetris.
Sedangkan pesannya dikirim setelah disandikan dengan kunci simetris tadi. Contoh
algoritma terkenal yang menggunakan kunci asimetris adalah RSA (merupakan singkatan
penemunya yakni Rivest, Shamir dan Adleman).
Fungsi Hash Satu Arah
Kini akan dibahas mengenai keutuhan pesan saat dikirimkan. Bagaimana jika Anto
mengirimkan surat pembayaran kepada Badu sebesar 1 juta rupiah, namun di tengah jalan
Maman (yang ternyata berhasil membobol sandi entah dengan cara apa) membubuhkan
angka 0 lagi dibelakangnya sehingga menjadi 10 juta rupiah? Di mata Tari, pesan
tersebut harus utuh, tidak diubah-ubah oleh siapapun, bahkan bukan hanya oleh Maman,
namun juga termasuk oleh Anto, Badu dan gangguan pada transmisi pesan (noise). Hal
ini dapat dilakukan dengan fungsi hash satu arah (one-way hash function), yang
terkadang disebut sidik jari (fingerprint), hash, message integrity check, atau
manipulation detection code.
Saat Anto hendak mengirimkan pesannya, dia harus membuat sidik jari dari pesan yang
akan dikirim untuk Badu. Pesan (yang besarnya dapat bervariasi) yang akan di-hash
disebut pre-image, sedangkan outputnya yang memiliki ukurannya tetap, disebut hashvalue (nilai hash). Kemudian, melalui saluran komunikasi yang aman, dia mengirimkan
sidik jarinya kepada Badu. Setelah Badu menerima pesan si Anto tidak peduli lewat
saluran komunikasi yang mana Badu kemudian juga membuat sidik jari dari pesan yang
telah diterimanya dari Anto. Kemudian Badu membandingkan sidik jari yang dibuatnya
dengan sidik jari yang diterimanya dari Anto. Jika kedua sidik jari itu identik, maka Badu
dapat yakin bahwa pesan itu utuh tidak diubah-ubah sejak dibuatkan sidik jari yang
diterima Badu. Jika pesan pembayaran 1 juta rupiah itu diubah menjadi 10 juta rupiah,
tentunya akan menghasilkan nilai hash yang berbeda.
Fungsi hash untuk membuat sidik jari tersebut dapat diketahui oleh siapapun, tak
terkecuali, sehingga siapapun dapat memeriksa keutuhan dokumen atau pesan tertentu.
Tak ada algoritma rahasia dan umumnya tak ada pula kunci rahasia.
Jaminan dari keamanan sidik jari berangkat dari kenyataan bahwa hampir tidak ada dua
pre-image yang memiliki hash-value yang sama. Inilah yang disebut dengan sifat
Desep_priandes_1206541
collision free dari suatu fungsi hash yang baik. Selain itu, sangat sulit untuk membuat
suatu pre-image jika hanya diketahui hash-valuenya saja.
Contoh algoritma fungsi hash satu arah adalah MD-5 dan SHA. Message authentication
code (MAC) adalah salah satu variasi dari fungsi hash satu arah, hanya saja selain preimage, sebuah kunci rahasia juga menjadi input bagi fungsi MAC.
Tanda Tangan Digital
Badu memang dapat merasa yakin bahwa sidik jari yang datang bersama pesan yang
diterimanya memang berkorelasi. Namun bagaimana Badu dapat merasa yakin bahwa
pesan itu berasal dari Anto? Bisa saja saat dikirimkan oleh Anto melalui saluran
komunikasi yang tidak aman, pesan tersebut diambil oleh Maman. Maman kemudian
mengganti isi pesan tadi, dan membuat lagi sidik jari dari pesan yang baru diubahnya itu.
Lalu, Maman mengirimkan lagi pesan beserta sidik jarinya itu kepada Badu, seolah-oleh
dari Anto.
Untuk mencegah pemalsuan, Anto membubuhkan tanda tangannya pada pesan tersebut.
Dalam dunia elektronik, Anto membubuhkan tanda tangan digitalnya pada pesan yang
akan dikirimkan untuk Badu sehingga Badu dapat merasa yakin bahwa pesan itu memang
dikirim oleh Anto.
Sifat yang diinginkan dari tanda tangan digital diantaranya adalah:
1. Tanda tangan itu asli (otentik), tidak mudah ditulis/ditiru oleh orang lain. Pesan
dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga
penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah
menandatanganinya.
2. Tanda tangan itu hanya sah untuk dokumen (pesan) itu saja. Tanda tangan itu
tidak bisa dipindahkan dari suatu dokumen ke dokumen lainnya. Ini juga berarti
bahwa jika dokumen itu diubah, maka tanda tangan digital dari pesan tersebut
tidak lagi sah.
3. Tanda tangan itu dapat diperiksa dengan mudah.
4. Tanda tangan itu dapat diperiksa oleh pihak-pihak yang belum pernah bertemu
dengan penandatangan.
5. Tanda tangan itu juga sah untuk kopi dari dokumen yang sama persis.
Meskipun ada banyak skenario, ada baiknya kita perhatikan salah satu skenario yang
cukup umum dalam penggunaan tanda tangan digital. Tanda tangan digital
memanfaatkan fungsi hash satu arah untuk menjamin bahwa tanda tangan itu hanya
berlaku untuk dokumen yang bersangkutan saja. Bukan dokumen tersebut secara
keseluruhan yang ditandatangani, namun biasanya yang ditandatangani adalah sidik jari
dari dokumen itu beserta timestamp-nya dengan menggunakan kunci privat. Timestamp
berguna untuk menentukan waktu pengesahan dokumen.
Desep_priandes_1206541
Keabsahan tanda tangan digital itu dapat diperiksa oleh Badu. Pertama-tama Badu
membuat lagi sidik jari dari pesan yang diterimanya. Lalu Badu mendekripsi tanda
tangan digital Anto untuk mendapatkan sidik jari yang asli. Badu lantas membandingkan
kedua sidik jari tersebut. Jka kedua sidik jari tersebut sama, maka dapat diyakini bahwa
pesan tersebut ditandatangani oleh Anto.
Desep_priandes_1206541
Anto dan Badu harus sama-sama yakin bahwa kunci-kunci publik yang mereka dapatkan
benar-benar otentik. Mereka bisa mendapatkannya dari sesorang yang dipercaya, Tari
misalnya. Setiap anggota jaringan diasumsikan telah memiliki saluran komunikasi pribadi
yang aman dengan Tari. Saluran inilah yang dimanfaatkan untuk mengirim kunci publik
Badu ke Anto (dan sebaliknya). Tari menjadi penjamin keabsahan kunci jika Anto dan
Badu sebelumnya tidak pernah bertukar kunci publik. Skenario ini tetap membutuhkan
kunci-kunci kriptografi lagi (baik itu kunci simetris ataupun kunci asimetris) untuk
pengamanan saluran komunikasi antara Tari dengan Anto atau Badu.
Sertifikat Digital
Masalah di atas dapat dipecahkan dengan penggunaan sertifikat digital. Tari tidak lagi
setiap saat menjadi penukar kunci, namun Tari cukup menandatangani kunci publik milik
setiap orang di jaringan tersebut. Sebenarnya dalam sertifikat tersebut tak hanya berisi
kunci publik, namun dapat berisi pula informasi penting lainnya mengenai jati diri
pemilik kunci publik, seperti misalnya nama, alamat, pekerjaan, jabatan, perusahaan dan
bahkan hash dari suatu informasi rahasia. Semua orang mempercayai otoritas Tari dalam
memberikan tanda tangan, sehingga orang-orang dalam jaringan itu merasa aman
menggunakan kunci publik yang telah ditandatangani Tari.
Jika Maman berhasil mencuri sertifikat digital yang dipertukarkan antara Anto dan Badu,
serta menggantinya dengan sertifikat digital milik dirinya sendiri, maka Anto dan Badu
dapat segera melihat bahwa sertifikat digital yang diterimanya bukan lawan bicara yang
semestinya.
Bagaimana jika Chandra yang berada di luar jaringan Tari hendak berkomunikasi
dengan Anto? Chandra memiliki juga sertifikat, tetapi tidak ditandatangani oleh Tari,
melainkan oleh Tata, seseorang yang dipercaya dalam jaringan tempat Chandra berada.
Tari dan Tata adalah otoritas sertifikat (certificate authority), yaitu pihak-pihak yang
berwenang memberikan sertifikat. Namun Anto tidak mengenal dan tidak mempercayai
Tata. Masalah ini dapat diselesaikan jika ada otoritas sertifikat (OS) yang kedudukannya
lebih tinggi dari Tata dan Tari katakanlah Tania. Tania memberikan pengesahan kepada
Tata dan Tari. Jadi ada hirarki dari sertifikat digital. Jika Tania berada pada kedudukan
Desep_priandes_1206541
hirarki yang paling tinggi, maka Tania disebut otoritas sertifikat utama (root certificate
authority).
Anto mempercayai tanda tangan Tari. Namun karena Tari sendiri keberadaannya
disahkan oleh Tania, tentunya Anto harus mengakui otoritas Tania. Jika Tania
memberikan pengesahan kepada OS lain dibawahnya, seperti Tata, maka dengan merunut
struktur hirarki percabangan OS, Anto dapat memeriksa kebenaran sertifikat digital milik
Chandra yang disahkan oleh Tata.
Serangan terhadap sistem yang memiliki pengamanan dengan sertifikat digital sulit
dilakukan. Jelas Edi tidak mendapatkan apa-apa kalaupun ia memainkan ulang
percakapan antara Anto dan Chandra. Edi membutuhkan kunci privat untuk bisa
membuka pesan-pesan yang dipertukarkan, padahal kunci privat itu tidak ada di dalam
sertifikat digital.
Penukaran sertifikat digital Chandra dengan sertifikat digital Maman akan segera
diketahui, karena sertifikat digital itu pasti berbeda. Sedangkan jika sertifikat yang
dipertukarkan antara Chandra dan Anto tidak diganti, tetapi yang diganti oleh Maman
adalah pesan yang dipertukarkan, maka tentu ada ketidakcocokan dalam pemeriksaan
tanda tangan digital.
Secara teoritis keunggulan dari tanda tangan digital adalah kemampuan untuk melakukan
proses otentikasi secara off-line. Pemeriksa cukup memiliki kunci publik dari OS utama
untuk mengetahui sah-tidaknya kunci publik dari lawan bicaranya. Selain itu untuk
Desep_priandes_1206541
meningkatkan keamanan, kunci publik OS utama bisa saja diintegrasikan dalam program
aplikasi. Namun kenyataannya, karena ada kemungkinan sertifikat digital tersebut hilang,
tercuri atau identitas pemilik sertifikat berubah (perubahan alamat surat elektronik atau
nomor KTP misalnya), maka sertifikat digital perlu diperiksa keabsahannya dengan
melihat daftar sertifikat terbatalkan (certificate revocation list) yang disimpan oleh OS.
Tanda Tangan Pesan Ganda
Andaikan Anto membuat perjanjian jual-beli dengan Badu. Untuk masalah pembayaran,
Anto menginstruksikan bank untuk memberikan kepada Badu sejumlah uang sesuai
dengan perjanjian jual-beli, namun Anto tidak ingin agar bank mengetahui isi perjanjian
jual-beli itu.
1. Anto membuat sidik jari dari SPP (yaitu Hash(SPP)) dan sidik jari SPJB (yakni
Hash(SPJB)).
2. Kemudian, Anto membuat sebuah sidik jari baru dari gabungan kedua sidik jari
sebelumnya ( Hash ( (Hash(SPP) + Hash(SPJB) ) ). Hasil hash tersebut
dinamakan sidik jari pesan ganda SPP & SPJB.
3. Anto menyerahkan surat perjanjian jual belinya kepada Badu. Selain itu Anto juga
menyerahkan surat perintah pembayaran beserta sidik jari pesan ganda SPP &
SPJB kepada bank.
4. Saat Badu ingin mengambil uang di bank, Badu membuat sidik jari dari surat
perjanjian jual beli (SPJB). Badu menyerahkan sidik jari SPJB kepada bank.
5. Bank membuat sidik jari dari surat perintah pembayaran (SPP).
6. Bank menggabungkan sidik jari SPP dengan sidik jari SPJB yang diterimanya
dari Badu, kemudian meng-hash-nya sehingga dihasilkan sidik jari pesan ganda
SPP & SPJB.
7. Jika sidik jari pesan ganda SPP & SPJB yang baru dibuat itu sama dengan yang
telah diberikan oleh Anto, maka bank menjalankan kewajibannya kepada Badu.
Desep_priandes_1206541
Jika sidik jari pesan ganda SPP & SPJB dienkripsi dengan kunci privat Anto, maka akan
menjadi tanda tangan pesan ganda (dual-signature) Anto untuk kedua perjanjian tersebut
[ViMa 97].
Protokol Pembagian Rahasia
Jika Anto memiliki rahasia, ia dapat memberikan separuh rahasia itu kepada Badu dan
separuh rahasia itu kepada Chandra. Badu, yang menerima paruh pertama rahasia Anto,
tidak bisa mengetahui apa isi rahasia itu. Demikian pula dengan Chandra. Namun, jika
Badu dan Chandra menggabungkan potongan-potongan rahasia itu, maka akan tergambar
rahasia Anto. Pembagian rahasia (secret splitting) dapat dilakukan dengan cara:
1. Anto membuat seuntai string acak R yang panjangnya sama dengan pesan rahasia
M.
2. Anto melakukan operasi XOR antara M dengan R, sehingga menghasilkan S.
3. Anto memberikan R kepada Badu dan S kepada Chandra
4. Jika Badu dengan Chandra bertemu, maka mereka sanggup mendapatkan pesan
rahasia M dengan cara melakukan operasi XOR antara S dengan R.
Protokol Komitmen-Bit
Protokol ini bermanfaat kalau misalnya Anto hendak membuat suatu pernyataan atau
komitmen (katakanlah suatu string binari 1000), namun Anto tak ingin agar Badu
Desep_priandes_1206541
mengetahui isi pernyatan tersebut sebelum saatnya. Badu harus merasa yakin bahwa Anto
pada saatnya nanti, benar-benar mengeluarkan isi pernyataan yang sebenarnya saat
melakukan komitmen, dan tidak mengeluarkan pernyataan yang sudah diubah (misalnya
mengubah string tadi menjadi 1001). Ada beberapa jenis protokol komitmen-bit, namun
di bawah ini hanya dijelaskan salah satu diantaranya, yakni dengan fungsi hash satu arah:
1. Anto membuat dua buah string secara acak, yakni R1 dan R2
2. Anto menggabungkan kedua string acak itu ke dalam pernyataannya (b) yang
akan dikomitmenkan menjadi (R1, R2, b)
3. Anto menghitung hash dari gabungan string itu, Hash(R1, R2, b).
4. Anto kemudian mengirimkan hash tersebut beserta R1 kepada Badu. Badu akan
menyimpannya untuk pemeriksaan nanti.
5. Jika sudah tiba saatnya untuk menunjukkan pernyataannya, Anto memberikan
seluruh string (R1, R2, b) kepada Badu.
6. Badu memeriksa fungsi hash dari (R1, R2, b). Jika cocok dengan hash yang
diperiksanya dulu, maka pernyataan Anto tidak diubah.
Tanda Tangan Buta
Badu disodori 100 amplop tertutup oleh Anto. Amplop itu berisi secarik pesan dan kertas
karbon. Badu membuka 99 amplop secara acak. Jika seluruh amplop yang dibuka
ternyata berisi pesan yang mirip, maka Badu dapat merasa bahwa amplop ke-100 juga
berisi pesan yang mirip pula. Namun, jika satu saja dari 99 amplop tadi ada yang isi
berbeda dari yang lain, maka Badu dapat mencurigai bahwa isi amplop ke-100 bisa saja
juga tidak mirip dengan isi ke-98 amplop lainnya.
Dalam kasus dimana ternyata ke-99 amplop yang dibuka secara acak tadi berisi pesan
yang mirip, maka dengan keyakinan yang cukup tinggi Badu berani menandatangani
amplop terakhir yang belum dibuka. Tanda tangan Badu akan menembus amplop dan
kertas karbon, sehingga pesan dalam amplop akan tertandatangani oleh Badu. Badu
kurang lebih tahu apa isi pesan di amplop ke-100 itu. Protokol tanda tangan buta (blind
signature) bekerja sebagai berikut:
1. Anto mengalikan dokumen (yang akan ditandatangani) dengan sebuah faktor
pembuta.
2. Anto mengirimkan dokumen itu kepada Badu
3. Badu menandatangani dokumen itu
4. Badu mengembalikan dokumen yang sudah ditandatangani tadi kepada Anto
5. Anto membaginya dengan faktor pembuta, sehingga mendapatkan dokumen yang
asli sudah tertandatangani oleh Badu.
Protokol Uang Digital
1. Deskripsi Protokol
Desep_priandes_1206541
Berdasarkan beberapa teori penunjang di atas, maka dapatlah dibangun suatu protokol
untuk uang digital. David Chaum, memiliki beberapa paten atas protokol uang digital
yang diciptakannya. Berikut ini dijelaskan salah satu protokol uang digital:
1. Anto menyiapkan n lembar uang dengan nilai tertentu. Setiap uang diberi nomor
seri acak X yang cukup panjang, sehingga kemungkinan 2 bilangan acak sama
kecil sekali. Dalam setiap uang juga ada n (I1, I2, , In) string identifikasi yang
berguna untuk memberikan informasi mengenai pemilik uang, yakni Anto. Anto
kemudian memecah tiap-tiap string identitas diri itu tadi menjadi dua bagian
dengan menggunakan protokol pemecahan rahasia. Lantas Anto melakukan bitkomitmen pada setiap pecahan. Contoh uang yang disiapkan adalah:
Nilai: Rp.1.000,Nomor seri acak: X
String identitas: I1 = (I1L, I1R)
I2 = (I2L, I2R)
....
In = (InL, InR)
2. Anto memasukkan uang itu kedalam yang juga disisipi kertas karbon amplop
(mengalikan uang dengan faktor pembuta), lalu memberikannya kepada bank.
3. Bank akan meminta Anto untuk membuka n - 1 amplop itu secara acak. Bank
memeriksa apakah semua uang tersebut memiliki nilai yang sama. Bank juga
meminta kepada Anto untuk membuktikan kejujuran dirinya saat menuliskan
string identifikasi pada uang itu, dengan cara menggabungkan pasangan-pasangan
string identifikasi.
4. Jika bank merasa bahwa Anto tidak melakukan kecurangan, maka bank akan
menandatangani uang terakhir yang masih di dalam amplop itu dan
menyerahkannya kepada Anto. Tanda tangan bank akan menembus amplop dan
kertas karbon sehingga uang di dalamnya tertandatangani.
5. Anto membuka amplop. Uang siap dipakai.
6. Anto menyerahkan uang kepada Badu. Badu sebagai penerima uang, akan
memeriksa apakah tanda tangan bank pada uang itu absah.
7. Badu akan menyuruh Anto untuk membuka salah satu sisi dari setiap string
identifikasi di setiap uang dengan cara memberikan string pemilih sepanjang nbit. Artinya, jika string pemilih itu b1, b2, , bn maka Anto harus membuka sisi
kiri atau kanan dari Ii, tergantung apakah bi itu 0 atau 1.
8. Setelah itu Badu membawa uang tersebut ke bank. Bank akan memeriksa apakah
nomor seri uang tersebut sudah pernah diterima oleh bank. Kalau belum ada,
maka uang tersebut dinyatakan sah.
9. Jika nomor seri uang itu sudah pernah diterima oleh bank, maka bank akan
memeriksa string identitas yang sudah terbuka pada uang itu dan
membandingkannya dengan string identitas pada uang dengan nomor seri sama
yang pernah diterima bank sebelumnya. Jika ternyata string identitas itu sama,
maka berarti Badu yang menggandakan uang tersebut. Namun jika berbeda, maka
berarti Anto yang menggandakan uang digital tersebut.
Desep_priandes_1206541
2. Pembelanjaan Ganda
Jika Anto menggandakan uang digitalnya lalu menggunakan uang digital yang sama itu
dua kali, bank dapat mendeteksinya meskipun Badu tidak bisa. Badu memang
membuka identitas uang, namun hanya separuh-separuh. Kalau uang digital itu pernah
diberikan Anto kepada Chandra, maka tentu Chandra juga pernah membuka separuh
identitas uang digital tadi secara acak. Nah, kemungkinan bahwa proses pembukaan
identitas oleh Badu dan Chandra itu sama (maksudnya sama urutan pembukaannya,
misalnya kiri-kiri-kanan-kiri-kanan, dan seterusnya) adalah 1 per 2n. Andaikan n cukup
besar, katakanlah 16 saja, maka kemungkinan Badu dan Chandra secara acak membuka
paruhan identitas dengan urutan sama adalah 1 : 65536. Artinya, jika Anto memberikan
uangnya kepada dua orang yang berbeda, kemungkinan besar paruhan identitas yang
dibuka juga berbeda. Jika saat otentikasi uang digital oleh bank ditemukan bahwa ada
uang digital dengan nomor seri sama yang telah diuangkan, dan paruhan identitasnya
berbeda, maka kemungkinan besar Anto menyerahkan uang digital yang sama kepada
dua orang yang berbeda.
Sedangkan apabila Badu menguangkan uang digital yang sama dua kali, karena paruhan
identitas dari uang digital yang diotentikasi itu sama persis dengan yang sudah tercatat,
maka kemungkinan besar uang itu diberikan Anto kepada orang yang sama. Badulah
yang ketahuan menguangkan uang digital yang sama dua kali. Penggunaan uang digital
yang sama dua kali dikenal dengan istilah pembelanjaan ganda (double spending).
Panjang Kunci
Panjang Kunci Simetris
Meskipun ada beberapa cara bagi seorang kriptoanalis untuk memecahkan pesan rahasia,
namun cara yang cukup umum dilakukan adalah dengan melakukan brute-force attack.
Dengan cara ini, seorang penyerang mencoba seluruh kemungkinan kunci yang ada,
sampai menemukan sebuah kunci yang jika dipergunakan untuk mendekripsi pesan yang
disandikan akan memunculkan suatu pesan yang bermakna. Tentunya cara ini bermanfaat
hanya jika sudah diketahui algoritmanya, namun tidak diketahui kuncinya apa.
PIN 5 digit berarti biasanya ada 100.000 kombinasi. Kelihatannya cukup, namun
sebenarnya kurang. Dengan sebuah komputer pribadi saja bisa dengan mudah
diselesaikan. Salah satu pencegahannya adalah dengan pembatasan seberapa banyak
pemakai dapat mencoba memasukkan PIN. Biasanya dibatasi tiga kali.
Berikut ini diberikan contoh dari brute-force attack pada suatu algoritma geser pada
papan ketik QWERTY:
Sandi zsdyrtvstf dicoba dengan kunci 3 menjadi bjkwpqmjql
Sandi zsdyrtvstf dicoba dengan kunci 2 menjadi nkleqwzkwa
Sandi zsdyrtvstf dicoba dengan kunci 1 menjadi mastercard
Desep_priandes_1206541
Ternyata kunci 1 cocok, karena dalam pesan yang disandikan itu mungkin ada transaksi
yang menggunakan kartu kredit mastercard. Dengan menggunakan kunci yang sama,
kemudian penyerang berusaha mendekripsikan bagian-bagian lain dari pesan, mungkin
berusaha mengambil nomor kartu kreditnya. Kunci itu juga dapat dipakai untuk
keperluan lain, misalnya untuk melakukan penipuan (spoofing).
DES, sebuah algoritma simetris, memiliki panjang kunci 56-bit, artinya ada 256
kemungkinan kunci. Sedangkan peraturan di Amerika Serikat yang akan diberlakukan
pada tahun 1998 nanti akan melarang ekspor teknologi enkripsi lebih dari 40-bit.
Sedangkan untuk keperluan dalam negeri Amerika Serikat, kunci 128-bit masih diizinkan
penggunaannya [Star 97].
Tahun 1995, Michael Wierner merancang sebuah chip yang mengkhususkan diri untuk
melakukan brute-force attack pada metoda enkripsi DES [Schn 96]. Chip tersebut dapat
menemukan kunci rahasia dalam waktu rata-rata 3,5 jam dan kunci itu dijamin dapat
ditemukan dalam waktu 7 jam. Harga pembuatannya adalah 1 juta dollar AS. Sesuai
hukum Moore, setiap 18 bulan kemampuan komputer meningkat 2 kali lipat untuk harga
yang sama. Maka, pada tahun 2000, harga chip itu hanya berkisar 100.000 dolar AS.
Harga ini masih dalam jangkauan daya beli beberapa mafia kejahatan terorganisir.
Karena itu, kini disarankan untuk menggunakan DES dengan kunci 112-bit.
Panjang kunci DES
40-bit
0,4 detik
56-bit
7 jam
64-bit
74 jam 40 menit
128-bit
157.129.203.952.300.000 tahun
Protokol keamanan SSL (Secure Socket Layer) pada Netscape Navigator menggunakan
algoritma RC4 40-bit untuk enkripsi simetrisnya. Tahun 1995, Damien Doligez
menjebolnya menggunakan 120 komputer Unix yang terhubung pada jaringan dalam
waktu 8 hari [Star 97]. Dengan cara seperti ini, dijamin bahwa dalam 15 hari kunci itu
pasti ditemukan.
Panjang kunci RC4
40-bit
15 hari
56-bit
2.691,49 tahun
64-bit
689.021,57 tahun
Desep_priandes_1206541
128-bit
12.710.204.652.610.000.000.000.000 tahun
itu. Jika ya, maka untuk apa sang pencuri melakukannya? Untuk apa melakukan
penyerangan dengan biaya 2 milyar rupiah kalau informasi yang dienkripsi hanya
berharga Rp.10.000,- saja?
Kembali ke daftar isi
Kriptografi
Dasar enkripsi cukup sederhana. Pengirim menjalankan fungsi enkripsi pada pesan
plaintext, ciphertext yang dihasilkan kemudian dikirimkan lewat jaringan, dan penerima
menjalankan fungsi dekripsi (decryption) untuk mendapatkan plaintext semula. Proses
enkripsi/dekripsi tergantung pada kunci (key) rahasia yang hanya diketahui oleh pengirim
dan penerima. Ketika kunci dan enkripsi ini digunakan, sulit bagi penyadap untuk
mematahkan ciphertext, sehingga komunikasi data antara pengirim dan penerima aman.
Kriptografi macam ini dirancang untuk menjamin privasi: mencegah informasi menyebar
luas tanpa izin. Akan tetapi, privaci bukan satu-satunya layanan yang disediakan
kriptografi. Kriptografi dapat juga digunakan untuk mendukung authentication
(memverifikasi identitas pengguna) dan integritas (memastikan bahwa pesan belum
diubah).
Kriptografi digunakan untuk mencegah orang yang tidak berhak untuk memasuki
komunikasi, sehingga kerahasiaan data dapat dilindungi. Secara garis besar, kriptografi
digunakan untuk mengirim dan menerima pesan. Kriptografi pada dasarnya berpatokan
pada kunci yang secara selektif telah disebar pada komputer-komputer yang berada
dalam satu jaringan dan digunakan untuk memroses suatu pesan.
Operasional
Keamanan operasional (operations security) adalah tindakan apa pun yang menjadikan
sistem beroperasi secara aman, terkendali, dan terlindung. Yang dimaksud dengan sistem
adalah jaringan, komputer, lingkungan. Suatu sistem dinyatakan operasional apabila
sistem telah dinyatakan berfungsi dan dapat dijalankan dengan durasi yang
berkesinambungan, yaitu dari hari ke hari, 24 jam sehari, 7 hari seminggu.
Manajemen Administratif (Administrative Management) adalah penugasan individu
untuk mengelola fungsi-fungsi keamanan sistem. Beberapa hal yang terkait:
Desep_priandes_1206541
Desep_priandes_1206541
Proses menyandikan plainteks menjadi cipherteks disebut enkripsi. Sedangkan proses mengembalikan
cipherteks menjadi plainteks semula dinamakan dekripsi
e. Sistem kriptografi
Sistem kriptografi merupakan kumpulan yang terdiri dari algoritma kriptografi, semua plainteks dan
cipherteks yang mungkin dan kunci.
f. Penyadap
Penyadap adalah orang yang berusaha mencoba menangkap pesan selama ditransmisikan dengan tujuan
mendapatkan informasi sebanyak-banyaknya mengenai sistem kriptografi yang digunakan untuk
berkomunikasi dengan maksud untuk memecahkan cipherteks.
Sejarah Kriptografi
Sejarah kriptografi sebagian besar merupakan sejarah kriptografi klasik yaitu metode enkripsi yang
menggunakan kertas dan pensil atau mungkin dengan bantuan alat mekanik sederhana. Secara umum
algoritma kriptografi klasik dikelompokkan menjadi dua kategori, yaitu algoritma transposisi (transposition
cipher) dan algoritma substitusi (substitution cipher). Cipher transposisi mengubah susunan huruf-huruf di
dalam pesan, sedangkan cipher substitusi mengganti setiap huruf atau kelompok huruf dengan sebuah huruf
atau kelompok huruf lain.
Kriptografi modern dipicu oleh perkembangan peralatan komputer digital. Tidak seperti kriptografi
klasik yang mengenkripsi karakter per karakter (dengan menggunakan alfabet tradisionil), kriptografi
modern beroperasi pada string biner. Kriptografi modern tidak hanya memberikan aspek keamanan
confidentially, tetapi juga aspek keamanan lain seperti otentikasi, integritas data dan nirpenyangkalan.
Desep_priandes_1206541
KRIPTOGRAFI
1. 1 Latar belakang
Berkat perkembangan teknologi yang begitu pesat memungkinkan manusia dapat
berkomunikasi dan saling bertukar informasi/data secara jarak jauh. Antar kota antar wilayah
antar negara bahkan antar benua bukan merupakan suatu kendala lagi dalam melakukan
komunikasi dan pertukaran data. Seiring dengan itu tuntutan akan sekuritas (keamanan) terhadap
kerahasiaan informasi yang saling dipertukarkan tersebut semakin meningkat. Begitu banyak
pengguna seperti departemen pertahanan, suatu perusahaan atau bahkan individu-individu tidak
ingin informasi yang disampaikannya diketahui oleh orang lain atau kompetitornya atau negara
lain. Oleh karena itu dikembangkanlah cabang ilmu yang mempelajari tentang cara-cara
pengamanan data atau dikenal dengan istilah Kriptografi.
Dalam kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi. Enkripsi adalah
proses dimana informasi/data yang hendak dikirim diubah menjadi bentuk yang hampir tidak
dikenali sebagai informasi awalnya dengan menggunakan algoritma tertentu. Dekripsi adalah
kebalikan dari enkripsi yaitu mengubah kembali bentuk tersamar tersebut menjadi informasi
awal.
Algoritma kriptografi berdasarkan jenis kunci yang digunakan dapat dibedakan menjadi
dua jenis yaitu :
Algoritma simetris
Dimana kunci yang digunakan untuk proses enkripsi dan dekripsi adalah kunci yang sama
Algoritma asimetris
Dimana kunci yang digunakan untuk proses enkripsi dan dekripsi menggunakan kunci yang
berbeda.
Desep_priandes_1206541
Sedangkan berdasarkan besar data yang diolah dalam satu kali proses, maka algoritma
kriptografi dapat dibedakan menjadi dua jenis yaitu :
Camellia merupakan algoritma kriptografi simetris blok cipher. Dalam Camellia proses
enkripsi dan dekripsi dilakukan pada blok data berukuran 128-bit dengan kunci yang dapat
berukuran 128-bit, 192-bit, 256-bit. Algoritma Camellia dikembangkan oleh :
Dimana versi 1.0 pada bulan Juli 2000, versi 2.0 pada September 2001 dan versi 2.1 pada Febuari
2002.
II
Kriptografi
2. 1 Dasar Kriptografi
2. 1. 1 Teori Kriptografi
Kriptografi adalah suatu ilmu yang mempelajari bagaimana cara menjaga agar data atau
pesan tetap aman saat dikirimkan, dari pengirim ke penerima tanpa mengalami gangguan dari pihak
ketiga. Menurut Bruce Scheiner dalam bukunya "Applied Cryptography", kriptografi adalah ilmu
pengetahuan dan seni menjaga message-message agar tetap aman (secure).
Desep_priandes_1206541
Konsep kriptografi sendiri telah lama digunakan oleh manusia misalnya pada peradaban Mesir dan
Romawi walau masih sangat sederhana. Prinsip-prinsip yang mendasari kriptografi yakni:
Confidelity (kerahasiaan) yaitu layanan agar isi pesan yang dikirimkan tetap rahasia dan tidak
diketahui oleh pihak lain (kecuali pihak pengirim, pihak penerima / pihak-pihak memiliki ijin).
Umumnya hal ini dilakukan dengan cara membuat suatu algoritma matematis yang mampu
mengubah data hingga menjadi sulit untuk dibaca dan dipahami.
Data integrity (keutuhan data) yaitu layanan yang mampu mengenali/mendeteksi adanya
manipulasi (penghapusan, pengubahan atau penambahan) data yang tidak sah (oleh pihak lain).
Authentication
(keotentikan)
yaitu
layanan
yang
berhubungan
otentikasi pihak-pihak yang terlibat dalam pengiriman data maupun otentikasi keaslian
data/informasi.
Non-repudiation (anti-penyangkalan) yaitu layanan yang dapat mencegah suatu pihak untuk
menyangkal aksi yang dilakukan sebelumnya (menyangkal bahwa pesan tersebut berasal dirinya).
Berbeda dengan kriptografi klasik yang menitikberatkan kekuatan pada kerahasiaan algoritma
yang digunakan (yang artinya apabila algoritma yang digunakan telah diketahui maka pesan sudah jelas
"bocor" dan dapat diketahui isinya oleh siapa saja yang mengetahui algoritma tersebut), kriptografi
modern lebih menitikberatkan pada kerahasiaan kunci yang digunakan pada algoritma tersebut (oleh
pemakainya) sehingga algoritma tersebut dapat saja disebarkan ke kalangan masyarakat tanpa takut
kehilangan kerahasiaan bagi para pemakainya.
Berikut adalah istilah-istilah yang digunakan dalam bidang kriptografi :
Plaintext (M) adalah pesan yang hendak dikirimkan (berisi data asli).
Ciphertext (C) adalah pesan ter-enkrip (tersandi) yang merupakan hasil enkripsi.
Dekripsi (fungsi D) adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext,
sehingga berupa data awal/asli.
Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan
dekripsi.
Kriptografi itu sendiri terdiri dari dua proses utama yakni proses enkripsi dan proses dekripsi.
Seperti yang telah dijelaskan di atas, proses enkripsi mengubah plaintext menjadi ciphertext (dengan
menggunakan kunci tertentu) sehingga isi informasi pada pesan tersebut sukar dimengerti.
plaintext
ciphertext
enkripsi
Desep_priandes_1206541
plaintext
dekripsi
kunci enkripsi
kunci dekripsi
Dd(C) = M
Sehingga dari dua hubungan diatas berlaku :
Dd(Ee(M)) = M
ciphertext
enkripsi
plaintext
dekripsi
Desep_priandes_1206541
Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu suatu
kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah rahasia bagi pihak yang
tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci rahasia (secret-key
algorithm).
Kelebihan :
Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem real-time
Kelemahan :
Untuk tiap pengiriman pesan dengan pengguna yang berbeda dibutuhkan kunci yang berbeda
juga, sehingga akan terjadi kesulitan dalam manajemen kunci tersebut.
Permasalahan dalam pengiriman kunci itu sendiri yang disebut key distribution problem
2. 1. 2. 2 Algoritma Asimetris
Algoritma asimetris (asymmetric algorithm) adalah suatu algoritma dimana kunci
enkripsi yang digunakan tidak sama dengan kunci dekripsi. Pada algoritma ini menggunakan dua
kunci yakni kunci publik (public key) dan kunci privat (private key). Kunci publik disebarkan
secara umum sedangkan kunci privat disimpan secara rahasia oleh si pengguna. Walau kunci
publik telah diketahui namun akan sangat sukar mengetahui kunci privat yang digunakan.
Plaintext
ciphertext
enkripsi
plaintext
dekripsi
Pada umumnya kunci publik (public key) digunakan sebagai kunci enkripsi sementara
kunci privat (private key) digunakan sebagai kunci dekripsi.
Kelebihan :
Desep_priandes_1206541
Masalah manajemen kunci yang lebih baik karena jumlah kunci yang lebih sedikit
Kelemahan :
Untuk tingkat keamanan sama, kunci yang digunakan lebih panjang dibandingkan
dengan algoritma simetris.
Block Cipher, algoritma kriptografi ini bekerja pada suatu data yang berbentuk
blok/kelompok data dengan panjang data tertentu (dalam beberapa byte), jadi dalam sekali
proses enkripsi atau dekripsi data yang masuk mempunyai ukuran yang sama.
Stream cipher, algoritma yang dalam operasinya bekerja dalam suatu pesan berupa bit
tunggal atau terkadang dalam suatu byte, jadi format data berupa aliran dari bit untuk kemudian
mengalami proses enkripsi dan dekripsi.
Pada algoritma penyandian blok (block cipher), plainteks yang masuk akan diproses
dengan panjang blok yang tetap yaitu n, namun terkadang jika ukuran data ini terlalu panjang
maka dilakukan pemecahan dalam bentuk blok yang lebih kecil. Jika dalam pemecahan dihasilkan
blok data yang kurang dari jumlah data dalam blok maka akan dilakukan proses pading (penambahan
beberapa bit).
Pada mode operasi ECB sebuah blok input plaintext dipetakan secara statis ke sebuah blok output
ciphertext. Sehingga tiap plaintext yang sama akan menghasilkan ciphertext yang selalu sama pula. Sifat- sifat
dari mode operasi ECB :
Desep_priandes_1206541
Sender
Receiver
P1
C1
C1
P1
P1
C1
C1
P1
P1
C1
C1
P1
Sender
Desep_priandes_1206541
P1
IV
C1
Receiver
IV
C1
P1
Mula-mula sebelum si pengirim hendak mengirimkan pesannya kepada si penerima, dia terlebih
dahulu harus meng-XOR plaintext dengan IV (initialization vector) baru kemudian dienkripsi,
setelah itu baru dikirimkan ciphertext pertamanya kepada si penerima. Plaintext ke-2 pun demikian,
harus di-XOR terlebih dahulu dengan ciphertext sebelumnya sebelum mengalami proses enkripsi baru
kemudian dikirimkan ke si penerima sebagai ciphertext 2 dan seterusnya.
Sifat-sifat dari mode operasi CBC :
Desep_priandes_1206541
Dalam kriptografi, Public Key Infrastructure (PKI) adalah sebuah cara untuk
otentikasi, pengamanan data dan perangkat anti sangkal. Secara teknis, PKI adalah
implementasi dari berbagai teknik kriptografi yang bertujuan untuk mengamankan data,
memastikan keaslian data maupun pengirimnya dan mencegah penyangkalan.
Teknik-teknik kriptografi yang digunakan antara lain: - fungsi hash, - algoritma enkripsi
simetrik, dan - algoritma enkripsi asimetrik. Fungsi hash akan digunakan bersama dengan
algoritma enkripsi asimetrik dalam bentuk tanda tangan digital untuk memastikan
integritas dan keaslian berita/data berikut pengirimnya. Algoritma enkripsi simetrik
digunakan untuk mengamankan data dengan cara enkripsi. Dalam PKI penggunaan
algoritma enkripsi simetrik tidak langsung didefinisikan tetapi telah diimplementasikan
oleh berbagai perangat lunak. Secara garis besar PKI diwujudkan dalam bentuk
kolaborasi antar komponen-komponennya.
Komponen-komponen PKI antara lain: - Subscriber, - Certification Authority (CA), Registration Authority (RA), - Sertifikat Digital. Secara praktis wujud PKI adalah
penggunaan sertifikat digital. Sertifikat digital adalah sebuah file komputer yang berisi
data-data tentang sebuah public key, pemiliknya (subscriber atau CA), CA yang
menerbitkannya dan masa berlakunya.
PKI telah diimplementasikan dengan berbagai aplikasi seperti S/MIME, HTTPS, VPN,
dll. Anda dapat melihat fitur S/MIME pada software email yang terkenal seperti Outlook
Express, Mozilla Mail/Thunderbird, dan Evolution.
IPSec (singkatan dari IP Security) adalah sebuah protokol yang digunakan untuk
mengamankan transmisi datagram dalam sebuah internetwork berbasis TCP/IP. IPSec
mendefiniskan beberapa standar untuk melakukan enkripsi data dan juga integritas data
pada lapisan kedua dalam DARPA Reference Model (internetwork layer). IPSec
melakukan enkripsi terhadap data pada lapisan yang sama dengan protokol IP dan
menggunakan teknik tunneling untuk mengirimkan informasi melalui jaringan Internet
atau dalam jaringan Intranet secara aman. IPSec didefinisikan oleh badan Internet
Engineering Task Force (IETF) dan diimplementasikan di dalam banyak sistem operasi.
Windows 2000 adalah sistem operasi pertama dari Microsoft yang mendukung IPSec.
IPSec diimplementasikan pada lapisan transport dalam OSI Reference Model untuk
melindungi protokol IP dan protokol-protokol yang lebih tinggi dengan menggunakan
beberapa kebijakan keamanan yang dapat dikonfigurasikan untuk memenuhi kebutuhan
keamanan pengguna, atau jaringan. IPSec umumnya diletakkan sebagai sebuah lapsian
tambahan di dalam stack protokol TCP/IP dan diatur oleh setiap kebijakan keamanan
yang diinstalasikan dalam setiap mesin komputer dan dengan sebuah skema enkripsi
yang dapat dinegosiasikan antara pengirim dan penerima. Kebijakan-kebijakan keamanan
tersebut berisi kumpulan filter yang diasosiasikan dengan kelakuan tertentu. Ketika
sebuah alamat IP, nomor port TCP dan UDP atau protokol dari sebuah paket datagram IP
cocok dengan filter tertentu, maka kelakukan yang dikaitkan dengannya akan
diaplikasikan terhadap paket IP tersebut.
Desep_priandes_1206541
Dalam sistem operasi Windows 2000, Windows XP, dan Windows Server 2003,
kebijakan keamanan tersebut dibuat dan ditetapkan pada level domain Active Directory
atau pada host individual dengan menggunakan snap-in IPSec Management dalam
Microsoft Management Console (MMC). Kebijakan IPSec tersebut, berisi beberapa
peraturan yang menentukan kebutuhan keamanan untuk beberapa bentuk komunikasi.
Peraturan-peraturan tersebut digunakan ntuk memulai dan mengontrol komunikasi yang
aman berdasarkan sifat lalu lintas IP, sumber lalu lintas tersebut dan tujuannya.
Peraturan-peraturan tersebut dapat menentukan metode-metode autentikasi dan negosiasi,
atribut proses tunneling, dan jenis koneksi.
Untuk membuat sebuah sesi komunikasi yang aman antara dua komputer dengan
menggunakan IPSec, maka dibutuhkan sebuah framework protokol yang disebut dengan
ISAKMP/Oakley. Framework tersebut mencakup beberapa algoritma kriptografi yang
telah ditentukan sebelumnya, dan juga dapat diperluas dengan menambahkan beberapa
sistem kriptografi tambahan yang dibuat oleh pihak ketiga. Selama proses negosiasi
dilakukan, persetujuan akan tercapai dengan metode autentikasi dan kemanan yang akan
digunakan, dan protokol pun akan membuat sebuah kunci yang dapat digunakan bersama
(shared key) yang nantinya digunakan sebagi kunci enkripsi data. IPSec mendukung dua
buah sesi komunikasi keamanan, yakni sebagai berikut:
Desep_priandes_1206541
2. Operasi
Protokol Kerberos memiliki tiga subprotokol agar dapat melakukan aksinya:
Authentication Service (AS) Exchange: yang digunakan oleh Key Distribution Center
(KDC) untuk menyediakan Ticket-Granting Ticket (TGT) kepada klien dan membuat
kunci sesi logon.
Ticket-Granting Service (TGS) Exchange: yang digunakan oleh KDC untuk
mendistribusikan kunci sesi layanan dan tiket yang diasosiasikan dengannya.
Client/Server (CS) Exchange: yang digunakan oleh klien untuk mengirimkan sebuah
tiket sebagai pendaftaran kepada sebuah layanan.
Sesi autentikasi Kerberos yang dilakukan antara klien dan server adalah sebagai berikut:
Desep_priandes_1206541
5. Klien selanjutnya mengirimkan request terhadap server target yang mengandung tiket
yang didapatkan sebelumnya dengan menggunakan protokol CS Exchange. Server target
kemudian melakukan autentikasi terhadap tiket yang bersangkutan, membalasnya dengan
sebuah kunci sesi, dan klien pun akhirnya dapat mengakses layanan yang tersedia dalam
server.
Meski terlihat rumit, pekerjaan ini dilakukan di balik layar, sehingga tidak terlihat oleh
pengguna.
Kriptoanalisis (dari bahasa Yunani krypts, "tersembunyi", dan analein, "melepaskan")
adalah disiplin ilmu mengenai metode membaca pesan terenkripsi (tersandi), tanpa
mengetahui informasi rahasia atau kunci yang seharusnya digunakan untuk membaca
pesan tersebut. Dalam bahasa sehari-hari, kriptoanalisis bisa dikatakan ilmu memecahkan
sandi. Disiplin ilmu yang digunakan pada kriptografi antara lain matematika, linguistik,
logika, dan ilmu komputer.
Kriptoanalisis pertama kali dicetuskan oleh ilmuwan Arab zaman kekhalifahan
Abbasiyah al-Kindi. Dalam bukunya Sebuah Naskah dalam Memecahkan Pesan-Pesan
Kriptografis, ia menjelaskan secara detail metode analisis frekuensi, yang merupakan
dasar bagi metode-metode kriptoanalisis. Kriptoanalisis terus berkembang sesuai
perkembangan teknologi. Salah satu contoh terkenal adalah kriptoanalisis mesin Enigma
pada Perang Dunia II. Pada pertengahan 1970-an muncul kelompok baru kriptografi yang
disebut kriptografi asimetrik. Penemuan ini menyebabkan terjadinya perubahan radikal
pada metode-metode kriptoanalisis, yang melibatkan matematika murni.
Serangan brute-force adalah sebuah teknik serangan terhadap sebuah sistem keamanan
komputer yang menggunakan percobaan terhadap semua kunci yang mungkin.
Pendekatan ini pada awalnya merujuk pada sebuah program komputer yang
mengandalkan kekuatan pemrosesan komputer dibandingkan kecerdasan manusia.
Sebagai contoh, untuk menyelesaikan sebuah persamaan kuadrat seperti x+7x-44=0, di
mana x adalah sebuah integer, dengan menggunakan teknik serangan brute-force,
penggunanya hanya dituntut untuk membuat program yang mencoba semua nilai integer
yang mungkin untuk persamaan tersebut hingga nilai x sebagai jawabannya muncul.
Istilah brute force sendiri dipopulerkan oleh Kenneth Thompson, dengan mottonya:
"When in doubt, use brute-force" (jika ragu, gunakan brute-force).
Teknik yang paling banyak digunakan untuk memecahkan password, kunci, kode atau
kombinasi. Cara kerja metode ini sangat sederhana yaitu mencoba semua kombinasi yang
mungkin.
Sebuah password dapat dibongkar dengan menggunakan program yang disebut sebagai
password cracker. Program password cracker adalah program yang mencoba membuka
sebuah password yang telah terenkripsi dengan menggunakan sebuah algoritma tertentu
dengan cara mencoba semua kemungkinan. Teknik ini sangatlah sederhana, tapi
efektivitasnya luar biasa, dan tidak ada satu pun sistem yang aman dari serangan ini,
meski teknik ini memakan waktu yang sangat lama, khususnya untuk password yang
rumit.
Desep_priandes_1206541
Namun ini tidak berarti bahwa password cracker membutuhkan decrypt. Pada
prakteknya, mereka kebayakan tidak melakukan itu. Umumnya, kita tidak dapat
melakukan decrypt password-password yang sudah terenkripsi dengan algoritma yang
kuat. Proses-proses enkripsi modern kebanyakan hanya memberikan satu jalan, di mana
tidak ada proses pengembalian enkripsi. Namun, anda menggunakan tool-tool simulasi
yang mempekerjakan algoritma yang sama yang digunakan untuk mengenkripsi
password orisinal. Tool-tool tersebut membentuk analisa komparatif. Program password
cracker tidak lain adalah mesin-mesin ulet. Ia akan mencoba kata demi kata dalam
kecepatan tinggi. Mereka menganut "Azaz Keberuntungan", dengan harapan bahwa pada
kesempatan tertentu mereka akan menemukan kata atau kalimat yang cocok. Teori ini
mungkin tepat mengena pada anda yang terbiasa membuat password asal-asalan. Dan
memang pada kenyataannya, password-password yang baik sulit untuk ditembus oleh
program password cracker.
Key generation merupakan kegiatam manajemen kunci dalam menghasilkan kunci yang
acak dimana keacakan kunci merupakan bagian terpenting dalam menjamin kekuatan
suatu kiptografi syarat sayrat kunci dikatakan acak adalah :
frequency test untuk menentukan apakah jumlaj bit '0' dan '1' dalam barisan bit
mempunyai jumlah bit yang relatif sama, seperti yang diharapkan untuk barisan acak.
serial test. untuk mementukan apakah jumlah dari pasangan bit 00,01,10 dan 11
dalam barisan bit mempunyai jumlah yang relatif sama, seperti yang
diharapkan untuk barisan acak.
poker test. untuk menentukan apakah jumlah dari barisan bit dengan lebar
tertentu muncul dalam barisan bit seperti yang diharapkan untuk barisan acak.
runs test. untuk menetukan apakah jumlah runtun dalam barisan bit, baik runtun
bit '0' ataupun bit '1'dalamb arisan bit mempunyai jumlah yang relatif sama,
seperti yang diharapkan untuk barisan acak.
autocorrelation test. untuk menentukan apakah perbedaan jumlah bit '0' dan '1'
dalam barian bit (cycle) mempunyai jumlah yang relatif sama, seperti yang
diharapkan untuk barisan acak.
1. b. FIPS 140.1
2. c. FIPS 140.2
3. d. NIST SP 800.22.v.1.8
4. e. die hard test
5. f. maurer's universal statistic test.
tidak dapat diramalkan
Desep_priandes_1206541
1. Secara elektronis
Pembuatan kunci secara elektronis merupakan teknik pembuatan rangkaian kunci
yang menggunakan suatu alat pembangkit rangakain kunci (key generator). cara ini
memiliki banyak. Metode ini sudah menggunakan alat elektronik dalam pembangkitan
kuncinya. Biasanya menggunakan RK Generator seperti RNG (Random Number
Generator yang akan kami bahas pada paper kali ini).cara ini memiliki banyak
keuntungan contonya tenaga yang dibutuhkan kecil dan watu yang dibutuhkan sedikit.
namun ia memiki kelemahan yaitu biaya yang dibutuhkan besar dan harus memiliki
SDM yang mempunyai keahlian khusus.
1. Random Bit Generator
Desep_priandes_1206541
Random Bit Generator (pembangkit kunci acak) adalah sebuah alat ataupun algoritma
yang mampu menghasilkan suatu rangkaian bit acak atau kunci. Idealnya, suatu
algoritma sandi menggunakan kunci yang dihasilkan oleh Random Bit Generator ini.
Hal ini dikarenakan bit-bit yang dihasilkan oleh Random Bit Generator benar-benar
acak, sehingga sangat sulit untuk dianalisa. Ada beberapa metode yang dapat kita
lakukan untuk membangkitkan rangkaian kunci dengan Random Bit Generator ini,
yaitu :
1. 1.Pembangkit kunci berbasis hardware
Pada umumnya pembangkitan kunci dengan cara ini lebih sulit dibuat dibandingkan
pembangkitan kunci berbasis hardware. Pembangkitan kunci berbasis software ini
dalam prosesnya biasanya memanfaatkan :
1.
2.
3.
4.
Data yang digunakan pada pembangkit software sangat bervariasi dan bergantung
pada banyak faktor, seperti platform komputer. Namun sulit untuk mencegah pihakpihak yang tidak berkepentingan untuk meneliti dan memanipulasi data yang
dihasilkan. Suatu software pembangkit bit acak seharusnya menggunakan beberapa
sumber yang sifatnya acak yang dihasilkan pada sistem komputer.
Pseudo random bit generator.
Desep_priandes_1206541
berperan penting, pada pseudorandom yang baik tidak ditentukan oleh seed melainkan
oleh formulasi matematis yang digunakan pada algoritma tersebut.
Bilangan pseudorandom dapat dibangkitkan dari bit pseudorandom oleh karena itu
sekarang berkembang Pseudorandom Bit Generator. Pseudorandom Bit Generator ini
adalah suatu algoritma yang mempunya sifat deterministik, dimana apabila diberikan
berisan biner dengan panjang x, maka akan mengahsilkan barisan biner dengan
panjang x yang kelihatan acak, deterministik berarti apabila generator diberikan initial
seed yang sama maka akan menghasilkan barisan output yang sama atau berulang.
aswin--
Wiki: MD5
Desep_priandes_1206541
Desep_priandes_1206541
Desep_priandes_1206541
permasalahan yang lebih susah lagi, dan akan selalu butuh waktu
untuk terjadinya sebuah transisi.
3. Pengujian Integritas
Ringkasan MD5 digunakan secara luas dalam dunia perangkat
lunak untuk menyediakan semacam jaminan bahwa file yang
diambil (download) belum terdapat perubahan. Seorang user dapat
membandingkan MD5 sum yang dipublikasikan dengan checksum
dari file yang diambil. Dengan asumsi bahwa checksum yang
dipublikasikan dapat dipercaya akan keasliannya, seorang user
dapat secara yakin bahwa dile tersebut adalah file yang sama
dengan file yang dirilis oleh para developer, jaminan perlindungan
dari Trojan Horse dan virus komputer yang ditambahkan pada
perangkat lunak. Bagaimanapun juga, seringkali kasus yangterjadi
bahwa checksum yang dipublikasikan tidak dapat dipercaya
(sebagai contoh, checksum didapat dari channel atau lokasi yang
sama dengan tempat mengambil file), dalam hal ini MD5 hanya
mampu melakukan error-checking. MD5 akan mengenali file
yang didownload tidak sempurna, cacat atau tidak lengkap.
4. Algortima
menunjukkan perputaran bit kiri oleh s; s bervariasi untuk tiaptiap operasi. menunjukan tambahan modulo 232. MD5
memproses variasi panjang pesan kedalam keluaran 128-bit
dengan panjang yang tetap. Pesan masukan dipecah menjadi dua
gumpalan blok 512-bit; Pesan ditata sehingga panjang pesan dapat
dibagi 512. Penataan bekerja sebagai berikut: bit tunggal pertama,
s
Desep_priandes_1206541
5. Pseudocode
Pseudocode pada algoritma MD5 adalah sebagai berikut.
// Catatan: Seluruh variable tidak pada 32-bit dan dan wrap
modulo 2^32 saat melakukan perhitungan // Mendefinisikan r
sebagai berikut var int [64] r, k r[ 0..15] := {7, 12, 17, 22, 7, 12,
17, 22, 7, 12, 17, 22, 7, 12, 17, 22} r[16..31] := {5, 9, 14, 20, 5, 9,
14, 20, 5, 9, 14, 20, 5, 9, 14, 20} r[32..47] := {4, 11, 16, 23, 4, 11,
16, 23, 4, 11, 16, 23, 4, 11, 16, 23} r[48..63] := {6, 10, 15, 21, 6,
10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21} // Menggunakan bagian
fraksional biner dari integral sinus sebagai konstanta: for i from
0 to 63 k[i] := floor(abs(sin(i + 1)) 2^32) // Inisialisasi
variabel: var int h0 := 0x67452301 var int h1 := 0xEFCDAB89
var int h2 := 0x98BADCFE var int h3 := 0x10325476 //
Pemrosesan awal: append "1" bit to message append "0" bits
Desep_priandes_1206541
until message length in bits 448 (mod 512) append bit length
of message as 64-bit little-endian integer to message //
Pengolahan pesan paada kondisi gumpalan 512-bit: for each
512-bit chunk of message break chunk into sixteen 32-bit littleendian words w(i), 0 i 15 // Inisialisasi nilai hash pada
gumpalan ini: var int a := h0 var int b := h1 var int c := h2 var
int d := h3 // Kalang utama: for i from 0 to 63 if 0 i 15 then f
:= (b and c) or (( not b) and d) g := i else if 16 i 31 f := (d
and b) or (( not d) and c) g := (5i + 1) mod 16 else if 32 i
47 f := b xor c xor d g := (3i + 5) mod 16 else if 48 i 63 f :=
c xor (b or ( not d)) g := (7i) mod 16 temp := d d := c c := b b
:= ((a + f + k(i) + w(g)) leftrotate r(i)) + b a := temp //
Tambahkan hash dari gumpalan sebagai hasil: h0 := h0 + a h1 :=
h1 + b h2 := h2 + c h3 := h3 + d var int digest := h0 append h1
append h2 append h3 // (diwujudkan dalam little-endian)
6. Hash-hash MD5
Hash-hash MD5 sepanjang 128-bit (16-byte), yang dikenal
juga sebagai ringkasan pesan, secara tipikal ditampilkan
dalam bilangan heksadesimal 32-digit. Berikut ini
merupakan contoh pesan ASCII sepanjang 43-byte sebagai
masukan dan hash MD5 terkait:
MD5("The quick brown fox jumps over the lazy
dog") = 9e107d9d372bb6826bd81d3542a419d6
7. Lihat pula
Desep_priandes_1206541
MD2
SFV
Cyclic redundancy check
8. Pranala luar
8. 1. Informasi MD5
8. 2. Implementasi
8. 3. Kerusakan
Kategori: Kriptografi
Bahasa lain: English, Bahasa Melayu, Espaol, Deutsch,
Franais, Italiano, , , Portugus, ,
Polski, Lainnya...
Dari Wikipedia Indonesia. Seluruh teks tersedia sesuai dengan
Lisensi Dokumentasi Bebas GNU.
Desep_priandes_1206541
Halaman Utama
Wapedia: For Wikipedia on mobile phones
Algoritma Kriptografi
Jan.10, 2009 in Kriptografi
Algoritma kriptografi adalah algoritma yang berfungsi untuk melakukan tujuan dari ilmu
kriptografi itu sendiri. Algoritma kriptografi terdiri dari 2 bagian fungsi, yaitu :
1. ENKRIPSI (encryption), dan
2. DEKRIPSI (decryption).
Desep_priandes_1206541
Protokol Kriptografi
Protokol: aturan yang berisi rangkaian langkah-langkah, yang
melibatkan dua atau lebih orang, yang dibuat untuk
menyelesaikan suatu kegiatan.
Protokol kriptografi: protokol yang menggunakan kriptografi.
Orang yang berpartisipasi dalam protokol kriptografi
memerlukan protokol tersebut misalnya untuk:
- berbagi komponen rahasia untuk menghitung sebuah
nilai,
- membangkitkan rangkaian bilangan acak,
- meyakinkan identitas orang lainnya (otentikasi),
- dll
Protokol kriptografi dibangun dengan melibatkan beberapa
algoritma kriptografi.
Sebagian besar protokol kriptografi dirancang untuk dipakai
oleh kelompok yang terdiri dari 2 orang pemakai, tetapi ada
juga beberapa protokol yang dirancang untuk dipakai oleh
kelompok yang terdiri dari lebih dari dua orang pemanaki
(misalnya pada aplikasi teleconferencing)
Untuk mendemonstrasikan protokol kriptografi, kita
menggunakan nama-nama pemain sebagai berikut:
Alice
Bob
Desep_priandes_1206541
Carol
Dave
Eve
Trent
Alice dan Bob menyepakati algoritma kriptografi kuncipublik yang akan digunakan.
Bob mengirimi Alice kunci publiknya (kunci publik Bob).
Alice mengenkripsi pesannya dengan kunci publik Bob
kemudian mengirimkannya ke Bob
Bob mendekripsi pesan dari Alice dengan kunci rahasia
miliknya (kunci rahasia Bob).
Desep_priandes_1206541
(3)
(4)
Desep_priandes_1206541
Desep_priandes_1206541
(4)
(5)
Desep_priandes_1206541
(2)
(3)
(1)
(2)
(3)
(4)
Desep_priandes_1206541
(2)
(3)
(4)
Desep_priandes_1206541
(3)
Desep_priandes_1206541
(4)
Algoritma Asimetris atau sering disebut algoritma public key, penggunaan kunci dalam
algoritma ini adalah, kunci yang dipakai dalam proses enkripsi berbeda dengan kunci
yang dipakai pada proses dekripsi, jadi jumlah kunci enkripsi kunci dekripsi.
Ada 2 jenis kunci di algoritma ini, yaitu
1. KUNCI PUBLIK adalah kunci yang digunakan untuk melakukan proses enkripsi data.
Kunci ini disebut publik karena siapapun dapat mengetahuinya.
2. KUNCI PRIVAT adalah kunci yang digunakan untuk melakukan proses dekripsi data.
Kunci ini disebut privat karena 1 kunci privat hanya dimiliki oleh 1 orang saja. Kunci
privat sering juga disebut kunci rahasia.
Istilah kunci rahasia dalam algoritma simetris digunakan untk menyatakan kunci
enkripsi dan dekripsi, sementara pada algoritma asimetris digunakan untuk menyatakan
kunci privat, karena kunci publik tidak dirahasiakan.
Desep_priandes_1206541