it-swarm-id.com

Apakah garam SHA-256/512 asin masih aman jika hash dan garamnya terkena?

Skenario: database kata sandi hash dan dan asin, termasuk garam untuk setiap kata sandi, dicuri oleh pengguna jahat. Kata sandi sepanjang 6-10 karakter dan dipilih oleh pengguna non-teknis.

Bisakah pengguna jahat ini memecahkan kata sandi ini?

Pemahaman saya adalah bahwa MD5 dan SHA-1 tidak aman lagi karena alat pemulihan kata sandi berbantuan GPU dapat menghitung milyaran hash ini per detik per GPU.

Bagaimana dengan SHA-256 atau SHA-512? Apakah mereka aman saat ini? Bagaimana dengan dalam beberapa tahun?

51
Seppo Erviälä

Pertanyaannya tidak menyatakan berapa banyak putaran hashing yang dilakukan. Dan seluruh jawaban bergantung pada hal itu.

Semua fungsi hash tidak aman jika Anda hanya menggunakan satu iterasi. Fungsi hash, apakah itu SHA-1, atau salah satu keluarga SHA-2, harus diulang ribuan kali. Saya akan mempertimbangkan 10.000 iterasi minimum, dan 100.000 iterasi tidak masuk akal, mengingat biaya rendah perangkat keras yang kuat.

Kata sandi pendek juga tidak aman. 8 karakter harus menjadi minimum, bahkan untuk target bernilai rendah (karena pengguna menggunakan kembali kata sandi yang sama untuk beberapa aplikasi).

Dengan kartu grafis $ 150, Anda dapat melakukan 680 juta perhitungan hash SHA-1 per detik. Jika Anda hanya menggunakan satu putaran hashing, semua Kata sandi 6 karakter dapat diuji dalam waktu lebih dari 15 menit (dengan asumsi semua 94 dapat dicetak ASCII karakter digunakan). Setiap karakter tambahan mengalikan waktu dengan 94, jadi 7 karakter membutuhkan satu hari, 8 karakter memerlukan 103 hari pada pengaturan ini. Ingat, skenario ini adalah 14 tahun menggunakan GPU-nya, bukan penjahat terorganisir dengan uang nyata.

Sekarang pertimbangkan efek dari melakukan beberapa iterasi. Jika 1.000 iterasi hashing dilakukan, ruang kata sandi 6 karakter membutuhkan waktu hampir 12 hari, bukan 15 menit. Ruang 7 karakter membutuhkan waktu 3 tahun. Jika 20.000 iterasi digunakan, angka-angka itu masing-masing mencapai 8 bulan dan 60 tahun. Pada titik ini, bahkan kata sandi singkat tidak dapat dicari secara mendalam; penyerang harus kembali ke kamus kata sandi "kemungkinan besar".

61
erickson

Garam dapat dianggap publik praktis menurut definisi .

Mengenai hash apa yang harus digunakan dan seberapa "aman" itu, saya akan tetap dengan rekomendasi yang dibuat NIST untuk lembaga pemerintah AS. As artikel Wikipedia mengatakan:

SHA-1 sedang pensiun untuk sebagian besar penggunaan pemerintah; Institut Nasional Standar dan Teknologi AS mengatakan, "Badan-badan Federal harus berhenti menggunakan SHA-1 untuk ... aplikasi yang memerlukan resistensi tabrakan segera setelah praktis , dan harus menggunakan keluarga SHA-2 fungsi hash untuk aplikasi ini setelah 2010 "

Anda dapat berspekulasi tentang seberapa aman atau tidak amannya berbagai algoritma, tetapi mengapa repot ketika Anda memiliki spesifikasi yang oleh pemerintah A.S. dianggap cukup baik untuk digunakan sendiri?

[sunting]

Omong-omong, pertanyaan Anda tampaknya mencerminkan kesalahpahaman tentang bagaimana analisis ini dilakukan. Ada banyak lebih ke fungsi hash daripada jumlah bitnya.

Brute-forcing hash 160-bit seperti SHA-1 membutuhkan upaya 2 ^ 160; itu tidak akan terjadi, tidak peduli berapa banyak "GPU" yang Anda lemparkan padanya. Bahkan itu mungkin tidak akan terjadi dalam masa kehidupan semesta. (Benar, memaksa tabrakan membutuhkan "hanya" 2 ^ 80 upaya. Tetapi juga membutuhkan 2 ^ 80 penyimpanan . Semoga beruntung dengan itu.)

