Post

Argon2: Yeni Nesil Bellek-Sert (Memory-Hard) Fonksiyonların Teknik Tasarımı

🇹🇷 Argon2'nin orijinal beyaz bülteninden (whitepaper) teknik çıkarımlar: Zaman-Alan çarpımı (Time-Area product), Argon2d vs Argon2i ve tasarım felsefesi.

Argon2: Yeni Nesil Bellek-Sert (Memory-Hard) Fonksiyonların Teknik Tasarımı

Kriptografi dünyasında bir algoritmanın “şampiyon” seçilmesi tesadüf değildir. Alex Biryukov, Daniel Dinu ve Dmitry Khovratovich tarafından kaleme alınan “Argon2: new generation of memory-hard functions for password hashing and other applications” başlıklı makale, bu algoritmanın neden Password Hashing Competition (PHC) birincisi olduğunu teknik detaylarıyla açıklıyor.

Bu yazıda, Argon2’nin temelini oluşturan “Bellek-Sertliği” (Memory-Hardness) kavramını ve saldırgan maliyetlerini nasıl maksimize ettiğini (bir geliştirici gözüyle) inceleyeceğiz.

1. Temel Hedef: Zaman-Alan Çarpımı (Time-Area Product)

Argon2’nin tasarımı basit bir “yavaşlatma” mantığının ötesine geçer. Amaç, bir saldırganın ASIC (özel yonga) kullanarak yaptığı saldırı maliyetini (Alan $\times$ Zaman) maksimize etmektir.

  • Alan (A): Bellek kullanımı (RAM).
  • Zaman (T): Hesaplama süresi.

    Basitçe: Saldırganın donanımı (Alan) pahalı kalmalı ve işi bitirme süresi (Zaman) kısalmamalı. Eğer saldırgan RAM’den tasarruf etmek isterse, Argon2 ona zaman olarak çok ağır bir ceza keser. Buna “Hafıza-Zaman Dengesi” (TMTO) saldırılarına direnç diyoruz.

2. Argon2d ve Argon2i: Hangi Durumda Hangisi?

Makale, Argon2’yi iki ana varyanta ayırır:

  • Argon2d (Data-dependent): Bellek erişimleri parolanın içeriğine göre değişir. Bu, kırması en zor olanıdır ancak bir tehlikesi vardır: Yan Kanal (Side-Channel) Saldırıları. Saldırgan, bellek erişim sürelerini ölçerek parolanız hakkında ipucu yakalayabilir. Bu yüzden sadece donanımı tam korunan yerlerde (kripto paralar vb.) kullanılır.
  • Argon2i (Data-independent): Bellek erişimleri hep belirli bir sırada yapılır. Bu, saldırgana dışarıdan “süre” üzerinden ipucu vermez. Web projelerinizde parola saklamak için bunu seçmelisiniz.

3. Paralellik ve Verimlilik

Argon2, çok çekirdekli sistemlerin gücünü en iyi şekilde kullanır.

  • Lanes and Slices: Belleği bir otoyoldaki şeritler (lanes) gibi düşünün. Argon2, farklı işlemci çekirdeklerini aynı anda bu şeritleri doldurmak için kullanabilir.
  • Geliştirici Notu: Sunucunuzda 4 çekirdek varsa, Argon2’yi 4 şeritli (parallelism=4) çalışacak şekilde ayarlayabilirsiniz. Bu, savunmacı için hızı artırırken saldırganın işini paralel olarak optimize etmesini zorlaştırır.

4. Sıkıştırma Fonksiyonu G (Blake2b Temeli)

Argon2’nin kalbinde, Blake2b özet fonksiyonundan türetilen bir G fonksiyonu bulunur.

  • Neden Blake2b? Çünkü çok hızlı ve matematiksel olarak çok sağlamdır. Modern 64-bit işlemcilerde adeta “uçar”.
  • Mühendislik Harikası: İçerisine eklenen 64-bitlik çarpmalar, saldırganın bu algoritmayı kırmak için yapacağı özel donanımı (ASIC) karmaşıklaştırmak için oraya konmuştur.

5. Tradeoff Direnci: “Ranking Attack”

Araştırmacılar, o dönem rakipleri olan scrypt ve Lyra2’yi zorlayan kırma yöntemlerini Argon2 üzerinde denemişler.

  • Sonuç: Argon2, bellek miktarını azaltıp hesaplamayı hızlandırmaya çalışan tüm “hilelere” karşı en ağır cezayı verir.
  • Önemli: Makale, güvenli bir deneyim için Argon2i modunda en az 3 geçiş (pass) yapılmasını öneriyor.

Sonuç

Argon2, sadece iyi bir algoritma değil, aynı zamanda saldırganın ekonomi politiğini de hedef alan bir mühendislik harikasıdır. Ayarlanabilir parametreleri sayesinde gelecekteki daha güçlü donanımlara karşı da (parametreyi artırarak) ayakta kalabilecektir.

Akademik Referans ve Kaynaklar:

  • DOI: 10.1109/EuroSP.2016.31
  • Biryukov, A., Dinu, D., & Khovratovich, D. (2016). Argon2: New Generation of Memory-Hard Functions for Password Hashing and Other Applications. 2016 IEEE European Symposium on Security and Privacy (EuroS&P), Saarbrucken, Germany, pp. 292-302.
  • IEEE Xplore | PHC Winner Announcement
This post is licensed under CC BY 4.0 by the author.