Pengenalan kepada kriptografi


Pengenalan kepada kriptografi
Kriptografi adalah berasal dari perkataan crypto bermaksud rahsia dan graf bermaksud tulisan. Oleh itu di dalam sistem rangkaian kriptografi dikenali sebagai tulisan rahsia yang digunakan untuk memastikan tidak ada pengguna yang tidak sah memahami mesej yang dihantar.

Mekanisme Kriptografi

1. Plaintext – Plaintext (message) merupakan pesanan asal yang ingin dikirimkan dan keselamatan data tidak dapat dijamin.

2. Ciphertext – Ciphertext merupakan mesej yang telah enkripsi (encryption) sehingga siap untuk dikirimkan.

3. Cipher – Cipher merupakan algoritma matematik yang digunakan untuk proses enkripsi plaintext menjadi ciphertext.

4. Enkripsi – Enkripsi (encryption) merupakan proses yang dilakukan untuk penyulitan plaintext sehingga menjadi ciphertext.

5. Dekripsi – Dekripsi (decryption) merupakan proses yang dilakukan untuk memperoleh kembali plaintext dari ciphertext.

6. Kriptosistem – Kriptosistem merupakan sistem yang dirancang untuk memastikan keselamatan suatu sistem informasi dengan menggunakan kaedah kriptografi.

Rajah 1 menunjukkan urutan proses kriptografi.

Rajah 1: Mekanisme kriptografi.

Rajah 2 menunjukkan urutan proses kriptografi menggunakan kunci.

Rajah 2: Kriptografi berbasis kunci.

Jenis Kriptografi

Terdapat dua jenis kriptografi:

Kriptografi kekunci rahsia (private key)
Menggunakan satu kekunci rahsia yang diketahui oleh pengirim dan penerima. Proses pengengkripan dilakukan oleh pengirim dan proses pendekripan dilakukan oleh penerima dengan mengunakan kekunci yang sama (symmetric / bersimetri). Cara ini mempunyai masalah kerana kekunci rahsia perlu dihantar dahulu kepada penerima sebelum mesej dihantar.

Kriptografi kekunci awam (public key)
Pada tahun 1976, Diffie dan Hellman telah mencadangkan cara pengengkripan yang baru, setiap pengguna akan mempunyai satu kunci awam dan satu kunci peribadi, dipanggil sistem kunci awam (public key system) atau sistem pengengkripan asymmetric.
Dikenali sebagai kunci awam kerana kunci ini diketahui umum dan kunci rahsia akan dirahsiakan oleh pengguna. Pengengkripan boleh dilakukan menggunakan sama ada kunci awam atau kunci peribadi dan pendekripan akan menggunakan kunci yang berlawanan (engkrip dengan kunci peribadi, dekrip dengan kunci awam dan sebaliknya).
Proses algoritma bersimetri adalah lebih pantas daripada proses tak bersimetri. Dalam suasana sebenar, proses bersimetri dan tak bersimetri sering digunakan bersama. Sistem kunci tak bersimetri (asymmetric) selalunya menggunakan kaedah matematik untuk menjana kunci dan membuat pengengkripan. Dua kunci berlainan akan dibina yang berlainan tetapi ada hubungan antara mereka.

P = D(kpriv, E(Kpub,P)) atau
P = D(Kpub, E(kpriv,P))

Contoh:
Rozaimy ingin menghantar mesej kepada Amin. Rozaimy boleh mengenkrip mesej menggunakan kunci awam Amin (dalam kes ini, Amin terlebih dahulu telah mengirim kunci awam miliknya kepada Rozaimy) dan Amin pula akan dekrip menggunakan kunci rahsianya (peribadi). Penggunaan kunci awam Amin tidak boleh dekrip maklumat tersebut. Ini untuk memastikan hanya kekunci rahsia Amin dapat membuka mesej yang menggunakan kekunci awam miliknya.

Kaedah kriptografi dengan menggunakan kaedah kunci awam

1. Kaedah penyulitan dan penyahsulitan membabitkan mengira nilai suatu nombor dikuasakan suatu nombor,
contoh: algoritma RSA:
teks sulit (utk mesej m) c=me mod n,
dinyahsulitkan m=cd mod n,
di mana d kekunci rahsia dan e kekunci awam – kekompleksan tinggi bagi penyulitan dan penyahsulitan

2. Kekunci berkait: ed = 1 mod (p-1)(q-1) dan n = pq di mana p dan q ialah nombor-nombor perdana besar; penggodaman membabitkan penekaan faktor perdana bagi n – kekompleksan tekaan rambang ~ 2N/2 jika n N-bit . Nombor perdana adalah nombor yang boleh dibahagikan dengan nombornya sendiri seperti 1, 2, 3, 5, 7, 11, 13, 17 dan sebagainya.

3. Tak perlu sampaikan kekunci awam secara rahsia. Ini kerana kekunci awam hanya berfungsi untuk penyulitan maklumat dan tidak boleh digunakan penyahsulitan maklumat. Maklumat kekunci awam kadang-kadang disimpan oleh pihak ketiga yang bertugas menyimpan kekunci awam setiap pihak yang berdaftar.

Algorithma RSA

RSA adalah singkatan singkatan nama tiga pereka RSA iaitu R.L. Riverst, A. Shamir dan L. Adleman. RSA menggunakan sistem kunci awam untuk pengengkripan; katakan kunci e untuk engkrip dan kunci d untuk dekrip. Kunci-kunci tersebut boleh digunakan silih berganti. Pengengkripan dilakukan dengan formula berikut:

C = Pe mod n

Dan pendekripan menggunakan formula berikut:

P = Cd mod n

Di mana P adalah mesej plaintext, C adalah mesej ciphertext, e & d adalah kunci awam dan rahsia (secret). N adalah satu nilai pilihan pengguna asal.

Terdapat tiga bahagian utama penggunaan sistem pengengkripan RSA; penjanaan kunci, pengengkripan dan pendekripan.

Penjanaan kunci

1. Nilai n didapati dengan mendarabkan dua nombor p dan q (n=p*q). P dan Q mestilah nombor perdana yang dipilih secara rawak. P dan Q sebaiknya nombor perdana yang besar.

2. Kunci e dipilih pada satu nombor yang secara relatifnya nombor perdana (relatively prime) kepada (p-1)*(q-1) dan lebih kecil daripadanya.

3. Kunci d pula didapati dengan menyelesaikan persamaan berikut:
e * d = 1 mod (p – 1) * (q – 1)
atau
d = (X (p – 1)(q – 1) + 1)/e

4. Selepas penjanaan kunci lengkap, kunci e dan n akan diberi kepada umum, kunci d akan dirahsiakan, nilai p dan q harus dimusnahkan.

Contoh 1:
Penjanaan Kunci:
Katakan R= 5, dan nilai (p,q) yang dipilih adalah (11,13).
n = 11*13 = 143
Nilai e adalah satu nombor yang relatif perdana kepada (11-1)*(13-1)=120, katakanlah 11
Nilai d adalah yang memenuhi persamaan 11*d = 1 mod 120 iaitu 11.
Kiraan:
d = (1 (p – 1)(q – 1) + 1)/e masukkan nilai X = 1. e = 11
d = (1(120) + 1)/11
d = 121/11
d = 11
Pengengkripan:

C = 511 mod 143 = 60
Kiraan:
48828125 mod 143
48828125 = 341455 (143) + 60 = 48828065 + 60
Pendekripan:
P = 6011 mod 143 = 5
Kiraan:
36279705600000000000 = 253704234965034965 (143) + 5
= 36279705599999999995 + 5

Contoh 2:
Penjanaan Kunci:
Katakan R= 7, dan nilai (p,q) yang dipilih adalah (11,13).
n = 11*13 = 143
Nilai e adalah satu nombor yang relatif perdana kepada (11-1)*(13-1)=120, katakanlah 11
Nilai d adalah yang memenuhi persamaan 11*d = 1 mod 120 iaitu 11.
Pengengkripan:
C = 711 mod 143 = 106
Kiraan:
1977326743 mod 143

1977326743 = 13827459 (143) + 106 = 1977326637 + 106

Pendekripan:
P = 10611 mod 143 = 7
Kiraan:
18982985583354248390656 mod 143 = 132748150932547191543(143) + 7

Terminology

Encryption Proses mengekod maklumat supaya maknanya tidak jelas
Decription Menukar maklumat yang telah dikod ke asal
Plaintext Maklumat asal yang belum dikod
Ciphertext Maklumat yang telah dikodkan
cryptography Penggunaan enkripsi untuk menyembunyikan teks asal
cryptanalysis Ilmu berkaitan memecahkan kod orang lain
cryptology Pengkajian tentang kod, termasuklah kedua-dua yang sebelumnya

criptographi


Sekilas Tentang Enkripsi Blowfish

Anjar Syafari
Clasicboy_no8@yahoo.com

http://ansitea.blogspot.com

Dalam kemajuan teknologi komputer pada saat ini berkembang dengan pesatnya seiring dengan makin kompleknya sistem komputer dan kemampuan komputer untuk berkomunikasi dengan komputer lain dengan adanya jaringan.Hal ini disatu sisi menguntungkan dalam idistribusi sumber daya yang ada tetapi disatu sisi menjadi masalah apabila ada file yang bersifat rahasia dapat dilihat oleh pihak yang tidak berkompenten. Salah satu cara untuk melindungi file adalah dengan enkripsi mengunakan algoritma blowfish.

Pengertian Dasar

Kriptografi dalam sejarahnya tercatat dipergunakan secara terbatas oleh bangsa Mesir 4000 tahun lalu. Kriptografi (Cryptography) berasal dari dua kata yaitu “Crypto & graphy” yang dalam sudut bahasa “Crypto” dapat diartikan rahasia (secret) dan “graphy” dapat diartikan tulisan (writing) jadi Kriptografi (Cryptography) dapat diartikan sebagai suatu ilmu atau seni untuk mengamankan pesan agar aman dan dilakukan oleh “Cryptographer”. Orang yang melakukan enkripsi terhadap suatu pesan atau praktisi kriptogragi disebut “Cryptographer”.Sebuah pesan yang tidak disandikan atau dienkripsi disebut sebagai plaintext atau disebut juga sebagai cleartext. Sedangkan pesan yang telah disandikan dengan sebuah algoritma kriptografi disebut sebagai ciphertext.Proses untuk mengubah plaintext ke chipertext disebut encryption atau encipherment. Sedang proses mengubah chipertext ke plaintext disebut decryption atau decipherment. Secara sederhana proses tersebut digambarkan sebagai berikut :

