Kör Aktarıcı Kötüye Kullanım Koruması

AeroNyx8 dk okuma

Bir AeroNyx düğümünün şifreli aktarım trafiğini iletmeden önce uyguladığı sınırlar: yalnızca imzalı üst veriler ve toplu sayaçlar kullanılarak önceki atlama hız sınırları ve karantina, yeniden başlatmaya karşı güvenli rota yeniden oynatma bastırma, sınırlı yeniden denemeler ve CPU kabulü.

Kör Aktarıcı Kötüye Kullanım Koruması, bir AeroNyx düğümünün başka bir düğüm adına şifreli aktarım trafiğini iletmeden önce uyguladığı sınırlar bütünüdür. Kötüye kullanan veya kararsız eşleri yalnızca imzalı yönlendirme üst verilerini ve yerel sayaçları kullanarak sınırlar. Hiçbir zaman şifreli metni ayrıştırmaz, rota geçmişi tutmaz veya kimin kiminle konuştuğunu açığa çıkarmaz.

Kapsam

DenetimDurum
Opak yük iletimiUygulandı
İmzalı güncellik kontrolleri ve rota yeniden oynatma bastırmaUygulandı. Düğümün sohbet aktarıcısı deposu etkin olduğunda yeniden oynatma durumu yeniden başlatmaya karşı güvenlidir
Önceki atlama hız sınırlaması ve karantinaUygulandı
Süreç genelinde istek ve kriptografi kabul sınırlarıUygulandı
Düğüm sağlığında ve Nodeboard'da toplu çalışma zamanı kanıtıUygulandı
Düz metnin veya yüklerin incelenmesiTasarım gereği yapılmaz
Kullanıcı başına, rota başına veya sosyal grafik analitiğiTasarım gereği yapılmaz

Kör düğüm kuralı

Bir aktarıcı yönlendirme üst verilerinin kimliğini doğrulayabilir, sınırlı bir politika uygulayabilir, opak bir zarfı iletebilir ve imzalı bir alındı döndürebilir. Yükü hiçbir zaman incelememeli veya bir rotayı, bir kullanıcı kimliğini ya da bir ilişkiyi yeniden oluşturabilecek üst verileri açığa çıkarmamalıdır. Özellikle aktarıcılar şunları kaydetmez veya açığa çıkarmaz:

  • mesaj, paket, medya veya bellek düz metni
  • DNS sorguları, hedefler, alan adları, URL'ler veya tarama geçmişi
  • rota kimlikleri, tam yollar, uç nokta URL'leri veya istemci IP adresleri
  • tam açık anahtarlar, alıcı kimlikleri, mesaj kimlikleri veya sosyal grafik kenarları
  • özel anahtarlar, kupon sırları, cüzdan düzeyinde trafik veya şifre çözme materyali

Kabul hattı

Her istek, iletim kapasitesini kullanabilmeden önce bu kontrollerden geçer. 1 ile 6 arasındaki adımlar bu sırayla çalışır. 7. adımda, bu düğüme yönelik bir istek düğümün kendi uç veya onion işlemesine gider; başka bir düğüme yönelik bir istek ise bir sonraki atlaması çözümlendikten sonra rezerve edilir.

text
1. request gate: process-wide admission window and in-flight limit (64 requests)
2. crypto admission: a free slot for signature and onion work, or Backpressure
3. authenticate the signed previous hop and envelope
4. previous-hop rate limit and quarantine check
5. envelope metadata: size, age and future-skew limits
6. self-loop check
7. route loop, TTL and next-hop descriptor checks, plus the route replay reservation
8. forward the opaque ciphertext, or peel the terminal layer and deliver

Her karar, hiçbir zaman şifresi çözülmüş içerik değil, imzalı yönlendirme üst verilerini ve yerel toplu durumu kullanır.

Çalışma zamanı sınırları

Bunlar düğüm kaynak kodundaki güncel varsayılan değerlerdir. Kalıcı protokol taahhütleri değil, işletim değerleridir.

