Keamanan Serius: MD5 dianggap berbahaya – senilai $600,000 PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Keamanan Serius: MD5 dianggap berbahaya – hingga $600,000

Dalam pertimbangan hukum yang menarik yang dijatuhkan oleh regulator perlindungan data Prancis CNIL (Komisi Nasional untuk Komputasi dan Kebebasan), perusahaan energi Électricité de France, atau singkatnya EDF, telah didenda EUR 600,000 (sekitar $600,000).

Deklarasi hukum, dengan cara seperti itu, agak panjang dan (untuk non-pengacara, setidaknya) secara linguistik orotund, yang berarti Anda memerlukan kemahiran yang wajar dalam bahasa Prancis untuk memahami semua seluk beluk masalah ini, tetapi keseluruhan kasus bermuara pada empat pelanggaran.

Tiga yang pertama berkaitan dengan interaksi terkait data umum dengan pelanggan, meliputi:

  • Mengirim email pemasaran komersial tanpa persetujuan yang tepat.
  • Mengumpulkan data tanpa menjelaskan apa atau mengapa.
  • Tidak menangani permintaan dengan andal ketika pelanggan meminta untuk melihat data mereka, untuk atau menghapusnya.

Tapi itu keluhan terakhir yang menggelitik minat kami: Sur le manquement à l'obligation d'assurer la sécurité des données.

Dalam bahasa Inggris, ini diterjemahkan secara longgar sebagai kegagalan untuk menyimpan data dengan aman, dan berhubungan sangat spesifik dengan penanganan kata sandi yang tidak aman.

MD5 dianggap berbahaya

Regulator mencatat, antara lain, bahwa meskipun mengklaim itu adalah kata sandi salting-and-then-hashing menggunakan algoritme hashing yang diterima, EDF masih memiliki lebih dari 25,000 kata sandi pengguna yang "diamankan" dengan satu hash MD5 hingga Juli 2022.

Seperti yang sering Anda dengar di Naked Security, menyimpan file hash kriptografis dari kata sandi berarti Anda dapat memvalidasi kata sandi saat disajikan hanya dengan menghitung ulang hashnya dan membandingkannya dengan hash kata sandi yang awalnya dipilih.

Jika hash cocok, maka Anda dapat dengan aman menyimpulkan bahwa kata sandi cocok, tanpa perlu menyimpan kata sandi yang sebenarnya.

Saat disajikan, kata sandi hanya perlu disimpan sementara di memori, dan dapat dibuang segera setelah hashnya dihitung.

Selama algoritme hashing dianggap aman secara kriptografis, algoritme tersebut tidak dapat "dijalankan secara terbalik", jadi Anda tidak dapat bekerja mundur dari hash untuk mengungkapkan apa pun tentang kata sandi itu sendiri. (Hash semacam ini dikenal dalam jargon sebagai a fungsi satu arah.)

Demikian pula, algoritma hashing yang layak mencegah Anda memulai dengan hash yang diketahui dan merancang beberapa nilai input – input apa pun, tidak harus kata sandi asli – yang menghasilkan hash yang diinginkan.

Anda perlu mencoba input demi input sampai Anda beruntung, yang untuk hash bahkan 128 bit akan memakan waktu terlalu lama untuk menjadi serangan yang bisa dilakukan. (Sebuah hash dengan tindakan pencegahan keamanan yang tidak memungkinkan Anda mengetahui beberapa input dengan output yang sama dikatakan tahan benturan.)

Tapi MD5, seperti yang mungkin Anda ketahui, memiliki masalah yang signifikan dengan tabrakan, seperti halnya penerus langsung SHA-1 (kedua hash ini keluar pada awal 1990-an).

Saat ini, tidak ada algoritme yang direkomendasikan untuk digunakan di mana pun, oleh siapa pun, untuk tujuan apa pun, mengingat ada alternatif serupa namun tetap aman yang dapat dengan mudah digunakan untuk menggantikannya, seperti SHA-256 dan SHA-512:

Hash MD5 panjangnya 128 bit, atau 16 byte. SHA-256 dan SHA-512 masing-masing berukuran 2x dan 4x. Tapi bukan panjang hash ekstra ini saja yang membuat mereka lebih cocok. Keuntungan utama mereka atas MD5 adalah bahwa mereka tidak memiliki masalah khusus yang diketahui dengan tabrakan, sehingga keamanan kriptografi mereka tidak dianggap meragukan sebagai hasilnya.

Pengasinan dan peregangan

Singkatnya, Anda tidak akan mengharapkan perusahaan mana pun, apalagi raksasa sektor energi seperti EDF, menggunakan MD5 untuk tujuan kriptografi apa pun, apalagi untuk mengamankan kata sandi.

Lebih buruk lagi, bagaimanapun, adalah kurangnya pengasinan, di mana potongan data yang dipilih secara acak untuk setiap pengguna dicampur dengan kata sandi sebelum hashnya dihitung.

Alasan garam sederhana: ini memastikan bahwa nilai hash dari kata sandi potensial tidak dapat dihitung sebelumnya dan kemudian dibawa untuk membantu serangan.

Tanpa salting, setiap kali ada pengguna yang memilih kata sandi 123456, para penjahat tahu sebelumnya apa hashnya.

