Türkiye, yıllardır süren yüksek enflasyon nedeniyle kripto para benimseme oranı en yüksek ülkelerden biri haline geldi — pek çok kişi tasarrufunu değer kaybeden liradan korumak için stablecoin ve diğer kripto varlıklara yöneldi. Bitcoin SHA-256 kullanırken, Litecoin ve Dogecoin gibi paralar proof-of-work için scrypt kullanır; scrypt'in memory-hard yapısı, bu paralar için özel ASIC donanımı üretimini bitcoin'e kıyasla çok daha uzun süre ekonomik olarak cazip hale getirmedi.
Memory-hard bir fonksiyon nedir
Memory-hard bir algoritma, tek bir hash'i hesaplamak için bellekte büyük miktarda ara veri tutulmasını gerektirecek şekilde kasıtlı olarak tasarlanmıştır. Değerleri yeniden hesaplama pahasına bellekten tasarruf etmeye çalışmak, bunun yerine hesaplama süresini keskin bir şekilde artırır — yani saldırganın ya bellekten ya da hızdan fedakârlık etmesi gerekir.
Bu, özel donanımdaki saldırıları neden zorlaştırır
ASIC çipleri ve GPU'lar, basit aritmetik işlemleri kitlesel olarak paralel yürütmede çok verimlidir, ama her paralel hesaplama akışına bellek eklemek çok daha pahalıya mal olur ve daha kötü ölçeklenir. Scrypt, bu tür donanımlarda kaba kuvvet saldırısını klasik hash fonksiyonlarına kıyasla ekonomik olarak daha az cazip hale getirir.
Bu neden gereklidir
- GPU çiftliği saldırılarına dirençli bir parola hash'leme algoritması seçmek.
- Kriptografi bağlamında memory-hard fonksiyon kavramını anlamak.
- Belirli bir sistem için scrypt'in bcrypt ve Argon2'ye karşı ödünleşimlerini karşılaştırmak.
Gerçekte ne kadar bellek gerekiyor
Tek bir scrypt hesaplaması için gereken bellek miktarı yaklaşık olarak 128 × N × r bayta eşittir. Tipik parametrelerde (N=16384, r=8) bu, tek bir hash için yaklaşık 16 megabayttır — tek bir girişte önemsizdir, ama bir sunucu binlerce eşzamanlı kimlik doğrulamayı işlemek zorundaysa, toplam bellek miktarı yalnızca soyut bir güvenlik gereksinimi değil, parametre seçiminde gerçek bir sınırlama haline hızla dönüşür.