Tüm makaleler

Argon2: bu algoritma parola hash'leme yarışmasını neden kazandı

Türkiye'de Kişisel Verilerin Korunması Kanunu (KVKK), veri sorumlularının kişisel verileri "uygun güvenlik düzeyini temin etmeye yönelik gerekli tedbirleri" alarak saklamasını şart koşar; belirli bir algoritma adı geçmese de denetimlerde artık düz MD5 veya tuzsuz SHA-256 kabul edilebilir bulunmuyor. 2015 Password Hashing Competition'ı kazanan Argon2, OWASP tarafından bcrypt'in önünde önerilen algoritma olarak bu boşluğu dolduruyor ve PHP'nin password_hash() fonksiyonunda doğrudan destekleniyor.

Bellek neden zaman kadar önemli

Bcrypt ve PBKDF2 yalnızca hesaplamayı yavaşlatır. Argon2 ise her bir denemenin ayarlanabilir miktarda RAM ayırmasını zorunlu kılar — buna memory-hard fonksiyon denir. Bulutta kiralanan bir GPU çiftliği basit hesaplamaları ucuza paralelleştirebilir, ama aynı anda çok fazla belleğe erişimi paralelleştirmek çok daha pahalıdır: bellek, hesaplama çekirdeklerinin aksine, her kartta fiziksel olarak sınırlıdır.

Üç varyant: d, i, id

  • Argon2d — bellek erişimi parolanın kendisine bağlıdır, bu da maksimum GPU direnci sağlar ama teorik olarak yan kanal saldırılarına açık kalır.
  • Argon2i — bellek erişimi paroladan bağımsızdır, bu açığı kapatır ama biraz daha az GPU direnci sunar.
  • Argon2id — hesaplamanın farklı aşamalarında iki stratejiyi birleştirir. RFC 9106'nın önerdiği ve çoğu framework'te varsayılan olan varyant budur.

Üç bağımsız parametre

Bcrypt'in tek "cost factor"ünden farklı olarak Argon2, belleği, iterasyonları ve paralelliği ayrı ayrı ayarlamanıza izin verir. Bu pratikte işe yarar: belleği sınırlı bir serverless fonksiyon iterasyon sayısını artırarak telafi edebilir, bolca RAM'e sahip özel bir kimlik doğrulama sunucusu ise tersini yapabilir.

Bu neden gereklidir

  • MD5 veya düz SHA-256 yerine yeni bir kimlik doğrulama sistemi için modern bir algoritma seçmek.
  • Argon2'nin kiralık GPU veya kripto madenciliği donanımıyla yapılan saldırıları neden özellikle pahalılaştırdığını anlamak.
  • Bir güvenlik denetiminin parçası olarak bcrypt veya PBKDF2'den geçişi planlamak.

Paralellik tuzağı

Paralellik bedava bir kazanç gibi görünür — daha fazla iş parçacığı, çok çekirdekli sunucuda daha hızlı hash'leme. Ama aynı çok çekirdekli donanıma sahip bir saldırgan her denemede tıpatıp aynı hız artışını elde eder. Paralelliği sunucunun gerçek çekirdek sayısına ayarlamak güvenlidir; "ihtiyaten" artırmak saldırgana sadece orantılı bir indirim verir.

Aracı dene