4 पॉइंट द्वारा GN⁺ 2025-12-14 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • Tor नेटवर्क का मुख्य कोड मौजूदा C भाषा से Rust-आधारित Arti में ट्रांज़िशन कर रहा है
  • मौजूदा C कोड में buffer overflow, use-after-free, memory corruption जैसी कमजोरियां मौजूद हैं
  • नया वर्ज़न Arti 1.8.0 circuit timeout redesign के ज़रिए अनुमानित पैटर्न हटाता है और ट्रैकिंग जोखिम कम करता है
  • onion service operators के लिए C-आधारित Tor से Arti में keys को अपने-आप migrate करने वाला नया कमांड जोड़ा गया है
  • यह ट्रांज़िशन security और stability में सुधार के लिए Tor प्रोजेक्ट की एक महत्वपूर्ण तकनीकी प्रगति है

Arti 1.8.0 के प्रमुख बदलाव

  • इस रिलीज़ का मुख्य बिंदु circuit timeout rework का लागू होना है

    • मौजूदा Tor का Circuit Dirty Timeout(CDT) एक single timer से circuit के बंद होने का समय नियंत्रित करता था
    • यह तरीका अनुमानित था, इसलिए ट्रैफिक मॉनिटर करने वाले पैटर्न पहचान सकते थे
    • Arti 1.8.0 में usage-based timeouts और individual timers जोड़े गए हैं, ताकि circuit नया connection स्वीकार करते समय या idle रहने पर रैंडम समय पर बंद हो
    • इससे fingerprinting का जोखिम कम होता है
  • नया experimental command arti hsc ctor-migrate जोड़ा गया

    • onion service operators restricted discovery keys को C-आधारित Tor से Arti के keystore में migrate कर सकते हैं
    • इन keys का उपयोग client authentication में होता है, और नया कमांड manual काम के बिना automatic migration को सपोर्ट करता है
  • अतिरिक्त सुधार

    • routing architecture, protocol implementation, directory cache support, OR port listener configuration समेत कई आंतरिक कंपोनेंट्स में सुधार
    • विस्तृत बदलाव Arti 1.8.0 के आधिकारिक changelog में देखे जा सकते हैं

Rust ट्रांज़िशन की पृष्ठभूमि

  • Tor नेटवर्क 2000 के शुरुआती दशक से C भाषा-आधारित रूप में संचालित होता रहा है
  • लेकिन C codebase में memory safety issues के कारण लगातार security vulnerabilities सामने आती रही हैं
  • इसी वजह से Tor प्रोजेक्ट Rust की memory safety का उपयोग करने वाले Arti rewrite project को आगे बढ़ा रहा है
  • Arti, Tor की कार्यक्षमता को Rust में फिर से implement करके security, stability, और maintainability को मजबूत करने का लक्ष्य रखता है

तकनीकी महत्व

  • Rust में ट्रांज़िशन, Tor की anonymity guarantee structure को बुनियादी रूप से मजबूत करने की दिशा में कदम है
  • अनुमानित circuit behavior को हटाना और key management का automation, user privacy protection के स्तर को बेहतर बनाने में मदद करता है
  • Arti के लगातार अपडेट, C-आधारित Tor के चरणबद्ध replacement को तेज़ करने के संकेत के रूप में देखे जा रहे हैं