Fasilitas untuk mengkonversikan sebuah plaintext ke ciphertext atau sebaliknya disebut Cryptographic system atau Cryptosystem dimana sistem tesebut terdiri dari algoritma–algorima tertentu yang tergantung pada sistem yang digunakan. Algoritma kriptografi (cryptographic algorithm) disebut cipher yang merupakan persamaan matematik yang digunakan dalam proses enkripsi dan deskripsi dimana proses tersebut diatur oleh satu atau lebih kunci kriptografi. Kunci-kunci tersebut secara umum digunakan untuk proses pengenkripsian dan pendekripsian tidak perlu identik, tergantung sistem yang digunakan.

Proses enkrisi dan deskrisi secara matematis diterangkan sebagai berikut :

EK (M) = C (Proses Enkripsi)
DK (C) = M (Proses Deskripsi)

Keterangan :

EK : Enkripsi.
DK : Deskripsi.
M : Message (Pesan sebelum dienkripsi).
C : Cipher (Pesan setelah dienkrisi).

Secara umum algoritma kriptografi diciptakan oleh orang yang berpengalaman dalam bidang keamanan data dan mungkin pernah membuka sebuah algoritma kriptografi tanpa bantuan kunci. Pelaku yang melakukan tindakan memecahkan ciphertext tanpa bantuan kunci disebut Crytpanalyst. Sedangkan Ilmu dan seni membuka (breaking) ciphertext tanpa bantuan kunci disebut Cryptanalysis.

Tipe-tipe Cipher :

Tujuan dari adanya enkripsi adalah untuk meningkatkan keamanan data tetapi juga berfungsi untuk :

1. Melindungi data agar tidak dapat dibaca oleh orang-orang yang tidak berhak.
2. Mencegah agar orang-orang yang tidak berhak, menyisipkan atau mengahapus data.

Sedangkan tujuan dari sistem kriptografi adalah sebagai berikut :

1. Confidentiality
Memberikan kerahasiahan pesan dan menyimpan data dengan menyembunyikan informasi lewat teknik-teknik enkripsi.

2. Message Integrity
Memberikan jaminan untuk tiap bagian bahwa pesan tidak akan mengalami perubahan dari saat ia dibuat sampai saat ia dibuka.

3. Non-repudiation
Memberikan cara untuk membuktikan bahwa suatu dokumen datang dari seseorang apabila ia mencoba menyangkal memiliki dokumen tersebut.

4. Authentication
Memberikan dua layanan. Pertama mengidentitifikasi keaslian suatu pesan dan memberikan jaminan keontentikannya. Kedua untuk menguji identitas seseorang apabila ia akan memasuki sebuah sistem.

Terdapat tiga kategori enkripsi yaitu :

1. Kunci enkripsi rahasia, dalam hal ini terdapat sebuah kunci yang digunakan untuk mengikrisi dan juga sekaligus mendeskripsikan informasi.
2. Kunci enkripsi public, dalam hal ini terdapat dua kunci yang digunakan, satu untuk proses enkripsi, satu lagi untuk proses deskripsi.
3. Fungsi one-way, dimana informasi dienkripsi untuk menciptakan “signature” dari informasi asli yang bisa digunakan untuk keperluan autentifikasi.

Dalam Cryptosystem menurut teknik enkripsinya dapat digolongkan menjadi dua buah, yaitu :

1. Symmetric Cryptosystem ( Enkripsi Konvensional)
Dalam symmetric cryptosystem,kunci yang digunakan dalam proses enkripsi dan dekripsi adalah sama atau pada prinsipnya identik. Kunci ini pun bisa diturunkan dari kunci lainnya. Oleh karena itu sistem ini sering disebut secret-key ciphersystem.

Jumlah kunci yang dibutuhkan umumnya adalah :

nC2= n.(n-1)
——–
2
Dimana n adalah bnyaknya pengguna.
Kunci yang menggunakan teknik enkripsi ini harus betul-betul dirahasiakan.

Gambaran proses enkripsi konvensional :

2. Assymmetric Cryptosystem (Enkripsi public-key)
Dalam Assymmetric cryptosystem,kunci yang digunakan terdapat dua buah. Satu kunci yang dapat dipublikasikan deisebut kunci publik (public key), satu lagi kunci yang harus dirahasiakan disebut kunci privat (private key). Secara sedehana proses tersebut diterangkan sebagai berikut :
- A mengirimkan pesan kepada B.
- A menyandikan pesannya dengan menggunakan kunci publik B.
- Bila B ingin membaca pesan dari A, ia harus menggunakan kunci privatnya
untuk mendekripsikan pesan yang tersandikan itu.

Gambaran proses enkripsi public-key :

Dalam Cryptosystem yang baik harus memiliki karekteristik sebagai berikut :

• Keamanan sistem terletak pada kerahasiaan kunci dan bukan pada kerahasiaan algoritma yang dipergunakan.
• Cryptosystem yang baik memiliki ruang kunci (keyspace) yang besar.
• Cryptosystem yang baik akan menghasilakn ciphertext yang terlihat acak dalam seluruh tes statistik yang dilakukan terhadapnya.
• Cryptosystem yang baik mampu menahan seluruh serangan yang dikenal sebelumnya.

Bila salah satu hal diatas tidak dimiliki oleh sebuah Cryptosystem maka kemungkinan besar pesan yang di enkripsi oleh Cryptosystem dapat dibongkar sehingga isi dari pesan tersebut dapat dibaca oleh orang yang tidak berkepentingan. Salah satu Cryptosystem yang dapat dibongkar (broken) adalah LOKI 97, salah satu kandidat Advanced Encryption Standard (AES). LOKI 97 mempunyai kelemahan dalam persamaan matematika dan dalam f-functinnya.

Pengenalan Blowfish

Blowfish alias “OpenPGP.Cipher.4″ merupakan enkripsi yang termasuk dalam golongan Symmetric Cryptosystem , metoda enkripsinya mirip dengan DES (DES-like Cipher) diciptakan oleh seorang Cryptanalyst bernama Bruce Schneier Presiden perusahaan Counterpane Internet Security, Inc (Perusahaan konsultan tentang kriptografi dan keamanan Komputer) dan dipublikasikan tahun 1994. Dibuat untuk digunakan pada komputer yang mempunyai microposesor besar (32-bit keatas dengan cache data yang besar).

Blowfish dikembangkan untuk memenuhi kriteria desain yang cepat dalam implementasinya dimana pada keadaan optimal dapat mencapai 26 clock cycle per byte, kompak dimana dapat berjalan pada memori kurang dari 5 KB, sederhana dalam algoritmanya sehingga mudah diketahui kesalahannya, dan keamanan yang variabel dimana panjang kunci bervariasi (minimum 32 bit, maksimum 448 bit, Multiple 8 bit, default 128 bit).Blowfish dioptimasikan untuk berbagai aplikasi dimana kunci tidak sering berubah, seperti pada jaringan komunikasi atau enkripsi file secara otomatis. Dalam pengimplementasiannya dalam komputer bermicroprosesor 32-bit dengan cache data yang besar (Pentium dan Power PC) Blowfish terbukti jauh lebih cepat dari DES. Tetapi Blowfish tidak cocok dengan aplikasi dengan perubahan kunci yang sering atau sebagai fungsi hast satu arah seperti pada aplikasi packet switching. Blowfish pun tidak dapat digunakan pada aplikasi kartu pintar (smart card) karena memerlukan memori yang besar.

Blowfish termasuk dalam enkripsi block Cipher 64-bit dangan panjang kunci yang bervariasi antara 32-bit sampai 448-bit.Algoritma Blowfish terdiri atas dua bagian :

1. Key-Expansion
Berfungsi merubah kunci (Minimum 32-bit, Maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168 byte.

2. Enkripsi Data
Terdiri dari iterasi fungsi sederhana (Feistel Network) sebanyak 16 kali putaran. Setiap putaran terdiri dari permutasi kunci-dependent dan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan (addition) dan XOR pada variabel 32-bit. Operasi tambahan lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.

Algoritma Blowfish

Blowfish menggunakan subkunci yang besar. Kunci tersebut harus dihitung sebelum enkripsi atau dekripsi data.

Blowfish adalah algoritma yang menerapkan jaringan Feistel (Feistel Network) yang terdiri dari 16 putaran. Input adalah elemen 64-bit,X.Untuk alur algoritma enkripsi dengan metoda Blowfish dijelaskan sebagai berikut :

1. Bentuk inisial P-array sebanyak 18 buah (P1,P2,…………..P18) masing-msing bernilai 32-bit.
Array P terdiri dari delapan belas kunci 32-bit subkunci :

P1,P2,…….,P18

2. Bentuk S-box sebanyak 4 buah masing-masing bernilai 32-bit yang memiliki masukan 256.

Empat 32-bit S-box masing-masing mempunyai 256 entri :

S1,0,S1,1,………………..,S1,255

S2,0,S2,1,………………..,S2,255

S3,0,S3,1,………………..,S3,255

S4,0,S4,1,………………..,S4,255

3. Plaintext yang akan dienkripsi diasumsikan sebagai masukan, Plaintext tersebut diambil sebanyak 64-bit, dan apabila kurang dari 64-bit maka kita tambahkan bitnya, supaya dalam operasi nanti sesuai dengan datanya.

4. Hasil pengambilan tadi dibagi 2, 32-bit pertama disebut XL, 32-bit yang kedua disebut XR.

5. Selanjutnya lakukan operasi XL = XL xor Pi dan XR = F(XL) xor XR

6. Hasil dari operrasi diatas ditukar XL menjadi XR dan XR menjadi XL.

7. Lakukan sebanyak 16 kali, perulangan yang ke-16 lakukan lagi proses penukaran XL dan XR.

8. Pada proses ke-17 lakukan operasi untuk XR = XR xor P17 dan XL = XL xor P18.

9. Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit kembali.

Untuk lebih jelas lagi dapat dilihat digambar dibawah ini :

Gambar Algoritma Blowfish

FlowChart Blowfish

Fungsi F adalah sebagai berikut :
Bagi XL, menjadi empat bagian 8-bit : a,b,c dan d.

F(XL)=((S1,a + S2,b mod 232)xor S3,c) + S4,c mod 232

Subkunci dihitung menggunakan algoritma Blowfish, metodanya adalah sebagai berikut :

1. Pertama-tama inilialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri atas digit hexadesimal dari Pi.

2. XOR P1 dengan 32-bit pertama kunci, XOR P2 dengan 32-bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18).Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci.

