Hashing adalah mekanisme yang digunakan untuk menjamin integritas dari data. Hashing didasarkan pada fungsi matematika satu arah: fungsi yang relatif mudah dihitung, tetapi sangat sulit untuk dibalik. Menggiling kopi adalah contoh yang baik dari fungsi satu arah: Sangat mudah untuk menggiling biji kopi, tetapi hampir tidak mungkin untuk mengembalikan semua potongan kecil untuk membangun kembali biji asli.
Gambar di atas ini menggambarkan bagaimana hashing dilakukan. Data dengan panjang dan ukuran tertentu merupakan input untuk fungsi hash, dan hasil dari fungsi hash adalah hash dengan panjang yang tetap (fixed length), yang dikenal sebagai "digest" atau "fingerprint" Ketika data yang sama digunakan fungsi algoritma hash sebanyak dua kali , hasilnya akan identik dan menghasilkan nilai hash yang sama. Setiap modifikasi kecil pada data menghasilkan output yang sangat berbeda. Karakteristik ini sering disebut sebagai efek longsoran salju (avalache effect). Data dianggap otentik jika hasil dari hash menghasilkan nilai hash sesuai yang diharapkan. Karena algoritma hash menghasilkan output dengan panjang tetap, ada keterbatasan dari jumlah output. Ada kemungkinan untuk dua input yang berbeda untuk menghasilkan output yang identikyang disebut dengan "hash collision".
Hashing sendiri mirip dengan perhitungan CRC checksum, tetapi jauh lebih kuat secara kriptografi. CRC dirancang untuk mendeteksi kesalahan yang terjadi secara acak dalam data digital di mana algoritma hash dirancang untuk menjamin integritas data bahkan ketika modifikasi data disengaja dengan tujuan untuk mengirimkan data palsu sebagai otentik. Satu perbedaan utama adalah ukuran "digest" yang dihasilkan. Checksum CRC relatif kecil, seringkali 32 bit. Algoritma hash yang umum digunakan menghasilkan "digest" dalam kisaran 128 hingga 512 bit panjangnya. Secara relatif lebih mudah bagi penyerang untuk menemukan dua input dengan nilai-nilai checksum 32-bit yang identik daripada menemukan dua input dengan intestasi identik 128 hingga 512 bit.
Gambar di bawah ini menunjukkan penggunaan algoritma hash untuk menjamin integritas data. Organisasi yang menawarkan software untuk didownload sering kali mempublikasikan nilai hash untuk memverifikasi integritas data software yang didownload.
halaman rilis dan download ubuntu, menyediakan nilai hash (MD5, SHA1, SHA256) dari file iso ubuntu.
Membandingkan Algoritma Hashing
Tiga fungsi kriptografi hash yang paling umum digunakan adalah MD5, SHA-1, dan SHA-2.
Algoritma MD5 adalah algoritma hashing yang paling umum digunakan yang dikembangkan oleh Ron Rivest. Meskipun MD5 digunakan dalam berbagai aplikasi Internet modern ini, tidak disarankan untuk diterapkan pada pengembangan aplikasi masa kini.
MD5 adalah fungsi satu arah yang membuatnya mudah untuk menghitung hash dari input data yang diberikan, tetapi membuatnya tidak mungkin untuk melihat data asli dengan hanya melihat nilai hashnya saja. MD5 pada dasarnya merupakan urutan kompleks dari operasi biner sederhana, seperti XOR dan rotasi, yang dilakukan pada data input dan menghasilkan nilai dengan panjang 128-bit. MD5 awalnya dianggap cukup baik, tetapi telah terbukti memiliki kerentanan terhadap hash collision.
Algoritma utamanya sendiri didasarkan pada fungsi kompresi, yang beroperasi pada blok. Masukan adalah blok data, ditambah umpan balik dari blok sebelumnya. Blok 512-bit dibagi menjadi enam belas subblock 32-bit. Blok-blok ini kemudian disusun kembali dengan operasi sederhana dalam loop utama, yang terdiri dari empat putaran. Output dari algoritma ini adalah satu set dari empat blok 32-bit, yang digabungkan untuk membentuk nilai hash 128-bit tunggal. Panjang pesan juga dikodekan ke dalam "digest".
NIST (National Institute of Standards and Technology) AS mengembangkan SHA, algoritma yang spesifikasikan dalam Secure Hash Standard (SHS). SHA-1 adalah revisi SHA yang diterbitkan pada tahun 1994. Revisi mengoreksi kesalahan yang tidak dipublikasikan di SHA. Desainnya sangat mirip dengan keluarga hash Message Digest 4 (MD4) yang dikembangkan oleh Ron Rivest.
Algoritma SHA-1 menerima data dengan panjang hingga 264 bit dan menghasilkan digest dengan panjang 160-bit. Algoritma ini sedikit lebih lambat daripada MD5, tetapi digest yang lebih besar membuatnya lebih aman terhadap serangan tabrakan dan inversi brute-force.
Secure Hash Algorithm 2 (SHA-2) terdiri dari enam SHA, SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 dan SHA-512/256. menerima data dengan panjang hingga 264 bit (untuk SHA-224 dan SHA-256) atau hingga 2128 bit (untuk SHA-384 dan SHA-512) sebagai input algoritma SHA-2, hasilnya nilai digest dengan panjangnya berkisar dari 224 hingga 512 bit, tergantung pada algoritmanya. SHA-512 sebenarnya lebih efisien untuk diterapkan daripada SHA-256 pada sistem komputasi 64-bit. SHA-512/224 dan SHA-512/256 didasarkan pada algoritma SHA-512, memodifikasi vektor inisialisasi internal dan memotong output digest ke 224 bit dan 256 bit masing-masing. Mereka diperkenalkan untuk memungkinkan penggunaan algoritma SHA-512 dalam situasi di mana ia lebih cepat daripada SHA-256 dengan ukuran digest yang lebih kecil.
Bagaimana menghasilkan nilai hash??
Secara sederhana proses hashing dapat anda praktekan sendiri, bisa anda gunakan untuk mengitung nilai hash dari file yang diinginkan bisa teks, video, citra, dan file file lainnya.
Kita akan coba fungsi hash mengunakan aplikasi HashCalc.
Disini saya memiliki teks file novel the Hunger Games, saya kemudian menghitung nilai hash nya menggunakan HashCalc.
1. Jalankan aplikasi HashCalc, klik titik tiga untuk browse dan cari file teks novel the hunger games.txt
2. Tentukan algoritma mana yang akan digunakan, disini saya memakai MD5. klik "Calculate".
"d9b102f45830cbdab76bccb8b6ac3692" merupakan nilai digest dari hashing MD5 atau bisa disebut fingerprint. Anda bisa menyimpan nilai tsb dalam file teks untuk kemudian kita bandingkan dengan file yang telah sedikit dimodifikasi.
3. Lakukan sedikit modifikasi pada file teks the hunger games, dengan merubah nama pengarangnya. dari "Suzanne Collins" dengan S adalah huruf kapital menjadi "suzanne Collins" S menjadi huruf kecil (s), kemudian simpan.
4. Lakukan kembali proses kalkulasi hash MD5. hasilnya seperti dibawah
nilai digest nya berubah mejadi "ae193e327197ad2443ea76d76dfc8aa6". jauh berbeda bukan?! seperti diawal saya jelaskan sedikit saja modifikasi akan menghasilkan digest yang sangat berbeda. dengan inilah kita menggunakan hashing sebagai acuan untuk menilai integritas suatu data, misalkan data awal dengan nilai digest "abcde" ketika kita kirim ke orang lain dan orang tersebut melakukan proses verifikasi dengan menghitung ulang nilai digest nya kemudian ternyata sama dan cocok disimpulkan data otentik, jika sebaliknya nilai digest menjadi berbeda artinya data telah berubah, dimodifikasi oleh orang lain, attacker, sniffer, virus atau malware lainnya.
i found best learning course, which is adding my developing skills improve. This is the best decision i have taken to learn Azure Developer Associate. i can showoff my skills & knowledge to employer who want to take advantage of cloud technology & I'm becoming the few skilled people in a rising Industry.
ReplyDelete