Türkiye'nin Kişisel Verilerin Korunması Kanunu (KVKK, 6698 sayılı Kanun), veri sorumlularının kişisel verileri, dolayısıyla parolaları, korumak için "uygun güvenlik düzeyini temin etmeye yönelik gerekli her türlü teknik ve idari tedbiri" almasını şart koşar; belirli bir algoritma zorunlu kılmaz. Uygulamada, PBKDF2 gibi anahtar türetme fonksiyonları bu genel yükümlülüğü somut ve denetlenebilir bir şekilde karşılamanın yaygın bir yoludur.
Anahtar germe prensibi
PBKDF2, bir parolayı bir kez hash'lemek yerine, temel bir hash fonksiyonunu (genellikle HMAC-SHA256) art arda binlerce kez uygular ve her iterasyonun sonucunu bir sonrakinin girdisi olarak kullanır. Bu, tek bir hash'in hesaplanmasını kasıtlı olarak yavaşlatarak, toplu kaba kuvvet saldırısını bir saldırgan için önemli ölçüde daha pahalı hale getirir.
Wi-Fi'de PBKDF2: WPA2
PBKDF2'nin dünya çapında en yaygın kullanımlarından biri, WPA2-PSK standardında ağ parolasından Wi-Fi şifreleme anahtarının türetilmesidir: ağ parolası, ağ adını (SSID) tuz olarak kullanarak 4096 iterasyonla PBKDF2-HMAC-SHA1'den geçirilir ve 256 bitlik bir anahtar üretir. Kısa bir Wi-Fi parolasının, tek bir "handshake" yakalandıktan sonra çevrimdışı kaba kuvvete karşı bu kadar savunmasız olmasının nedeni budur.
Bu aracın neden HTTPS gerektirdiği
Bu araç, elle yazılmış bir JavaScript uygulaması yerine tarayıcının yerleşik Web Crypto API'sini kullanarak PBKDF2 hesaplar. Tarayıcılar crypto.subtle'ı yalnızca "güvenli bir bağlamda" — HTTPS'te veya geliştirme sırasında localhost'ta — sunar; bu yüzden şifreli bir bağlantı olmadan bu araç ve sitedeki diğer tüm kriptografik araçlar, cihaz ne kadar güçlü olursa olsun çalışmaz.
Bu neden gereklidir
- Şifreleme için parolalardan kriptografik anahtarlar türetmek (örneğin Wi-Fi için WPA2/WPA3'te).
- Parola depolamak için PBKDF2 kullanan eski sistemlerle uyumluluğu korumak.
- Önerilen iterasyon sayısının yeni standart sürümlerinde neden sürekli arttığını anlamak.
Temel hash fonksiyonu seçiminin önemi
Eski PBKDF2 uygulamaları genellikle varsayılan olarak HMAC-SHA1 kullanırdı — SHA-1'in kendisi doğrudan hash'leme için kriptografik olarak zayıf kabul edilir, ancak HMAC yapısı içinde bu zayıflık kritik bir zafiyet oluşturmaz. Yine de modern öneriler kesin olarak HMAC-SHA256 veya HMAC-SHA512'yi tavsiye eder — SHA-1'in doğrudan bir tehdit oluşturmasından değil, daha uzun çıktının ve daha modern bir fonksiyonun hissedilir bir hız kaybı olmadan daha büyük bir güvenlik payı sağlamasından dolayı.