3. Enkrip semua string nol dengan algoritma Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2).

4. Ganti P1 dan P2 dengan keluaran dari langkah (3).

5. Enkrip keluaran dari langkah (3) dengan algoritma Blowfish dengan subkunci yang sudah dimodifikasi.

6. Ganti P3 dan P4 dengan keluaran dari langkah (5).

7. Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontiyu dari algoritma Blowfish.

Gambar fungsi F dalam Blowfish

FlowChart F Fungsi

Total yang diperlukan adalah 521 iterasi untuk menghasilkan semua subkunci yang dibutuhkan. Aplikasi kemudian dapat menyimpan subkunci ini dan tidak membutuhkan langkah-langkah proses penurunan berulang kali, kecuali kunci yang digunakan berubah.

Untuk deskripsi sama persis dengan enkripsi, kecuali pada P-array (P1,P2,……..,P18) digunakan dengan urutan terbalik atau di inverskan.

Keamanan Blowfish

Sampai saat ini algoritma Blowfish belum ditemukan kelemahan yang berarti hanya adanya weak key dimana dua entri dari S-box mempunyai nilai yang sama. Belum ada cara untuk mengecek weak key sebelum melakukan key expansion, tetapi hal ini tidak berpengaruh terhadap hasil enkripsi.

Hasil enkripsi dengan algoritma Blowfish sangat tidak mungkin dan tidak praktis untuk di terjemahkan tanpa bantuan kunci. Sampai kini belum ada Cryptanalysis yang dapat membongkar pesan tanpa kunci yang enkripsi oleh Blowfish. Agar aman dari pembongkaran pesan maka dalam algoritmanya harus menggunakan 16 putaran agar pesan tersebut tidak dapat dibongkar.

Algoritma Blowfish pun dapat digabungkan dengan algoritma-algoritma enkripsi yang lain dalam pengkripsian sebuah pesan untuk lebih menjamin isi dari pesan tersebut.

Aplikasi

Dalam pengimplementasianya blowfish dapat menggunakan bermacam bahasa pemograman seperti Delphi, Visual Basic, Bahasa C,C++ ,dsb. Hal ini dikarenakan algoritma Blowfish dapat dilihat secara bebas sehingga mudah diimplentasikan dalam segala bahasa pemograman berbeda dengan algoritma enkripsi lain yang tidak bebas untuk dilihat sehingga sulit untuk diimplementasikan (contohnya adalah RC2 dan RC4 yang menjadi hak cipta perusahaan RSA).

Bahkan Blowfish dapat diimplentasikan dalam bahasa JavaScript dan Java, bahasa yang umum digunakan dalam sebuah web. Banyak aplikasi yang memerlukan keamanan data menggunakan algoritma blowfish sebagai peng-enkripsi datanya seperti aplikasi untuk e-mail, Text, Password, dsb. Untuk lebih jelas apliksi yang menggunakan algoritma blowfish dapat dilihat di website resminya di http://www.Counterpane.com .

Program Aplikasi Blowfish

Cryptosystem Blowfish yang ditampilkan menggunakan JavaScript sebagai bahasa Pemogramannya, Penulis hanya mengganti bahasa dalam tampilannya (bahasa aslinya ialah Jerman) untuk memudahkan dalam menjalankan programnya.

Tampilan Cryptosystem Blowfish :

Dalam tampilan, pesan yang akan dienkripsi cukup ditulis dalam kolom diatas yang bertuliskan Text…, sesudah pesan ditulis tinggal memesukan password sebagai kunci enkripsinya lalu tekan tombol bertuliskan Enkripsi.

Penulis menggunakan kata MATAHARI sebagai contoh pesan dengan password inovatif.

Setelah menekan tombol enkripsi maka akan muncul ciphertext di kolom bawah pesan yang terenkripsi terlihat sebagai “F51820120F889934” yang merupakan hasil dari pengenkripsian kata MATAHARI dengan password inovatif.

Untuk deskripsi cukup mengubah pesan yang terenkripsi di tuliskan dikolom atas, lalu masukan password yang sama dengan password sewaktu enkripsi, lalu tekan tombol bertuliskan Deskripsi.

Maka hasil pendeskripsian akan muncul dalam kolom dibawahnya, pesan yang muncul adalah MATAHARI bila password yang digunakan sama.

Program diatas diambil dari situs : http://aam.ugpl.de/node/1060

Penutup

Blowfish dapat dipergunakan dalam berbagai aplikasi yang sangat memerlukan keamanan sebagai prioritas utamanya, dengan algoritma yang sederhana blowfish dapat implementsikan dalam aplikasi dengan bebagai macam bahasa pemograman dan dapat bekerja dalam berbagai sistem operasi yang ada. Blowfish dapat diandalkan keamanannya karena belum dapat dibongkar (broken) oleh Cryptoanalyst manapun sampai saat ini karena tidak mempunyai kelemahan yang berarti untuk dapat dibongkar sehingga pesan yang ada dalam ciphertextnya sangat aman.

Referensi

1. Sukmawan, Budi, Metoda Enkripsi Blowfish, http://bdg.centrin.net.id/~budskman/artikel.htm, 2000.
2. Heriyanto, Tedi, Pengenalan Kriptografi, http://www.tedi-h.com, 1999.
3. http://en.wikipedia.org/wiki/Blowfish
4. http://aam.ugpl.de/
5. http://www.users.zetnet.co.uk/hopwood/crypto/scan/cs.html
6. http://www.ee.ualberta.ca/~elliott/ee552/studentAppNotes/1998f/blowfish_encryption/
7. http://www.counterpane.com/blowfish.html

Biografi Penulis

Anjar Syafari. Lahir di Bandung 24 tahun yang lalu. Masa SMU di lewati di SMUN 1 Sumedang (1-6, 2-8 “Peterpan”, 3IPA3 “Clasic”), lulus tahun 2002, menyelesaikan program studi S1 jurusan Manajemen Informatika (MI-7) di Universitas Komputer Indonesia (UNIKOM) tahun 2006. Walau mengenal dunia komputer baru pada bangku kuliah tetapi sangat menyenangi dunia yang baru dikenalnya. Sangat tertarik dengan perkembangn dunia IT terutama internet (karena itu, mengerti seluk-beluk internet dengan baik). Senang menulis dan membaca terutama mengenai IT sejak kuliah sampai saat ini. Selain internet bidang yang dipahami adalah mengenai software + Pemograman (VB, C++Builder dan terutama Delphi), Web (terutama CMS ‘Mambo’) dan hardware komputer. Ada keinginan juga untuk menjadi trainer IT atau IT Support. Informasi lebih lanjut tentang penulis dapat dihubungi lewat email di :

clasicboy_no8@yahoo.com
atau di blognya :

http://ansitea.blogspot.com

KRIPTOGRAFI


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 :

Sender Receiver

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

Public Key Crypography

I. Pendahuluan

Kriptografi merupakan kumpulan teknik untuk mengenkode data dan pesan sedemikian sehingga data dan pesan tersebut dapat disimpan dan ditransmisikan dengan aman. Berikut ini beberapa terminologi dasar dari kriptografi serta hal-hal yang berkaitan dengan terminologi tersebut,

• Kriptografi dapat digunakan untuk meningkatkan keamanan komunikasi meskipun komunikasi tersebut dilakukan dengan media komunikasi yang sangat tidak aman (misalnya Internet). Kita juga dapat menggunakan kriptografi untuk melakukan enkripsi file-file sensitif kita, sehingga orang lain tidak dapat mengartikan data-data yang ada
• Kriptografi dapat digunakan untuk memberikan jaminan integritas data serta menjaga kerahasiaan
• Dengan menggunakan kriptografi, maka sangat mungkin untuk meverifikasi asal data dan pesan yang ada menggunakan digital signature
• Pada saat menggunakan metoda kriptografi, hanya kunci sesi yang harus tetap dijaga kerahasiannya. Algoritma, ukuran kunci dan format file dapat dibaca oleh siapapun tanpa mempengaruhi keamanan.

Kriptografi memungkinkan beberapa operasi atau proses terhadap data. Dua buah operasi dasar adalah enkripsi (dengan dekripsi sebagai proses balikannya) dan signing (dengan verifikasi dari signature sebagai proses balikannya). Enkripsi analog dengan memasukkan surat kedalam sebuah amplop sedangkan dekripsi analog dengan membuang amplop dan mengambil data. Signature analog dengan pemberian tanda-tangan terhadap sebuah dokumen dan penanda bahwa dokumen tersebut tidak berubah dari aslinya.

II. Public Key Cryptography dan Fungsi Satu Arah

Public key cryptography (lawan dari symmetric key cryptography) bekerja berdasarkan fungsi satu arah. Fungsi yang dapat dengan mudah dikalkulasi akan tetapi sangat sulit untuk dibalik/invers atau reverse tanpa informasi yang mendetail. Salah satu contoh adalah faktorisasi; biasanya akan sulit untuk memfaktorkan bilangan yang besar, akan tetapi mudah untuk melakukan faktorisasi. Contohnya, akan sangat sulit untuk memfaktorkan 4399 daripada memverifikasi bahwa 53 x 83 = 4399. Public key cryptography menggunakan sifat-sifat asimetrik ini untuk membuat fungsi satu arah, sebuah fungsi dimana semua orang dapat melakukan satu operasi (enkripsi atau verifikasi sign) akan tetapi sangat sulit untuk menginvers operasi (dekripsi atau membuat sign) tanpa informasi yang selengkap-lengkapnya.
Public key cryptography dilakukan dengan menggabungkan secara kriptografi dua buah kunci yang berhubungan yang kita sebut sebagai pasangan kunci publik dan kunci privat. Kedua kunci tersebut dibuat pada waktu yang bersamaan dan berhubungan secara matematis. Secara matematis, kunci privat dibutuhkan untuk melakukan operasi invers terhadap kunci public dan kunci publik dibutuhkan untuk melakukan operasi invers terhadap operasi yang dilakukan oleh kunci privat.
Jika kunci publik didistribusikan secara luas, dan kunci privat disimpan di tempat yang tersembunyi maka akan diperoleh fungsi dari banyak ke satu. Semua orang dapat menggunakan kunci publik untuk melakukan operasi kriptografi akan tetapi hanya orang yang memegang kunci privat yang dapat melakukan invers terhadap data yang telah terenkripsi tersebut. Selain itu dapat juga diperoleh fungsi dari satu ke banyak, yaitu pada saat orang yang memegang kunci privat melakukan operasi enkripsi maka semua orang yang memiliki kunci publik dapat melakukan invers terhadap data hasil enkripsi tersebut.

