it-swarm-id.com

Apakah MD5 dianggap tidak aman?

Setelah semua artikel ini beredar online tentang md5 exploits, saya mempertimbangkan untuk beralih ke algoritma hash lain. Sejauh yang saya tahu itu selalu menjadi algoritma pilihan di antara banyak DBA. Apakah banyak manfaat menggunakan MD5 daripada (SHA1, SHA256, SHA384, SHA512), atau itu murni masalah kinerja?

Apa hash lain yang Anda rekomendasikan (dengan mempertimbangkan aplikasi data-terikat sebagai platform)? Saya menggunakan hash asin saat ini (hash asin MD5). Harap pertimbangkan hash file md5 dan hash kata sandi sama.

89
Tawfik Khalifeh

MD5 untuk kata sandi

Menggunakan md5 asin untuk kata sandi adalah ide yang buruk. Bukan karena kelemahan kriptografi MD5, tetapi karena cepat. Ini berarti bahwa seorang penyerang dapat mencoba miliaran kata sandi kandidat per detik pada satu GPU.

Apa yang harus Anda gunakan adalah konstruksi hash yang sengaja lambat, seperti scrypt, bcrypt dan PBKDF2. Asin sederhana SHA-2 tidak cukup baik karena, seperti hash tujuan umum, cepat. Lihat Bagaimana cara mengamankan kata sandi hash? untuk detail tentang apa yang harus Anda gunakan.

MD5 untuk integritas file

Menggunakan MD5 untuk integritas file mungkin atau mungkin bukan masalah praktis, tergantung pada skenario penggunaan yang tepat.

Serangan terhadap MD5 adalah serangan tabrakan, bukan serangan pra-gambar. Ini berarti penyerang dapat menghasilkan dua file dengan hash yang sama, jika ia memiliki kendali atas keduanya. Tapi dia tidak bisa menyamai hash dari file yang ada yang tidak dia pengaruhi.

Saya tidak tahu apakah serangan itu berlaku untuk aplikasi Anda, tetapi secara pribadi saya akan mulai bermigrasi walaupun Anda pikir tidak. Terlalu mudah untuk mengabaikan sesuatu. Lebih baik aman daripada menyesal.

Solusi terbaik dalam konteks ini adalah SHA-2 (SHA-256) untuk saat ini. Setelah SHA-3 distandarisasi, itu akan menjadi pilihan yang baik juga.

108
CodesInChaos

Untuk menyelesaikan jawaban @CodesInChaos ', MD5 sering digunakan karena Tradisi , bukan karena kinerja. Orang-orang yang berurusan dengan database bukanlah orang-orang yang sama dengan mereka yang berurusan dengan keamanan. Mereka sering melihat tidak ada masalah dalam menggunakan algoritma yang lemah (mis. Lihat lelucon dari suatu algoritma yang digunakan MySQL untuk hashing passwords). Mereka menggunakan MD5 karena mereka dulu menggunakan MD5 dan terbiasa menggunakan MD5.

Kinerja lebih sering dibahas daripada diukur; namun, secara logis, tidak mungkin ada masalah kinerja jika tidak ada yang diukur. Menggunakan satu inti dari CPU dasar, Anda dapat hash lebih dari 400 MBytes per detik dengan MD5, lebih dekat ke 300 MB/s dengan SHA-1, dan 150 MB/s dengan SHA-256. Di sisi lain, hard disk yang layak akan menghasilkan data pada tingkat yang lebih rendah (100 hingga 120 MB/s akan khas) sehingga fungsi hash hampir tidak pernah menjadi hambatan. Akibatnya, tidak ada masalah kinerja relatif untuk hashing dalam database.

