Java'da parola tabanlı dosya şifreleme yapıyorum; Altta yatan şifreleme algoritması olarak AES kullanıyorum ve PBKDF2WithHmacSHA1
, aşağıdaki kodu kullanarak bir tuz ve parola bileşiminden bir anahtar türetmek için kullanıyorum (bu sitedeki başka bir posterden aldım). Sorunum ben kullanıcının girdiği şifre önce doğru olduğunu doğrulamak mümkün olmak istiyorum olmasıdır :-)Java'da PBKDF2 ile Şifre Doğrulama
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
KeySpec ks = new PBEKeySpec(password,salt,1024,128);
SecretKey s = f.generateSecret(ks);
Key k = new SecretKeySpec(s.getEncoded(),"AES");
Tuzu paylaşmak, kullanıcı her iki ucunda ve şifreleme ve şifre çözme çalışma cezası adresinden şifresini girer (potansiyel olarak uzun) şifre çözme sürecine giriş. PBKD özelliklerinin isteğe bağlı 2 bayt doğrulama değeri içerdiğini biliyorum, ancak yukarıdaki değeri kullanarak bu değeri nasıl üreteceğimi bilmiyorum. Java bunun için destek sağlıyor mu, yoksa güvenli bir alternatif ne olurdu?
Zaman ayırdığınız için teşekkür ederiz.
Merhaba, cevabınız için teşekkürler. PBKDF2'nin amacının ve tuzun ve parolanın anahtarın türetilmesi için tekrar tekrar birleştirilmesi amacının, anahtar metin paroladan anahtar hesaplama işleminin pahalı hale getirilmesi ve bu nedenle sözlük stili saldırılarının daha zor hale getirilmesi olduğu izlenimindeyim. PBKDF2 spec opsiyonel bir şifre doğrulama değeri içerdiğini söylediğim gibi, sadece java uygulamasında ona nasıl ulaşacağımı bilmiyorum. – PinkyNoBrain
Anahtar türetme sürecinin tamamlanmasından sonra hızlı bir kontrol yapılmasının, saldırganın gerçekte herhangi bir şeyi kontrol etmek için şifresini çözmesi gerekmediği için kaba kuvvet saldırısı kolaylaştıracağını kabul ediyorum, ancak 256-bitlik AES anahtarlarının geniş arama alanını düşünürdüm. Zaten saf kaba kuvvet saldırısı yasaklayıcı mı? – PinkyNoBrain
@pinkynobrain: Hızlı kontrolle ilgili sorun, anahtar alanı çok fazla küçültmesidir: hızlı kontrolün başarılı olduğu tüm parolaları bulmanın hızlı bir yolu vardır. Bu nedenle, AES ile kaba kuvvete çok daha az anahtarınız var. –