III. Symmetric Cryptography

Algoritma simetrik merupakan jenis algorima enkripsi yang paling umum dan paling tua. Algoritma ini disebut sebagai simetrik sebab kunci yang sama digunakan untuk enkripsi dan dekripsi. Berbeda halnya dengan kunci yang digunakan pada algoritma kunci publik, kunci yang digunakan pada simetrik key biasanya sering diubah-ubah. Oleh karena itu biasanya kunci pada simetrik key disebut sebagai session key, artinya kunci yang dipakai hanya pada satu sesi proses enkripsi.
Jika dibandingkan dengan algoritma kunci publik, algoritma simetrik key sangat cepat dan oleh karena itu lebih cocok jika digunakan untuk melakukan enkripsi data yang sangat besar. Salah satu algoritma simetrik yang dikenal adalah RC4 dan DES (Data Encryption Standar).
Protokol kriptografi modern pada saat ini banyak yang menggabungkan algoritma kunci publik dengan algoritma simetrik untuk memperoleh keunggulan-keunggulan pada masing-masing algoritma. Algoritma kunci publik digunakan untuk proses pertukaran session key yang berukuran kecil sekitar 16 bytes , sedangkang algoritma simetrik digunakan untuk melakukan enkripsi data yang sesungguhnya.

IV. Enkripsi dan Dekripsi

Dengan menggunakan teknik enkripsi data, sebuah pesan text dapat dienkode sedemikian sehingga sangat tidak beraturan dan sulit untuk dikembalikan ke pesan asal tanpa kunci rahasia. Pesan tersebut dapt berupa ASCII, file database atau data apapun yang akan kita kirimkan atau kita simpan melalui media yang tidak aman. Dalam kontek kriptografi, plaintext adalah data yang belum di enktripsi sedangkan ciphertext adalah data yang telah dienkripsi.
Jika sebuah pesan telah dienkripsi maka pesan tersebut dapat disimpan atau ditransmisikan dalam media yang tidak aman namun tetap terjaga kerahasiannya. Kemudian, pesan tersebut dapat didekripsi kedalam bentuk aslinya. Ilustrasi proses tersebut dapat dilihat pada gambar dibawah.

Pada saat pesan dienkripsi maka kunci enkripsi digunakan untuk proses tersebut. Hal ini analog dengan kunci yang biasa kita gunakan untuk mengunci gembok pintu. Untuk mendekripsikan pesan, maka kunci dekripsi yang cocok harus digunakan. Dalam hal ini, sangatlah penting untuk membatasi akses kepada kunci dekripsi, sebab semua orang yang dapat melihat kunci dekripsi berarti dapat pula mendekripsikan semua pesan yang telah dienkripsi dengan menggunakan kunci enkripsi yang bersesuaian.

V. Hash dan Digital Signature

Digital signature digunakan ketika kita ingin memberikan plaintext dan kita ingin bahwa penerima pesan mengetahui bahwa pesan tersebut datangnnya dari kita dan tidak ada perubahan apapund didalam pesan selama proses penyimpanan atau transmisi. Melakukan signing terhadap pesan tidak akan mengubah isi serta bentuk pesan tersebut, dan hasil sign dapat kita sisipkan atau kita simpan dalam bentuk lain untuk menyertai pesan asli.
Digital signature dapat dihasilkan dengan menggunakan algoritma kunci publik. Sebuah kunci privat digunakan untuk menghasilkan signature dan kunci publik yang bersesuaian digunakan untuk mevalidasi sign.
Digital signature memberikan keuntungan tambahan selain enkripsi. Dengan cara ini, pengguna dapat memperoleh jaminan bahwa pesan yang diterima berasal dari pemberi sign dan isinya tidak berubah sama seperti pada saat dilakukan sign. Dokumen dapat saja hanya diberi sign tanpa dienkripsi, akan tetapi satu hal yang harus kita ingat bahwa proses enkripsi yang baik selalu diawali dengan proses signing.
Sign digital dibuat dengan mengenkripsi hash dari dokumen dengan kunci privat. Hash dari dokumen biasanya merupakan sidik jari miniatur dari dokumen yang bersangkutan. Fungsi hash yang digunakan disini sama dengan fungsi hash yang digunakan sehari-hari dimana input berapapun akan menghasilkan output 16 byte (128 bit). Karena hash merupakan fungsi satu arah, maka sangat sulit untuk membuat dokumen lain yang memiliki hash string yang sama. Ilustrasi berikut ini menggambarkan proses signing.

VI. Kesimpulan

Teknik kriptografi dengan menggunakan kunci publik akan tetap berkembang berdasarkan meningkatnya kebutuhan akan sistem keamanan data yang lebih tinggi. Dengan menggabungkan kekuatan enkripsi algoritma kunci publik dan kecepatan enkripsi algoritma simetrik maka akan diperoleh sistem enkripsi yang kuat dan memiliki proses yang cepat.

Algoritma Kriptografi Klasik


 Algoritma Kriptografi Klasik
 Pendahuluan
 Algoritma kriptografi klasik berbasis karakter
 Menggunakan pena dan kertas saja, belum ada komputer
 Termasuk ke dalam kriptografi kunci-simetri
 Algoritma kriptografi klasik:
– Cipher Substitusi (Substitution Ciphers)
– Cipher Transposisi (Transposition Ciphers)
 1. Cipher Substitusi
 Monoalfabet : setiap karakter chipertext menggantikan satu macam karakter plaintext
 Polyalfabet : setiap karakter chipertext menggantikan lebih dari satu macam karakter plaintext
 Monograf /unilateral: satu enkripsi dilakukan terhadap satu karakter plaintext
 Polygraf /multilateral: satu enkripsi dilakukan terhadap lebih dari satu karakter plaintext
 1. Cipher Substitusi – Caesar Cipher
 Tiap huruf alfabet digeser 3 huruf ke kanan
pi : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ci : D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
 Contoh:
Plainteks: AWASI ASTERIX DAN TEMANNYA OBELIX
Cipherteks: DZDVL DVWHULA GDQ WHPDQQBA REHOLA
 1. Cipher Substitusi – Caesar Cipher
 Dalam praktek, cipherteks dikelompokkan ke dalam kelompok n-huruf, misalnya kelompok 4-huruf:
DZDV LDVW HULA GDQW HPDQ QBAR EHOL A
 Atau membuang semua spasi:
DZDVLDVWHULAGDQWHPDQQBAREHOLA
 Tujuannya agar kriptanalisis menjadi lebih sulit
 1. Cipher Substitusi – Vigènere Cipher
 Termasuk ke dalam cipher abjad-majemuk (polyalpabetic substitution cipher ).
 Algoritma tersebut baru dikenal luas 200 tahun kemudian yang oleh penemunya cipher tersebut kemudian dinamakan Vigènere Cipher.
 Vigènere Cipher menggunakan Bujursangkar Vigènere untuk melakukan enkripsi.
 Setiap baris di dalam bujursangkar menyatakan huruf-huruf cipherteks yang diperoleh dengan Caesar Cipher.
 1. Cipher Substitusi – Vigènere Cipher
 1. Cipher Substitusi – Vigènere Cipher
 Contoh penerapan Vigènere Cipher :
Plainteks : THIS PLAINTEXT
Kunci : sony sonysonys
Cipherteks : LVVQ HZNGFHRVL
 Jika panjang kunci lebih pendek daripada panjang plainteks, maka kunci diulang secara periodik. Dalam hal ini Kunci “sony” diulang sebanyak panjang plaintext-nya
 Pada dasarnya, setiap enkripsi huruf adalah Caesar cipher dengan kunci yang berbeda-beda.
c(‘T’) = (‘T’ + ‘s’) mod 26 = L
T = 20 dan s= 19 à (20+19)%26=13 à L
c(‘H’) = (‘H’ + ‘o’) mod 26 = V, dst
 2. Cipher Transposisi
 Cipherteks diperoleh dengan mengubah posisi huruf di dalam plainteks.
 Dengan kata lain, algoritma ini melakukan transpose terhadap rangkaian huruf di dalam plainteks.
 Nama lain untuk metode ini adalah permutasi, karena transpose setiap karakter di dalam teks sama dengan mempermutasikan karakter-karakter tersebut.
 2. Cipher Transposisi (Contoh)
Contoh: Misalkan plainteks adalah
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

Enkripsi:
POLITEK
NIKELEK
TRONIKA
NEGERIS
URABAYA

Cipherteks: (baca secara vertikal)
PNTNUOIRERLKOGAIENEBTLIRAEEKIYKKASA
PNTN UOIR ERLK OGAI ENEB TLIR AEEK IYKK ASA
 Algoritma Kriptografi Modern
 Pendahuluan
 Beroperasi dalam mode bit (algoritma kriptografi klasik beroperasi dalam mode karakter)
 kunci, plainteks, cipherteks, diproses dalam rangkaian bit
 operasi bit xor paling banyak digunakan
 Pendahuluan
 Tetap menggunakan gagasan pada algoritma klasik: substitusi dan transposisi, tetapi lebih rumit (sangat sulit dipecahkan)
 Perkembangan algoritma kriptografi modern didorong oleh penggunaan komputer digital untuk keamanan pesan.
 Komputer digital merepresentasikan data dalam biner.
 Algoritma Enkripsi dengan rangkaian bit
 Pesan (dalam bentuk rangkaian bit) dipecah menajdi beberapa blok
 Contoh: Plainteks 100111010110
Bila dibagi menjadi blok 4-bit
1001 1101 0110
maka setiap blok menyatakan 0 sampai 15:
9 13 6
 Algoritma Enkripsi dengan rangkaian bit
Bila plainteks dibagi menjadi blok 3-bit:
100 111 010 110

maka setiap blok menyatakan 0 sampai 7:
4 7 2 6
 Jenis Algoritma Kriptografi
 Algoritma Simetri
a. Blok Chiper : DES, IDEA, AES
b. Stream Chiper : OTP, A5 dan RC4
 Algoritma Asimetri : RSA, DH, ECC, DSA
 Fungsi Hash : MD5, SHA1
 Dalam presentasi kami menggunakan Algoritma AES, RSA dan MD5

