PBKDF2-HMAC Çarpışmaları
Belirli bir anahtarın özet işlevinin blok boyutundan daha büyük olduğu SHA1, SHA256, vb. İle kullanıldığında bu çarpışmaların iyi bilinen özelliklerini anlamaya çalışmak. Bu durumlarda, çarpışmalardan daha küçük olanı SHA1 için 20 karakter ve SHA256 için 32 karakter (onaltılık özet uzunluğunun yarısı) olacaktır, bu nedenle bu, bir saldırganın yalnızca dikkate alması gereken bir PBKDF2-HMAC-SHA1 için kaba kuvvet anlamına gelir. 20 karakter veya daha kısa parolalar? Ve bu nedenle SHA256 kullanıyorsanız 32 veya daha az? Daha uzun parolalar anlamsız mıdır? Teşekkürler.
Yanıtlar
"PBKDF2-HMAC-SHA1'e kaba kuvvet" çarpışmalarla ilgili değildir (en azından tek bir hash hedeflenmişse veya parola karmasının girişinde tuz varsa ). Bu bir ön görüntü saldırısı.
SHA-1'in karma çıktısı 160 bittir. Bu 20 bayttır (karakterler değil; bunlar farklı kavramlar ve neden karakter kodlamalarımız var ). Alabilir$2^{160}$değerler. PBKDF2-HMAC-SHA-1'in çıktısı, daha küçük (keserek) veya daha büyük (esasen 20 baytlık sonuçları bir araya getirerek) parametrelendirilebilir bir boyuta sahiptir, ancak parametre genellikle 20 bayta ayarlanmıştır ve bunu varsayacağız .
Bu, PBKDF2-HMAC-SHA-1 bir saldırganın yalnızca 20 veya daha az karakterden oluşan parolaları dikkate alması gereken kaba kuvvet anlamına mı gelir?
Hayır . Hash boyutunun rastgele bir değerin olasılığı olduğunu ima eder$2^{-160}$belirli bir hash ile eşleşecek Bunun pratik sonucu, rastgele denemenin umutsuz olmasıdır.
Şifreler genellikle yaklaşık 95 karakter içeren bir ASCII alt kümesiyle sınırlıdır, bu nedenle $2^{131.714}$bu tür 20 veya daha az karakterden oluşan şifreler (çoğu tam olarak 20 karakter). PBKDF2, PBKDF2 başına 1000 SHA-1 hash gerçekleştirecek şekilde parametrelendirilirse (bu, tanımına göre şimdiye kadarki en düşük parametreleştirmedir ve büyük ölçüde yetersiz hale gelmiştir), bu şifrelerin yarısının karma oluşturma$2^{140}$ karmalar, bu bitti $2^{40}$İnsanlık bitcoin madenciliği tarafından şimdiye kadar israf edilenden (bir milyon milyon) kat daha fazla. Bu bir seçenek değil.
Parola araması genellikle olası tüm parolaları birkaç karakterden fazla denemeyebilir; genellikle ≈70 karakter arasında ≈6 (yalnızca çok güçlü saldırganlar, hafif parola / anahtar genişletme olduğunda bile 10 karakterin tüm kombinasyonlarını hedefleyebilir ). Parola aramanın yaptığı şey, yaklaşık olarak seçilme olasılığını azaltarak, insanların makul bir şekilde seçebilecekleri parolaları denemektir.