İş yerinde tuzlar için birbiriyle yarışan iki teorimiz var. Üzerinde çalıştığım ürünler, hash'ı tuzağa düşürmek için kullanıcı adı veya telefon numarası gibi bir şey kullanıyor. Esasen her kullanıcı için farklı olan, ancak bizim için hazır olan bir şey. Diğer ürün rastgele olarak her kullanıcı için bir tuz oluşturur ve kullanıcı parolayı her değiştirdiğinde değişir. Tuz, daha sonra veritabanında şifrelenir.
Sorum şu ki, ikinci yaklaşım gerçekten gerekli mi? Tamamen teorik bir perspektiften, ilk yaklaşımdan daha güvenli olduğunu anlayabiliyorum, ama pratiklik açısından ne olacak? Şu anda bir kullanıcının kimliğini doğrulamak için tuzun şifrelenmemiş olması ve oturum açma bilgilerine uygulanması gerekir.
Bunu düşündükten sonra, bu yaklaşımdan gerçek bir güvenlik kazancı görmüyorum. Tuzun hesaptan hesaba değiştirilmesi, saldırgan her bir hesap için ne olduğunu hızlı bir şekilde nasıl belirleyeceğinin farkında olsa bile, birisinin karma algoritmayı kaba kuvvetle denemesini hala son derece zor hale getiriyor. Bu, şifrelerin yeterince güçlü olduğu varsayımına devam ediyor. (Açıkçası, tümünün iki basamaklı olduğu bir dizi parola için doğru karmayı bulmak, 8 basamaklı parolaların doğru karmasını bulmaktan önemli ölçüde daha kolaydır). Mantığımda yanlış mıyım yoksa kaçırdığım bir şey mi var?
DÜZENLEME: Tamam, işte tuzu şifrelemenin gerçekten tartışmalı olduğunu düşünmemin nedeni. (Doğru yolda olup olmadığımı bilmeme izin ver).
Aşağıdaki açıklama için, şifrelerin her zaman 8 karakter olduğunu ve tuzun 5 olduğunu ve tüm şifrelerin küçük harflerden oluştuğunu varsayacağız (bu sadece matematiği kolaylaştırır).
Her giriş için farklı bir tuza sahip olmak, aynı gökkuşağı masasını kullanamayacağım anlamına gelir (aslında yeterli büyüklükte bir tane olsaydı teknik olarak yapabilirdim, ama şimdilik bunu görmezden gelelim). Bu, anladığım kadarıyla tuzun gerçek anahtarıdır, çünkü her hesabı kırmak için tekerleği yeniden icat etmem gerekiyor, böylece her biri için konuşmak. Şimdi, eğer hash'i oluşturmak için bir şifreye doğru tuzu nasıl uygulayacağımı bilirsem, bunu yapardım çünkü bir salt, karma ifadenin uzunluğunu / karmaşıklığını gerçekten artırır. Bu yüzden, tuzun ne olduğunu bildiğim için şifre + tuza sahip olduğumu "bilmek" için üretmem gereken olası kombinasyonların sayısını 13 ^ 26'dan 8 ^ 26'ya düşürüyorum. Şimdi bu işi kolaylaştırıyor, ama yine de gerçekten zor.
Yani tuzu şifrelemek üzerine. Tuzun şifreli olduğunu bilirsem, önce şifresini çözmeyi denemem (yeterli düzeyde şifrelemeye sahip olduğunu varsayarak). Ben görmezden gelirim. Nasıl şifresini çözeceğimi bulmaya çalışmak yerine, önceki örneğe geri dönersek, 13 ^ 26 için tüm anahtarları içeren daha büyük bir gökkuşağı tablosu oluştururdum. Tuzun beni kesinlikle yavaşlatacağını bilmemek, ancak bunun, önce tuz şifrelemesini kırmaya çalışmanın muazzam bir görevini ekleyeceğini düşünmüyorum. Bu yüzden buna değeceğini düşünmüyorum. Düşünceler?
Bir kaba kuvvet saldırısı altında parolaların ne kadar süre dayanacağını açıklayan bir bağlantı: http://www.lockdown.co.uk/?pg=combi