Bahkan jika pengguna memilih kata sandi yang lebih cocok, seperti 34DF6467!Lqa9, Anda dapat mengetahui sebelumnya bahwa hash MD5-nya akan menjadi 7063a00e 41866d47 f6226e60 67986e91.

Jika Anda memiliki daftar kata sandi yang dihitung sebelumnya yang cukup panjang, atau kata sandi yang dihitung sebagian (dikenal dengan sangat baik dalam jargon sebagai meja pelangi), Anda mungkin dapat memulihkan kata sandi melalui tabel daripada mencoba triliunan kombinasi kata sandi sampai Anda beruntung.

Pengasinan berarti Anda membutuhkan tabel pelangi yang lengkap dan telah dihitung sebelumnya untuk setiap pengguna (tabel ditentukan oleh kombinasi garam + kata sandi), dan Anda tidak akan dapat menghitung setiap tabel pelangi – tugas yang dapat memakan waktu beberapa minggu dan menempati ruang disk terabyte – sampai Anda tetap memulihkan garamnya,

Tapi ada lagi yang perlu Anda lakukan.

Bahkan jika Anda menyertakan garam, sehingga "kamus hash" yang telah dihitung sebelumnya tidak dapat digunakan, dan Anda menggunakan algoritme kriptografi tepercaya seperti SHA-512, satu kalkulasi hash saja sudah cukup cepat sehingga penyerang yang telah memperoleh database hash dapat masih mencoba miliaran kata sandi yang mungkin dalam satu detik, atau bahkan lebih.

Jadi, Anda harus menggunakan apa yang disebut peregangan juga, di mana Anda tidak hanya menambahkan kata sandi awal, tetapi kemudian meneruskan input melalui algoritme hashing ribuan kali atau lebih dalam satu lingkaran, sehingga membuat serangan jauh lebih memakan waktu bagi penjahat mana pun yang ingin mencoba.

Tidak seperti penjumlahan berulang, di mana Anda dapat menggunakan perkalian tunggal sebagai jalan pintas untuk mengganti, katakanlah, perhitungan 5+5+5+5+5+5 dengan 6×5, tidak ada jalan pintas untuk hash berulang. Untuk hash input 1000 kali membutuhkan 1000 "putaran" dari pegangan perhitungan kriptografi.

Bukan hanya masalah MD5

Ironisnya, tampaknya meskipun EDF hanya memiliki 25,800 kata sandi yang di-hash dengan MD5, dan mengklaim dalam pembelaannya bahwa sebagian besar menggunakan SHA-512 sebagai gantinya, itu masih tidak selalu mengasinkan atau memperluas hash yang disimpan.

Regulator melaporkan bahwa 11,200,000 kata sandi telah diasinkan dan di-hash dengan benar, tetapi masih ada 2,400,000 yang hanya di-hash secara langsung satu kali, baik dengan MD5 atau SHA-512.

Rupanya, EDF sekarang telah meningkatkan penyimpanan kata sandinya, tetapi perusahaan itu tetap didenda EUR 600,000, dan akan tetap terdaftar secara online di "langkah nakal" CNIL selama dua tahun ke depan.

Kami tidak dapat memastikan denda apa yang akan dikenakan jika keputusan hanya melibatkan hashing yang buruk, dan EDF juga tidak harus menjawab tiga pelanggaran perlindungan data lainnya yang tercantum di awal…

… tetapi ini menunjukkan bahwa pilihan kriptografi yang buruk dapat menghabiskan banyak uang Anda!

Apa yang harus dilakukan?

Simpan kata sandi pelanggan Anda aman!

Biaya komputasi ekstra untuk salting-and-stretching dapat dipilih sehingga pengguna individu tidak merasa terganggu saat mereka login, namun calon penyerang memiliki kecepatan serangan yang meningkat beberapa kali lipat.

Serangan pemulihan kata sandi yang mungkin membutuhkan waktu seminggu untuk mengekstraksi 10% kata sandi yang disimpan sebagai hash sekali pakai sederhana, secara teori, akan memakan waktu 200 tahun (10,000 minggu) jika Anda membuat biaya komputasi setiap kata sandi percobaan 10,000 kali lebih keras .

Baca kami artikel penjelasan yang sangat baik tentang hal ini:

Singkatnya, kami merekomendasikan PBKDF2 algoritma "peregangan" dengan SHA-256 sebagai hash intinya, dengan acak per pengguna salt of 16 bytes (128 bit) atau lebih.

Ini sesuai dengan rekomendasi dalam penilaian terbaru CNIL.

CNIL tidak menawarkan saran untuk jumlah iterasi PBKDF2, tetapi seperti yang akan Anda lihat di artikel kami, saran kami (Oktober 2022) adalah menggunakan 200,000 or more. (Anda dapat meningkatkan jumlah loop secara teratur untuk mengimbangi peningkatan daya komputasi.)

Jika Anda tidak ingin menggunakan PBKDF2, kami sarankan untuk membaca algoritme bcrypt, scrypt dan Argon2 untuk membantu Anda membuat pilihan yang bijak.

Jangan terjebak pada langkah nakal kriptografi!


Stempel Waktu:

Lebih dari Keamanan Telanjang