AES (Advanced Encryption Standard)
 ALGORITMA SIMETRI : BLOK CHIPER
 AES (Advanced Encryption Standard)
 DES dianggap sudah tidak aman.
 Perlu diusulkan standard algoritma baru sebagai pengganti DES.
 National Institute of Standards and Technology (NIST) mengusulkan kepada Pemerintah Federal AS untuk sebuah standard kriptografi kriptografi yang baru.
 NIST mengadakan lomba membuat standard algoritma kriptografi yang baru. Standard tersebut kelak diberi nama Advanced Encryption Standard (AES).
 AES (Advanced Encryption Standard)
 Pada bulan Oktober 2000, NIST mengumumkan untuk memilih Rijndael (dibaca: Rhine-doll)
 Pada bulan November 2001, Rijndael ditetapkan sebagai AES
 Diharapkan Rijndael menjadi standard kriptografi yang dominan paling sedikit selama 10 tahun.
 AES (Advanced Encryption Standard)
 Tidak seperti DES yang berorientasi bit, Rijndael beroperasi dalam orientasi byte.
 Setiap putaran mengunakan kunci internal yang berbeda (disebut round key).
 Enciphering melibatkan operasi substitusi dan permutasi.
 Karena AES menetapkan panjang kunci adalah 128, 192, dan 256, maka dikenal AES-128, AES-192, dan AES-256
 AES (Advanced Encryption Standard)
 Garis besar Algoritma Rijndael yang beroperasi pada blok 128-bit dengan kunci 128-bit adalah sebagai berikut (di luar proses pembangkitan round key):
– AddRoundKey: melakukan XOR antara state awal (plainteks) dengan cipher key. Tahap ini disebut juga initial round.
– Putaran sebanyak Nr – 1 kali. Proses yang dilakukan pada setiap putaran adalah:
 SubBytes: substitusi byte dengan menggunakan tabel substitusi (S-box).
 ShiftRows: pergeseran baris-baris array state secara wrapping.
 MixColumns: mengacak data di masing-masing kolom array state.
 AddRoundKey: melakukan XOR antara state sekarang round key.
– Final round: proses untuk putaran terakhir:
 SubBytes
 ShiftRows
 AddRoundKey
 AES (Advanced Encryption Standard)
 AES (Advanced Encryption Standard)
 Selama kalkulasi plainteks menjadi cipherteks, status sekarang dari data disimpan di dalam array of bytes dua dimensi, state, yang berukuran NROWS ´ NCOLS.
 Untuk blok data 128-bit, ukuran state adalah 4 ´ 4.
 Elemen array state diacu sebagai S[r,c], 0 £ r < 4 dan 0 £ c
Dengan mencoba nilai-nilai k = 1, 2, 3, …, diperoleh nilai d yang bulat adalah 1019. Ini adalah kunci privat (untuk dekripsi).
 RSA
 Misalkan plainteks M = HARI INI
atau dalam ASCII: 7265827332737873

Pecah M menjadi blok yang lebih kecil (misal 3 digit):
m1 = 726 m4 = 273
m2 = 582 m5 = 787
m3 = 733 m6 = 003
(Perhatikan, mi masih terletak di dalam antara 0 sampai n – 1)
 RSA
 Enkripsi setiap blok:
c1 = 72679 mod 3337 = 215
c2 = 58279 mod 3337 = 776, dst
Chiperteks C = 215 776 1743 933 1731 158.

 Dekripsi (menggunakan kunci privat d = 1019)
m1 = 2151019 mod 3337 = 726
m2 = 7761019 mod 3337 = 582 dst untuk sisi blok lainnya
Plainteks M = 7265827332737873 yang dalam ASCII karakternya adalah HARI INI.
 RSA
 Kekuatan dan Keamanan RSA
– Kekuatan algoritma RSA terletak pada tingkat kesulitan dalam memfaktorkan bilangan non prima menjadi faktor primanya, yang dalam hal ini n = a ´ b.
– Sekali n berhasil difaktorkan menjadi a dan b, maka f(n) = (a – 1)´(b – 1) dapat dihitung. Selanjutnya, karena kunci enkripsi e diumumkan (tidak rahasia), maka kunci dekripsi d dapat dihitung dari persamaan ed º 1 (mod n).
– Penemu algoritma RSA menyarankan nilai a dan b panjangnya lebih dari 100 digit. Dengan demikian hasil kali n = a ´ b akan berukuran lebih dari 200 digit.
– Menurut Rivest dan kawan-kawan, usaha untuk mencari faktor bilangan 200 digit membutuhkan waktu komputasi selama 4 milyar tahun! (dengan asumsi bahwa algoritma pemfaktoran yang digunakan adalah algoritma yang tercepat saat ini dan komputer yang dipakai mempunyai kecepatan 1 milidetik).
 Algoritma MD5
 FUNGSI HASH
 MD5
 MD5 adalah fungsi hash satu-arah yang dibuat oleh Ron Rivest.
 MD5 merupakan perbaikan dari MD4 setelah MD4 berhasil diserang oleh kriptanalis.
 Algoritma MD5 menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan message digest yang panjangnya 128 bit.
 Dengan panjang message digest 128 bit, maka secara brute force dibutuhkan percobaan sebanyak 2128 kali untuk menemukan dua buah pesan atau lebih yang mempunyai message digest yang sama.
 MD5 (Algoritma)
 Penambahan Bit-bit Pengganjal
– Pesan ditambah dengan sejumlah bit pengganjal sedemikian sehingga panjang pesan (dalam satuan bit) kongruen dengan 448 modulo 512.
– Jika panjang pesan 448 bit, maka pesan tersebut ditambah dengan 512 bit menjadi 960 bit. Jadi, panjang bit-bit pengganjal adalah antara 1 sampai 512.
– Bit-bit pengganjal terdiri dari sebuah bit 1 diikuti dengan sisanya bit 0
 MD5 (Algoritma)
 Penambahan Nilai Panjang Pesan
– Pesan yang telah diberi bit-bit pengganjal selanjutnya ditambah lagi dengan 64 bit yang menyatakan panjang pesan semula.
– Jika panjang pesan > 264 maka yang diambil adalah panjangnya dalam modulo 264. Dengan kata lain, jika panjang pesan semula adalah K bit, maka 64 bit yang ditambahkan menyatakan K modulo 264.
– Setelah ditambah dengan 64 bit, panjang pesan sekarang menjadi kelipatan 512 bit
 MD5 (Algoritma)
 Inisialisai Penyangga MD
– MD5 membutuhkan 4 buah penyangga (buffer) yang masing-masing panjangnya 32 bit. Total panjang penyangga adalah 4 ´ 32 = 128 bit. Keempat penyangga ini menampung hasil antara dan hasil akhir.
– Keempat penyangga ini diberi nama A, B, C, dan D. Setiap penyangga diinisialisasi dengan nilai-nilai (dalam notasi HEX) sebagai berikut:
A = 01234567
B = 89ABCDEF
C = FEDCBA98
D = 76543210
 MD5 (Algoritma)
 Pengolahan Pesan dalam Blok Berukuran 512 bit
– Pesan dibagi menjadi L buah blok yang masing-masing panjangnya 512 bit (Y0 sampai YL – 1).
– Setiap blok 512-bit diproses bersama dengan penyangga MD menjadi keluaran 128-bit, dan ini disebut proses HMD5
 MD5 (Algoritma)
 MD5 (Algoritma)
 MD5 (Algoritma)
 MD5 (Algoritma)
 Putaran 1 : 16 kali operasi dasar dengan g(b,c,d) = F(b,c,d)
 MD5 (Algoritma)
 Putaran 2 : 16 kali operasi dasar dengan g(b,c,d) = G(b,c,d)
 MD5 (Algoritma)
 Putaran 3 : 16 kali operasi dasar dengan g(b,c,d) = H(b,c,d)
 MD5 (Algoritma)
 Putaran 4 : 16 kali operasi dasar dengan g(b,c,d) = I(b,c,d)
 MD5 (Algoritma)
 Setelah putaran keempat, a, b, c, dan d ditambahkan ke A, B, C, dan D, dan selanjutnya algoritma memproses untuk blok data berikutnya (Yq+1).
 Keluaran akhir dari algoritma MD5 adalah hasil penyambungan bit-bit di A, B, C, dan D.

Pengenalan Kriptografi


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 $

Sumber Informasi Lebih Lanjut (belum selesai)
Website dan FTP
http://www.rsa.com (RSA Inc.)
http://www.counterpane.com (Counterpane Inc.)
http://theory.lcs.mit.edu/~rivest/ (Ronald L. Rivest-the R in RSA)

http://www.cryptography.com

Buku-buku
Scheneier, Bruce, Applied Cryptography, edisi 2, New Jersey:John Wiley & Sons, Inc., 1996.

