Tor प्रोजेक्ट Rust में ट्रांज़िशन कर रहा है
(itsfoss.com)- 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 टिप्पणियां
Arti 1.0.0 रिलीज़ - Rust में लिखा गया Tor implementation
Hacker News टिप्पणियाँ
मैंने हाल ही में EFF का Cover Your Tracks टेस्ट चलाया, और उसमें सिर्फ वही स्थिति पूरी तरह fingerprinting के खिलाफ़ प्रतिरोधी निकली जब Tor Browser में JS बंद था
JS चालू होने पर Tor को भी सिर्फ़ ‘आंशिक’ प्रतिरोधी बताया गया, और Firefox में JS बंद होने पर भी कोई अच्छा नतीजा नहीं मिला। यह काफ़ी डरावना लगा, इसलिए दूसरों के प्रयोगों के बारे में जानना चाहूँगा
वहीं fingerprinting.com/demo जैसे टूल, जो सिर्फ़ persistence टेस्ट करते हैं, वे भी समस्या वाले हैं।
असली खतरे का संकेत तब है जब दोनों टेस्ट में विफलता मिले
फिर भी Tor Browser निश्चित रूप से नज़र आता है, लेकिन सिर्फ़ इस टेस्ट के आधार पर यह नहीं कहा जा सकता कि Tor उपयोगकर्ताओं के बीच fingerprint से अलग-अलग पहचान करना आसान है
security level बढ़ाने पर पहचान वाले bits उल्टा बढ़ते गए, और JS पूरी तरह बंद करने पर फिर घट गए।
यानी JS निष्क्रिय करना सबसे अधिक anonymity देता है
अच्छा होता अगर Mozilla Firefox की Rust transition (oxidizing) को और आगे बढ़ाता। इससे Rust ecosystem को भी फ़ायदा होता, इसलिए अफ़सोस है
अगर Rust Mozilla का ‘गुप्त हथियार’ बना रहता, तो शायद Rust का प्रसार और धीमा हो जाता
अगर Rust का उपयोग उनकी समस्या सुलझाने में मदद करता है, तो यह एक तर्कसंगत चुनाव है।
भाषा प्रोजेक्ट, टीम और समस्या के हिसाब से चुना जाने वाला एक टूल है
यह कोई Rust fanboy वाला दावा नहीं, बल्कि वैसा ही प्रतिरोध है जैसा कभी डॉक्टरों या पायलटों ने checklist अपनाने में दिखाया था
UI में तेज़ iteration और GC महत्वपूर्ण होते हैं, जबकि performance अपेक्षाकृत कम महत्वपूर्ण होती है। Rust में UI लिखना maintenance hell बन सकता है
क्योंकि Tor एक multi-threaded environment है जहाँ security और performance दोनों महत्वपूर्ण हैं।
Zig एक विकल्प हो सकता है, लेकिन अभी उतना mature नहीं है। Tigerbeetle जैसी determinism को महत्व देने वाली दिशा भी दिलचस्प है
Tor project को लेकर सबसे बड़ी शिकायत स्पीड कम होना है। Rust में ले जाने से शायद यह तेज़ नहीं होगा
यह Rust transition Zcash Community Grants के समर्थन से हुआ। crypto R&D से भी अच्छे परिणाम निकल सकते हैं
हालाँकि मज़ाक में यह भी जोड़ा गया कि crypto शायद पेशाब से भी बदतर हो सकता है
Tor exit node चलाने पर कानूनी जोखिम को लेकर चिंता है। क्या इसे सिर्फ़ whitelist आधारित अनुमति तक सीमित करने का कोई तरीका है?
संभव हो तो किसी संगठन के नाम पर पंजीकरण करने की सिफ़ारिश है, और अगर अधिक सुरक्षित तरीके से मदद करनी हो तो relay चलाना बेहतर है
या guard/middle relay चलाने से भी network को काफ़ी मदद मिलती है
बस, कुछ 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 के अनुसार विकास अब भी सक्रिय रूप से जारी है
उदाहरण के लिए, कोई messaging app अलग Tor daemon के बिना ही network का उपयोग कर सकती है। मुझे लगता है, यह और भी बड़ा बदलाव है
Tor सिर्फ़ एक साधारण अवधारणा नहीं, बल्कि protocol (onion routing), network, और reference implementation — तीनों का नाम है
मज़ाक में यह सुझाव भी आया कि अगर Tor को Fil-C से compile कर दिया जाए, तो memory safety मुफ़्त में मिल सकती है