Kör Aktarıcı Kötüye Kullanım Koruması
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
| Denetim | Durum |
|---|---|
| Opak yük iletimi | Uygulandı |
| İmzalı güncellik kontrolleri ve rota yeniden oynatma bastırma | Uygulandı. 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 karantina | Uygulandı |
| 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 incelenmesi | Tasarım gereği yapılmaz |
| Kullanıcı başına, rota başına veya sosyal grafik analitiği | Tasarı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.
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.
| Sabit | Varsayılan |
|---|---|
BLIND_RELAY_ROUTE_REPLAY_CAPACITY | 8192 canlı rota |
BLIND_RELAY_ROUTE_REPLAY_TTL_SECS | 600 saniye |
PREVIOUS_HOP_RATE_WINDOW_SECS başına PREVIOUS_HOP_RATE_LIMIT | 60 saniyede 120 istek |
PREVIOUS_HOP_FAILURE_WINDOW_SECS başına PREVIOUS_HOP_FAILURE_THRESHOLD | 300 saniyede 12 puanlanan hata |
PREVIOUS_HOP_QUARANTINE_SECS | 300 saniye |
MAX_PREVIOUS_HOP_BUCKETS | 4096 kova |
BLIND_RELAY_MAX_ENVELOPE_AGE_SECS | 600 saniye |
BLIND_RELAY_MAX_FUTURE_SKEW_SECS | 120 saniye |
BLIND_RELAY_DELIVERY_RECEIPT_MAX_AGE_SECS | 120 saniye |
DEFAULT_MAX_ATTEMPTS (iletim yeniden denemeleri) | 3 deneme |
MAX_IN_FLIGHT_BLIND_RELAY_REQUESTS | 64 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:
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:
| Durum | Yanı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ışıyor | HTTP 503 route_in_flight. Gönderen yeniden deneyebilir | Yok |
| Aynı rota kimliği altında farklı bir istek | HTTP 400 replay_conflict | Eş sağlığına kaydedilir. Karantina puanına eklenmez |
| Aynı istek, ancak saklanan yanıt 120 saniyeden eski | HTTP 409 replay_response_expired. Rota, 600 saniyelik penceresinin geri kalanı boyunca rezerve kalır; bu nedenle yeniden çalışamaz | Yok |
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
backpressurenedeniyle 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:
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ç grubu | Alanlar |
|---|---|
| Alım ve sonuçlandırma | received, terminal, forwarded, rejected |
| Doğrulama ve koruma | invalid_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 deneme | backpressure_dropped, forward_failed, retry_attempted, retry_succeeded, retry_exhausted |
| Sentetik yoklamalar | probe_attempted, probe_succeeded, probe_failed, two_hop_probe_attempted, two_hop_probe_succeeded, two_hop_probe_failed |
| Gerçek teslim ve güncellik | verified_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.
status | Anlamı |
|---|---|
idle | Henüz aktarım veya yoklama etkinliği yok |
observing | Bir miktar kanıt var, ancak hazır olma durumu henüz tesis edilmedi |
stale | Daha önceki başarılı kanıt artık güncel değil |
ready | Etkin bir taşıma sorunu olmadan güncel kabul edilmiş iş veya geçerli bir kanıt |
protecting | Aktarıcı çalışmaya devam ederken kötüye kullanım korumaları devreye girdi |
degraded | İletim veya yoklama hatalarının incelenmesi gerekiyor |
attention | Geri 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ı
| Katman | Düğüm deposundaki yol | Rol |
|---|---|---|
| Aktarım düzenlemesi | crates/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ırlar | crates/aeronyx-server/src/api/chat_peer.rs | Rotalar, 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 defteri | crates/aeronyx-server/src/api/chat_peer_replay.rs | Bellek içi kayıt defteri ve saklanan yanıt biçimi |
| Kalıcı yeniden oynatma deposu | crates/aeronyx-server/src/services/chat_relay_blind_route_store.rs | SQLite rota rezervasyonları ve yanıtları |
| Yeniden deneme politikası | crates/aeronyx-server/src/api/chat_peer_retry.rs | Yeniden denenebilir ve kesin hatalar ile yeniden deneme zamanlaması |
| Sayaçlar ve kalite | crates/aeronyx-server/src/services/peer_store.rs ve services/peer_store/status.rs | Toplu 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.rs | Yerel 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 -->