Key-encripting Key
Kunci kriptografi yang digunakan untuk mengenkripsi kunci lain, tetapi biasanya tidak digunakan untu…
Cipher
Algoritma kriptografi (cryptographic algorithm) berupa persamaan matematik yang digunakan dalam pros…
RSA
Merupakan algoritma kriptografi untuk kunci public (public key cryptography) yang umum digunakan saa…
Cryptographers
Para pelaku atau praktisi kriptografi.
Digital Signature Algorithm
DSA adalah merupakan teknik kriptografi yang berbasis kepada masalah matematika yang disebut discret…
KRIPTOGRAFI
Sebelum melangkah lebih jauh untuk melakukan analisis terhadap beberapa SPI yang ada, diperlukan perangkat-perangkat untuk membantu proses analisis tersebut. Salah satu dasar yang penting adalah penggunaan kriptografi sebagai landasan-landasan teoritis bagaimana sistem-sistem perdagangan di Internet tersebut melakukan pengamanan.
Kriptografi adalah ilmu yang mempelajari bagaimana membuat suatu pesan yang dikirim pengirim dapat disampaikan kepada penerima dengan aman [Schn 96]. Kriptografi dapat memenuhi kebutuhan umum suatu transaksi:
1. Kerahasiaan (confidentiality) dijamin dengan melakukan enkripsi (penyandian).
2. Keutuhan (integrity) atas data-data pembayaran dilakukan dengan fungsi hash satu arah.
3. Jaminan atas identitas dan keabsahan (authenticity) pihak-pihak yang melakukan transaksi dilakukan dengan menggunakan password atau sertifikat digital. Sedangkan keotentikan data transaksi dapat dilakukan dengan tanda tangan digital.
4. Transaksi dapat dijadikan barang bukti yang tidak bisa disangkal (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)
Tabel 3.1. Nama-nama ganti untuk mempermudah penjelasan
Bab ini akan menguraikan mengenai beberapa jenis serangan, jenis-jenis kunci kriptografi, berbagai jenis perangkat dan protokol kriptografi, serta masalah panjang kunci kriptografi.
Jenis Serangan
Selain ada pihak yang ingin menjaga agar pesan tetap aman, ada juga ternyata 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:
1. Ciphertext only attack, penyerang hanya mendapatkan pesan yang sudah tersandikan saja.
2. Known plaintext attack, dimana penyerang selain mendapatkan sandi, juga mendapatkan pesan asli. Terkadang disebut pula clear-text attack.
3. Choosen plaintext attack, sama dengan known plaintext attack, namun penyerang bahkan dapat memilih penggalan mana dari pesan asli yang akan disandikan.
Berdasarkan bagaimana cara dan posisi seseorang mendapatkan pesan-pesan dalam saluran komunikasi, penyerangan dapat dikategorikan menjadi:
1. Sniffing: secara harafiah berarti mengendus, tentunya dalam hal ini yang diendus adalah pesan (baik yang belum ataupun sudah dienkripsi) dalam suatu saluran komunikasi. Hal ini umum terjadi pada saluran publik yang tidak aman. Sang pengendus dapat merekam pembicaraan yang terjadi.
2. Replay attack [DHMM 96]: Jika seseorang bisa merekam pesan-pesan handshake (persiapan komunikasi), ia mungkin dapat mengulang pesan-pesan yang telah direkamnya untuk menipu salah satu pihak.
3. Spoofing [DHMM 96]: Penyerang – misalnya Maman – bisa menyamar menjadi Anto. Semua orang dibuat percaya bahwa Maman adalah Anto. Penyerang berusaha meyakinkan pihak-pihak lain bahwa tak ada salah dengan komunikasi yang dilakukan, padahal komunikasi itu dilakukan dengan sang penipu/penyerang. Contohnya jika orang memasukkan PIN ke dalam mesin ATM palsu – yang benar-benar dibuat seperti ATM asli – tentu sang penipu bisa mendapatkan PIN-nya dan copy pita magentik kartu ATM milik sang nasabah. Pihak bank tidak tahu bahwa telah terjadi kejahatan.
4. Man-in-the-middle [Schn 96]: Jika spoofing terkadang hanya menipu satu pihak, maka dalam skenario ini, saat Anto hendak berkomunikasi dengan Badu, Maman di mata Anto seolah-olah adalah Badu, dan Maman dapat pula menipu Badu sehingga Maman seolah-olah adalah Anto. Maman dapat berkuasa penuh atas jalur komunikas ini, dan bisa membuat berita fitnah.
Kabel koaksial yang sering dipergunakan pada jaringan sangat rentan terhadap serangan vampire tap [Tane 89], yakni perangkat keras sederhana yang bisa menembus bagian dalam kabel koaksial sehingga dapat mengambil data yang mengalir tanpa perlu memutuskan komunikasi data yang sedang berjalan. Seseorang dengan vampire tap dan komputer jinjing dapat melakukan serangan pada bagian apa saja dari kabel koaksial.
Penyerang juga bisa mendapatkan kunci dengan cara yang lebih tradisional, yakni dengan melakukan penyiksaan, pemerasan, ancaman, atau bisa juga dengan menyogok seseorang yang memiliki kunci itu. Ini adalah cara yang paling ampuh untuk mendapat kunci.
Kunci Simetris
Ini adalah jenis kriptografi yang paling umum dipergunakan. Kunci untuk membuat pesan yang disandikan sama dengan kunci untuk membuka pesan yang disandikan itu. Jadi pembuat pesan dan penerimanya harus memiliki kunci yang sama persis. Siapapun yang memiliki kunci tersebut – termasuk pihak-pihak yang tidak diinginkan – dapat membuat dan membongkar rahasia ciphertext. Problem yang paling jelas disini terkadang bukanlah masalah pengiriman ciphertext-nya, melainkan masalah bagaimana menyampaikan kunci simetris tersebut kepada pihak yang diinginkan. Contoh algoritma kunci simetris yang terkenal adalah DES (Data Encryption Standard) dan RC-4.

Gambar 3.1. Kunci simetris
Kunci Asimetris
Pada pertengahan tahun 70-an Whitfield Diffie dan Martin Hellman menemukan teknik enkripsi asimetris yang merevolusi dunia kriptografi. Kunci asimetris adalah pasangan kunci-kunci kriptografi yang salah satunya dipergunakan untuk proses enkripsi dan yang satu lagi untuk dekripsi. Semua orang yang mendapatkan kunci publik dapat menggunakannya untuk mengenkripsikan suatu pesan, sedangkan hanya satu orang saja yang memiliki rahasia tertentu – dalam hal ini kunci privat – untuk melakukan pembongkaran terhadap sandi yang dikirim untuknya.
Dengan cara seperti ini, jika Anto mengirim pesan untuk Badu, Anto dapat merasa yakin bahwa pesan tersebut hanya dapat dibaca oleh Badu, karena hanya Badu yang bisa melakukan dekripsi dengan kunci privatnya. Tentunya Anto harus memiliki kunci publik Badu untuk melakukan enkripsi. Anto bisa mendapatkannya dari Badu, ataupun dari pihak ketiga seperti Tari.

Gambar 3.2. Penggunaan kunci asimetris
Teknik enkripsi asimetris ini jauh lebih lambat ketimbang enkripsi dengan kunci simetris. Oleh karena itu, biasanya bukanlah pesan itu sendiri yang disandikan dengan kunci asimetris, namun hanya kunci simetrislah yang disandikan dengan kunci asimetris. Sedangkan pesannya dikirim setelah disandikan dengan kunci simetris tadi. Contoh algoritma terkenal yang menggunakan kunci asimetris adalah RSA (merupakan singkatan penemunya yakni Rivest, Shamir dan Adleman).
Fungsi Hash Satu Arah
Kini akan dibahas mengenai keutuhan pesan saat dikirimkan. Bagaimana jika Anto mengirimkan surat pembayaran kepada Badu sebesar 1 juta rupiah, namun di tengah jalan Maman (yang ternyata berhasil membobol sandi entah dengan cara apa) membubuhkan angka 0 lagi dibelakangnya sehingga menjadi 10 juta rupiah? Di mata Tari, pesan tersebut harus utuh, tidak diubah-ubah oleh siapapun, bahkan bukan hanya oleh Maman, namun juga termasuk oleh Anto, Badu dan gangguan pada transmisi pesan (noise). Hal ini dapat dilakukan dengan fungsi hash satu arah (one-way hash function), yang terkadang disebut sidik jari (fingerprint), hash, message integrity check, atau manipulation detection code.
Saat Anto hendak mengirimkan pesannya, dia harus membuat sidik jari dari pesan yang akan dikirim untuk Badu. Pesan (yang besarnya dapat bervariasi) yang akan di-hash disebut pre-image, sedangkan outputnya yang memiliki ukurannya tetap, disebut 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.

Gambar 3.3. Membuat sidik jari pesan
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.
Tanda Tangan Digital
Badu memang dapat merasa yakin bahwa sidik jari yang datang bersama pesan yang diterimanya memang berkorelasi. Namun bagaimana Badu dapat merasa yakin bahwa pesan itu berasal dari Anto? Bisa saja saat dikirimkan oleh Anto melalui saluran komunikasi yang tidak aman, pesan tersebut diambil oleh Maman. Maman kemudian mengganti isi pesan tadi, dan membuat lagi sidik jari dari pesan yang baru diubahnya itu. Lalu, Maman mengirimkan lagi pesan beserta sidik jarinya itu kepada Badu, seolah-oleh dari Anto.
Untuk mencegah pemalsuan, Anto membubuhkan tanda tangannya pada pesan tersebut. Dalam dunia elektronik, Anto membubuhkan tanda tangan digitalnya pada pesan yang akan dikirimkan untuk Badu sehingga Badu dapat merasa yakin bahwa pesan itu memang dikirim oleh Anto.
Sifat yang diinginkan dari tanda tangan digital diantaranya adalah:
1. Tanda tangan itu asli (otentik), tidak mudah ditulis/ditiru oleh orang lain. Pesan dan tanda tangan pesan tersebut juga dapat menjadi barang bukti, sehingga penandatangan tak bisa menyangkal bahwa dulu ia tidak pernah menandatanganinya.
2. Tanda tangan itu hanya sah untuk dokumen (pesan) itu saja. Tanda tangan itu tidak bisa dipindahkan dari suatu dokumen ke dokumen lainnya. Ini juga berarti bahwa jika dokumen itu diubah, maka tanda tangan digital dari pesan tersebut tidak lagi sah.
3. Tanda tangan itu dapat diperiksa dengan mudah.
4. Tanda tangan itu dapat diperiksa oleh pihak-pihak yang belum pernah bertemu dengan penandatangan.
5. Tanda tangan itu juga sah untuk kopi dari dokumen yang sama persis.
Meskipun ada banyak skenario, ada baiknya kita perhatikan salah satu skenario yang cukup umum dalam penggunaan tanda tangan digital. Tanda tangan digital memanfaatkan fungsi hash satu arah untuk menjamin bahwa tanda tangan itu hanya berlaku untuk dokumen yang bersangkutan saja. Bukan dokumen tersebut secara keseluruhan yang ditandatangani, namun biasanya yang ditandatangani adalah sidik jari dari dokumen itu beserta timestamp-nya dengan menggunakan kunci privat. Timestamp berguna untuk menentukan waktu pengesahan dokumen.

Gambar 3.4. Pembuatan tanda tangan digital
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.

Gambar 3.5. Pemeriksaan keabsahan tanda tangan digital
Masalah Pertukaran Kunci Publik
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.
Sertifikat Digital
Masalah di atas dapat dipecahkan dengan penggunaan sertifikat digital. Tari tidak lagi setiap saat menjadi penukar kunci, namun Tari cukup menandatangani kunci publik milik setiap orang di jaringan tersebut. Sebenarnya dalam sertifikat tersebut tak hanya berisi kunci publik, namun dapat berisi pula informasi penting lainnya mengenai jati diri pemilik kunci publik, seperti misalnya nama, alamat, pekerjaan, jabatan, perusahaan dan bahkan hash dari suatu informasi rahasia. Semua orang mempercayai otoritas Tari dalam memberikan tanda tangan, sehingga orang-orang dalam jaringan itu merasa aman menggunakan kunci publik yang telah ditandatangani Tari.