SabitVarsayılan
BLIND_RELAY_ROUTE_REPLAY_CAPACITY8192 canlı rota
BLIND_RELAY_ROUTE_REPLAY_TTL_SECS600 saniye
PREVIOUS_HOP_RATE_WINDOW_SECS başına PREVIOUS_HOP_RATE_LIMIT60 saniyede 120 istek
PREVIOUS_HOP_FAILURE_WINDOW_SECS başına PREVIOUS_HOP_FAILURE_THRESHOLD300 saniyede 12 puanlanan hata
PREVIOUS_HOP_QUARANTINE_SECS300 saniye
MAX_PREVIOUS_HOP_BUCKETS4096 kova
BLIND_RELAY_MAX_ENVELOPE_AGE_SECS600 saniye
BLIND_RELAY_MAX_FUTURE_SKEW_SECS120 saniye
BLIND_RELAY_DELIVERY_RECEIPT_MAX_AGE_SECS120 saniye
DEFAULT_MAX_ATTEMPTS (iletim yeniden denemeleri)3 deneme
MAX_IN_FLIGHT_BLIND_RELAY_REQUESTS64 istek

Önceki atlama hız sınırlaması ve karantina

Hız sınırları, önceki atlamanın imzalı kimliğine göre anahtarlanır. Bir önceki atlamadan 60 saniye içinde 120'den fazla istek gelmesi, o atlama için beş dakikalık yerel bir karantina başlatır. Ayrı bir hata puanı, beş dakika içinde 12 puanlanan hatadan sonra aynı karantinayı başlatır. Puana yalnızca şu nedenler sayılır:

text
invalid_previous_hop | invalid_signature | self_loop | route_loop | ttl_exhausted

Taşıma zaman aşımları, kaybolan onaylar, yinelenen yeniden denemeler ve yeniden oynatma çakışmaları puana eklenmez; böylece sağlıklı bir eş ağ sorunları nedeniyle karantinaya alınmaz. Kova deposu sınırlıdır ve boşta kalan kovalar çıkarılır; bu nedenle koruma, uzun vadeli bir iletişim grafiğine dönüşecek şekilde büyüyemez.

Rota yeniden oynatma ve yeniden denemeler

Her aktarım isteği bir rota kimliği taşır. Düğümün sohbet aktarıcısı deposu etkin olduğunda ([memchain.chat_relay] enabled = true), rota rezervasyonları ve tamamlanmış yanıtlar düğümün SQLite veritabanında tutulur; böylece yeniden oynatma koruması yeniden başlatmadan sonra da sürer. Aksi takdirde düğüm aynı kapasiteye ve pencereye sahip bellek içi bir kayıt defteri kullanır. 8192 yuvanın tamamı canlı rotalar tutuyorsa, yuvaların süresi dolana kadar yeni rotalar replay_capacity ile reddedilir.

Yinelenen bir rota kimliğinin dört olası sonucu vardır:

DurumYanıtÖnceki atlamaya etkisi
Aynı istek; ilk deneme tamamlanmışVarsa uç düğüm tarafından imzalanmış alındı dahil saklanan yanıt yeniden oynatılır. Hiçbir şey ikinci kez teslim edilmez veya iletilmez (duplicate_route)Başarı olarak sayılır
Aynı istek; ilk deneme hâlâ çalışıyorHTTP 503 route_in_flight. Gönderen yeniden deneyebilirYok
Aynı rota kimliği altında farklı bir istekHTTP 400 replay_conflictEş sağlığına kaydedilir. Karantina puanına eklenmez
Aynı istek, ancak saklanan yanıt 120 saniyeden eskiHTTP 409 replay_response_expired. Rota, 600 saniyelik penceresinin geri kalanı boyunca rezerve kalır; bu nedenle yeniden çalışamazYok

Son sonuç kalıcı depo için geçerlidir. İmzalı alındılar yalnızca güncel kanıt olarak geçerlidir; bu nedenle düğüm 120 saniyeden sonra bir alındıyı yeniden oynatmaz.

Bir sonraki atlamaya iletim bir zaman aşımı, bağlantı hatası veya istek hatasıyla başarısız olduğunda düğüm toplamda en fazla üç deneme yapar. Her yeniden denemeden önceki kısa gecikme rota kimliğinden, bir sonraki atlamadan ve deneme numarasından türetilir. Aşağı akıştaki düğümün kesin ret olarak bildirdiği hatalar yeniden denenmez.

Kriptografi kabulü (operatör kapasite notu)

