Sözlük

bcrypt nedir?

bcrypt, yerleşik salt ve yapılandırılabilir maliyet faktörü içeren, Blowfish blok şifresini temel alan bir parola karma işlevidir; GPU'lar ve özel donanım tarafından hızlandırmaya özgül biçimde direnen bir hesaplama yüküne sahip olacak şekilde tasarlanmıştır.

Diğer adlarıyla: bcrypt hash, Blowfish crypt

bcrypt, 1999 yılında Niels Provos ve David Mazieres tarafından özellikle parola karma için tasarlanmıştır; o dönemde çoğu sistem MD5 veya SHA-1 gibi hızlı karma işlevleri kullanıyordu. Temel yenilik, maliyet faktörüydü: temel Blowfish anahtar kurulumunun kaç iterasyon gerçekleştireceğini kontrol eden bir parametre. Maliyet faktöründeki her artış hesaplama süresini iki katına çıkararak savunucuların donanım hızlandıkça zorluğu ölçeklendirmesine olanak tanır.

bcrypt'i PBKDF2'den ayıran şey, GPU hızlanmasına karşı direncidir. PBKDF2, GPU mimarilerine iyi uyum sağlayan HMAC işlemleri kullanır; bu, tüketici GPU'larına sahip saldırganlara büyük paralellik kazandırır. bcrypt'in Blowfish tabanlı anahtar zamanlaması, hesaplama sırasında değiştirilmesi gereken 4 KB'lık bir durum tablosuna sık erişim gerektirir. Bu bellek erişim deseni GPU'larda verimli biçimde paralele alınamaz ve saldırganları CPU hızına geri iter.

bcrypt, algoritma sürümü, maliyet faktörü, salt ve karma birlikte kodlayan 60 karakterlik bir dize üretir; bu onu kendi kendine yeterli ve taşınabilir kılar. Tipik bir bcrypt karması $2b$12$... şeklinde görünür; burada 12 maliyet faktörüdür. Şu anda önerilen minimum maliyet faktörü 10'dur (modern donanımda karma başına yaklaşık 100 ms), ancak biraz daha yavaş giriş sürelerini tolere edebilen uygulamalarda 12-14 yaygındır. bcrypt hemen hemen her programlama dilinde kullanılabilir ve en yaygın konuşlandırılan parola karma algoritmalarından biri olmaya devam etmektedir.

Vaulted bcrypt nasıl kullanır

Vaulted, parola tabanlı anahtar türetme için bcrypt yerine PBKDF2 kullanır; çünkü PBKDF2 tarayıcılarda Web Crypto API aracılığıyla yerel olarak kullanılabilirken bcrypt kullanılamamaktadır. Web Crypto API, bcrypt'i sunmaz; bu nedenle kullanmak, yerel ve sabit zamanlı yürütmenin güvenlik avantajlarını ortadan kaldıran bir JavaScript uygulaması gerektirir. Kimlik doğrulama için parola karma yapan sunucu taraflı uygulamalar için bcrypt mükemmel bir seçim olmaya devam eder; ancak tarayıcıda istemci taraflı anahtar türetme için Web Crypto aracılığıyla PBKDF2 standart yaklaşımdır.