PBKDF2 nedir?
PBKDF2 (Parola Tabanlı Anahtar Türetme Fonksiyonu 2), RFC 8018'de tanımlanan ve kaba kuvvetle çözülmesi hesaplama açısından pahalı olan türetilmiş bir anahtar üretmek için bir parola ve tuza genellikle HMAC-SHA-256 şeklinde bir sahte rastgele fonksiyonu yinelemeli olarak uygulayan bir anahtar türetme algoritmasıdır.
Diğer adlarıyla: Password-Based Key Derivation Function 2, PBKDF, RFC 8018
PBKDF2, bir parola ve rastgele bir tuz değerinin kombinasyonuna tekrar tekrar HMAC (Karma Tabanlı Mesaj Kimlik Doğrulama Kodu) uygulayarak çalışır. İterasyon sayısı, bu işlemin kaç kez gerçekleştirileceğini kontrol eder; daha fazla iterasyon, anahtar türetme girişimi başına daha fazla CPU süresi anlamına gelir ve bu da parolayı tahmin etmeye çalışan saldırgan için maliyeti doğrudan artırır.
Tuz, her anahtar türetme işlemi için benzersiz olan rastgele bir değerdir. Aynı parolanın farklı tuzlarla farklı türetilmiş anahtarlar üretmesini sağlayarak önceden hesaplanmış arama saldırılarını (gökkuşağı tabloları) önler. Tuzun gizli olması gerekmez — genellikle türetilmiş anahtar veya şifreli metin ile birlikte depolanır.
PBKDF2, 2000 yılında standartlaştırılmış olup özellikle Web Crypto API aracılığıyla tarayıcılarda geniş çapta desteklenmeye devam etmektedir. Argon2 gibi daha yeni KDF'ler büyük miktarda bellek gerektirerek GPU ve ASIC saldırılarına daha güçlü direnç sunsa da PBKDF2, Web Crypto API uyumluluğunun zorunlu olduğu ve yeterli güvenlik için iterasyon sayısının yüksek tutulabildiği tarayıcı tabanlı uygulamalar için sağlam bir seçim olmaya devam etmektedir.
Vaulted PBKDF2 nasıl kullanır
Vaulted, bir gizli bilgiye parola cümlesi eklendiğinde Web Crypto API aracılığıyla PBKDF2 kullanır. Uygulama, HMAC-SHA-256 ve rastgele 16 baytlık bir tuz ile 100.000 iterasyon kullanır. Türetilen 256 bitlik anahtar, ana AES-256-GCM anahtarını şifrelemek için AES-KW sarmalama anahtarı olarak kullanılır. Tuz, alıcının tarayıcısının parola cümlesinden aynı sarmalama anahtarını yeniden türetebilmesi için sarmalanmış anahtarla birlikte URL parçasına dahil edilir.