Tuesday, July 19, 2011

Pembagian Jenis Metode Algoritma Kriptografi

Berawal dari membaca diskusi menarik di sebuah forum programmer web, kemudian muncul kembali di sebuah forum komunitas linux. Saya memposting pernyataan saya tentang keheranan saya terhadap orang-orang yang menyatakan bahwa MD5 bisa di-decrypt. Tentunya hanya sebuah status di jejaring sosial Google+. Ternyata postingan tersebut mendapat respon ketidak-setujuan beberapa mahasiswa saya terhadap pernyataan saya. Ya sudahlah, tidak apa-apa, mereka kan belum pernah dapat kuliah keamanan.

Kali ini saya akan sedikit menjelaskan tentang beberapa jenis metode algoritma enkripsi atau kriptografi. Setidaknya ada 3 jenis, yakni Symmetric, asymmetric, dan hash function. Apa perbedaannya?

Algoritma enkripsi symmetric adalah sebuah algoritma di mana kunci pengaman untuk melakukan enkripsi dan dekripsi adalah satu. Kekurangannya adalah, kita tidak bisa mengobral kunci pengaman sembarangan. Tapi bagaimanapun, algoritma ini masih dipakai untuk memproteksi file yang dikompresi, semisal file zip, karena biasanya orang yang menggunakannya sengaja untuk berbagi di internet, tapi tidak ingin mudah dicari oleh search engine agar tidak dihapus oleh orang yang melaporkan.

Berbeda dengan metode asymmetric, kunci pengamannya ada 2, yang satu untuk disebar ke umum, biasa disebut Public Key, yang satunya dirahasiakan, disebut Private Key. Salah satu kelebihannya adalah bisa digunakan untuk tanda tangan digital, juga bisa digunakan untuk memastikan bahwa file hanya bisa dibuka oleh orang yang berhak.

Kedua kunci pengaman pada Metode Asymmetric, baik Public Key maupun Private Key bisa digunakan untuk mengenkripsi maupun mendekripsi file. Jika enkripsi dilakukan dengan menggunakan Public Key, maka dekripsi hanya bisa dilakukan dengan Private Key, begitu pula sebaliknya, jika enkripsi dilakukan dengan Private Key, maka hanya bisa dibuka dengan Public Key.

Sebagai contoh kasus dalam Metode Asymmetric, saya akan menggambarkan pengiriman data, dari A ke B. Kasus pertama sebagai tanda tangan digital. Maka, A akan mengenkripsi file yang akan dikirim ke B dengan Private Key A. Setelah B menerima, maka B akan membukanya dengan Public Key A. Jika bisa dibuka, maka bisa dipastikan itu dari A.

Adapun penggunaan enkripsi untuk memastikan yang menerima B, maka A akan mengenkripsi dengan Public Key B. Setelah itu, baru B akan membukanya dengan Private Key B.

Apabila kedua permasalahan di atas digabung, yakni agar pesan dari A ke B bisa dipastikan dari A dan bahwa hanya B yang bisa membaca pesan, maka pesan bisa dienkripsi dengan Private Key A terlebih dahulu, baru kemudian dienkripsi dengan Public Key B. Setelah B menerima, maka B akan membukanya dengan Private Key B terlebih dahulu, kemudian mendekripnya lagi dengan Public Key A.

Namun, Metode Asymmetric ini jarang digunakan untuk umum, kecuali dalam kasus perbankan, dikarenakan begitu kompleknya algoritmanya.

Nah, yang terakhir adalah Hash Function. Hash Function adalah algoritma dimana, berapapun karakter yang anda masukkan akan dirubah ke dalam susunan karakter sebesar bit tertentu. Bingung? Saya akan berusaha memberikan permisalan semudah mungkin. Sebagai misal, sebuah password berupa angka akan diubah ke dalam angka senilai 0-9. Password hanya berupa angka. Coba gunakan fungsi berikut:
F = Sum ( Input [0 .. n] )
Hash = F %10
Rumusan di atas bisa dikatakan fungsi Hash sederhana. Katakanlah kita gunakan input "123", maka nilai Hash-nya adalah
Hash = ( 1 + 2 + 3 ) % 10 = 6
OK, bagaimana dengan input "1234564"?
Hash = ( 1 + 2 + 3 + 4 + 5 + 6 + 4 ) % 10 = 6
Jadi, begitu banyak macam input, hasilnya bisa memiliki nilai Hash yang sama. Fungsi Hash biasanya digunakan untuk menyimpan password. Mengapa passwordnya tidak langsung di simpan saja sebagai teks plain tanpa enkripsi. Tentunya berbahaya, karena administrator dapat membaca password dengan mudah. Meskipun secara otomatis, admin bisa saja membaca data yang ada di servernya, tapi ada kecenderungan seorang user menggunakan password yang sama di tempat lain. Sehingga bisa saja admin membuka login user di luar wilayah kekuasaanya dengan mencoba password yang terdaftar di servernya.

Mengapa tidak menggunakan enkripsi Symmetric atau Asymmetric? Untuk pengamanan yang kuat, penggunaan kedua enkripsi tersebut sangat menghabiskan resource server. Lagi pula, melakukan dekripsi pada password juga tidak terlalu penting. Selain itu, kalau menggunakan metode Symmetric, admin yang iseng bisa saja melakukan brute force diam-diam ke data yang dimilikinya. Jadi, kalau bisa malah dekripsi itu jangan sampai bisa dilakukan.

Termasuk dalam  metode Hash Function ini adalah MD5. Mengutip kata Pak Mahar:
"ok kalau misalkan saya donlot *.iso 600MB disebelah linknya ada ketulis MD5 bla...bla...bla sebanyak 128 bit.... silahkan itu di decrypt menjadi file *.iso tadi..... !!"

Semoga saja penjelasan saya ini bisa memberikan pencerahan.

1 comment:

  1. Mas.. mhon pencerahannya.. algoritma hash apa2 aja ya?? maklum niubi.. :).. thx..

    ReplyDelete