İmza kontrolleri, onion katmanlarının soyulması ve alındı imzalama CPU'ya bağlı işlemlerdir; bu nedenle her düğüm süreci bunları sınırlar:

  • Toplam yuva: ana bilgisayarın bildirdiği CPU iş parçacıklarının yarısı, yukarı yuvarlanarak; en az 4 ve en fazla 8; böylece bir veya iki iş parçacıklı bir ana bilgisayar bile 4 yuva alır.
  • Gelen istekler: toplamdan bir yuva eksik; böylece giden rota oluşturma ve alındı tamamlama her zaman ilerleyebilir. Dolayısıyla en küçük ana bilgisayarlarda gelen istekler 3 yuva alır.
  • Tüm yuvalar meşgul olduğunda: istek HTTP 429 ve backpressure nedeniyle hemen reddedilir. Bir kuyrukta beklemez.

Bu nedenle küçük bir ana bilgisayarda bir aktarıcı, ani yük artışlarında yükü erken bırakır. Artan bir backpressure_dropped sayacı, düğümün daha fazla CPU'ya veya daha az aktarım trafiğine ihtiyaç duyduğu anlamına gelir.

Toplu çalışma zamanı sayaçları

Düğümler, kaba kümülatif sayaçları ve güncellik zaman damgalarını kalp atışlarında şu yollar altında raporlar:

text
system_stats.discovery_status.peer_store.runtime.blind_relay
system_stats.discovery_status.peer_store.blind_relay_quality
system_stats.discovery_status.peer_store.peer_health_summary
Sayaç grubuAlanlar
Alım ve sonuçlandırmareceived, terminal, forwarded, rejected
Doğrulama ve korumainvalid_signature, envelope_too_large, ttl_exhausted, no_route, invalid_endpoint, loop_detected, replay_dropped, timestamp_rejected, rate_limited, quarantined, quarantine_started
Taşıma ve yeniden denemebackpressure_dropped, forward_failed, retry_attempted, retry_succeeded, retry_exhausted
Sentetik yoklamalarprobe_attempted, probe_succeeded, probe_failed, two_hop_probe_attempted, two_hop_probe_succeeded, two_hop_probe_failed
Gerçek teslim ve güncellikverified_client_onion_deliveries, last_verified_client_onion_delivery_at, last_accepted_at, last_event_at

Bu sayaçlar düğümün işleyişini tanımlar. Mesaj günlükleri veya faturalandırma verileri değildir ve belirli bir konuşmanın gerçekleştiğini kanıtlamazlar.

Kanıt kalitesi

Kalite özeti dört tür kanıtı birbirinden ayrı tutar: kabul edilen opak aktarım işi, sentetik erişilebilirlik yoklamaları, sentetik iki atlamalı yoklamalar ve istemci kaynaklı teslimler için uç düğüm tarafından imzalanmış alındılar. real_relay_ready, güncel ve kimliği doğrulanmış bir istemci teslim alındısı gerektirir. Sentetik kanıt hiçbir zaman kullanıcı trafiği olarak raporlanmaz.

statusAnlamı
idleHenüz aktarım veya yoklama etkinliği yok
observingBir miktar kanıt var, ancak hazır olma durumu henüz tesis edilmedi
staleDaha önceki başarılı kanıt artık güncel değil
readyEtkin bir taşıma sorunu olmadan güncel kabul edilmiş iş veya geçerli bir kanıt
protectingAktarıcı çalışmaya devam ederken kötüye kullanım korumaları devreye girdi
degradedİletim veya yoklama hatalarının incelenmesi gerekiyor
attentionGeri basınç (backpressure) veya tükenen yeniden denemeler operatörün acil ilgisini gerektiriyor

proof_scope, görülen en güçlü kanıtı adlandırır: client_message_delivery, relay_acceptance, message_delivery, control_plane, single_hop_control_plane, attempted veya none.

Trafik ilişkileri olmadan eş sağlığı

peer_health_summary, operatörlerin kimin kiminle iletişim kurduğunu görmeden başarısız olan veya karantinaya alınmış bir eşi bulmasını sağlar.

Dahil olanlar: kısaltılmış bir düğüm kimliği öneki, kaba sağlık ve tanımlayıcı durumu, dedikodu ve rota başarısı güncelliği, toplu rota başarı ve hata sayıları, karantina durumu, kalan süre ve kaba neden grupları.

