Bcrypt nedir?
Bcrypt, Niels Provos ve David Mazières tarafından Blowfish şifresine dayalı olarak tasarlanmış bir parola hashleme işlevidir. MD5 veya SHA-256 gibi hızlı özetlerin aksine bcrypt kasıtlı olarak yavaş ve hesaplama açısından pahalıdır — bu, çalınan parola hash'lerine karşı kaba kuvvet saldırılarını pratik olmaktan çıkarır. Bcrypt her parola için otomatik olarak rastgele bir tuz oluşturur, böylece aynı parolalar farklı hash'ler üretir.
Bcrypt nasıl çalışır?
Bcrypt algoritması tamamen tarayıcınızda çalışır. İşte adım adım olanlar:
- Parolanız UTF-8 baytları olarak kodlanır ve bcrypt anahtar çizelgesine beslenir; bu çizelge, parola ve tuzu kullanarak Blowfish şifresinin 4.184 baytlık P-dizisini ve S-kutularını başlatır.
- Rastgele 128 bitlik bir tuz oluşturulur. Tuz, anahtar çizelgesine karıştırılır, böylece her benzersiz tuz aynı parola için bile tamamen farklı bir hash üretir.
- Anahtar çizelgesi 2^cost tur (örneğin, maliyet 10 için 2^10 = 1.024 yineleme) çalıştırılır. Her yineleme tuzu ve P-dizisi girişlerini yeniden şifreler ve maliyet arttıkça hesaplamayı orantılı olarak yavaşlatır.
- Nihai çıktı,
$2b$<cost>$<salt><hash>biçiminde 60 karakterlik bir dizedir; burada cost sıfırla doldurulur (ör. 10), salt 22 Base64 karakteri ve hash 31 Base64 karakteridir. - Doğrulama için, aynı algoritma aday parola ve saklanan hash'ten çıkarılan tuz ile yeniden çalıştırılır. Türetilen hash saklanan hash ile eşleşirse parola doğrudur.
Hangi maliyet faktörünü kullanmalıyım?
Maliyet faktörü, yineleme sayısının logaritmasıdır — maliyet 10, 2^10 = 1.024 tur, maliyet 12 ise 4.096 tur anlamına gelir. Güvenlik ihtiyaçlarınıza ve donanımınıza göre seçim yapın:
- Maliyet 4-6 (16-64 tur) — yalnızca geliştirme ve test için. Üretim için çok hızlı; minimum koruma sağlar.
- Maliyet 8 (256 tur) — kritik olmayan uygulamalar için mutlak minimum. Modern donanımda yaklaşık 6 ms.
- Maliyet 10 (1.024 tur) — mevcut önerilen temel seviye. Yaklaşık 25 ms sürer. Çoğu web uygulaması için iyidir.
- Maliyet 12 (4.096 tur) — yönetim portalları, finansal sistemler ve yüksek güvenlikli uygulamalar için önerilir. Yaklaşık 100 ms sürer.
- Maliyet 14 (16.384 tur) — yüksek güvenlik. Yaklaşık 400 ms sürer. Ana parolalar, şifreleme anahtarları veya oturum açma gecikmesinin kabul edilebilir olduğu durumlarda kullanın.
Neden bu bcrypt oluşturucuyu kullanmalısınız?
- Gizlilik korumalı — her parola tarayıcınızda yerel olarak hashlenir ve hiçbir veri cihazınızdan ayrılmaz.
- Çift mod — sayfalar arasında geçiş yapmadan yeni hash'ler oluşturun veya mevcut olanları yan yana doğrulayın.
- Ayarlanabilir maliyet faktörü — iş faktörünü 4'ten (hızlı) 15'e (çok yavaş) ayarlayarak uygulamanızın güvenlik ihtiyaçlarını karşılayın.
- Standartlarla uyumlu — tüm büyük dil ve çerçevelerle çalışan standart
$2b$biçiminde hash'ler üretir.
Bcrypt'in yaygın kullanım alanları nelerdir?
Bcrypt, endüstride parola depolama ve doğrulama için yaygın olarak kullanılır:
- Web uygulaması kullanıcı kimlik doğrulaması — kullanıcı parola hash'lerini veritabanlarında depolayarak düz metin parolaların asla kaydedilmemesi.
- API anahtarı hashleme — API sırlarını depolamadan önce hashleyerek veritabanı ihlalinin geçerli kimlik bilgilerini sızdırmaması.
- Geçiş denetimi — eski bir sistemden gelen eski parola hash'lerinin, kimlik doğrulama katmanı yükseltmesinden sonra kullanıcıların kimliğini doğrulamaya devam edip edemediğini kontrol etme.
Bir bcrypt hash'i neye benzer?
hunter2 parolasını maliyet faktörü 10 ile hashlemek, $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy gibi bir dize üretir. Biçim şu şekilde ayrışır: $2b$ (algoritma sürümü), 10 (maliyet faktörü), $, ardından 22 karakter tuz ve 31 karakter hash, tümü Base64 kodlu. Aynı parolayla her çalıştırmada rastgele tuz nedeniyle farklı bir hash üretilir.
Bu bcrypt oluşturucu, saf bir JavaScript uygulaması kullanarak tamamen tarayıcınızda çalışır. Parolaları depolamadan önce hashleyin, mevcut hash'leri doğrulayın ve güvenlik gereksinimlerinize uyacak şekilde maliyet faktörünü ayarlayın — tüm bunlar sunucuya tek bir bayt göndermeden.