KRIPTOGRAFI
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.
Kriptografi, secara umum adalah ilmu dan seni untuk menjaga kerahasiaan berita [bruce Schneier - Applied Cryptography]. Selain pengertian tersebut terdapat pula pengertian ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data [A. Menezes, P. van Oorschot and S. Vanstone - Handbook of Applied Cryptography]. Tidak semua aspek keamanan informasi ditangani oleh kriptografi.
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.
Ada empat tujuan mendasar dari ilmu kriptografi ini yang juga merupakan aspek keamanan informasi yaitu :
-
Kerahasiaan, adalah layanan yang digunakan untuk menjaga isi dari informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka/mengupas informasi yang telah disandi.
-
Integritas data, adalah berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak, antara lain penyisipan, penghapusan, dan pensubsitusian data lain kedalam data yang sebenarnya.
-
Autentikasi, adalah berhubungan dengan identifikasi/pengenalan, baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirimkan melalui kanal harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain.
-
Non-repudiasi, atau nirpenyangkalan adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman/terciptanya suatu informasi oleh yang mengirimkan/membuat.
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 :
-
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
dengan n menyatakan banyaknya pengguna. Contoh dari sistem ini adalah Data Encryption Standard (DES), Blowfish, IDEA.
-
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 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 IK
(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 : http://indah4yu.wordpress.com/