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.
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)
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
Suatu cryptosystem terdiri dari sebuah algoritma, seluruh
kemungkinan 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
dengan n menyatakan banyaknya pengguna. Contoh dari
sistem ini adalah Data Encryption tandard (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.
3.
Cryptographic
Protokol
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 protocol
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 enkripsi E.
Diberikan suatu distribusi plaintext dan
kunci.
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.
Sumber
:
https://docs.google.com/viewer?a=v&q=cache:wwm3t2BOZ9UJ:bwahyudi.staff.gunadarma.ac.id/Downloads/files/13543/kriptografi01.doc+&hl=id&pid=bl&srcid=ADGEESiHs67Zdgk6wFMRrpoLmBrIDjdYYeVXwGoKQY8_bfJ4eCutuIYYnFPalbgmx9SEpekaZJDArHH9ZBIw7_vNlfCNSOGsr8KFgvv67ns5FqEE1bWqbBAAuGmbnJhpzbTUcfcQxCra&sig=AHIEtbSiuambg2welnWbXh3_X7gQgJyWIQ/