Bcrypt veya SHA-512'nin (PBKDF2 gibi uygun bir algoritma bağlamında) yeterince iyi olup olmadığını söylemek yeterli olmalıdır . Ve cevap evet, her iki algoritma da kriptanaliz değil, bir uygulama kusuru ile bir ihlalin oluşacağı kadar güvenlidir.
Hangisinin "daha iyi" olduğunu bilmekte ısrar ederseniz, SHA-512 NIST ve diğerleri tarafından derinlemesine incelemelere sahiptir. İyi, ancak kusurlar, şimdi istismar edilmese de, yeni karma algoritmalar için SHA-3 yarışmasına yol açtığı kabul edildi. Ayrıca, karma algoritmaların çalışmasının şifrelerden daha yeni olduğunu ve kriptografların bunları öğrenmeye devam ettiğini unutmayın.
Bir bütün olarak bcrypt, Blowfish'in kendisi kadar fazla incelemeye sahip olmasa da, iyi anlaşılmış bir yapıya sahip bir şifreye dayanmanın, ona hash tabanlı kimlik doğrulaması eksik olan doğal bir güvenlik sağladığına inanıyorum. Ayrıca, yaygın GPU'ları SHA-2 tabanlı karmalara saldırmak için bir araç olarak kullanmak daha kolaydır; bellek gereksinimleri nedeniyle, bcrypt'in optimize edilmesi, bazı yerleşik RAM'lerle FPGA gibi daha özel bir donanım gerektirir.
Not: bcrypt, Blowfish'i dahili olarak kullanan bir algoritmadır. Bu bir şifreleme algoritması değildir. Karma işlevlerin "tek yönlü karma" yapmak için kullanıldığı gibi, şifreleri geri döndürülemez şekilde gizlemek için kullanılır.
Şifreleme karma algoritmaları tersine çevrilemeyecek şekilde tasarlanmıştır. Başka bir deyişle, yalnızca bir karma işlevinin çıktısı verildiğinde, aynı karma çıktıyı üretecek bir ileti bulmak "sonsuza dek" sürmelidir. Aslında, aynı karma değeri üreten iki mesajı bulmak hesaplamaya uygun olmamalıdır. Bir şifreden farklı olarak, karma işlevleri bir anahtarla parametreleştirilmez; aynı girdi her zaman aynı çıktıyı üretir.
Birisi şifre tablosunda saklanan değere karma bir şifre sağlarsa, kimlik doğrulaması yapılır. Özellikle, karma işlevinin geri döndürülemezliği nedeniyle, kullanıcının karma değerini yakalayan ve çalışan bir parola bulmak için ters çeviren bir saldırgan olmadığı varsayılır.
Şimdi bcrypt'i düşünün. Parola "türetilmiş" bir anahtar kullanarak, sihirli bir dize şifrelemek için Blowfish kullanır. Daha sonra, kullanıcı bir parola girdiğinde, anahtar tekrar türetilir ve bu anahtarla şifrelenerek üretilen şifre metni depolanan şifre metniyle eşleşirse, kullanıcının kimliği doğrulanır. Şifreleme metni "parola" tablosunda saklanır, ancak türetilen anahtar hiçbir zaman saklanmaz.
Burada kriptografiyi kırmak için, bir saldırganın anahtarı şifreleme metninden kurtarması gerekir. Buna "bilinen düz metin" saldırısı denir, çünkü saldırı şifrelenmiş sihirli dizeyi bilir, ancak kullanılan anahtarı bilmez. Blowfish kapsamlı bir şekilde incelenmiştir ve bir saldırganın anahtarı bilinen tek bir düz metinle bulmasına izin verecek hiçbir saldırı henüz bilinmemektedir.
Yani, tıpkı şifreleme özümlerine dayalı geri dönüşümsüz algoritmalar gibi, bcrypt de bir şifre, tuz ve maliyet faktöründen geri dönüşü olmayan bir çıktı üretir. Gücü, Blowfish'in bir sindirim algoritmasındaki "ilk görüntü öncesi saldırısına" benzeyen bilinen düz metin saldırılarına karşı direncindedir. Şifreleri korumak için bir karma algoritma yerine kullanılabileceğinden , bcrypt kafa karıştırıcı bir şekilde "karma" algoritmanın kendisi olarak adlandırılır.
Gökkuşağı masalarının tuzun doğru kullanımı ile engellendiğini varsayarsak, geri dönüşü olmayan herhangi bir işlev saldırganı deneme yanılma yöntemine indirir. Ve saldırganın deneme yapabilme oranı, geri döndürülemez "karma" algoritmanın hızı ile belirlenir. Bir karma işlevinin tek bir yinelemesi kullanılırsa, bir saldırgan 1000 $ 'a mal olan ekipmanı kullanarak saniyede milyonlarca deneme yapabilir ve birkaç ay içinde 8 karakter uzunluğundaki tüm şifreleri test edebilir.
Bununla birlikte, özet çıkışı binlerce kez "geri beslenirse", bu donanımda aynı parola kümesinin test edilmesi yüzlerce yıl sürecektir. Bcrypt, anahtar türetme rutini içinde yineleyerek aynı "anahtar güçlendirme" etkisine ulaşır ve PBKDF2 gibi uygun bir karma tabanlı yöntem de aynı şeyi yapar; bu bağlamda, iki yöntem benzerdir.
Bu nedenle, bcrypt tavsiyem 1) bir Blowfish'in SHA-2 hash fonksiyonları ailesi ile benzer bir incelemeye sahip olduğu ve 2) şifreler için kriptanalitik yöntemlerin hash fonksiyonları için olanlardan daha gelişmiş olduğu varsayımlarından kaynaklanmaktadır.