Argon2 (Password Hashing)
Tarihçe ve Genel Bakış
Argon2, 2015 yılında düzenlenen Password Hashing Competition'ı (PHC) kazanan modern bir şifre hashleme algoritmasıdır. Alex Biryukov, Daniel Dinu ve Dmitry Khovratovich tarafından geliştirilen Argon2, özellikle parola hashleme için tasarlanmıştır. MD5, SHA-1 veya SHA-256 gibi genel amaçlı hash algoritmaları yerine, Argon2 özellikle şifre depolama için güvenlik ve performans dengesini optimize etmek üzere tasarlanmıştır.
Argon2, bellek doluluk saldırıları, zamanlama saldırıları ve kaba kuvvet saldırılarına karşı koruma sağlamak için bellek-zorlu (memory-hard) bir algoritmadır.
Argon2 Varyasyonları
Argon2'nin üç temel varyasyonu bulunmaktadır:
- Argon2d: Bellek erişimlerini veri bağımlı yapar, yüksek direnç sağlar ancak yan kanal saldırılarına daha açıktır
- Argon2i: Bellek erişimleri veri bağımsızdır (yan kanal saldırılarına karşı daha güvenli), ancak bellek doluluk saldırılarına karşı biraz daha az dirençlidir
- Argon2id: Hibrit bir yaklaşım kullanır - hem Argon2d hem de Argon2i'nin güçlü yanlarını birleştirir, çoğu uygulama için önerilen varyasyondur
Çalışma Prensibi
Argon2'nin Temel Bileşenleri
-
Parametreler: Argon2, aşağıdaki ayarlanabilir parametrelere sahiptir:
- İterasyon sayısı: Hash hesaplama tur sayısı
- Bellek büyüklüğü: Kullanılacak RAM miktarı
- Paralellik derecesi: Eşzamanlı iş parçacığı sayısı
- Tuz değeri: Rastgele veri
- Çıktı uzunluğu: Üretilen hash değerinin bit uzunluğu
- Bellek doluluk fazı: Algoritma, büyük miktarda bellek alanını doldurur, bu da ASIC ve GPU gibi özel donanımlarla kaba kuvvet saldırılarını zorlaştırır
- Yerel bağımlılıklar: Veri bağımlı bellek erişimleri, hesaplamaları paralelleştirmeyi zorlaştırır
- Son çıktı fazı: Bellek matrisinden son hash değerini üretir
Güvenlik Özellikleri
Argon2'nin güvenlik avantajları:
- Bellek-Zorlu (Memory-Hard): Büyük miktarda RAM kullanmayı gerektirir, özel donanımlarla hızlandırmayı zorlaştırır
- Ayarlanabilir Parametreler: Farklı güvenlik gereksinimleri için esneklik sağlar
- Tuz Değeri: Aynı parolalar için farklı hash değerleri üretir, gökkuşağı tablolarını etkisiz hale getirir
- Yavaşlatma Faktörü: Çalışma süresini uzatmak için iterasyon sayısı ve bellek kullanımı artırılabilir
- Modern Tasarım: Bilinen kriptografik saldırılara karşı dayanıklı olması için tasarlandı
Kullanım Alanları
Argon2 aşağıdaki alanlarda kullanılır:
- Parola hashleme ve kimlik doğrulama sistemleri
- Anahtar türetme fonksiyonları (KDF)
- Kriptografik işlemlerde güçlendirme
- Dijital para cüzdanları ve şifreleme araçları
- Veritabanı sistemlerinde hassas veri koruması
- Cryptocurrency madenciliğinde proof-of-work algoritması olarak
Argon2 vs Diğer Şifre Hashlama Algoritmaları
Özellik | Argon2 | bcrypt | PBKDF2 | scrypt |
---|---|---|---|---|
Yıl | 2015 | 1999 | 2000 | 2009 |
Bellek Kullanımı | Yüksek (Ayarlanabilir) | Düşük (4KB sabit) | Çok Düşük | Yüksek (Ayarlanabilir) |
Paralellik Desteği | Var (Ayarlanabilir) | Yok | Sınırlı | Var |
Özel Donanım Direnci | Çok Yüksek | Orta | Düşük | Yüksek |
Güvenlik | Çok Yüksek | Yüksek | Orta-Yüksek | Yüksek |
Standartlar/Uyum | PHC Kazananı, OWASP | Yaygın Kabul | NIST, FIPS | RFC 7914 |
Öneri ve En İyi Uygulamalar
Argon2 Kullanım Önerileri
- Çoğu uygulama için Argon2id varyasyonu önerilir (genel güvenlik/performans için en iyi denge)
- Bellek parametresi, mümkün olduğunca yüksek ayarlanmalı (32MB güvenli bir başlangıç)
- İterasyon sayısı en az 3 olmalı, yüksek güvenlik için daha fazla
- Paralellik derecesi, hedef sistemin CPU çekirdek sayısına göre ayarlanmalı
- Tuz değeri en az 16 byte uzunluğunda rastgele üretilmeli ve her kullanıcı için benzersiz olmalı
- Çıktı uzunluğu en az 32 byte (256 bit) olmalı
- Hash ve tuz değerleri birlikte, standart bir formatta saklanmalı