Saat menggunakan md5sum
untuk memverifikasi integritas file, seberapa akurat prosesnya?
Apakah MD5 terverifikasi berarti SETIAP bit persis sama, atau adakah ambang batas yang harus dipatahkan sebelum perubahan biner tercermin dalam MD5?
Dokumentasi tentang bagaimana md5 dihasilkan juga akan dihargai.
Jawaban:
MD5 rusak untuk tujuan ini melawan musuh yang cerdas. Dimungkinkan untuk secara jahat membangun dua blok data berbeda yang menghasilkan hash MD5 yang sama.
Namun, itu sepenuhnya cocok (meskipun hampir pasti ada cara yang lebih baik) untuk menggunakan MD5 untuk melindungi terhadap korupsi data yang tidak disengaja dalam perjalanan atau penyimpanan. Meskipun dapat dibayangkan bahwa peristiwa seperti itu dapat menyebabkan hash MD5 sama, kemungkinannya sangat rendah sehingga hampir tidak dapat dibayangkan bahwa itu adalah probabilitas yang layak untuk dikhawatirkan. Kegagalan yang disebabkan oleh radiasi latar belakang, tunneling, statis, dan puluhan sumber lain akan menjadi urutan besarnya lebih mungkin.
Bahkan jika Anda memiliki kuadriliun unit data, probabilitas bahwa MD5 yang tidak cocok akan menghasilkan hash MD5 milik salah satu unit kuadriliun jauh lebih kecil dari satu dalam kuadriliun.
sumber
MD5 adalah hash. Ini pada dasarnya memetakan seluruh konten file ke dalam string kecil yang panjang 16 byte IIRC.
Jelas akan ada banyak file yang hash ke jumlah MD5 yang sama. Oleh karena itu, jumlah MD5 yang cocok bukan jaminan kecocokan yang tepat antara file.
Tidak ada batasan seperti itu karena cara hash bekerja. Jadi jumlah MD5 dapat mendeteksi bahkan perubahan bit tunggal. Namun, banyak perubahan bit tunggal bersama-sama dapat menyebabkan hash MD5 menjadi sama. Oleh karena itu cukup masuk akal untuk menggunakan MD5 untuk memvalidasi integritas file terhadap korupsi acak tetapi tidak jika niat jahat dimungkinkan karena seseorang dapat memodifikasi file sambil memastikan hash MD5 sama.
sumber
MD5-Hash terdiri dari 128bits. Satu bit terbalik dalam sumber membalik (rata-rata) 64 bit dalam hash.
Probabilitas dari dua hash yang secara tidak sengaja bertabrakan adalah 1/2 ^ 128 yaitu 1 dari 340 undecillion 282 decillion 366 nonillion 920 octillion 938 septillion 463 sextillion 463 quintillion 374 quadrillion 607 triliun 437 miliar 431 miliar 768 juta 211 ribu 456.
Namun jika Anda menyimpan semua hash maka berkat probabilitas paradoks ulang tahun sedikit lebih tinggi. Untuk memiliki 50% kemungkinan benturan hash apa pun, Anda memerlukan 2 ^ 64 hash. Ini berarti bahwa untuk mendapatkan tabrakan, rata-rata, Anda harus hash 6 miliar file per detik selama 100 tahun.
Sumber: porneL, https://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces-collisions
sumber