Pengenalan Kriptografi
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 orang-orang 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 :

Gb. 1. Proses Enkripsi/Dekripsi Sederhana
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 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 (Proses Enkripsi)
DK (C) = M (Proses Dekripsi)
DK (C) = M (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 secret-key ciphersystem. Jumlah kunci yang
dibutuhkan umumnya adalah :
nC2 = n . (n-1)
--------
2
--------
2
dengan
n menyatakan banyaknya pengguna.
Contoh dari sistem ini adalah Data Encryption Standard (DES), Blowfish, IDEA.
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 :
- 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 :
- protokol memiliki urutan dari awal
hingga akhir;
- setiap langkah harus dilaksanakan secara
bergiliran;
- suatu langkah tidak dapat dikerjakan
bila langkah sebelumnya belum selesai;
- diperlukan dua pihak atau lebih untuk
melaksanakan protokol;
- protokol harus mencapai suatu hasil;
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.
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 :
- algoritma cryptographic yang digunakan
dalam protokol;
- teknik cryptographic yang digunakan
untuk mengimplementasikan algoritma dan protokol;
- protokol itu sendiri;
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
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 :
- Ciphertext-only attack. Dalam
penyerangan ini, seorang cryptanalyst memiliki ciphertext dari sejumlah
pesan yang seluruhnya telah dienkripsi menggunakan algoritma yang sama.
- Known-plaintext attack. Dalam tipe
penyerangan ini, cryptanalyst memiliki akses tidak hanya ke ciphertext
sejumlah pesan, namun ia juga memiliki plaintext pesan-pesan tersebut.
- Chosen-plaintext attack. Pada
penyerangan ini, cryptanalyst tidak hanya memiliki akses atas ciphertext
dan plaintext untuk beberapa pesan, tetapi ia juga dapat memilih plaintext
yang dienkripsi.
- Adaptive-chosen-plaintext attack.
Penyerangan tipe ini merupakan suatu kasus khusus chosen-plaintext attack.
Cryptanalyst tidak hanya dapat memilih plaintext yang dienkripsi, ia pun
memiliki kemampuan untuk memodifikasi pilihan berdasarkan hasil enkripsi
sebelumnya. Dalam chosen-plaintext attack, cryptanalyst mungkin hanya
dapat memiliki plaintext dalam suatu blok besar untuk dienkripsi; dalam
adaptive-chosen-plaintext attack ini ia dapat memilih blok plaintext yang
lebih kecil dan kemudian memilih yang lain berdasarkan hasil yang pertama,
proses ini dapat dilakukannya terus menerus hingga ia dapat memperoleh
seluruh informasi.
- Chosen-ciphertext attack. Pada tipe ini,
cryptanalyst dapat memilih ciphertext yang berbeda untuk didekripsi dan
memiliki akses atas plaintext yang didekripsi.
- Chosen-key attack. Cryptanalyst pada
tipe penyerangan ini memiliki pengetahuan tentang hubungan antara
kunci-kunci yang berbeda.
- Rubber-hose cryptanalysis. Pada tipe
penyerangan ini, cryptanalyst mengancam, memeras, atau bahkan memaksa
seseorang hingga mereka memberikan kuncinya.
Analisis berbagai tipe penyerangan secara matematis
Suatu penyerangan
pasif atas cryptosystem adalah semua metode untuk mengungkapkan informasi tentang
plaintext dan ciphertextnya dengan tanpa mengetahui kunci. Secara matematis :
Diberikan fungsi F, G, dan H
yang terdiri dari n variabel.
Diberikan sistem enkripsiE.
Diberikan suatu distribusi plaintext dan kunci.
Diberikan sistem enkripsi
Diberikan
Suatu penyerangan
atas E dengan menggunakan G dengan mengasumsikan F membagi H dengan
probabilitas p adalah suatu algoritma A dengan sepasang input f,g dan satu buah
output h sedemikian hingga terdapat probabilitas p atas h = H(P1, …, Pn), jika kita memiliki f = F(P1, …, Pn) dan g = G(EK(P1),
…, EK(Pn)).
Perlu diperhatikan bahwa probabilitas ini tergantung pada distribusi
vektor-vektor (K,P1,…,Pn).
Penyerangan akan
merupakan suatu trivial bila terdapat probabilitas paling sedikir p untuk h = H(P1, …, Pn) jika f = F (P1,…,Pn)
dan g = G (C1,…,Cn). Di sini C1,…,Cn
terletak pada ciphertext yang mungkin, dan tidak memiliki hubungan tertentu
dengan P1,…,Pn. Dengan kata 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.
Konversi ke HTML oleh Tedi Heriyanto. $ 12 September 1999. 10.30 $
Website
dan FTP
http://www.rsa.com
(RSA Inc.)
http://www.counterpane.com (Counterpane Inc.)
http://theory.lcs.mit.edu/~rivest/ (Ronald L. Rivest-the R in RSA)
http://www.cryptography.com
http://www.counterpane.com (Counterpane Inc.)
http://theory.lcs.mit.edu/~rivest/ (Ronald L. Rivest-the R in RSA)
http://www.cryptography.com
Buku-buku
Scheneier, Bruce, Applied Cryptography, edisi 2,
No comments:
Post a Comment