it-swarm-id.com

Mengapa orang masih menggunakan / merekomendasikan MD5 jika sudah retak sejak 1996?

Ini masih merupakan cara yang umum direkomendasikan untuk hashing password, walaupun ketidakamanannya telah terbukti pada tahun 1996:

Oleh karena itu kami menyarankan bahwa di masa depan MD5 tidak boleh lagi diimplementasikan dalam aplikasi seperti skema penandatanganan, di mana fungsi hash yang tahan benturan diperlukan. Menurut pengetahuan kami saat ini, rekomendasi terbaik untuk alternatif MD5 adalah SHA-1 dan RIPEMD-160.

(Status MD5 Setelah Serangan Terakhir, CryptoBytes, Laboratorium RSA, VOLUME 2, NUMBER 2 - SUMMER 1996)

Bahkan setelah penelitian ini, dan semua makalah yang akan datang tentang cacat itu, telah direkomendasikan sebagai fungsi hashing kata sandi dalam aplikasi web, sejak saat itu.

Ia bahkan digunakan dalam beberapa tanda tangan digital Otoritas Sertifikasi (menurut http://rmhrisk.wpengine.com/?p=6 )

Apa alasannya, mengapa algoritme intisari pesan ini belum dilarang untuk tujuan keamanan?


Tautan, perlu beberapa menit untuk menemukannya

57
Marek Sebera

Untuk melengkapi jawaban yang baik dari @DW: untuk hashing kata sandi, MD5 tidak lebih rusak daripada fungsi hash lainnya (tapi jangan gunakan itu) .


Gambaran lengkap: MD5 adalah fungsi hash kriptografis yang, dengan demikian, diharapkan memenuhi tiga karakteristik:

  • Perlawanan terhadap preimage: diberikan x, tidak mungkin menemukan m seperti itu MD5 (m) = x.
  • Perlawanan terhadap preimage kedua: diberikan m, tidak mungkin menemukan m ' berbeda dari m dan sedemikian rupa sehingga MD5 (m) = MD5 (m ').
  • Tahan terhadap benturan: tidak mungkin menemukan m dan m ', berbeda satu sama lain, dan sedemikian rupa sehingga MD5 (m) = MD5 (m ').

MD5 benar-benar rusak sehubungan dengan tabrakan, tetapi tidak untuk preimage atau preimage kedua. Terlebih lagi, serangan 1996 (oleh Dobbertin) tidak menghancurkan MD5 sama sekali; itu adalah "tabrakan pada fungsi kompresi", yaitu serangan pada salah satu elemen internal MD5, tetapi bukan fungsi penuh. Cryptographers mengambilnya sebagai bendera peringatan, dan mereka benar karena serangan tabrakan yang sebenarnya yang diterbitkan pada tahun 2004 (oleh Wang) dibangun dari temuan Dobbertin. Tapi MD5 rusak hanya pada 2004, bukan 1996, dan itu adalah serangan tabrakan.

Tabrakan tidak relevan dengan keamanan hashing kata sandi. Sebagian besar penggunaan fungsi hash untuk hashing kata sandi tergantung pada resistensi preimage, atau pada properti lainnya (misalnya seberapa baik fungsi hash bekerja ketika digunakan di dalam HMAC , sesuatu yang tidak dapat direduksi menjadi salah satu properti di atas). MD5 sebenarnya telah "dilemahkan" berkaitan dengan preimage, tetapi hanya secara teoretis, karena biaya serangan masih miliaran miliar kali terlalu mahal untuk benar-benar diadili (sehingga MD5 tidak "benar-benar" rusak sehubungan dengan preimage, tidak secara praktis).

Tapi jangan gunakan MD5 . Bukan karena kelemahan kriptografis, tetapi karena MD5 adalah unsalted dan sangat cepat. Itulah tepatnya yang tidak Anda inginkan dalam fungsi hashing kata sandi. Orang-orang yang "merekomendasikan MD5" untuk hashing kata sandi tidak tahu apa-apa, dan mereka adalah bukti Kebenaran yang harus selalu Anda ingat: tidak semua yang Anda temukan di Internet benar dan dapat dipercaya. Solusi yang lebih baik untuk hashing kata sandi telah diketahui, dan telah digunakan dan digunakan selama lebih dari satu dekade sekarang. Lihat jawaban ini untuk detail dan petunjuk.

