Pengenalan Kriptografi
oleh : Tedi
Heriyanto
$
Edisi : 0.0.5 - 27 Juni 1999 $
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)
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
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 :
- 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 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)
Buku-buku
Scheneier,
Bruce, Applied Cryptography, edisi 2, New Jersey:John Wiley & Sons, Inc.,
1996.
Kunci kriptografi yang digunakan
untuk mengenkripsi kunci lain, tetapi biasanya tidak digunakan untu...
Algoritma kriptografi
(cryptographic algorithm) berupa persamaan matematik yang digunakan dalam
pros...
Merupakan algoritma kriptografi
untuk kunci public (public key cryptography) yang umum digunakan saa...
Para pelaku atau praktisi
kriptografi.
DSA adalah merupakan teknik
kriptografi yang berbasis kepada masalah matematika yang disebut discret...
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:
- Kerahasiaan (confidentiality)
dijamin dengan melakukan enkripsi (penyandian).
- Keutuhan (integrity)
atas data-data pembayaran dilakukan dengan fungsi hash satu arah.
- 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.
- Transaksi dapat dijadikan
barang bukti yang tidak bisa disangkal (non-repudiation) dengan
memanfaatkan tanda tangan digital dan sertifikat digital.
Pembakuan
penulisan pada kriptografi dapat ditulis dalam bahasa matematika. Fungsi-fungsi
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)
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
|
Pihak
penyadap informasi yang tidak diperuntukkan kepadanya (eavesdropper)
|
|
M:
Maman
|
Pihak
yang tidak hanya menyadap informasi, namun juga mengubah informasi yang
disadap (malacious person)
|
|
T:
Tari, Tata,
Tania |
Pihak
yang dipercaya oleh pihak pertama, kedua dan ketiga (trusted person)
|
Bab ini akan
menguraikan mengenai beberapa jenis serangan, jenis-jenis kunci kriptografi,
berbagai jenis perangkat dan protokol kriptografi, serta masalah panjang kunci
kriptografi.
Selain ada
pihak yang ingin menjaga agar pesan tetap aman, ada juga ternyata pihak-pihak
yang ingin mengetahui pesan rahasia tersebut secara tidak sah. Bahkan ada
pihak-pihak 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 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:
- Ciphertext only attack,
penyerang hanya mendapatkan pesan yang sudah tersandikan saja.
- Known plaintext attack, dimana
penyerang selain mendapatkan sandi, juga mendapatkan pesan asli. Terkadang
disebut pula clear-text attack.
- 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:
- 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.
- 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.
- 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.
- 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.
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.
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.

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.

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).
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 hash-value (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 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 pre-image, sebuah kunci rahasia juga
menjadi input bagi fungsi MAC.
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:
- 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.
- 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.
- Tanda tangan itu dapat
diperiksa dengan mudah.
- Tanda tangan itu dapat
diperiksa oleh pihak-pihak yang belum pernah bertemu dengan penandatangan.
- 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.

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.

Anto hendak
mengirimkan Badu suatu dokumen rahasia. Jika mereka belum pernah bertemu sebelumnya,
tentu Badu harus mengirimkan kunci publiknya kepada Anto agar Anto dapat
melakukan enkripsi yang pesannya hanya dapat dibuka oleh Badu. Demikian juga
pula sebaliknya, Anto harus mengirimkan kepada Badu kunci publiknya agar Badu
dapat memeriksa keaslian tanda tangan Anto pada pesan yang dikirim. Dengan cara
ini Anto dapat memastikan pesan itu sampai ke tujuannya, sedangkan Badu dapat
merasa yakin bahwa pengirim pesan itu adalah Anto.
Masalah yang
muncul adalah bagaimana mereka dapat saling bertukar kunci dengan aman? Bisa
saja di tengah pertukaran kunci-kunci publik milik Anto dan Budi itu diganti
dengan kunci publik milik Maman. Dengan begitu Maman dengan bebas dapat
menyadap dan mengubah seluruh informasi. Inilah suatu contoh dari man-in-the-middle
attack.
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.
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 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 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.
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.
- Anto membuat sidik jari
dari SPP (yaitu Hash(SPP)) dan sidik jari SPJB (yakni Hash(SPJB)).
- 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.
- 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.
- Saat Badu ingin mengambil
uang di bank, Badu membuat sidik jari dari surat perjanjian jual beli
(SPJB). Badu menyerahkan sidik jari SPJB kepada bank.
- Bank membuat sidik jari
dari surat perintah pembayaran (SPP).
- 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.
- Jika sidik jari pesan ganda
SPP & SPJB yang baru dibuat itu sama dengan yang telah diberikan oleh
Anto, maka bank menjalankan kewajibannya kepada Badu.

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].
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:
- Anto membuat seuntai string
acak R yang panjangnya sama dengan pesan rahasia M.
- Anto melakukan operasi XOR
antara M dengan R, sehingga menghasilkan S.
- Anto memberikan R kepada
Badu dan S kepada Chandra
- Jika Badu dengan Chandra
bertemu, maka mereka sanggup mendapatkan pesan rahasia M dengan cara
melakukan operasi XOR antara S dengan R.
Protokol ini
bermanfaat kalau misalnya Anto hendak membuat suatu pernyataan atau komitmen
(katakanlah suatu string binari 1000), namun Anto tak ingin agar Badu
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:
- Anto membuat dua buah
string secara acak, yakni R1 dan R2
- Anto menggabungkan kedua
string acak itu ke dalam pernyataannya (b) yang akan dikomitmenkan
menjadi (R1, R2, b)
- Anto menghitung hash
dari gabungan string itu, Hash(R1, R2, b).
- Anto kemudian mengirimkan hash
tersebut beserta R1 kepada Badu. Badu akan menyimpannya
untuk pemeriksaan nanti.
- Jika sudah tiba saatnya
untuk menunjukkan pernyataannya, Anto memberikan seluruh string (R1,
R2, b) kepada Badu.
- Badu memeriksa fungsi hash
dari (R1, R2, b). Jika cocok dengan hash
yang diperiksanya dulu, maka pernyataan Anto tidak diubah.
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:
- Anto ‘mengalikan’ dokumen
(yang akan ditandatangani) dengan sebuah faktor pembuta.
- Anto mengirimkan dokumen
itu kepada Badu
- Badu menandatangani dokumen
itu
- Badu mengembalikan dokumen
yang sudah ditandatangani tadi kepada Anto
- Anto membaginya dengan
faktor pembuta, sehingga mendapatkan dokumen yang asli sudah
tertandatangani oleh Badu.
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:
- 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 bit-komitmen
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)
- Anto memasukkan uang itu
kedalam yang juga disisipi kertas karbon amplop (mengalikan uang dengan
faktor pembuta), lalu memberikannya kepada bank.
- 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.
- 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.
- Anto membuka amplop. Uang
siap dipakai.
- Anto menyerahkan uang
kepada Badu. Badu sebagai penerima uang, akan memeriksa apakah tanda
tangan bank pada uang itu absah.
- Badu akan menyuruh Anto
untuk membuka salah satu sisi dari setiap string identifikasi di setiap
uang dengan cara memberikan string pemilih sepanjang n-bit.
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.
- 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.
- 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.
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).
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
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
|
Jaminan waktu untuk menemukan kunci
|
|
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
|
Jaminan waktu untuk menemukan kunci
|
|
40-bit
|
15 hari
|
|
56-bit
|
2.691,49 tahun
|
|
64-bit
|
689.021,57 tahun
|
|
128-bit
|
12.710.204.652.610.000.000.000.000 tahun
|
Sedangkan pada
sistem enkripsi kunci publik-privat, yang memegang peranan dalam menjebol kunci
privat adalah kesulitan mencari faktor prima bilangan yang sangat besar.
Beberapa kunci yang dipergunakan 10 tahun lalu saja kini sama sekali tidak laik
pakai seiring dengan perkembangan ilmu pengetahuan dan teknologi.
Kunci publik
yang dimanfaatkan SSL adalah teknologi kunci publik 40-bit dari RSA, yang
ternyata dapat dijebol dalam waktu 1,3 hari dengan 100 komputer menggunakan brute-force
attack [DHMM 96].
Ronald Rivest,
salah seorang penemu RSA, juga pernah menghitung bahwa untuk menemukan kunci
RSA 512-bit dengan cara brute-force attack membutuhkan biaya 8,2
juta dollar AS [DaLe 96]. Untuk kasus tertentu, ini pun tidak aman. Kini
perusahaan-perusahaan disarankan menggunakan kunci 2048 bit agar data aman
sampai tahun 2015.
Pada saat
tulisan ini dibuat, ekspor teknologi enkripsi DES 56-bit keluar dari Amerika
Serikat masih diizinkan. Untuk yang lainnya hanya diizinkan 40-bit. Setelah
tanggal 31 Desember 1998, ekspor teknologi enkripsi DES dari Amerika Serikat
hanya dibatasi sampai 40-bit saja, atau boleh saja tetap 56-bit, namun
pengembang perangkat lunak itu harus menyediakan perangkat untuk membuka kunci
itu juga [Star 97].
Panjang-pendeknya
kunci dalam teknik-teknik enkripsi pada sistem perdagangan di Internet, akan
menjadi salah satu titik lemah sistem perdagangan di Internet itu sendiri. Ada
argumen yang menyatakan bahwa kalau pada suatu saat ukuran kunci publik-privat
terasa terlalu pendek, maka panjangkan saja lagi kunci itu, tentu proses
penyerangannya akan makin sulit. Hal ini memang benar, namun ada pertimbangan
lain bahwa pengguna kunci tersebut harus bisa melakukan proses
enkripsi-dekripsi dengan teknologi yang secara komersil memungkinkan. Terlihat
di sini bahwa dibutuhkan ukuran kunci yang cukup panjang supaya aman, tapi tidak
terlalu panjang agar memudahkan dalam penggunannya secara umum.
Beberapa teknik
brute-force attack lain yang tidak akan dibahas panjang disini,
seperti dengan penyebaran virus, komputasi paralel pada jaringan raksasa,
undian Cina, atau penggunaan komputer biologis. Semua itu menunjukkan bahwa ada
kemungkinan bahwa kunci bisa didapatkan dengan brute-force attack.
Satu hal yang
patut dicatat adalah bukan berarti dengan mungkinnya suatu metoda enkripsi
dijebol lantas metoda enkripsi itu tidak bermanfaat, namun yang penting apakah
biaya untuk melakukan serangan itu lebih besar dari pada harga informasi yang
dienkripsi 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?
|
Bab
22. Keamanan Sistem
|
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.
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:
- Pemisahan
Tugas (Separation of Duties). Menugaskan hal-hal yang menyangkut
keamanan kepada beberapa orang saja. Misalnya, yang berhak menginstall
program ke dalam system komputer hanya admin, user tidak diberi hak
tersebut.
- Hak Akses
Minimum (Least Privilege). Setiap orang hanya diberikan hak akses
minimum yang dibutuhkan dalam pelaksanaan tugas mereka
- Keingin-tahuan
(Need to Know). Yang dimaksud dengan need to know adalah
pengetahuan akan informasi yang dibutuhkan dalam melakukan suatu
pekerjaan.
Kategori
utama dari kontrol keamanan operasional antara lain:
- Kendali
Pencegahan (Preventative Control). Untuk mencegah error dan intruder
temasuki sistem. Misal, kontrol pencegahan untuk mencegah virus memasuki
sistem adalah dengan menginstall antivirus.
- Kontrol
Pendeteksian (Detective Control). Untuk mendeteksi error yang memasuki
sistem. Misal, mencari virus yang berhasil memasuki sistem.
- Kontrol
Perbaikan (Corrective/Recovery Control). Membantu mengembalikan data yang
hilang melalui prosedur recovery data. Misal, memperbaiki data yang
terkena virus.
Kategori
lainnya mencakup:
- Kendali
Pencegahan (Deterrent Control). . Untuk
menganjurkan pemenuhan (compliance) dengan kontrol eksternal.
- Kendali
Aplikasi (Application Control) . Untuk
memperkecil dan mendeteksi operasi-operasi perangkat lunak yang tidak
biasa.
- Kendali
Transaksi (Transaction Control) . Untuk
menyediakan kendali di berbagai tahap transaksi (dari inisiasi sampai
keluaran, melalui kontrol testing dan kontrol perubahan).
Terminologi
Kriptografi
<!--[if !supportLists]-->
a. Pesan,
Plainteks dan Cipherteks
Pesan adalah data atau informasi yang
dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plainteks.
Agar pesan tidak bisa dimengerti maknanya oleh pihak lain, maka pesan perlu
disandikan ke bentuk lain yang tidak dapat dipahami. Bentuk pesan yang tersandi
disebut cipherteks
b. Pengirim dan Penerima
Pengirim adalah entitas yang mengirim
pesan kepada entitas lainnya. Penerima adalah entitas yang menerima pesan.
Entitas di sini dapat berupa orang, mesin (komputer), kartu kredit dan
sebagainya.
c. Enkripsi dan dekripsi
Proses menyandikan plainteks menjadi
cipherteks disebut enkripsi. Sedangkan proses mengembalikan cipherteks menjadi
plainteks semula dinamakan dekripsi
d. Cipher dan kunci
Algoritma kriptografi disebut juga
cipher yaitu aturan untuk enciphering dan deciphering, atau fungsi matematika
yang digunakan untuk enkripsi dan dekripsi. Konsep matematis yang mendasari
algoritma kriptografi adalah relasi antara dua buah himpunan yaitu himpunan
yang berisi elemen-elemen plainteks dan himpunan yang berisi cipherteks.
Enkripsi dan dekripsi adalah fungsi yang memetakan elemen-elemen antara kedua
himpunan tersebut.
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.
g. Kriptanalisis dan kriptologi
Kriptanalisis (cryptanalysis) adalah
ilmu dan seni untuk memecahkan cipherteks menjadi plainteks tanpa mengetahui
kunci yang digunakan. Pelakunya disebut kriptanalis. Kriptologi adalah studi
mengenai kriptografi dan kriptanalisis.
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.
Kriptografi Kunci Simetri dan Asimetri
Berdasarkan kunci yang digunakan untuk
enkripsi dan dekripsi, kriptografi dapat dibedakan lagi menjadi kriptografi
kunci simetri dan kriptografi kunci asimetri. Pada sistem kriptografi kunci
simetri, kunci untuk enkripsi sama dengan kunci untuk dekripsi. Jika kunci
untuk enkripsi tidak sama dengan kunci untuk dekripsi, maka dinamakan sistem
kriptografi asimetri.
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.
Sedangkan berdasarkan besar data yang diolah dalam satu kali proses, maka
algoritma kriptografi dapat dibedakan menjadi dua jenis yaitu :
·
Algoritma block
cipher
Informasi/data yang hendak dikirim dalam bentuk blok-blok besar (misal
64-bit) dimana blok-blok ini dioperasikan dengan fungsi enkripsi yang sama dan
akan menghasilkan informasi rahasia dalam blok-blok yang berukuran sama.
·
Algoritma stream cipher
Informasi/data yang hendak dikirim dioperasikan dalam bentuk blok-blok
yang lebih kecil (byte atau bit), biasanya satu karakter persatuan persatuan
waktu proses, menggunakan tranformasi enkripsi yang berubah setiap waktu.
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 :
- Kazumaro Aoki (NTT - Nippon Telegraph and Telephone
Corp.)
- Tetsuya Ichikawa (Mitsubishi electric Corp.)
- Masayuki Kanda (NTT – Nippon Telegraph and
Telephone Corp.)
- Mitsuru Matsui (Mitsubishi electric Corp.)
- Shiho Moriai (NTT – Nippon Telegraph and Telephone
Corp.)
- Junko Nakajima (Mitsubishi electric Corp.)
- Toshio Tokita (Mitsubishi electric Corp.)
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).
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 dengan identifikasi.
Baik 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.
- Enkripsi (fungsi E) adalah
proses pengubahan plaintext menjadi ciphertext.
- 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 plaintext
kunci enkripsi kunci dekripsi
Gambar 2.1 Diagram
proses enkripsi dan dekripsi
Peranan kunci
sangatlah penting dalam proses enkripsi dan dekripsi (disamping pula algoritma
yang digunakan) sehingga kerahasiaannya sangatlah penting, apabila kerahasiaannya terbongkar, maka isi dari pesan dapat
diketahui.
Secara matematis, proses enkripsi
merupakan pengoperasian fungsi E (enkripsi)
menggunakan e (kunci enkripsi) pada M (plaintext) sehingga dihasilkan C (ciphertext), notasinya :
Ee(M) – C
Sedangkan
untuk proses dekripsi, merupakan pengoperasian fungsi D (dekripsi) menggunakan d (kunci dekripsi) pada C (ciphertext) sehingga
dihasilkan M (plaintext), notasinya :
Dd(C) = M
Sehingga dari dua hubungan diatas
berlaku :
Dd(Ee(M)) = M
2.
1. 2 Algoritma Simetris dan Asimetris
2. 1. 2. 1 Algoritma Simetris
Algoritma simetris (symmetric algorithm) adalah suatu algoritma
dimana kunci enkripsi
yang digunakan sama dengan kunci dekripsi sehingga algoritma ini disebut juga sebagai single-key
algorithm.
Plaintext ciphertext plaintext
kunci enkripsi (K) kunci dekripsi (K)
Gambar 2.2
Diagram proses enkripsi dan dekripsi algoritma simetris
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 :
·
Kecepatan
operasi lebih tinggi bila dibandingkan dengan algoritma asimetrik.
·
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”
Contoh algoritma :
TwoFish, Rijndael, Camellia
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 plaintext
kunci
enkripsi (K1) kunci dekripsi (K2)
Gambar 2.3 Diagram proses enkripsi dan dekripsi algoritma
asimetris
Pada umumnya kunci publik (public
key) digunakan sebagai kunci enkripsi
sementara kunci privat (private key) digunakan sebagai kunci dekripsi.
Kelebihan :
·
Masalah
keamanan pada distribusi kunci dapat lebih baik
·
Masalah manajemen
kunci yang lebih baik karena jumlah kunci yang lebih sedikit
Kelemahan :
·
Kecepatan
yang lebih rendah bila dibandingkan dengan algoritma simetris
·
Untuk tingkat
keamanan sama, kunci
yang digunakan lebih
panjang dibandingkan
dengan algoritma simetris.
Contoh algoritma : RSA, DSA, ElGamal
2. 1. 3 Block Cipher dan Stream
Cipher
Jika kita
melihat berdasarkan ukuran serta format data yang akan diproses, maka algoritma kriptografi dapat dibagi menjadi dua bagian
yang utama yaitu:
·
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).
2. 2 Mode
Operasi dalam Block Cipher
\2. 2. 1 Electronic Codebook (ECB)
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 :
·
Sederhana
dan efisien
- Memungkinkan implementasi
parallel
- Tidak menyembunyikan pola
plaintext
- Dimungkinkan
terjadi adanya active attack.
Skema dari mode operasi ECB dapat digambarkan sebagai berikut :