Asla dahil olmayanlar: tam düğüm açık anahtarları, rota kimlikleri, uç nokta listeleri, şifreli veri blokları veya yük karmaları, mesaj kimlikleri, alıcı kimlikleri, istemci IP adresleri, hedefler, DNS verileri veya sosyal grafik kenarları.

Kaynak haritası

KatmanDüğüm deposundaki yolRol
Aktarım düzenlemesicrates/aeronyx-server/src/api/chat_peer/blind_relay.rsİstek kapısı, kriptografi kabulü, kimlik doğrulama, döngü ve TTL kontrolleri, yeniden oynatma sonuçları, iletim ve uç işleme
HTTP yüzeyi ve sınırlarcrates/aeronyx-server/src/api/chat_peer.rsRotalar, gövde ve eşzamanlı istek sınırları, hata kodları ve neden grupları
Kötüye kullanım politikasıcrates/aeronyx-server/src/api/chat_peer_abuse_guard.rsÖnceki atlama hız sınırları, hata puanı ve karantina
Yeniden oynatma kayıt deftericrates/aeronyx-server/src/api/chat_peer_replay.rsBellek içi kayıt defteri ve saklanan yanıt biçimi
Kalıcı yeniden oynatma deposucrates/aeronyx-server/src/services/chat_relay_blind_route_store.rsSQLite rota rezervasyonları ve yanıtları
Yeniden deneme politikasıcrates/aeronyx-server/src/api/chat_peer_retry.rsYeniden denenebilir ve kesin hatalar ile yeniden deneme zamanlaması
Sayaçlar ve kalitecrates/aeronyx-server/src/services/peer_store.rs ve services/peer_store/status.rsToplu sayaçlar, hazır olma durumu ve kanıt sınıflandırması
Sağlık raporlamasıcrates/aeronyx-server/src/api/vpn_health.rs ve management/reporter.rsYerel sağlık JSON'u ve kalp atışı yükü

Düğüm yazılımı AGPL-3.0 lisansı altında github.com/AeroNyxNetwork/AeroNyx adresinde açık kaynaklıdır. Rotaların nasıl oluşturulduğu için Düğüm keşfi ve şifreli çok atlamalı aktarım sayfasına bakın.

<!-- faq:start -->

Sıkça sorulan sorular

Bir aktarıcı düğüm ilettiği trafiği okuyabilir veya günlüğe kaydedebilir mi?

Hayır. Bir aktarıcı imzalı yönlendirme üst verilerini kontrol eder ve opak bir zarfı iletir. Hiçbir zaman yükleri, rota geçmişlerini veya alıcı kimliklerini değil, yalnızca toplu sayaçları tutar.

Bir düğüm aynı rotayı yeniden denediğinde ne olur?

İlk deneme tamamlanmışsa düğüm saklanan yanıtını yeniden oynatır ve hiçbir şeyi ikinci kez teslim etmez. İlk deneme hâlâ çalışıyorsa düğüm yeniden denenebilir bir route_in_flight döndürür. Aynı rota kimliği altındaki farklı bir istek replay_conflict olarak reddedilir.

Yeniden oynatma koruması düğüm yeniden başlatıldığında da sürer mi?

Evet, düğümün sohbet aktarıcısı deposu etkin olduğunda. Bu durumda rota rezervasyonları ve tamamlanmış yanıtlar SQLite içinde tutulur. Bu depo olmadan düğüm, yeniden başlatmada temizlenen bellek içi bir kayıt defteri kullanır.

Bir eş neden karantinaya alınır?

Bir eş, 60 saniyede 120'den fazla istek gönderdikten sonra veya beş dakikada 12 puanlanan doğrulama hatasından sonra beş dakikalığına karantinaya alınır. Zaman aşımları, kaybolan onaylar ve yinelenen yeniden denemeler hata olarak sayılmaz.

Düğümüm yük altında neden backpressure döndürüyor?

Aktarım kriptografi yuvalarının tamamı meşguldü. Bir düğüm, imza ve onion işleri için CPU iş parçacıklarının yaklaşık yarısına (en az 4, en fazla 8) izin verir ve fazla istekleri kuyruğa almak yerine hemen reddeder.

<!-- faq:end -->