Post

Argon2id ve Bcrypt: Varsayılan Parametrelerle Performans ve Güvenlik Karşılaştırması

🇹🇷 Argon2id ve Bcrypt algoritmalarının varsayılan parametreler ile hız, bellek maliyeti, çarpışma direnci ve çığ etkisi açısından akademik analizi.

Argon2id ve Bcrypt: Varsayılan Parametrelerle Performans ve Güvenlik Karşılaştırması

Modern siber güvenlik mimarilerinde kullanıcı parolalarını korumak için kullanılan “hashing” (özetleme) algoritmaları, sistemin en kritik savunma hattını oluşturur. Jeffrey Ferdinand Hartono ve ekibinin 2025 tarihli çalışması olan “Comparison of Argon2id and Bcrypt with Default Parameters in Performance and Security Aspect for Secure Authentication”, bu iki popüler algoritmayı Python ortamında; hız, çarpışma direnci (collision resistance), bellek maliyeti ve çığ etkisi (avalanche effect) açısından derinlemesine inceliyor.

İşte ScienceDirect üzerinden yayınlanan bu akademik çalışmadan çıkardığım teknik notlar ve analizim.

1. Argon2id: Bellek-Yoğun Güvenlik (Memory-Hard)

2015 Parola Özetleme Yarışması (PHC) şampiyonu olan Argon2, temelinde Blake2b özet fonksiyonunu kullanır.

Basitleştirilmiş Not: Blake2b, aslında veriyi çok hızlı karıştırabilen bir motordur. Argon2 bu motoru alıp, üzerine “bellek sertliği” (memory-hardness) denilen bir zırh ekler.

  • Vurgulanan Özellik: Argon2id, yan kanal (side-channel) saldırılarına karşı dirençli olan Argon2i ile paralel saldırılara karşı dirençli olan Argon2d’nin hibrit bir versiyonudur.
    • Nedir bu Yan Kanal (Side-Channel)? Saldırganın doğrudan matematiksel olarak değil, işlemcinin o işi yaparken harcadığı elektrikten veya geçen süreden yararlanarak parolanızı tahmin etmeye çalışmasıdır. Argon2i/id bu kapıyı kapatır.
  • Bellek-Yoğun Yapı: Bu yapı, saldırganın donanım maliyetini artırarak brute-force saldırılarını ekonomik olarak mantıksız hale getirir. Yani saldırganın sadece hızlı bir işlemci alması yetmez, devasa miktarda pahalı RAM de satın alması gerekir.

2. Bcrypt: Zamana Karşı Direnç

1999’dan beri endüstri standardı olan Bcrypt, Blowfish şifreleme algoritması tabanlıdır ve “uyarlanabilir maliyet” (adaptive cost) faktörü ile bilinir.

  • Vurgulanan Özellik: Bcrypt’in en büyük gücü, işlemciyi meşgul ederek saldırganı yavaşlatmasıdır. Ancak bellek-yoğun olmaması, onu modern GPU (ekran kartı) tabanlı kırma sistemlerine karşı Argon2id’den bir adım geride bırakır.
    • Geliştirici Notu: Ekran Kartları (GPU) binlerce küçük çekirdeğe sahiptir. Bcrypt sadece işlemci gücü istediği için bir GPU binlerce Bcrypt denemesini aynı anda yapabilir. Argon2id ise “RAM isterim” dediği için GPU çekirdekleri RAM darboğazına takılır.

3. Deneysel Veriler: Performans vs Güvenlik

Makaledeki deneyler Python dilinde varsayılan parametrelerle yapılmış. Sonuçlar oldukça çarpıcı:

Özellik Argon2id Bcrypt Junior/Mid Notu
İşlem Hızı 0.085s 0.312s Argon2id 4 kat daha hızlı yanıt veriyor.
Bellek Tüketimi 0.26 KB 0.14 KB Çok düşük gözükse de Argon2’de bu ayarlanabilir.
Çığ Etkisi (%) %41.22 %24.17 Kritik: Girişteki 1 bit değişim çıktıya ne kadar yansıyor?
Çarpışma Oranı 1000/0 1000/0 Her ikisi de şu an için aşılmaz.

Analiz ve Yorumlarım:

  • Çığ Etkisi (Avalanche Effect): Girişteki sadece bir bitlik değişikliğin çıktıya ne kadar yansıdığını gösteren bu değerde Argon2id bariz önde. İdeal oran %50’dir (yazı tura gibi %50 ihtimalle her bit değişmeli). Argon2id’nin %41’i, parolanın “karmaşıklığını” kırma yazılımlarına karşı daha iyi gizlediğini kanıtlıyor.
  • Çarpışma Direnci: 1000 rastgele kelime testi başarılı. Bcrypt’in 53 karakterlik çıktısı (Argon2id’nin 43 karakterine kıyasla) teorik olarak çok daha geniş bir “adres alanı” sunar, bu da çarpışma ihtimalini pratik olarak sıfıra indirir.
  • Hız Çıkmazı: Bcrypt’in 0.3 saniyelik yavaşlığı aslında bir “güvenlik özelliği”dir. Ancak Argon2id, bu süreyi RAM zorunluluğu ile saniyelerden bağımsız bir güvenlik duvarına dönüştürür.

4. Uygulama Notları ve Tavsiye

Makale geliştiricilere şu mesajı veriyor: Sadece kütüphaneyi kurup bırakmayın.

  • Öneri: maliyet (time cost), bellek (memory cost) ve paralellik (parallelism) parametrelerini sunucunuzun gücüne göre yukarı çekin. Varsayılan (default) değerler en alt basamaktır.

Sonuç

Eğer modern bir backend yazıyorsanız, paralelliği destekleyen ve GPU saldırılarına karşı RAM duvarı ören Argon2id en mantıklı seçimdir. Ancak eski sistemlerle (legacy) çalışıyorsanız ve işlemci limitli bir ortamdaysanız Bcrypt hala sağlam bir kaledir.

Orijinal Makale ve Kaynaklar:

This post is licensed under CC BY 4.0 by the author.