76
Thomas Pornin

Apa maksudmu "dilarang"? Siapa yang akan "melarang" penggunaan MD5? Ini tidak seperti kami memiliki beberapa Polisi Kripto Internasional yang menangkap orang-orang yang menggunakan ROT13 dan skema kripto tidak aman lainnya.

Atau, untuk menjadi sedikit lebih serius: kriptografer sudah merekomendasikan bahwa sistem baru harus menghindari MD5, dan mereka merekomendasikan bahwa sistem yang ada harus bermigrasi jauh dari MD5. Saya tidak tahu apa lagi yang menurut Anda dapat dilakukan oleh kriptografer tentang hal ini.

Anda mengklaim bahwa MD5 adalah "cara yang biasa disarankan untuk membuat kata sandi", tetapi Anda tidak memberikan bukti untuk klaim ini. Menurut saya klaim itu tidak benar. Itu bukan pengalaman saya.

Intinya adalah bahwa komunitas kriptografi adalah sudah berbicara cukup jelas, dengan satu suara, pada topik ini, dan kebanyakan orang sedang sudah bermigrasi jauh dari MD5. Kasus-kasus di mana MD5 masih digunakan adalah pengecualian, bukan norma.

Sunting (6/17): Saya melihat bahwa Anda menambahkan beberapa tautan yang menyebutkan penggunaan MD5 untuk hashing. Semua yang mereka buktikan adalah bahwa beberapa orang yang belum pernah saya dengar bingung. Terus? Anda mungkin harus skeptis menerima saran dari orang yang belum memiliki reputasi positif dalam komunitas keamanan/kriptografi. Dan saya tidak mengerti bagaimana Anda bisa mengkritik komunitas keamanan/kriptografi atas fakta bahwa beberapa orang yang tidak ada dalam komunitas tersebut bingung. Apa, tepatnya, yang harus kita lakukan? Kami sudah melakukan semua yang kami bisa untuk memperluas pengetahuan tentang cara yang benar untuk melakukannya. Saya merasa Anda benar-benar menyalahkan orang yang salah.

Bagaimanapun, untuk menjawab pertanyaan Anda tentang mengapa beberapa orang masih merekomendasikan MD5: well, wah, itu mungkin karena orang-orang itu tidak tahu yang lebih baik. Saya tidak tahu apa lagi yang bisa dikatakan orang tentang subjek ini, atau apa lagi yang Anda harapkan dari orang lain.

28
D.W.