Gambar 3.6. Contoh sertifikat digital
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.

Gambar 3.7. Contoh hirarki otoritas sertifikat digital
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.
Tanda Tangan Pesan Ganda
Andaikan Anto membuat perjanjian jual-beli dengan Badu. Untuk masalah pembayaran, Anto menginstruksikan bank untuk memberikan kepada Badu sejumlah uang sesuai dengan perjanjian jual-beli, namun Anto tidak ingin agar bank mengetahui isi perjanjian jual-beli itu.
1. Anto membuat sidik jari dari SPP (yaitu Hash(SPP)) dan sidik jari SPJB (yakni Hash(SPJB)).
2. Kemudian, Anto membuat sebuah sidik jari baru dari gabungan kedua sidik jari sebelumnya ( Hash ( (Hash(SPP) + Hash(SPJB) ) ). Hasil hash tersebut dinamakan sidik jari pesan ganda SPP & SPJB.
3. Anto menyerahkan surat perjanjian jual belinya kepada Badu. Selain itu Anto juga menyerahkan surat perintah pembayaran beserta sidik jari pesan ganda SPP & SPJB kepada bank.
4. Saat Badu ingin mengambil uang di bank, Badu membuat sidik jari dari surat perjanjian jual beli (SPJB). Badu menyerahkan sidik jari SPJB kepada bank.
5. Bank membuat sidik jari dari surat perintah pembayaran (SPP).
6. Bank menggabungkan sidik jari SPP dengan sidik jari SPJB yang diterimanya dari Badu, kemudian meng-hash-nya sehingga dihasilkan sidik jari pesan ganda SPP & SPJB.
7. Jika sidik jari pesan ganda SPP & SPJB yang baru dibuat itu sama dengan yang telah diberikan oleh Anto, maka bank menjalankan kewajibannya kepada Badu.

Gambar 3.8. Pembuatan sidik jari pesan ganda
Jika sidik jari pesan ganda SPP & SPJB dienkripsi dengan kunci privat Anto, maka akan menjadi tanda tangan pesan ganda (dual-signature) Anto untuk kedua perjanjian tersebut [ViMa 97].
Protokol Pembagian Rahasia
Jika Anto memiliki rahasia, ia dapat memberikan ‘separuh’ rahasia itu kepada Badu dan ‘separuh’ rahasia itu kepada Chandra. Badu, yang menerima paruh pertama rahasia Anto, tidak bisa mengetahui apa isi rahasia itu. Demikian pula dengan Chandra. Namun, jika Badu dan Chandra menggabungkan potongan-potongan rahasia itu, maka akan tergambar rahasia Anto. Pembagian rahasia (secret splitting) dapat dilakukan dengan cara:
1. Anto membuat seuntai string acak R yang panjangnya sama dengan pesan rahasia M.
2. Anto melakukan operasi XOR antara M dengan R, sehingga menghasilkan S.
3. Anto memberikan R kepada Badu dan S kepada Chandra
4. Jika Badu dengan Chandra bertemu, maka mereka sanggup mendapatkan pesan rahasia M dengan cara melakukan operasi XOR antara S dengan R.
Protokol Komitmen-Bit
Protokol ini bermanfaat kalau misalnya Anto hendak membuat suatu pernyataan atau komitmen (katakanlah suatu string binari 1000), namun Anto tak ingin agar Badu mengetahui isi pernyatan tersebut sebelum saatnya. Badu harus merasa yakin bahwa Anto pada saatnya nanti, benar-benar mengeluarkan isi pernyataan yang sebenarnya saat melakukan komitmen, dan tidak mengeluarkan pernyataan yang sudah diubah (misalnya mengubah string tadi menjadi 1001). Ada beberapa jenis protokol komitmen-bit, namun di bawah ini hanya dijelaskan salah satu diantaranya, yakni dengan fungsi hash satu arah:
1. Anto membuat dua buah string secara acak, yakni R1 dan R2
2. Anto menggabungkan kedua string acak itu ke dalam pernyataannya (b) yang akan dikomitmenkan menjadi (R1, R2, b)
3. Anto menghitung hash dari gabungan string itu, Hash(R1, R2, b).
4. Anto kemudian mengirimkan hash tersebut beserta R1 kepada Badu. Badu akan menyimpannya untuk pemeriksaan nanti.
5. Jika sudah tiba saatnya untuk menunjukkan pernyataannya, Anto memberikan seluruh string (R1, R2, b) kepada Badu.
6. Badu memeriksa fungsi hash dari (R1, R2, b). Jika cocok dengan hash yang diperiksanya dulu, maka pernyataan Anto tidak diubah.
Tanda Tangan Buta
Badu disodori 100 amplop tertutup oleh Anto. Amplop itu berisi secarik pesan dan kertas karbon. Badu membuka 99 amplop secara acak. Jika seluruh amplop yang dibuka ternyata berisi pesan yang mirip, maka Badu dapat merasa bahwa amplop ke-100 juga berisi pesan yang mirip pula. Namun, jika satu saja dari 99 amplop tadi ada yang isi berbeda dari yang lain, maka Badu dapat mencurigai bahwa isi amplop ke-100 bisa saja juga tidak mirip dengan isi ke-98 amplop lainnya.
Dalam kasus dimana ternyata ke-99 amplop yang dibuka secara acak tadi berisi pesan yang mirip, maka dengan keyakinan yang cukup tinggi Badu berani menandatangani amplop terakhir yang belum dibuka. Tanda tangan Badu akan menembus amplop dan kertas karbon, sehingga pesan dalam amplop akan tertandatangani oleh Badu. Badu kurang lebih tahu apa isi pesan di amplop ke-100 itu. Protokol tanda tangan buta (blind signature) bekerja sebagai berikut:
1. Anto ‘mengalikan’ dokumen (yang akan ditandatangani) dengan sebuah faktor pembuta.
2. Anto mengirimkan dokumen itu kepada Badu
3. Badu menandatangani dokumen itu
4. Badu mengembalikan dokumen yang sudah ditandatangani tadi kepada Anto
5. Anto membaginya dengan faktor pembuta, sehingga mendapatkan dokumen yang asli sudah tertandatangani oleh Badu.
Protokol Uang Digital
1. Deskripsi Protokol
Berdasarkan beberapa teori penunjang di atas, maka dapatlah dibangun suatu protokol untuk uang digital. David Chaum, memiliki beberapa paten atas protokol uang digital yang diciptakannya. Berikut ini dijelaskan salah satu protokol uang digital:
1. Anto menyiapkan n lembar uang dengan nilai tertentu. Setiap uang diberi nomor seri acak X yang cukup panjang, sehingga kemungkinan 2 bilangan acak sama kecil sekali. Dalam setiap uang juga ada n (I1, I2, …, In) string identifikasi yang berguna untuk memberikan informasi mengenai pemilik uang, yakni Anto. Anto kemudian memecah tiap-tiap string identitas diri itu tadi menjadi dua bagian dengan menggunakan protokol pemecahan rahasia. Lantas Anto melakukan 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)
2. Anto memasukkan uang itu kedalam yang juga disisipi kertas karbon amplop (mengalikan uang dengan faktor pembuta), lalu memberikannya kepada bank.
3. Bank akan meminta Anto untuk membuka n – 1 amplop itu secara acak. Bank memeriksa apakah semua uang tersebut memiliki nilai yang sama. Bank juga meminta kepada Anto untuk membuktikan kejujuran dirinya saat menuliskan string identifikasi pada uang itu, dengan cara menggabungkan pasangan-pasangan string identifikasi.
4. Jika bank merasa bahwa Anto tidak melakukan kecurangan, maka bank akan menandatangani uang terakhir yang masih di dalam amplop itu dan menyerahkannya kepada Anto. Tanda tangan bank akan menembus amplop dan kertas karbon sehingga uang di dalamnya tertandatangani.
5. Anto membuka amplop. Uang siap dipakai.
6. Anto menyerahkan uang kepada Badu. Badu sebagai penerima uang, akan memeriksa apakah tanda tangan bank pada uang itu absah.
7. Badu akan menyuruh Anto untuk membuka salah satu sisi dari setiap string identifikasi di setiap uang dengan cara memberikan string pemilih sepanjang 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.
8. Setelah itu Badu membawa uang tersebut ke bank. Bank akan memeriksa apakah nomor seri uang tersebut sudah pernah diterima oleh bank. Kalau belum ada, maka uang tersebut dinyatakan sah.
9. Jika nomor seri uang itu sudah pernah diterima oleh bank, maka bank akan memeriksa string identitas yang sudah terbuka pada uang itu dan membandingkannya dengan string identitas pada uang dengan nomor seri sama yang pernah diterima bank sebelumnya. Jika ternyata string identitas itu sama, maka berarti Badu yang menggandakan uang tersebut. Namun jika berbeda, maka berarti Anto yang menggandakan uang digital tersebut.
2. Pembelanjaan Ganda
Jika Anto menggandakan uang digitalnya lalu menggunakan uang digital yang sama itu dua kali, bank dapat mendeteksinya meskipun Badu tidak bisa. Badu memang ‘membuka’ identitas uang, namun hanya separuh-separuh. Kalau uang digital itu pernah diberikan Anto kepada Chandra, maka tentu Chandra juga pernah ‘membuka’ separuh identitas uang digital tadi secara acak. Nah, kemungkinan bahwa proses pembukaan identitas oleh Badu dan Chandra itu sama (maksudnya sama urutan pembukaannya, misalnya kiri-kiri-kanan-kiri-kanan, dan seterusnya) adalah 1 per 2n. Andaikan n cukup besar, katakanlah 16 saja, maka kemungkinan Badu dan Chandra secara acak membuka paruhan identitas dengan urutan sama adalah 1 : 65536. Artinya, jika Anto memberikan uangnya kepada dua orang yang berbeda, kemungkinan besar paruhan identitas yang dibuka juga berbeda. Jika saat otentikasi uang digital oleh bank ditemukan bahwa ada uang digital dengan nomor seri sama yang telah diuangkan, dan paruhan identitasnya berbeda, maka kemungkinan besar Anto menyerahkan uang digital yang sama kepada dua orang yang berbeda.
Sedangkan apabila Badu menguangkan uang digital yang sama dua kali, karena paruhan identitas dari uang digital yang diotentikasi itu sama persis dengan yang sudah tercatat, maka kemungkinan besar uang itu diberikan Anto kepada orang yang sama. Badulah yang ketahuan menguangkan uang digital yang sama dua kali. Penggunaan uang digital yang sama dua kali dikenal dengan istilah pembelanjaan ganda (double spending).
Panjang Kunci
Panjang Kunci Simetris
Meskipun ada beberapa cara bagi seorang kriptoanalis untuk memecahkan pesan rahasia, namun cara yang cukup umum dilakukan adalah dengan melakukan brute-force attack. Dengan cara ini, seorang penyerang mencoba seluruh kemungkinan kunci yang ada, sampai menemukan sebuah kunci yang jika dipergunakan untuk mendekripsi pesan yang disandikan akan memunculkan suatu pesan yang bermakna. Tentunya cara ini bermanfaat hanya jika sudah diketahui algoritmanya, namun tidak diketahui kuncinya apa.
PIN 5 digit berarti biasanya ada 100.000 kombinasi. Kelihatannya cukup, namun sebenarnya kurang. Dengan sebuah komputer pribadi saja bisa dengan mudah diselesaikan. Salah satu pencegahannya adalah dengan pembatasan seberapa banyak pemakai dapat mencoba memasukkan PIN. Biasanya dibatasi tiga kali.
Berikut ini diberikan contoh dari brute-force attack pada suatu algoritma ‘geser pada papan ketik QWERTY’:
Sandi zsdyrtvstf dicoba dengan kunci 3 menjadi bjkwpqmjql
Sandi zsdyrtvstf dicoba dengan kunci 2 menjadi nkleqwzkwa
Sandi zsdyrtvstf dicoba dengan kunci 1 menjadi mastercard
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
Tabel 3.2. Serangan brute-force pada DES
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
Tabel 3.3. Serangan brute-force pada RC4
Panjang Kunci Asimetris
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.
Prospek
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?
Kembali ke daftar isi