Rekomendasi biasa, untuk fungsi hash, adalah:

  1. Jangan lakukan itu. Anda tidak boleh menggunakan algoritma kriptografi dasar, tetapi protokol yang merakit beberapa algoritma sehingga mereka secara kolektif menyediakan beberapa fitur keamanan (mis. Transfer data dengan kerahasiaan dan integritas).

  2. Sungguh, jangan lakukan itu. Untuk menyimpan kata sandi (lebih akurat, token verifikasi kata sandi), jangan membuat campuran khusus fungsi dan garam hash; menggunakan konstruksi yang telah dipelajari secara khusus untuk penggunaan seperti itu. Ini biasanya berarti bcrypt atau PBKDF2 .

  3. Jika fungsi hash benar-benar berfungsi, gunakan SHA-256. Pertimbangkan untuk menggunakan fungsi lain hanya jika beberapa masalah serius dengan SHA-256 (kemungkinan besar performance) telah terdeteksi dan diukur.

35
Thomas Pornin

Saya menggunakan hash asin saat ini (hash asin MD5).

Jika Anda memberi garam hash MD5, Anda pasti tidak ingin menggunakan MD5. Sepertinya Anda perlu menggunakan PBKDF2 atau bcrypt.

Sejauh yang saya tahu itu selalu menjadi algoritma pilihan di antara banyak DBA.

Itu bukan alasan kuat.

Saya telah bekerja dengan banyak DBA yang setidaknya 5 tahun ketinggalan dalam teknologi umum (tidak menggunakan kontrol versi, skrip Perl yang belum diformat untuk semuanya, dll). Mereka mungkin DBA yang sangat buruk, tapi saya pikir itu datang dengan pola pikir yang sangat konservatif untuk tidak mengubah hal-hal.

6
Bradley Kreider

Hanya untuk melengkapi jawaban yang telah diberikan (sebagian besar sangat bagus) kami sekarang memiliki contoh dunia nyata di mana pelanggaran data (Ashley Madison) menyebabkan seluruh tabel kata sandi bocor. Mereka menggunakan bcrypt dengan garam acak untuk hash kata sandi. Seorang peneliti keamanan memutuskan untuk mengambil hash dan dengan kasar memaksa mereka. Ini hasilnya

Sebagai hasil dari semua ini, bcrypt menempatkan tuntutan Hercules pada siapa pun yang mencoba memecahkan Ashley Madison dump untuk setidaknya dua alasan. Pertama, iterasi hashing 4.096 membutuhkan daya komputasi dalam jumlah besar. Dalam kasus Pierce, bcrypt membatasi kecepatan cracking empat-GPU-nya menjadi hanya 156 tebakan per detik. Kedua, karena bcrypt hash digarami, rig-nya harus menebak plaintext dari masing-masing hash pada satu waktu, daripada semua bersamaan.

"Ya, benar, hash per detik," tulis Pierce. "Untuk seseorang yang terbiasa memecahkan kata sandi MD5, ini terlihat cukup mengecewakan, tapi itu bcrypt, jadi aku akan mengambil apa yang bisa aku dapatkan."

Pierce menyerah begitu dia melewati angka 4.000. Untuk menjalankan semua enam juta hash di kolam terbatas Pierce melawan kata sandi RockYou akan membutuhkan waktu 19.493 tahun, dia memperkirakan. Dengan total 36 juta kata sandi yang di-hash di tempat sampah Ashley Madison, dibutuhkan waktu 116.958 tahun untuk menyelesaikan pekerjaan.

Pada akhirnya, satu-satunya yang bisa dia pecahkan adalah kata sandi yang sangat sederhana atau umum (seperti "123456").

4
Machavity

Singkatnya, ini cukup tidak aman sekarang karena tabel Rainbow, tabel Rainbow adalah daftar hash MD5 dan string yang cocok. Jadi pada dasarnya saya akan mempertimbangkan alternatif lain seperti SHA1

0
Shane

Ya MD5 tidak aman dan begitu juga SHA-1, saya sarankan menggunakan SHA-256 jika ukuran intinya adalah masalah. Ingat, jika Anda menyimpannya dalam kolom BINARY, itu akan memakan waktu lebih sedikit jika disimpan ke CHAR. Pastikan itu dilakukan dengan benar. MD5 sekitar 2.3x lebih cepat dari SHA-256. Lebih banyak tolok ukur ada di http://www.cryptopp.com/benchmarks.html

0
Matrix