Alasan MD5 dan SHA-1 dianggap "mungkin tidak aman" adalah bahwa kelemahan telah ditemukan dalam setiap algoritma yang mungkin mengurangi cara kerja, jauh di bawah upaya brute-force. Alasan untuk beralih ke algoritma yang lebih baru (seperti SHA-2) adalah untuk menghindari kelemahan yang diketahui; alasan untuk menggunakan 256 bit adalah untuk menyediakan beberapa buffer terhadap tidak diketahui kelemahan. Itu tidak ada hubungannya dengan "GPU"; untuk menahan serangan brute-force, 160 bit banyak.

Omong-omong pernyataan serupa berlaku untuk semua kriptografi.

Sekarang, tidak mungkin untuk melebih-lebihkan berapa banyak orang di NSA tahu tentang hal ini daripada Anda atau saya. Mereka membuat rekomendasi untuk agen pemerintah AS dan industri AS melalui NIST. Jadi kecuali musuh Anda itu sendiri adalah pemerintah dunia utama, rekomendasi NIST lebih dari cukup. Abaikan saja "ahli" yang memproklamirkan diri sendiri yang mencoba untuk memberitahu Anda sebaliknya; NSA lebih baik dalam hal apa yang dilakukannya daripada yang Anda bisa lakukan membayangkan.

Jika musuh Anda adalah pemerintah dunia utama, tidak ada seorang pun di SO memenuhi syarat untuk membantu Anda. Dan Anda memiliki jauh lebih besar masalah daripada fungsi hash yang digunakan.

[edit 2]

Tentu saja saya berasumsi Anda sudah menggunakan fungsi ini sebagai bagian dari skema hashing kata sandi standar, seperti PKCS # 5 (juga dikenal sebagai "PBKDF2"), dan pertanyaan Anda adalah murni tentang fungsi hash untuk menggunakan.

PBKDF2 merekomendasikan minimal 1000 iterasi, tetapi Anda dapat memilih apa pun yang Anda inginkan. Upaya brute-force penyerang naik secara linier dengan angka itu, jadi 10.000 iterasi vs 1000 berarti mereka akan butuh 10 kali lebih lama untuk brute-force setiap kata sandi.

17
Nemo

Jika penyerang mengetahui garam, ia dapat menghitung tabel Rainbow baru berdasarkan nilai garam.

Itu tergantung pada algoritma yang digunakan. Menurut Coda Hale , MD5 dan SHA keluarga algoritma hashing adalah tujuan umum dan dimaksudkan untuk kecepatan. Singkatnya, ia melanjutkan untuk menyimpulkan bahwa ini tidak cukup untuk mencegah serangan kamus dan bcrypt adalah cara yang harus dilakukan, karena ada lebih banyak waktu pengaturan yang terlibat dalam meretas kata sandi, secara drastis memperlambat penyerang. Berikut artikel menarik lainnya di bcrypt .

Bagaimana dengan SHA-256 atau SHA-512? Apakah mereka aman saat ini? Bagaimana dengan dalam beberapa tahun?

Berhati-hatilah, ada dua sisi dari argumen ini. Ada sisi bcrypt dan SHA-256 dan sisi atas. Jika Anda percaya orang-orang di sisi keluarga SHA, maka saya yakin Anda akan aman selama lebih dari beberapa tahun dengan SHA-256, bahkan beberapa orang berpendapat bahwa SHA-1 dengan garam masih cukup bagus, tetapi jika Anda ingin aman maka saya akan tetap berpegang pada SHA-256. Ada forum yang juga menyebutkan bahwa MD5 masih memiliki 5-10 tahun untuk dibuktikan "cukup tidak dapat diandalkan." Sayangnya saya tidak dapat memposting tautan untuk itu, karena saya sudah mencapai maksimum dua.

Secara pribadi, saya menggunakan SHA-256 dengan garam, tetapi saya pasti harus membaca lebih lanjut tentang bcrypt dan mengevaluasi ulang. Semoga ini bisa membantu. Ini adalah jenis pertanyaan yang Anda dapat dengan mudah menghabiskan berjam-jam meneliti, tetapi tetap menarik.

1
SantosLHalper