Argon2 Hash Algoritması

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
  1. 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
  2. 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
  3. Yerel bağımlılıklar: Veri bağımlı bellek erişimleri, hesaplamaları paralelleştirmeyi zorlaştırır
  4. 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ı
Argon2 Hash Uygulaması
Argon2 Parametreleri
Kullanım senaryonuza uygun varyasyonu seçin
Minimum 8 karakter olmalıdır. Güvenlik için her kullanıcı için benzersiz olmalıdır.
Daha yüksek değer = daha güvenli, daha yavaş
KB
Daha yüksek değer = daha iyi güvenlik
CPU çekirdeği sayısına göre ayarlayın
bytes
Çıktı uzunluğu (16=128bit, 32=256bit, 64=512bit)
Argon2id Hash Sonucu
Bit Uzunluğu: 256 bit
Hexadecimal Karakter Sayısı: 64 karakter
Kullanılan Varyasyon: Argon2id (Hibrit)
Parametreler: iterasyon=3, bellek=32KB, paralellik=1
İşlem Adımları