Bcrypt — 1999’dan beri yaygın kullanılan güvenilir şifre hash algoritması. Cost factor her artışta hesaplama süresini 2x artırır. OWASP önerisi: minimum cost 10, ideal 12.
Sunucu Performansı
Cost Factor
Argon2 — Password Hashing Competition (2015) kazananı. Bellek maliyeti (memory-hard) sayesinde GPU/ASIC saldırılarına karşı daha dirençli. OWASP ilk tercihi. Argon2id önerilir.
Sunucu Kaynakları
Toplam RAM’in küçük bir kısmı. Tipik: 64–256 MB
CPU çekirdek sayısı veya yarısı
Argon2 Parametreleri
OWASP minimum: 12288 KB (12 MB)
| Özellik | Bcrypt | Argon2id | scrypt | PBKDF2 |
|---|---|---|---|---|
| Yıl | 1999 | 2015 | 2009 | 2000 |
| Bellek Maliyeti | Sabit (4KB) | ✅ Ayarlanabilir | ✅ Ayarlanabilir | ❌ Yok |
| GPU Direnci | Orta | ✅ Yüksek | ✅ Yüksek | ❌ Düşük |
| OWASP Önceliği | 2. sıra | ✅ 1. sıra | 3. sıra | ⚠️ Son seçenek |
| Max Şifre Uzunluğu | ⚠️ 72 byte | ✅ Sınırsız | ✅ Sınırsız | ✅ Sınırsız |
| PHP Desteği | password_hash() | password_hash() 7.2+ | ⚠️ Eklenti | hash_pbkdf2() |
| Node.js | bcrypt / bcryptjs | argon2 paketi | crypto.scrypt() | crypto.pbkdf2() |
| Python | bcrypt | argon2-cffi | hashlib.scrypt | hashlib.pbkdf2_hmac |
Öneri: Yeni projeler için Argon2id tercih edin. Mevcut Bcrypt kullanıyorsanız geçiş: bir sonraki login’de şifreyi Argon2id ile yeniden hash’leyin.
Şifre hash algoritmaları, kullanıcı şifrelerini veritabanında güvenli şekilde saklamak için kullanılır. MD5, SHA-1 ve SHA-256 şifre saklama için kesinlikle kullanılmamalıdır.
🔐 Güvenlik İlkeleri
- ✦ Her şifre için benzersiz salt
- ✦ Hash’leri saklayın, şifreleri değil
- ✦ Timing-safe karşılaştırma
- ✦ Bcrypt: 72 byte sınırına dikkat
- ✦ Pepper (sunucu secret) eklenebilir
⚡ Performans Dengesi
- ✦ Çok hızlı = brute force kolay
- ✦ Çok yavaş = DoS riski
- ✦ OWASP: 250–500 ms ideal
- ✦ Donanım geliştikçe parametreyi artırın
- ✦ Async hash işlemi kullanın
🚫 Kullanılmamalı
- ✦ MD5 — çok hızlı, kırılmış
- ✦ SHA-1 / SHA-256 — uygunsuz
- ✦ SHA-512 — uygunsuz
- ✦ Tuzlanmamış hash
- ✦ Tersine çevrilebilir şifreleme
📋 OWASP Minimumlar
- ✦ Bcrypt: cost ≥ 10
- ✦ Argon2id: m≥12288, t≥1, p≥1
- ✦ scrypt: N≥32768, r=8, p=1
- ✦ PBKDF2-HMAC-SHA256: ≥600.000