Saya pikir apa yang Anda lihat adalah ekor panjang web. Saya dapat menemukan artikel dari 2006 yang merekomendasikan MD5 untuk hashing kata sandi (mis. http://www.pixel2life.com/publish/tutorials/118/understanding_md5_password_encryption/ ) - masih 10 tahun setelah tanggal referensi Anda.

Namun kita berbicara tentang waktu untuk mendapatkan sesuatu dari penelitian mutakhir dalam jurnal kriptografi yang ditinjau oleh rekan sejawat untuk merekomendasikan praktik di antara para praktisi sehari-hari yang tidak membaca jurnal kriptografi dan bahkan bukan ahli dalam bidang itu. Apa yang mungkin terjadi adalah karena pada tahun 1990 setiap orang "tahu" bahwa MD5 baik untuk kata sandi, mereka mengatakan kepada orang lain bahwa MD5 baik untuk kata sandi. Dari akhir 1990-an beberapa orang mengatakan bahwa MD5 buruk untuk kata sandi, tetapi kebanyakan orang "tahu" itu baik untuk kata sandi dan ini masih apa yang mereka sarankan kepada orang lain.

Saat ini, ada cukup banyak orang yang "tahu" bahwa bcrypt bagus untuk kata sandi yang Anda mulai melihat rekomendasi tersebut, tetapi artikel yang mengatakan bahwa MD5 baik untuk kata sandi belum keluar dari indeks mesin pencari. Seiring waktu, mereka akan melakukannya.

Yang berarti bahwa dalam waktu satu dekade Anda akan kembali ke sini dan mengajukan pertanyaan "mengapa orang masih merekomendasikan menggunakan faktor kerja bcrypt dari 10 saat ini jurnal mengatakan Anda harus menggunakan setidaknya 150? "...

Poul Henning-Kamp awalnya memindahkan fungsi crypt () UNIX dari DES ke MD5. Dia menjelaskan di sini bahwa fakta orang menggunakan MD5 menunjukkan bahwa dia tidak berhasil menggambarkan apa yang dia coba lakukan: membuat hashing kata sandi lebih kompleks, bukan menginstal MD5 sebagai shibboleth.

8
user185

Anda memiliki beberapa penggunaan MD5

Pemeriksaan integritas

Memeriksa apakah file yang Anda unduh atau terima adalah dokumen asli dengan memeriksa hash file tersebut. Telah ditunjukkan bahwa Anda dapat dengan mudah membuat file yang memiliki checksum yang sama.

Tabrakan di MD5 adalah mudah diproduksi . MD5 tidak boleh digunakan untuk tujuan itu.

Orang-orang masih mengusulkan MD5 checksum saat mengunduh iso dan lain-lain tetapi sering juga memberikan SHA checksum. Ini dapat dijelaskan karena MD5 jauh lebih cepat dan biasanya diterapkan.

Pemeriksaan kata sandi

Alih-alih menyimpan kata sandi dalam teks yang jelas, Anda menyimpan hash kata sandi. Beberapa situs web masih menggunakan MD5 untuk melakukan itu. Masalahnya di sini bukan untuk menemukan tabrakan tetapi untuk memeriksa tabel Rainbow atau database besar MD5 checksum.

Karena Anda dapat menghasilkan jutaan MD5 checksum dengan sangat cepat, Anda dapat dengan paksa memaksakan kata sandi di PC Anda sendiri. Anda seharusnya tidak menggunakan MD5 untuk hashing kata sandi Anda karena alasan itu tetapi kebanyakan, Anda harus menambahkan sebuah garam .

Jika Anda memiliki kata sandi yang sangat kompleks (panjang dengan karakter khusus) dan garam kompleks unik untuk setiap kata sandi yang disimpan, tidak terlalu masalah bagi Anda untuk menggunakan MD5. Saya tidak mengatakan Anda harus (Anda tidak seharusnya) tetapi itu bukan masalah keamanan besar untuk menggunakan MD5 jika kata sandi akan sulit untuk memaksa dan penggunaan tabel Rainbow dicegah oleh garam. Tentu saja, di situs web Anda, tidak mudah (dan dihargai) untuk memaksa pengguna memiliki kata sandi yang rumit, jadi jika pengguna mendaftar 12345, apa pun fungsi hash yang Anda gunakan, itu akan rusak.

Alasan orang masih menggunakan itu mungkin karena itu masih fungsi hash paling dikenal dan masih dapat diterima beberapa tahun yang lalu. Orang yang tidak banyak pengetahuan kripto dapat menggunakannya.

6
Martin Trigaux

Saya pikir itu tidak dianjurkan. Wikipedia menyatakan bahwa MD5 dianggap rusak dan SHA-2 atau SHA keluarga disarankan untuk menggantinya. Lihat juga Rencanakan , a Ruby permata yang menangani otorisasi. Ia memiliki jenis enkripsi yang berbeda.

3
Travis Pessetto

Bahkan setelah penelitian ini, dan semua makalah yang akan datang tentang cacat itu, telah direkomendasikan sebagai hashing kata sandi fungsi dalam aplikasi web, sejak saat itu.

Ya dan?

Kata sandi hanya menghabiskan waktu saja.

MD5 ^ n (MD5 iterated n kali) sama baiknya dengan SHA1 ^ m (untuk m seperti time(MD5^n) >= time(SHA1^m)) untuk - buang-buang wakt.

Tidak ada yang menyarankan cara apa pun untuk menghitung MD5 ^ n dengan cara yang lebih cepat dari MD5 o MD5^(n-1) yang jelas. Bahkan tidak ada awal dari ide untuk melakukan itu.

Tidak ada yang rusak di sini.

Untuk membuang-buang time.space, Anda harus mempertimbangkan scrypt.

2
curiousguy

Ini adalah informasi resmi tentang MD5 - MD5 rentan terhadap serangan tabrakan Untuk keamanan yang lebih tinggi SHA-2 harus dipertimbangkan. Tidak ada yang menghentikan pengguna dari menggunakan MD5, tetapi tidak untuk data yang ingin Anda jaga kerahasiaannya.

Kinerja algoritma hash

Seperti yang ditunjukkan dalam diagram "Kinerja algoritma hash", SHA256 jauh lebih cepat daripada MD5.

Ini adalah sumber yang bagus untuk dipertimbangkan, penulis melihat ke LinkedIn leaked passwords- queue (.) Acm (.) Org/detail.cfm? Id = 2254400 & ref = fullrss, juga menunjukkan beberapa cara tentang cara mengamankan kata sandi.

1
user1652382

Masalah hashing kata sandi dan penggunaan tabel Rainbow adalah untuk keamanan server web yang dieksploitasi melalui kelemahan mendasar.

Yang pertama adalah semua situs web ini mengaku menawarkan tes sederhana untuk melihat apakah kata sandi Anda aman ... Ummm mari kita lihat situs-situs ini sebagai phishing dan yang dilakukan semua orang yang mengunjungi situs-situs ini adalah memberi makan meja Rainbow. Itu adalah salah satu bagian dari masalah.

Kedua adalah orang-orang yang menggunakan layanan web hosting di mana tujuannya adalah untuk mendapatkan uang dan melupakan keamanan server web, host ini harus memasang dinding dan menembak IMHO, bagian dari keamanan login pengguna berasal dari keamanan server web dan teknologi yang mendasarinya mutakhir untuk menghentikan eksploitasi yang diketahui digunakan.

Yang ketiga adalah begitu orang-orang mengetahui bahwa meskipun MD5 tidak tahan terhadap benturan atau saya lebih suka sekuat mungkin, masih sulit bagi akun pengguna untuk diretas kecuali Anda memiliki Web Host yang menjalankan sistem yang dapat dieksploitasi. , pengkodean web Anda tidak kuat dan Anda membuka diri dengan menggunakan situs yang mengklaim memeriksa keamanan kata sandi Anda.

Untuk sebagian besar MD5 + nilai Garam adalah keamanan yang memadai untuk login pengguna di forum web selama sistem dan perangkat lunak yang disebutkan sebelumnya tidak dapat dieksploitasi. Setelah Anda memiliki sistem yang telah dieksploitasi untuk kelemahan, menjalankan kueri untuk nilai hash yang diketahui yang tidak menggunakan sistem salting akan mengekspos kelemahan keempat ... pengguna akhir.

Keempat adalah pengguna akhir, keamanan web Anda pada akhirnya hanya sekuat tautan terlemah dan bagi banyak orang mereka akan melihat pengguna akhir hanya seperti itu dan admin perlu mengingat bahwa mereka adalah pengguna akhir suatu sistem dan sama-sama rentan terhadap mengkompromikan keamanan sistem dengan menggunakan program atau perangkat lunak yang ceroboh yang mudah rusak, keamanan kata sandi yang buruk dan juga gagal mengubah login ADMIN atau menggunakan perangkat lunak yang saat ini masih bersikeras memiliki nama login admin sebagai Admin dan juga menggunakan akun pengguna super.

Jadi tidak usah dikatakan lagi, jadi saya akan mengatakannya, MD5 tidak retak, direkayasa balik melalui pengguna yang lemah, perangkat lunak yang lemah dan ketidakmampuan masyarakat untuk memahami suatu teknologi. Jika MD5 retak, begitu juga SHA dan AES dan seterusnya ...

0
Mark Giblin