Senaryo: Her parola için tuzlar dahil olmak üzere karma ve tuzlanmış parolalardan oluşan bir veritabanı, kötü niyetli bir kullanıcı tarafından çalınır. Parolalar 6-10 karakter uzunluğundadır ve teknik olmayan kullanıcılar tarafından seçilir.
Bu kötü niyetli kullanıcı bu şifreleri kırabilir mi?
Anladığım kadarıyla, GPU destekli şifre kurtarma araçları GPU başına saniyede milyarlarca hesaplayabildiğinden MD5 ve SHA-1 artık güvenli değil.
SHA-256 veya SHA-512 ne olacak? Şu anda güvende mi? Birkaç yıl sonra ne olacak?
Soru, kaç tur hashlama gerçekleştirildiğini belirtmez. Ve tüm cevap bu noktaya bağlı.
Yalnızca bir yineleme kullanırsanız tüm karma işlevleri güvenli değildir. SHA-1 veya SHA-2 ailesinden biri olsun, karma işlevi binlerce kez tekrarlanmalıdır. Güçlü donanımın düşük maliyeti göz önüne alındığında, en az 10.000 yineleme ve 100.000 yineleme mantıksız değildir.
Kısa şifreler de güvensizdir. Düşük değerli hedefler için bile 8 karakter minimum olmalıdır (çünkü kullanıcılar aynı şifreyi birden fazla uygulama için tekrar kullanırlar).
150 $ 'lık bir grafik kartıyla saniyede 680 milyon SHA-1 karma hesaplaması gerçekleştirebilirsiniz. Yalnızca bir kare karma işlemi kullanırsanız, hepsi 6 karakterlik şifreler 15 dakikadan biraz fazla bir sürede test edilebilir (bu, 94 yazdırılabilir ASCII karakterlerin kullanıldığı anlamına gelir) Her ek karakter, zamanı 94 ile çarpar, bu nedenle 7 karakter Bu kurulumda bir gün, 8 karakter 103 gün gerektirir .. Unutmayın, bu senaryo gerçek para ile organize bir suçlu değil, GPU'sunu kullanan 14 yaşındadır.
Şimdi birden çok yineleme yapmanın etkisini düşünün. 1.000 yineleme karma işlemi gerçekleştirilirse, 6 karakterlik şifre alanı 15 dakika yerine neredeyse 12 gün sürer. 7 karakterlik bir alan 3 yıl sürer. 20.000 yineleme kullanılırsa, bu sayılar sırasıyla 8 ay ve 60 yıla kadar çıkar. Bu noktada, kısa şifreler bile ayrıntılı bir şekilde aranamaz; saldırgan "büyük olasılıkla" şifreleri sözlüğüne geri dönmelidir.
Tuz genel olarak kabul edilebilir pratikte tanım gereği .
Ne hash kullanacağım ve ne kadar "güvenli" gelince, NIST'in ABD hükümet kurumları için yaptığı önerilere sadık kalacağım. Wikipedia makalesi dediği gibi:
SHA-1 çoğu hükümet kullanımı için kullanımdan kaldırılıyor; ABD Ulusal Standartlar ve Teknoloji Enstitüsü, "Federal ajanslar SHA-1'i kullanmayı en kısa sürede ... için çarpışma direnci gerektiren uygulamalar için durdurmalı ve 2010'dan sonra bu uygulamalar için SHA-2 karma işlev ailesini kullanmalıdır "
Çeşitli algoritmaların ne kadar güvenli veya güvenli olmadığı konusunda spekülasyon yapabilirsiniz, ancak ABD hükümetinin kendi kullanımı için yeterince iyi olduğunu düşündüğü bir spesifikasyonunuz olduğunda neden rahatsız oluyorsunuz?
[Düzenle]
Bu arada, sorunuz bu analizlerin nasıl yapıldığına dair bir yanlış anlama yansıtıyor gibi görünüyor. Bir karma işlevinde bit sayısından çok daha fazlası vardır.
SHA-1 gibi 160 bitlik bir karmayı kaba zorlamak 2 ^ 160 çaba gerektirir; kaç "GPU" attığınıza bakılmaksızın, bu gerçekleşmeyecektir. Aslında bu muhtemelen evrenin yaşamında olmayacak. (Doğru, kaba-zorlama bir çarpışmayı "sadece" 2 ^ 80 çaba gerektirir. Ama aynı zamanda 2 ^ 80 depolama gerektirir . İyi şanslar.)
MD5 ve SHA-1'in "muhtemelen güvensiz" olarak kabul edilmesinin nedeni, her algoritmada, kaba kuvvet çabasının çok altında, çalışma şeklini azaltabilecek zayıflıkların bulunmasıdır. Daha yeni bir algoritmaya (SHA-2 gibi) geçmenin nedeni, bilinen zayıflıklardan kaçınmaktır; 256 bit kullanmanın nedeni, bilinmeyen zayıflıklara karşı bir miktar tampon sağlamaktır. Bunun "GPU'lar" ile ilgisi yoktur; kaba kuvvet saldırılarına direnmek için 160 bit bol.
Bu arada benzer ifadeler tüm kriptografi için geçerlidir.
Şimdi, NSA bu şeyler hakkında sizden ya da benden daha fazla bilgi sahibi olmak abartmak mümkün değil. NIST aracılığıyla ABD devlet kurumları ve ABD endüstrisi için önerilerde bulunuyorlar. kendisi büyük bir dünya hükümetidir, NIST tavsiyeleri fazlasıyla yeterlidir. Sana başka türlü anlatmaya çalışan, kendi kendini ilan eden "uzmanları" görmezden gelin; NSA, yapabileceğinden daha iyi hayal etmek.
Eğer rakibiniz büyük bir dünya hükümeti ise, SO) size yardımcı olmaya hak kazanmamış ve çok daha büyük karma fonksiyonundan daha fazla problem.
[değiştir 2]
Tabii ki bu işlevi zaten PKCS # 5 ("PBKDF2" olarak da bilinir) gibi standart bir şifre karma şemasının bir parçası olarak kullandığınızı varsayıyorum ve sorunuz tamamen hash fonksiyonunun ne olduğu ile ilgiliydi. kullanın.
PBKDF2 en az 1000 yineleme önerir, ancak istediğinizi seçebilirsiniz. Saldırganın kaba kuvvet çabası bu sayı ile doğrusal olarak artar, bu nedenle 1000'e karşı 10000 yineleme, her bir parolayı kaba kuvvetle zorlamanın 10 kat daha uzun süreceği anlamına gelir.
Saldırgan tuzu biliyorsa, tuz değerine göre yeni bir Rainbow tablosu hesaplayabilir.
Kullanılan algoritmaya bağlıdır. Coda Hale , MD5 ve SHA karma algoritma ailesi genel amaçlıdır ve hız içindir) Kısacası, bunların yeterli olmadığı sonucuna varmaktadır. sözlük saldırılarını önlemek için ve bcrypt gitmek için bir yoldur, çünkü şifreleri kırmak, saldırganı önemli ölçüde yavaşlatmak için daha fazla kurulum zamanı vardır.İşte başka ilginç bir makale bcrypt .
SHA-256 veya SHA-512 ne olacak? Şu anda güvende mi? Birkaç yıl sonra ne olacak?
Dikkat edin, bu argümanın iki tarafı vardır. bcrypt tarafı ve SHA-256 ve yukarı tarafı vardır. SHA aile tarafındakilerdekilere inanıyorsanız, o zaman SHA-256 ile birkaç yıldan fazla güvende olacağınıza inanıyorum, hatta bazıları tuzlu SHA-1'in hala olduğunu iddia ediyor yeterince iyi, ama güvende olmak istiyorsanız SHA-256'ya sadık kalacağım. MD5'in hala "yeterince güvenilmez" olduğunu kanıtlamak için hala 5-10 yıl olduğunu belirten bir forum var. çünkü en fazla iki tanesine ulaştım.
Şahsen, bir tuzla SHA-256 kullanıyorum, ama kesinlikle bcrypt hakkında daha fazla okumak ve yeniden değerlendirmek zorunda kalacağım. Umarım bu yardımcı olur. Bu, sayısız saati araştırma yaparak kolayca geçirebileceğiniz, ancak yine de ilginç bir soru türüdür.