« Tüm yayınlar

Kademlia DHT'de Eclipse Saldırısı: İmza Yetmez

py-libp2p'deki imza doğrulama düzeltmesi sahte kayıtları engelliyor ama Kademlia'yı Sybil/Eclipse saldırılarına açık bırakıyor; S/Kademlia'nın ayrık arama yolları çözüm sunuyor.

py-libp2p'ye yakın zamanda eklenen bir düzeltme, imzalı PeerRecord'ları imzalayan kimliğe bağlayarak sahte kayıt enjeksiyonunu engelliyordu. Ancak bir sistem mühendisinin işaret ettiği gibi bu düzeltme, Kademlia DHT'nin asıl zayıf noktasına dokunmuyor: eclipse/Sybil saldırısı hiçbir şeyi sahtelemeye ihtiyaç duymuyor. libp2p peer ID'leri public key'den türetildiği için saniyeler içinde binlerce geçerli kimlik üretilebiliyor; bunlardan hedef bir anahtara XOR uzaklığı en yakın olanlar seçilip ağa bağlanarak dürüst düğümlerin routing tablosu ele geçirilebiliyor. Bu saldırıda gönderilen her mesaj geçerli bir anahtarla imzalandığı için mevcut imza doğrulaması hiçbir şeyi yakalamıyor.

Yazı, S/Kademlia makalesinin (Baumgart & Mies, 2007) önerdiği iki savunmayı inceliyor: kriptografik bulmaca gerektiren PeerID üretimi (proof-of-work) ve ayrık arama yolları (disjoint lookup paths). İlki tüm libp2p ekosisteminde spesifikasyon değişikliği gerektirdiği için tek bir kütüphanenin uygulayabileceği bir çözüm değil. İkincisi ise mevcut FIND_NODE protokolüyle tamamen uyumlu, sadece arama algoritmasını değiştiren ve tek başına py-libp2p'ye eklenebilecek bir önlem: aramayı birbirinden bağımsız birden fazla yoldan yürütmek, saldırganın routing tablosunu ele geçirmesi için gereken sahte kimlik sayısını yol sayısıyla orantılı biçimde artırıyor.

Kod incelemesi, py-libp2p'de eclipse/Sybil saldırılarına karşı simülasyon testleri bulunduğunu ama gerçek bir savunma mekanizması olmadığını ortaya koyuyor; simülasyonlar sahte string ID'ler kullanıyor ve gerçek routing tablosuna hiç dokunmuyor. Yazar, peer_routing.py içindeki arama fonksiyonunu ayrık yol desteğiyle genişletmeyi ve k-bucket'lara alt ağ (subnet) çeşitliliği kontrolü eklemeyi planladığını belirtiyor; bu, py-libp2p'de simülasyonun ötesine geçen ilk gerçek eclipse önlemi olacak. rust-libp2p'nin bu özelliği 2020'den beri desteklediği de not ediliyor.