Bab 22. Keamanan Sistem

________________________________________
Kriptografi
Dasar enkripsi cukup sederhana. Pengirim menjalankan fungsi enkripsi pada pesan plaintext, ciphertext yang dihasilkan kemudian dikirimkan lewat jaringan, dan penerima menjalankan fungsi dekripsi (decryption) untuk mendapatkan plaintext semula. Proses enkripsi/dekripsi tergantung pada kunci (key) rahasia yang hanya diketahui oleh pengirim dan penerima. Ketika kunci dan enkripsi ini digunakan, sulit bagi penyadap untuk mematahkan ciphertext, sehingga komunikasi data antara pengirim dan penerima aman.
Kriptografi macam ini dirancang untuk menjamin privasi: mencegah informasi menyebar luas tanpa izin. Akan tetapi, privaci bukan satu-satunya layanan yang disediakan kriptografi. Kriptografi dapat juga digunakan untuk mendukung authentication (memverifikasi identitas pengguna) dan integritas (memastikan bahwa pesan belum diubah).
Kriptografi digunakan untuk mencegah orang yang tidak berhak untuk memasuki komunikasi, sehingga kerahasiaan data dapat dilindungi. Secara garis besar, kriptografi digunakan untuk mengirim dan menerima pesan. Kriptografi pada dasarnya berpatokan pada kunci yang secara selektif telah disebar pada komputer-komputer yang berada dalam satu jaringan dan digunakan untuk memroses suatu pesan.
Operasional
Keamanan operasional (operations security) adalah tindakan apa pun yang menjadikan sistem beroperasi secara aman, terkendali, dan terlindung. Yang dimaksud dengan sistem adalah jaringan, komputer, lingkungan. Suatu sistem dinyatakan operasional apabila sistem telah dinyatakan berfungsi dan dapat dijalankan dengan durasi yang berkesinambungan, yaitu dari hari ke hari, 24 jam sehari, 7 hari seminggu.
Manajemen Administratif (Administrative Management) adalah penugasan individu untuk mengelola fungsi-fungsi keamanan sistem. Beberapa hal yang terkait:
1. 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.
2. Hak Akses Minimum (Least Privilege). Setiap orang hanya diberikan hak akses minimum yang dibutuhkan dalam pelaksanaan tugas mereka
3. 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:
1. Kendali Pencegahan (Preventative Control). Untuk mencegah error dan intruder temasuki sistem. Misal, kontrol pencegahan untuk mencegah virus memasuki sistem adalah dengan menginstall antivirus.
2. Kontrol Pendeteksian (Detective Control). Untuk mendeteksi error yang memasuki sistem. Misal, mencari virus yang berhasil memasuki sistem.
3. Kontrol Perbaikan (Corrective/Recovery Control). Membantu mengembalikan data yang hilang melalui prosedur recovery data. Misal, memperbaiki data yang terkena virus.
Kategori lainnya mencakup:
1. Kendali Pencegahan (Deterrent Control). . Untuk menganjurkan pemenuhan (compliance) dengan kontrol eksternal.
2. Kendali Aplikasi (Application Control) . Untuk memperkecil dan mendeteksi operasi-operasi perangkat lunak yang tidak biasa.
3. Kendali Transaksi (Transaction Control) . Untuk menyediakan kendali di berbagai tahap transaksi (dari inisiasi sampai keluaran, melalui kontrol testing dan kontrol perubahan).
Terminologi Kriptografi

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 :

Sender Receiver

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
1. 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.
2. 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.
3. 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.
4. 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.
5. Klien selanjutnya mengirimkan request terhadap server target yang mengandung tiket yang didapatkan sebelumnya dengan menggunakan protokol CS Exchange. Server target kemudian melakukan autentikasi terhadap tiket yang bersangkutan, membalasnya dengan sebuah kunci sesi, dan klien pun akhirnya dapat mengakses layanan yang tersedia dalam server.
Meski terlihat rumit, pekerjaan ini dilakukan di balik layar, sehingga tidak terlihat oleh pengguna.
Kriptoanalisis (dari bahasa Yunani 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.
Artikel ini membutuhkan judul dalam bahasa Indonesia yang sepadan dengan judul aslinya.
Artikel bertopik teknologi informasi ini perlu dirapikan agar memenuhi standar Wikipedia
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 dan dengan beda 4-bit diantara keduanya.

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.
s menunjukkan perputaran bit kiri oleh s; s bervariasi untuk tiap-tiap operasi. menunjukan tambahan modulo 232. MD5 memproses variasi panjang pesan kedalam keluaran 128-bit dengan panjang yang tetap. Pesan masukan dipecah menjadi dua gumpalan blok 512-bit; Pesan ditata sehingga panjang pesan dapat dibagi 512. Penataan bekerja sebagai berikut: bit tunggal pertama, 1, diletakkan pada akhir pedan. Proses ini diikuti dengan serangkaian nol (0) yang diperlukan agar panjang pesan lebih dari 64-bit dan kurang dari kelipatan 512. Bit-bit sisa diisi dengan 64-bit integer untuk menunjukkan panjang pesan yang asli. Sebuah pesan selalu ditata setidaknya dengan 1-bit tunggal, seperti jika panjang pesan adalah kelipatan 512 dikurangi 64-bit untuk informasi panjang (panjang mod(512) = 448), sebuah blok baru dari 512-bit ditambahkan dengan 1-bit diikuti dengan 447 bit-bit nol (0) diikuti dengan panjang 64-bit.
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:

menunjukkan operasi logikan XOR, AND, OR dan NOT.
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 := 0×67452301 var int h1 := 0xEFCDAB89 var int h2 := 0x98BADCFE var int h3 := 0×10325476 // 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
• MD2
• SFV
• Cyclic redundancy check
8. Pranala luar
8. 1. Informasi MD5
• (en)RFC 1321 — Algoritma Ringkasan-Pesan MD5
• (en)Menggunakan MD5 untuk memastikan integritas isi dari file
• (en)Catatan Kriptoanalisis MD5
• (en)Tanya-Jawab tentang Kerusakan Hash
• (en)Online MD5 crack – Rainbow Tables + big hash database (md5, md5(md5), sha1, mysql)
• (fr)Online MD5 Reverser | Hash cracker
• (en)Pembobolan hash password MD5 Online
• (en)Pembobolan MD5 Online
8. 2. Implementasi
• (en)situs tentang MD5 — berisi tentang berbagai macam implementasi pada berbagai bahasa pemrogaman
• (en)Paj’s Home: Cryptography (Javascript MD4 dan MD5, plus SHA-1)
• (en)MD5 kalkulator dengan Javascript memberikan nilai secara langsung dari kalkulasi
• (en)Jacksum (Sebuah program dengan berbagai macam fungsi verifikasi pesan)
8. 3. Kerusakan
• (en)Kerusakan cepat yang ditemukan oleh V. Klima
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.
• “MD5″ on the Wikipedia website
• Versi terdahulu
• Pembicaraan
• Sunting
Halaman ini terakhir diubah pada 2009-04-10 23:36:36
Halaman Utama
Wapedia: For Wikipedia on mobile phones

Algoritma Kriptografi
Jan.10, 2009 in Kriptografi
Algoritma kriptografi adalah algoritma yang berfungsi untuk melakukan tujuan dari ilmu kriptografi itu sendiri. Algoritma kriptografi terdiri dari 2 bagian fungsi, yaitu :
1. ENKRIPSI (encryption), dan
2. DEKRIPSI (decryption).
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]
Jan.10, 2009 in Kriptografi
Algoritma Asimetris atau sering disebut algoritma public key, penggunaan kunci dalam algoritma ini adalah, kunci yang dipakai dalam proses enkripsi berbeda dengan kunci yang dipakai pada proses dekripsi, jadi jumlah kunci enkripsi ≠ kunci dekripsi.
Ada 2 jenis kunci di algoritma ini, yaitu
1. KUNCI PUBLIK adalah kunci yang digunakan untuk melakukan proses enkripsi data. Kunci ini disebut publik karena siapapun dapat mengetahuinya.
2. KUNCI PRIVAT adalah kunci yang digunakan untuk melakukan proses dekripsi data. Kunci ini disebut privat karena 1 kunci privat hanya dimiliki oleh 1 orang saja. Kunci privat sering juga disebut kunci rahasia.
Istilah kunci rahasia dalam algoritma simetris digunakan untk menyatakan kunci enkripsi dan dekripsi, sementara pada algoritma asimetris digunakan untuk menyatakan kunci privat, karena kunci publik tidak dirahasiakan.