Gambar 2.4 Skema Mode Operasi ECB
Cipher Block Chaining (CBC)
Pada mode oparasi ini hasil enkripsi dari blok sebelumnya mempengaruhi hasil enkripsi
selanjutnya, atau enkripsi sebeluimnya menjadi feedback pada enkripsi blok saat itu., jadi tiap blok
ciphertext bergantung bukan hanya pada blok plaintext-nya tapi bergantung pula pada blok-blok
plaintext sebelumnya. Sehingga untuk plaintext yang sama, belum tentu menghasilkan ciphertext yang sama pula.
Skema dari mode operasi CBC dapat
digambarkan sebagai berikut :
![]() |
Sender Receiver
Gambar 2.5
Skema Mode
Operasi CBC.
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 :
·
Lebih
aman dari active attacks dibandingkan mode operasi ECB
·
Error
pada satu ciphertext dapat berakibat parah
·
Menutupi
pola plaintext
·
Implementasi
parallel belum diketahui
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.
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:
- protokol Authentication
Header (AH): menawarkan autentikasi pengguna dan perlindungan dari
beberapa serangan (umumnya serangan man
in the middle), dan juga menyediakan fungsi autentikasi
terhadap data serta integritas terhadap data. Protokol ini mengizinkan
penerima untuk merasa yakin bahwa identitas si pengirim adalah benar
adanya, dan data pun tidak dimodifikasi selama transmisi. Namun demikian,
protokol AH tidak menawarkan fungsi enkripsi terhadap data yang
ditransmisikannya. Informasi AH dimasukkan ke dalam header paket
IP yang dikirimkan dan dapat digunakan secara sendirian atau bersamaan
dengan protokol Encapsulating Security Payload.
- protokol Encapsulating
Security Payload (ESP): Protokol ini melakukan enkapsulasi serta
enkripsi terhadap data pengguna untuk meningkatkan kerahasiaan data. ESP
juga dapat memiliki skema autentikasi dan perlindungan dari beberapa
serangan dan dapat digunakan secara sendirian atau bersamaan dengan Authentication
Header. Sama seperti halnya AH, informasi mengenai ESP juga dimasukkan
ke dalam header paket IP yang dikirimkan.
Beberapa
perangkat keras serta perangkat lunak dapat dikonfigurasikan untuk mendukung
IPSec, yang dapat dilakukan dengan menggunakan enkripsi kunci publik yang
disediakan oleh Certificate Authority (dalam sebuah public key infrastructure) atau kunci yang digunakan
bersama yang telah ditentukan sebelumnya (skema Pre-Shared
Key/PSK) untuk melakukan enkripsi secara privat.
1. Sejarah dan perkembangan
Kerberos pertama kali dikembangkan pada dekade 1980-an sebagai
sebuah metode untuk melakukan autentikasi terhadap pengguna dalam sebuah
jaringan yang besar dan terdistribusi. Kerberos menggunakan enkripsi
kunci rahasia/kunci simetris dengan algoritma kunci yang kuat sehingga klien
dapat membuktikan identitas mereka kepada server dan juga menjamin privasi dan
integritas komunikasi mereka dengan server. Protokol ini dinamai Kerberos,
karena memang Kerberos (atau Cerberus) merupakan seekor anjing berkepala
tiga (protokol Kerberos memiliki tiga subprotokol) dalam mitologi
Yunani yang menjadi penjaga Tartarus, gerbang menuju Hades
(atau Pluto
dalam mitologi
Romawi).
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:
Cara kerja protokol Kerberos
- Informasi pribadi
pengguna dimasukkan ke dalam komputer klien Kerberos, yang kemudian akan
mengirimkan sebuah request terhadap KDC untuk mengakses TGS dengan
menggunakan protokol AS Exchange. Dalam request tersebut terdapat bukti
identitas pengguna dalam bentuk terenkripsi.
- KDC kemudian menerima
request dari klien Kerberos, lalu mencari kunci utama (disebut sebagai
Master Key) yang dimiliki oleh pengguna dalam layanan direktori Active
Directory (dalam Windows 2000/Windows
Server 2003) untuk selanjutnya melakukan dekripsi terhadap
informasi identitas yang terdapat dalam request yang dikirimkan. Jika
identitas pengguna berhasil diverifikasi, KDC akan meresponsnya dengan
memberikan TGT dan sebuah kunci sesi dengan menggunakan protokol AS
Exchange.
- Klien selanjutnya
mengirimkan request TGS kepada KDC yang mengandung TGT yang sebelumnya
diterima dari KDC dan meminta akses tehradap beberapa layanan dalam server
dengan menggunakan protokol TGS Exchange.
- KDC selanjutnya menerima
request, malakukan autentikasi terhadap pengguna, dan meresponsnya dengan
memberikan sebuah tiket dan kunci sesi kepada pengguna untuk mengakses
server target dengan menggunakan protokol TGS Exchange.
- 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 kryptós, "tersembunyi", dan analýein,
"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.
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 :
- Telah lulus uji statistik
untuk menguji keacakan pada suatu
rangkaian kunci yang dihasilkan, kita dapat mengujinya dengan menggunakan uji
statistik, diantaranya :
·
five basic test, tes ini terdiri dari :
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
maksudnya,selain telah lulus uji
statistik juga unpredictable (tidak dapat diramalkan).secara perhitungan akan
sulit untuk menentukan atau menduga bit bit selanjutnya yang akan muncul dari
rangkaian tersebut. selain itu rangkaian itu haruslah tidak memberikan
pengetahuan yang lengkap tentang algoritma atu infrastruktur hardware yang
digunakan dalam pembangkitan rangkaian seluruh bit bit sebelumnya dalam
rangkaian itu seniri
apabila menggunakan alat yang
menghasilkan suatu kunci, ia tidak pernah menghasilkan kunci yang hampir sama
atu sama persis dengan kunci yang dihasilkan sebelumnya. hal ini berarti jika
pembangkit tersebut digunakan dua kali dengan input yang sama maka akan
didapatkan dua rangkaian acak yang sama sekali berbeda dan tidak saling
berhubungan.
namun untuk menghasilkan kunci yang
acak tidaklah mudah. . ada dua macam untuk menghasilkan rangkaian kunci, yaitu
: secara manual Metode ini masih sederhana.Biasanya digunakan koin dalam
membangkitkan kuncinya. Ataupun dapat menggunakan Boudout Code jika yang
dibangkitkan adalah karakter. Misal : Rumah = 0 , Burung = 1
Untuk menghasilkan 2 karakter maka
pelemparan koin harus dilakukan sebanyak 10 kali, hasilnya dapat dilihat pada
tabel boudout.
Kelebihan metode manual ini yaitu
tidak membutuhkan biaya besar dan tidak memerlukan keahlian khusus. Sedangkan
kekurangannya adalah membutuhkan tenaga yang besar dan membutuhkan waktu yang
lama.
Merapikan artikel bisa berupa membagi artikel ke
dalam paragraf atau wikifikasi artikel. Setelah dirapikan, tolong
hapus pesan ini.
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
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
yaitu pembangkitan kunci yang
dilakukan dengan memanfaatkan keacakan yang ditimbulkan oleh kejadian yang
bersifat fisik, beberapa contoh kejadian fisik tersebut dapat adalah sebagai
berikut:
1.
Suara dari mikropon atau input dari kamera.
2.
Ketidakstabilan dari ascilator yang bekerja.
3.
Thermal noise yang dihasilkan oleh
semi-konduktor dioda ataupun resistor.
4.
Turbulensi udara pada diskdrive yang tertutup
rapat menyebabkan fluktuasi yang acak pada diskdrive sector read latency time.
5.
2. Pembangkit kunci berbasis software.
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.
Jam yang terdapat pada sistem
2.
Lama waktu penekanan tombol
3.
Mouse movement
4.
Input yang diberikan user.
Data yang digunakan pada pembangkit
software sangat bervariasi dan bergantung pada banyak faktor, seperti platform
komputer. Namun sulit untuk mencegah pihak-pihak 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.
Pseudo random bit generator (PRNG)
adalah pembangkit rangkainbilangan pseurandom, diman proses pembangkitan tiap
elemen tergantung dari formulasi matematis yang digunakan, dan ia membutuhkan
seed.
Seed yaitu input yang digunakan pada
pseudo random bit generator sedangkan outputnya disebutpseudo random bit
sequences (rangkaian bit semi acak). seed berfungsi sebagai inputan pseudo
random bit generator, karena seed meupakan inputan pembangkit kunci semi acak,
maka panjangnya disesuiaikan dengan algoritma pseudorandom generator yang
digunakan. Untuk pseudorandom bit, seed inilah yang 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
Dalam kriptografi, MD5 (Message-Digest
algortihm 5) ialah fungsi hash kriptografik yang digunakan
secara luas dengan hash value 128-bit. Pada standart Internet (RFC
1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi
keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas
sebuah file.
MD5 di desain oleh Ronald
Rivest pada tahun 1991 untuk menggantikan hash function
sebelumnya, MD4.
Pada tahun 1996,
sebuah kecacatan ditemukan dalam desainnya, walau bukan kelemahan fatal,
pengguna kriptografi mulai menganjurkan menggunakan algoritma lain, seperti SHA-1
(klaim terbaru menyatakan bahwa SHA-1 juga cacat). Pada tahun 2004,
kecacatan-kecacatan yang lebih serius ditemukan menyebabkan penggunaan
algoritma tersebut dalam tujuan untuk keamanan jadi makin dipertanyakan.
Daftar isi:1. Sejarah dan kriptoanalisis 2. Efek nyata dari kriptoanalisis 3. Pengujian Integritas 4. Algortima 5. Pseudocode 6. Hash-hash MD5 7. Lihat pula 8. Pranala luar
1. Sejarah dan kriptoanalisis
MD5 adalah salah satu dari serangkaian algortima message digest yang
didesain oleh Profesor Ronald Rivest dari MIT (Rivest, 1994). Saat kerja analitik
menunjukkan bahwa pendahulu MD5 — MD4 — mulai tidak aman, MD5 kemudian
didesain pada tahun 1991 sebagai pengganti dari MD4 (kelemahan
MD4 ditemukan oleh Hans Dobbertin).
Pada tahun 1993, den Boer
dan Bosselaers
memberikan awal, bahkan terbatas, hasil dari penemuan pseudo-collision
dari fungsi kompresi MD5. Dua vektor
inisialisasi berbeda
Pada tahun 1996
Dobbertin mengumumkan sebuah kerusakan pada fungsi kompresi MD5. Dikarenakan
hal ini bukanlah serangan terhadap fungsi hash MD5 sepenuhnya, hal
ini menyebabkan para pengguna kriptografi menganjurkan pengganti seperti WHIRLPOOL,
SHA-1
atau RIPEMD-160.
Ukuran dari hash — 128-bit —
cukup kecil untuk terjadinya serangan brute force birthday attack. MD5CRK
adalah proyek distribusi mulai Maret 2004 dengan tujuan untuk menunjukka
kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan brute
force attack.
Bagaimanapun juga, MD5CRK berhenti
pada tanggal 17 Agustus 2004,
saat [[kerusakan hash]] pada MD5 diumumkan oleh Xiaoyun
Wang, Dengguo Feng, Xuejia
Lai dan Hongbo Yu [1][2].
Serangan analitik mereka dikabarkan hanya memerlukan satu jam dengan
menggunakan IBM P690 cluster.
Pada tanggal 1 Maret
2005,
Arjen
Lenstra, Xiaoyun Wang, and Benne
de Weger mendemontrasikan[3] kunstruksi dari dua buah sertifikat X.509
dengan public key
yang berbeda dan hash MD5 yang sama, hasil dari demontrasi
menunjukkan adanya kerusakan. Konstruksi tersebut melibatkan private key
untuk kedua public key tersebut. Dan beberapa hari setelahnya, Vlastimil
Klima menjabarkan[4] dan mengembangkan algortima, mampu membuat
kerusakan Md5 dalam beberapa jam dengan menggunakan sebuah komputer notebook.
Hal ini menyebabkan MD5 tidak bebas dari kerusakan.
Dikarenakan MD5 hanya menggunakan
satu langkah pada data, jika dua buah awalan dengan hash yang sama
dapat dibangun, sebuah akhiran yang umum dapat ditambahkan pada keduanya
untuk membuat kerusakan lebih masuk akal. Dan dikarenakan teknik penemuan
kerusakan mengijinkan pendahuluan kondisi hash menjadi arbitari
tertentu, sebuah kerusakan dapat ditemukan dengan awalan apapun. Proses
tersebut memerlukan pembangkitan dua buah file perusak sebagai file templat,
dengan menggunakan blok 128-byte dari tatanan data pada 64-byte batasan,
file-file tersebut dapat mengubah dengan bebas dengan menggunakan algoritma
penemuan kerusakan.
2. Efek nyata dari
kriptoanalisis
Saat ini dapat diketahui, dengan
beberapa jam kerja, bagaimana proses pembangkitan kerusakan MD5. Yaitu dengan
membangkitkan dua byte string dengan hash yang sama.
Dikarenakan terdapat bilangan yang terbatas pada keluaran MD5 (2128),
tetapi terdapat bilangan yang tak terbatas sebagai masukannya, hal ini harus
dipahami sebelum kerusakan dapat ditimbulkan, tapi hal ini telah diyakini
benar bahwa menemukannya adalah hal yang sulit.
Sebagai hasilnya bahwa hash
MD5 dari informasi tertentu tidak dapat lagi mengenalinya secara berbeda.
Jika ditunjukkan informasi dari sebuah public key, hash MD5
tidak mengenalinya secata berbeda jika terdapat public key
selanjutnya yang mempunyai hash MD5 yang sama.
Bagaimanapun juga, penyerangan
tersebut memerlukan kemampuan untuk memilih kedua pesan kerusakan. Kedua
pesan tersebut tidak dengan mudah untuk memberikan serangan preimage, menemukan pesan dengan hash
MD5 yang sudah ditentukan, ataupun serangan preimage kedua,
menemukan pesan dengan hash MD5 yang sama sebagai pesan yang
diinginkan.
Hash MD5 lama, yang dibuat
sebelum serangan-serangan tersebut diungkap, masih dinilai aman untuk saat
ini. Khususnya pada digital
signature lama masih dianggap layak pakai. Seorang user boleh
saja tidak ingin membangkitkan atau mempercayai signature baru
menggunakan MD5 jika masih ada kemungkinan kecil pada teks (kerusakan
dilakukan dengan melibatkan pelompatan beberapa bit pada bagian 128-byte pada
masukan hash) akan memberikan perubahan yang berarti.
Penjaminan ini berdasar pada posisi
saat ini dari kriptoanalisis. Situasi bisa saja berubah secara tiba-tiba,
tetapi menemukan kerusakan dengan beberapa data yang belum-ada adalah
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
Gambar 1. Satu operasi MD5 — MD5 terdiri
atas 64 operasi, dikelompokkan dalam empat putaran dari 16 operasi. F adalah fungsi nonlinear;
satu fungsi digunakan pada tiap-tiap putaran. Mi menujukkan blok 32-bit dari masukan pesan,
dan Ki
menunjukkan konstanta 32-bit, berbeda untuk tiap-tiap operasi.
Algortima MD5 yang utama beroperasi
pada kondisi 128-bit, dibagi menjadi empat word 32-bit, menunjukkan A,
B, C dan D. Operasi tersebut di inisialisasi
dijaga untuk tetap konstan. Algoritma utama kemudian beroperasi pada
masing-masing blok pesan 512-bit, masing-masing blok melakukan pengubahan
terhadap kondisi.Pemrosesan blok pesan terdiri atas empat tahap, batasan putaran;
tiap putasan membuat 16 operasi serupa berdasar pada fungsi non-linear F,
tambahan modular, dan rotasi ke kiri. Gambar satu mengilustrasikan satu
operasi dalam putaran. Ada empat macam kemungkinan fungsi F, berbeda
dari yang digunakan pada tiap-tiap putaran:
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 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 little-endian 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 := (5×i + 1) mod 16 else if 32 ≤ i ≤ 47 f := b
xor c xor d g := (3×i + 5) mod 16 else if 48 ≤ i ≤ 63 f := c
xor (b or ( not d)) g := (7×i) 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)
Catatan: Meskipun rumusan dari
yang tertera pada RFC 1321,
berikut ini sering digunakan untuk meningkatkan efisiensi:
(0 ≤ i ≤ 15): f := d xor (b and (c xor d)) (16 ≤ i ≤ 31): f
:= c xor (d and (b xor c))
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
Bahkan perubahan yang kecil pada
pesan akan (dengan probabilitas lebih) menghasilkan hash yang
benar-benar berbeda, misalnya pada kata "dog", huruf d diganti menjadi c:
MD5("The quick brown fox jumps over the lazy cog")
= 1055d3e698d289f2af8663725127bd4b
Hash dari panjang-nol
ialah:
MD5("") = d41d8cd98f00b204e9800998ecf8427e
7. Lihat pula
8. Pranala luar
8. 1. Informasi MD5
8. 2. Implementasi
·
(en)situs tentang MD5 — berisi tentang berbagai
macam implementasi pada berbagai bahasa pemrogaman
8. 3. Kerusakan
Kategori: Kriptografi
Bahasa lain: English,
Bahasa
Melayu, Español, Deutsch, Français, Italiano,
日本語, Русский,
Português,
العربية, Polski, Lainnya...
Dari Wikipedia Indonesia. Seluruh teks tersedia sesuai
dengan Lisensi
Dokumentasi Bebas GNU.
·
Sunting
Halaman ini terakhir diubah pada
2009-04-10 23:36:36
|
|
Algoritma
Kriptografi
Algoritma kriptografi adalah algoritma yang
berfungsi untuk melakukan tujuan dari ilmu kriptografi itu sendiri.
Algoritma kriptografi terdiri dari 2 bagian fungsi, yaitu :
Shannon mengatakan bahwan Algoritma kriptografi
harus memiliki kekuatan untuk melakukan konfusi dan difusi.
- KONFUSI (confusion).
Mengaburkan hubungan antara plaintext dan ciphertext.
Cara palingmudah untuk melakukan konfusi adalah menggunakan substitusi.
Konfusi menimbulkan kesulitan dalam usaha musuh untuk mencari keteraturan
dan pola statistik antara plaintext
dan ciphertext.
- DIFUSI (difusion),
Menyebarkan redudansi plaintext dengan menyebarkan masukan ke seluruh
ciphertext. Caa yang paling mudah untuk dapat melakukan difusi adalah
dengan menggunakan metode transposisi. Jika menggunakan difusi, akan
dibutuka waktu ang lebih lama untk emecakan sandi rahasia ini.
Sehingga dapat digunakan untuk mengamankan
informasi. Pada implementasinya sebuah algoritma sandi harus memperhatikan
kualitas layanan dari keseluruhan sistem dimana dia diimplementasikan.
Algoritma sandi yang handal adalah algoritma sandi yang kekuatannya terletak
pada kunci, bukan pada kerahasiaan algoritma itu sendiri. Teknik dan metode
untuk menguji kehandalan algoritma sandi adalah kriptanalisa.
Secara umum berdasarkan kesamaan kuncinya,
algoritma sandi dibedakan menjadi :
- ALGORITMA
KUNCI SIMETRIS.
- ALGORITMA
KUNCI ASIMETRIS.
Berdasarkan arah implementasi dan pembabakan
zamannya dibedakan menjadi :
- ALGORITMA
SANDI KLASIK.
- ALGORITMA
SANDI MODERN
Berdasarkan kerahasiaan kuncinya dibedakan
menjadi :
- ALGORITMA
SANDI KUNCI RAHASIA
- ALGORITMA
SANDI KUNCI PUBLIK
Mengapa algoritma kriptografi
banyak dipublikasikan ke masyarakat luas? Jika keseluruhan keamanan algoritma
tersebut tergantung kunci dan tidak satupun didasarkan oleh detail
algoritma, maka algoritma tersebut dapat dipublikasikan oleh semua orang agar
dapat dianalisis dan di modifikasi oleh semua orang.
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 : orang pertama (dalam semua protokol)
Bob : orang kedua (dalam semua protokol)
Carol : orang ketiga dalam protokol tiga-
atau empat- orang
Dave : orang keempat dalam protokol
empat-orang
Eve : penyadap (eavesdropper)
Trent : juru penengah (arbitrator) yang dipercaya
1.
Protokol Komunikasi dengan Sistem Kriptografi Simetri.
Protokol 1:
(1)
Alice dan Bob menyepakati algoritma kriptografi simetri yang akan
digunakan.
(2)
Alice dan Bob menyepakati kunci yang akan digunakan.
(3)
Alice menulis pesan plainteks dan mengenkripsinya dengan kunci menjadi
cipherteks.
(4)
Alice mengirim pesan cipherteks kepada Bob.
(5)
Bob mendekripsi pesan cipherteks dengan kunci yang sama dan membaca
plainteksnya.
·
Eve mendengar semua percakapan antara Alice dan Bob pada protokol ini.
- jika Eve
menyadap transmisi pesan pada langkah (4), ia harus mencoba mengkriptanalisis
cipherteks untuk memperoleh plainteks tanpa mengetahui kunci.
-
jika ia mendengar pembicaraan pada langkah (1)dan (2),
maka ia mengetahui algoritma dan kunci yang digunakan, sehingga ia dapat
mendekripsi cipherteks dengan kunci tsb.
·
Protokol kriptografi di atas tidak bagus karena
kunci harus tetap rahasia sebelum, sepanjang, dan setelah protokol. Langkah (1)
dapat dilakukan dalam mode publik, namun langkah (2) harus dilakukan dalam mode
rahasia. Sistem kriptografi kunci-publik dapat memecahkan masalah distribusi
kunci ini.
2.
Protokol Komunikasi dengan Sistem Kriptografi Kunci-Publik.
Protokol
2:
(1)
Alice dan Bob menyepakati algoritma kriptografi kunci-publik yang akan
digunakan.
(2)
Bob mengirimi Alice kunci publiknya (kunci publik Bob).
(3)
Alice mengenkripsi pesannya dengan kunci publik Bob kemudian
mengirimkannya ke Bob
(4)
Bob mendekripsi pesan dari Alice dengan kunci rahasia miliknya (kunci
rahasia Bob).
·
Pada umumnya, pengguna di jaringan menyepakati algoritma kriptografi
kunci-publik yang digunakan. Setiap pengguna jaringan mempunyai kunci publik
dan kunci rahasia, yang dalam hal ini kunci publik dipublikasikan melalui
basisdata yang dapat diakses bersama. Dengan demikian, protokol kriptografi
kunci-publik menjadi lebih sederhana sebagai berikut:
Protokol 3:
(1)
Alice mengambil kunci publik Bob dari basisdata kunci-publik.
(2)
Alice mengenkripsi pesannya dengan kunci publik Bob
kemudian mengirimkannya kepada Bob.
(3)
Bob mendekripsi pesan dari Alice dengan kunci rahasia
miliknya (kunci rahasia Bob).
·
Eve yang mendengar pembicaraan selama protokol ini akan mendapatkan
kunci publik Bob, tetapi Eve tidak dapat mendekripsi cipherteks karena ia tidak
mengetahui kunci rahasia Bob.
·
Dalam dunia nyata, sistem kriptografi kunci-publik bukanlah pengganti
sistem kriptografi sismetri. Sistem kriptografi kunci-publik tidak digunakan
untuk mengenkripsi pesan, melainkan untuk mengenkripsi kunci pada sistem
kriptografi simetri.
·
Dengan sistem kriptogfai kunci-publik, maka pertukaran kunci pada
sistem kriptografi simetri dapat dilakukan dengan protokol kriptografi
kunci-publik sebagai berikut:
Protokol 4:
(1)
Bob mengirimi Alice kunci publiknya.
(2)
Alice membangkitkan kunci simetri K, mengenkripsikannya dengan
kunci publik (PK) Bob, dan mengirimkannya ke Bob,
EPK(K)
(3)
Bob mendekripsi pesan dari Alice dengan menggunakan
kunci rahasianya (SK) untuk mendapatkan kembali kunci simetri K,
DSK(EPK(K)) = K
(4)
Baik Alice dan Bob dapat saling berkirim pesan dengan
sistem kriptografi simetri dengan menggunakan kunci K.
· Dua gabungan sistem
kriptografi yang digunakan pada protokol 4 di atas disebut hybrid
cryptosystem dan kunci sismetri yang dipertukarkan disebut session key.
·
Dengan protokol 4 di atas, kita katakan bahwa sistem kriptografi
kunci-publik berhasil memecahkan masalah manajemen kunci yang sangat penting,
yaitu pertukaran kunci.
3.
Protokol untuk Sidik Dijital (Digital Signature)
a. Menandatangani
Dokumen dengan Sistem Kriptografi Simetri dan Seorang Juru Penengah.
Alice ingin menandatangani
dokumen digital (pesan atau arsip) dan mengirimkannya ke Bob. Ia meminta Trent
sebagai juru penengah (misalnya pengacara) antara Alice dan Bob (diperlukan
jika sewaktu-waktu ada pertengkaran antara Alice dan Bob). Trent akan
memberikan sidik berupa sertifikasi terhadap dokumen yang dikirim oleh Alice.
Sistem kriptografi yang digunakan adalah simetri. Trent memberikan kunci
rahasia KA kepada Alice dan kunci rahasia KB kepada
Bob (KA dan KB berbeda).
Protokol
5:
(1)
Alice mengenkripsi dokumen dengan KA
dan mengirimkannya kepada Trent.
(2)
Trent mendekripsi dokumen dari Alice dengan KA.
(3)
Trent menambahkan pada dokumen yang sudah didekripsi
sebuah pernyataan sertifikasi bahwa dia telah menerima dokumen itu dari Alice,
kemudian mengenkripsi keseluruhannya dengan KB.
(4)
Trent mengirim cipherteks yang dihasilkan kepada Bob.
(5)
Bob mendekripsi cipherteks dengan KB.
Ia membaca dokumen dan sertifikasi dari Trent bahwa Alice yang mengirimkan
dokumen tersebut.
·
Karakteristik pemberian tanda tangan dengan
prtotokol 5 adalah sbb:
1.
Sidik (signature) pasti otentik, karena Trent
adalah juru penegah yang dipercaya, Trent mengetahui bahwa dokumen dari Alice.
Sertifikasi dari Trent berlaku sebagai bukti bagi Bob.
2.
Sidik tidak dapat digunakan lagi untuk dokumen yang
lain. Jika Bob menggunakan sertifikasi dari Trent untuk dokumen yang lain, maka
kecurangan Bon ini dapat diketahui oleh Trent sbb:
-
Trent meminta
dokumen tersebut dari Bob.
-
Trent
mengenkripsi dokumen tersebut dengan KA dan membandingkannya
dengan cipherteks dari Alice.
-
Jika hasil
enkripsi dokumen dari Bob tidak sama dengan cipherteks dari Alice, maka Bob
telah mekakukan kecurangan.
3.
Dokumen yang sudah ditandatangani tidak dapat diubah.
Trent dapat membuktikan bahwa dokumen sudah berubah dengan cara yang sama
seperti 2 di atas.
4.
Sidik tidak dapat disangkal. Jika Alice menyangkal
bahwa dia yang mengirim dokumen, sertifikasi dari Trent dapat menyanggah
sangkalan Alice.
·
Protokol 5 di atas tidak praktis karena
membutuhkan pihak ketiga (Trent) untuk memberikan sertifikasi keabsahan dokumen
dan prosesnya memakan waktu.
b. Menandatangani Dokumen dengan Sistem
Kriptografi Kunci-Publik.
Protokol 6:
(1)
Alice mengenkripsi dokumen dengan kunci rahasianya. Ini
sekaligus juga berarti Alice telah memberikan sidik (signature) pada
dokumennya.
(2)
Alice mengirim dokumen yang terenkripsi kepada Bob.
(3)
Bob mendekripsi dokumen dengan kunci publik Alice. Ini
sekaligus juga berarti Bob telah memverifikasi sidik pada dokumen.
·
Protokol 6 tidak membutuhkan pihak ketiga
(Trent) untuk memberikan tandatangan (Trent hanya diperlukan untuk
mensertifikasi bahwa kunci publik Alice memang benar milik Alice).
·
Protokol 6 memiliki karakteristik yang sama seperti pada protokol 5.
c. Menandatangani Dokumen dengan Sistem
Kriptografi Kunci-Publik dan Fungsi Hash Satu-Arah
Protokol 7:
(1)
Alice meringkas dokumennya menjadi message digest dengan fungsi hash satu-arah.
(2)
Alice mengenkripsi message digest dengan kunci rahasianya. Hasil
enkripsinya disertakan (embedded) pada dokumen. Ini berarti Alice telah
memberi sidik dijital pada dokumennya.
(3)
Alice mengirim dokumen yang sudah diberi sidik dijital kepada Bob.
(4)
Bob meringkas dokumen dari Alice menjadi mesaage digest dengan
fungsi hash yang sama. Bob mendekripsi sidik dijital yang disertakan
pada dokumen Alice. Jika hasil dekripsinya sama dengan message digest
yang dihasilkan, maka sidik dijital tersebut sah.
·
Jika dokumen yang sama ingin ditandatangani oleh
dua orang (Alice dan Bob), maka orang ketiga, Carol, dibutuhkan pada proses
verifikasi. Protokolnya adalah sebagai berikut:
Protokol
8:
(1)
Alice memberi sidik dijital pada message digest
dari dokumen.
(2)
Bob memberi sidik dijital pada message digest
dari dokumen.
(3)
Bob mengirimkan sidik dijitalnya kepada Alice.
(4)
Alice mengirim dokumen yang sudah diberi sidik
dijitalnya dan sidik dijital dari Bob kepada Carol.
(5)
Carol memverifikasi sidik dijital Alice dan sidik
dijital Bob (Carol mengetahui kunci publik Alice dan kunci publik Bob).
4.
Protokol untuk Sidik Dijital dengan Enkripsi
· Protokol ini dapat
dianalogikan seperti pengiriman surat yang menggunakan amplop tertutup. Tanda
tangan pada surat memberikan bukti kempemilikan, hal ini sama dengan fungsi
sidik dijital pada pada dokumen elektrinis. Sedangkan amplop memberikan
perlindungan keamanan (privacy), hal ini sama dengan fungsi enkripsi
pada dokumen.
·
Sidik dijital diberikan dengan menggunakan kunci rahasia pengirim
(lihat protokol 6) dan dokumen dienkripsi dengan kunci publik penerima.
·
Protokolnya adalah sbb:
Protokol 9:
(1)
Alice menandatangi dokumen atau pesan (M) dengan menggunakan kunci rahasianya (SK-A).
SSK-A(M)
(2)
Alice mengenkripsi dokumen yang sudah ditandatangi dengan kunci publik Bob (PK-B) dan
mengirimkannya kepada Bob
EPK-B(SSK-A(M))
(3)
Bob mendekripsi cipherteks yang diterima dengan kunci
rahasianya (SK-B).
DSK-B(EPK-B(SSK-A(M)))
= SSK-A(M))
(4)
Bob melakukan verifikasi dengan mendekripsi hasil pada
langkah 3 dengan menggunakan kunci publik Alice dan sekaligus mendapatkan
kembali dokumen yang belum dienkripsi.
VPK-A( SSK-A(M))
= M
·
Menandatangani dokumen sebelum
mengenkripsikannya adalah cara yang alamiah. Dalam kehidupan sehari-hari, kita
menulis surat, menandatanganinya, dan memasukkannya ke dalam amplop. Bila Alice
memasukkan surat ke dalam amplop, kemudian menandatangani amplop, maka
keabsahannya diragukan. Jika Bob memperlihatkan surat Alice tersebut kepada
Carol, maka Carol mungkin menuduh Bob berbohong tentang isi surat tersebut.
·
Alice tidak harus menggunakan menggunakan kunci
publik/kunci rahasia yang sama untuk enkripsi dan tanda tangan. Alice dapat
menggunakan dua pasang kunci: sepasang untuk enkripsi dan sepasang untuk
pemberian tanda tangan.
·
Misalkan Bob ingin mengkonfirmasi bahwa dia
telah menerima dokumen dari Alice. Maka, Bob mengirimkan konfirmasi “tanda
terima” kepada Alice. Protokol pengiriman pesan tanda terima adalah sebagai
berikut:
Protokol
10:
(1)
Alice menandatangi dokumen atau pesan (M)
dengan menggunakan kunci rahasianya (SK-A),
mengenkripsikannya dengan kunci publik Bob (PK-B) dan mengirimkannya
kepada Bob
EPK-B(SSK-A(M))
(2)
Bob mendekripsi cipherteks yang diterima dengan kunci
rahasianya (SK-B), memverifikasi sidik dijital dengan kunci publik Alice
dan sekaligus mendapatkan kembali dokumen yang belum dienkripsi.
VPK-A(DSK-B(EPK-B(SSK-A(M))))
= M
(3)
Bob menandatangani dokumen (M) dengan kunci
rahasianya (SK-B), mengenkripsikannya dengan kunci publik Alice (PK-A),
dan mengirimkannya ke Alice.
EPK-A(SSK-B(M))
(4)
Alice mendekripsi dokumen dengan kunci rahasianya (SK-A)
dan memverifikasi sidik dijital dengan kunci publik Bob (PK-B).
VPK-B(DSK-A(EPK-A(SSK-B(M))))
= M ’
Jika M ’ yang
dihasilkan sama dengan dokumen yang dikirim oleh Alice (M), maka Alice
tahu bahwa Bob menerima dokumennya dengan benar.
Algoritma
Asimetris [Public Key]
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
- KUNCI PUBLIK adalah
kunci yang digunakan untuk melakukan proses enkripsi data. Kunci ini
disebut publik karena siapapun dapat mengetahuinya.
- 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.




Tidak ada komentar:
Posting Komentar