Showing posts with label salting. Show all posts
Showing posts with label salting. Show all posts

Saturday, August 1, 2015

Salting - Intro to Criptography (part-2)

SALT

Seperti telah di bahas pada part-1, adanya Rainbow Tables memudahkan hacker untuk menduga-duga password seseorang, dengan cara mencocokan hashed password dengan string di Rainbow Tables.

Oleh karena itu, password perlu ditambahkan string lagi (sebaiknya string acak) di depan password asli, lalu dilakukan proses hashing. Hasilnya di simpan di file password.txt.


Dalam gambar diatas password: "jakarta" ditambahkan karakter acak salt "78a58eea7". Hasilnya adalah hashed password.

Perlu diingat karakter acak ini di catat dalam password.txt juga, supaya dapat dilakukan kembali proses hashing saat user login.

Ingat bahwa yang server tidak menyimpan password, tapi menyimpan hash nya saja. dimana hash tsb tidak ada proses untuk mengembalikan ke bentuk asal (yaitu password). Server hanya mencocokkan antara hash saat user login dengan hash yang tercatat di file password.txt.

Bagaimana kalau file password.txt ini di dapatkan oleh hacker?

Walau ada info tentang salt, tetapi hacker tidak dapat langsung menebah password nya apa. Dan hacker tidak dapat menggunakan Rainbow Table (non salt). Hacker harus membuat Rainbow Table baru dengan ditambahkan salt di depannya, lalu di lakukan prosesh hashing, hasilnya di bandingkan dengan info hash yang ada di password.txt.

Hacker akan perlu waktu lama utuk membuat Rainbow Table baru ini.

Rainbow Table di buat dari kamus dan kata-kata umum yang tidak tercantum di kamus.

Bayangkan apabila password: "jakarta" ini diubah menjadi "jAk4rTa212", dimana kata ini tidak pernah tercantum di kamus dan bukan hal yang umum ditemui, maka kemungkinan sulit sekali hacker akan menemukan password ini, walaupun hacker sudah memcoba membuat kembali Rainbow Table baik tanpa salt, maupun dengan salt.

SHA2 & BitCoin

MD5 sudah obsolete (sudah tua) dan tidak secure. Sekarang yang digunakan adalah SHA2.

Ada mata uang di Internet bernama Bitcoint. Bitcoint ini menggunakan SHA2. Apabila para hacker sudah bisa meng-hack SHA2 ini maka pihak yang punya Bitcoin akan rugi, karena harga Bitcoin akan drop.

Friday, July 31, 2015

MD5 - Cyrptrography (part-1)

MD5

Dalam kriptografi, dikenal istilah hashing. Hashing adalah men-identifikasi suatu objek dengan cara mengambil informasi dari objek tsb baik sebagian atau seluruhnya.

Mengambil sebagian, contohnya begini. Misal kita diberikan sebuah film lama oleh teman berjudul "Samson Betawi". Saat menerima kita ragu apakah DVD yang diberikan benar film Samson. Teman kita berkata: "Benar. Kamu ingat kan ada adegan cabut bulu ketek?" Lalu kita ingat. "Oh iya benar di film itu ada adegan tsb". Nah, antara teman dan kita tercapai satu keyakinan bahwa, benar DVD tsb adalah Samson, walau identifikasinya hanya dengan sepotong adegan dalam film tsb.

Mengambil seluruhnya, contohnya begini. Password user-user di sebuh mail server atau web server di simpan setelah di lakukan hashing.

Gambar nya sebagai berikut.

Waktu mendaftar di server mail atau web tsb username: roger, password: jakarta. Nah password jakarta tsb di simpan dalam server dalam format hasing MD5.

jadi kata "jakarta" identik dengan "629ab14fab772d78a58eea752bdfc0dc"

username dan hashed password tsb di simpan dalam file "password.txt".

Waktu user login, user akan memasukkan data username: roger, password: jakarta, lalu server akan melakukan proses hashing "jakarta" ini kembali. Hasil hasing adalah string "629ab14fab772d78a58eea752bdfc0dc". String ini dibandingkan dengan string yang tersimpan dalam file "password.txt" apabila hasilnya sama maka, user di kasih hak akses. Apabila beda, berarti user bukan memasukkan "jakarta" sebagai passwordnya, dan user akan tidak di kasih hak akses.

Bagaimana kalau file "password.txt" di hack?

Apabila hacker mendapatkan file password.txt maka hacker tidak bisa tahu password "roger" adalah "jakarta". Karena proses hashing adalah satu arah. Artinya hashed password "629ab14fab772d78a58eea752bdfc0dc" tidak mungkin di proses ulang sehingga ditemukan kata "jakarta".

Cara satu-satunya bagi hacker adalah melakukan hashing terhadap kamus bahasa Indonesia. Semua kata di hashing, hasilnya dibandingkan dengan "629ab14fab772d78a58eea752bdfc0dc". Mulai dari kata "a", "abi", "ali", "alamat", ..., "jaka", "jakarta", dst. Saat hashing dilakukan terhadap "a" hasilnya di bandingkan dengan "629ab14fab772d78a58eea752bdfc0dc", tidak cocok, lanjut ke "abi".

Sebagai contoh:

a            :0cc175b9c0f1b6a831c399e269772661
abi          :19a9228dbbbe3b613190002e54dc3429
jaka         :9d83066da00b7c7fa9de34117f488653
jakarta      :629ab14fab772d78a58eea752bdfc0dc

Jadi hacker membutuhkan waktu untuk mencari tahu password dengan username "rough".

Akan tetapi apabila semua kata dalam kamus sudah di buatkan daftar hasil hashing MD-5 nya maka hacker tinggal melakukan iterasi. Dan kemungkinan ketemu (password ke hack) jadi tinggi. Hasil hasing kamus ini sering disebut Rainbow Tables.

Untuk mempersulit hacker (shg Rainbow Tables tidak bisa di pakai) maka perlu dilakukan proses Salting (dibahas pada artikel selanjutnya).