2 टिप्पणियां

 
GN⁺ 2025-12-14
Hacker News टिप्पणियाँ
  • मैंने हाल ही में EFF का Cover Your Tracks टेस्ट चलाया, और उसमें सिर्फ वही स्थिति पूरी तरह fingerprinting के खिलाफ़ प्रतिरोधी निकली जब Tor Browser में JS बंद था
    JS चालू होने पर Tor को भी सिर्फ़ ‘आंशिक’ प्रतिरोधी बताया गया, और Firefox में JS बंद होने पर भी कोई अच्छा नतीजा नहीं मिला। यह काफ़ी डरावना लगा, इसलिए दूसरों के प्रयोगों के बारे में जानना चाहूँगा

    • इस टूल में fingerprint protection मापने का तरीका ख़राब है। यह randomization का उपयोग करने वाली सुरक्षा को उल्टा कम आँकता है, और सिर्फ़ binning जैसी तकनीकों को ज़्यादा अंक देता है।
      वहीं fingerprinting.com/demo जैसे टूल, जो सिर्फ़ persistence टेस्ट करते हैं, वे भी समस्या वाले हैं।
      असली खतरे का संकेत तब है जब दोनों टेस्ट में विफलता मिले
    • macOS Safari पर टेस्ट करने पर मुझे “वेब ट्रैकिंग के खिलाफ़ मज़बूत सुरक्षा” का परिणाम मिला।
      फिर भी Tor Browser निश्चित रूप से नज़र आता है, लेकिन सिर्फ़ इस टेस्ट के आधार पर यह नहीं कहा जा सकता कि Tor उपयोगकर्ताओं के बीच fingerprint से अलग-अलग पहचान करना आसान है
    • Tor Browser canvas size rounding जैसी तकनीकों से fingerprint buckets को चौड़ा करने की कोशिश करता है। अंत में सबसे बड़ा और अपरिहार्य bucket यही है: “Tor उपयोगकर्ता”
    • Debian पर default settings वाले Tor Browser से टेस्ट करने पर 8.24 bits की identifying information मिली।
      security level बढ़ाने पर पहचान वाले bits उल्टा बढ़ते गए, और JS पूरी तरह बंद करने पर फिर घट गए।
      यानी JS निष्क्रिय करना सबसे अधिक anonymity देता है
  • अच्छा होता अगर Mozilla Firefox की Rust transition (oxidizing) को और आगे बढ़ाता। इससे Rust ecosystem को भी फ़ायदा होता, इसलिए अफ़सोस है

    • फिर भी Chrome टीम अब भी Rust adoption पर काम कर रही है
    • Mozilla द्वारा बड़ी संख्या में Rust developers को निकालने के बाद भी Firefox code में Rust का हिस्सा 12% से अधिक हो गया। Chromium में यह 4% से कम है, इसलिए तुलना में कम है
      अगर Rust Mozilla का ‘गुप्त हथियार’ बना रहता, तो शायद Rust का प्रसार और धीमा हो जाता
    • मेरा मानना है कि Servo project की विफलता Rust की नहीं, बल्कि Mozilla के अंदरूनी सीमाओं की वजह से थी
  • अगर Rust का उपयोग उनकी समस्या सुलझाने में मदद करता है, तो यह एक तर्कसंगत चुनाव है।
    भाषा प्रोजेक्ट, टीम और समस्या के हिसाब से चुना जाने वाला एक टूल है

    • ऐसे “language transition” की तुलना में dependency optimization या performance improvement जैसी बातें अक्सर ज़्यादा दिलचस्प लगती हैं
    • मूल ब्लॉग पोस्ट ने C को बुरा नहीं कहा था, इसलिए उसे अनावश्यक रूप से उठाने की ज़रूरत नहीं लगती
    • memory-safe languages security के लिहाज़ से तकनीकी रूप से श्रेष्ठ हैं, यह लगभग स्पष्ट तथ्य है।
      यह कोई Rust fanboy वाला दावा नहीं, बल्कि वैसा ही प्रतिरोध है जैसा कभी डॉक्टरों या पायलटों ने checklist अपनाने में दिखाया था
    • Rust इस केस में उपयुक्त है, लेकिन ज़्यादातर UI projects के लिए अनुपयुक्त है।
      UI में तेज़ iteration और GC महत्वपूर्ण होते हैं, जबकि performance अपेक्षाकृत कम महत्वपूर्ण होती है। Rust में UI लिखना maintenance hell बन सकता है
    • मुझे “सब कुछ Rust में फिर से लिखो” वाला रवैया पसंद नहीं, लेकिन Tor के मामले में Rust सही टूल है।
      क्योंकि Tor एक multi-threaded environment है जहाँ security और performance दोनों महत्वपूर्ण हैं।
      Zig एक विकल्प हो सकता है, लेकिन अभी उतना mature नहीं है। Tigerbeetle जैसी determinism को महत्व देने वाली दिशा भी दिलचस्प है
  • Tor project को लेकर सबसे बड़ी शिकायत स्पीड कम होना है। Rust में ले जाने से शायद यह तेज़ नहीं होगा

    • Onion routing में privacy और performance का trade-off होता है। ज़्यादातर देरी network latency की वजह से होती है
    • Tor की धीमी गति code से ज़्यादा nodes की कमी की वजह से है। नया version ज़्यादा सुरक्षित हो सकता है, पर तेज़ नहीं
    • traffic धरती के चारों ओर दो चक्कर लगाने जैसा रास्ता तय करता है, इसलिए भौतिक रूप से latency आना तय है। अंततः यह speed of light की सीमा है
    • Tor anonymity के लिए है, video streaming के लिए नहीं
    • तेज़ anonymous network बनाना बहुत कठिन है। फिर भी हाल के वर्षों में Tor पहले से काफ़ी तेज़ हुआ है, और अगर आप सिर्फ़ onion के अंदर सक्रिय रहें तो anonymity और बढ़ती है
  • यह Rust transition Zcash Community Grants के समर्थन से हुआ। crypto R&D से भी अच्छे परिणाम निकल सकते हैं

    • Pecunia non olet” (पैसे में बदबू नहीं होती) वाली कहावत याद आती है।
      हालाँकि मज़ाक में यह भी जोड़ा गया कि crypto शायद पेशाब से भी बदतर हो सकता है
  • Tor exit node चलाने पर कानूनी जोखिम को लेकर चिंता है। क्या इसे सिर्फ़ whitelist आधारित अनुमति तक सीमित करने का कोई तरीका है?

    • Tor के आधिकारिक ब्लॉग की exit node संचालन गाइड देखना उपयोगी होगा।
      संभव हो तो किसी संगठन के नाम पर पंजीकरण करने की सिफ़ारिश है, और अगर अधिक सुरक्षित तरीके से मदद करनी हो तो relay चलाना बेहतर है
    • अगर कानूनी ध्यान से बचना चाहते हैं, तो bridge चलाना भी एक विकल्प है।
      या guard/middle relay चलाने से भी network को काफ़ी मदद मिलती है
    • exit node कठिन है, लेकिन Linux ISO torrents या open map tile server होस्ट करके भी bandwidth दान की जा सकती है।
      बस, कुछ Chinese ASN को block करना पड़ सकता है। नकली download traffic बहुत आता है
  • Rust adoption कुछ-कुछ पुराने क़िले के लकड़ी के खंभों को स्टील से बदलने जैसा है।
    Tor का C-आधारित code दशकों के security compromises और performance के निशान अपने भीतर लिए हुए है, इसलिए धीरे-धीरे Rust में बदलना ही सुरक्षा बढ़ाने का सबसे व्यावहारिक तरीका है
    मुख्य बात “पूरी तरह rewrite” नहीं, बल्कि memory-unsafe क्षेत्रों को कम करना है।
    अगर parsing, cryptography और protocol boundary जैसे high-risk हिस्सों को Rust में ले जाया जाए, तो Tor और मज़बूत होगा
    आगे चलकर Rust-based pluggable transport या hybrid runtime की दिशा में बढ़ना भी दिलचस्प होगा

  • वास्तव में यह निर्णय नया नहीं है। Tor ने 2020 में Rust-आधारित Arti project शुरू किया था, और 2022 में Arti 1.0 की घोषणा की थी
    उनका मानना था कि C codebase को धीरे-धीरे refactor करना कठिन होगा, और वे Rust की development speed, portability और contributor onboarding से संतुष्ट थे
    हाल की Arti changelog के अनुसार विकास अब भी सक्रिय रूप से जारी है

    • Arti को library के रूप में दूसरे apps में embed करने योग्य बनाया गया है।
      उदाहरण के लिए, कोई messaging app अलग Tor daemon के बिना ही network का उपयोग कर सकती है। मुझे लगता है, यह और भी बड़ा बदलाव है
    • कुछ लोगों का मानना है कि शीर्षक बढ़ा-चढ़ाकर कहा गया है। Tor टीम काफ़ी समय से इसे सावधानीपूर्वक आगे बढ़ा रही है
    • यह लिंक मूल लेख से कहीं बेहतर संदर्भ सामग्री है। इसमें इतनी स्पष्ट रणनीति दिखती है कि “Rust क्यों?” वाली बहस पहले ही काफ़ी हद तक शांत हो जाती है
    • यह सवाल भी उठाया गया कि क्या Rust सच में C से operating systems के बीच portability के मामले में बेहतर है
  • Tor सिर्फ़ एक साधारण अवधारणा नहीं, बल्कि protocol (onion routing), network, और reference implementation — तीनों का नाम है

    • Onion routing protocol है, और Tor उस पर बना network और implementation है
    • Tor वास्तव में डाउनलोड किया जा सकने वाला एक product है, जो कई components से मिलकर बना है
    • इसलिए “Tor को Rust में फिर से लिखा जा रहा है” कहना पूरी तरह ग़लत नहीं है
  • मज़ाक में यह सुझाव भी आया कि अगर Tor को Fil-C से compile कर दिया जाए, तो memory safety मुफ़्त में मिल सकती है

    • लेकिन यह transition Fil-C के आने से पहले ही शुरू हो चुका project था