« Tüm yayınlar

Grudge: Çok Kiracılı Sistemler İçin Azalan Skor Sketch'i

Grudge, sabit bellekte çalışan Go kütüphanesi; kiracı başına durum tutmadan skorları zamanla söndürür, hız sınırlama ve kötüye kullanım tespiti sağlar.

Grudge, count-min sketch'in sayım yapmaktaki rolünü davranışsal skorlar için üstlenen, olasılıksal bir Go veri yapısıdır. Sınırsız sayıda anahtarı (istemci ID, kiracı, IP, önbellek anahtarı vb.) sabit boyutlu bir bellek alanında skorlara eşler; her güncelleme ve sorgu ~120 nanosaniyede, sıfır bellek tahsisiyle gerçekleşir ve kendi kendine zamanla sönümlenir. FAIR adlı adalet temelli hız kısıtlama sisteminden ayrıştırılıp genelleştirilmiştir.

Çalışma mantığı L seviye × M hücreden oluşan bir tabloya dayanır; her anahtar tek bir 64-bit hash üzerinden Kirsch–Mitzenmacher yöntemiyle her seviyede bir hücreye eşlenir. Güncellemeler tüm seviyelere delta ekler, sorgular ise varsayılan olarak minimum değeri alır; bu sayede tahmin hatası tek yönlüdür ve gerçek skor asla küçümsenmez. Üstel, doğrusal veya devre dışı bırakılabilen sönümleme fonksiyonları zamanla unutmayı sağlar; Rotator mekanizması ise farklı hash tohumlarıyla nesiller tutarak en kötü durumdaki yanlış pozitiflerin süresini sınırlar.

Bu tek mekanizma üzerine hız sınırlayıcılar, kötüye kullanım skorlama, devre kesiciler, önbellek kabul politikaları ve adil zamanlayıcılar gibi birçok yapı kurulabilir; kütüphane token-bucket benzeri bir borç sayacı örneğiyle bunu gösterir. Saldırgan kontrolündeki anahtarlar için varsayılan murmur3 hash'i yerine çakışmaya dirençli SipHash seçeneği sunulur. Grudge kasıtlı olarak politika belirlemez, sadece skorları tutup söndürür; testler sıfır bellek tahsisini ve deterministik davranışı garanti eder, proje MIT lisansıyla dağıtılır.