Overview
I2P 2005 से सेंसरशिप-प्रतिरोधी UDP ट्रांसपोर्ट प्रोटोकॉल “SSU” का उपयोग कर रहा है। पिछले 17 वर्षों में SSU के ब्लॉक होने की रिपोर्टें, अगर रही भी हों, तो बहुत कम रही हैं। फिर भी, आज के सुरक्षा, ब्लॉकिंग-प्रतिरोध और प्रदर्शन के मानकों के अनुसार, हम इससे बेहतर कर सकते हैं। बहुत बेहतर।
इसीलिए, i2pd परियोजना के साथ मिलकर, हमने “SSU2” को बनाया और लागू किया है, जो सुरक्षा और ब्लॉकिंग के प्रति प्रतिरोधकता के सर्वोच्च मानकों के अनुरूप डिज़ाइन किया गया एक आधुनिक UDP प्रोटोकॉल है। यह प्रोटोकॉल SSU का स्थान लेगा।
हमने उद्योग-मानक एन्क्रिप्शन को UDP प्रोटोकॉल WireGuard और QUIC की सर्वोत्तम विशेषताओं के साथ, तथा हमारे TCP प्रोटोकॉल “NTCP2” की सेंसरशिप-प्रतिरोध विशेषताओं के साथ संयोजित किया है। SSU2 संभवतः अब तक डिज़ाइन किए गए सबसे सुरक्षित ट्रांसपोर्ट प्रोटोकॉल में से एक हो सकता है।
Java I2P और i2pd टीमें SSU2 ट्रांसपोर्ट को अंतिम रूप दे रही हैं और हम इसे अगली रिलीज़ में सभी router के लिए सक्षम कर देंगे। यह 2003 के मूल Java I2P कार्यान्वयन में प्रयुक्त समस्त क्रिप्टोग्राफी के उन्नयन की हमारी दशक-लंबी योजना को पूरा करता है। SSU2, SSU का स्थान लेगा, जो ElGamal क्रिप्टोग्राफी का हमारा एकमात्र शेष उपयोग है।
- Signature types and ECDSA signatures (0.9.8, 2013)
- Ed25519 signatures and leasesets (0.9.15, 2014)
- Ed25519 routers (0.9.22, 2015)
- Destination encryption types and X25519 leasesets (0.9.46, 2020)
- Router encryption types and X25519 routers (0.9.49, 2021)
SSU2 में संक्रमण के बाद, हम अपने सभी प्रमाणीकृत और एन्क्रिप्टेड प्रोटोकॉलों को मानक Noise Protocol हैंडशेक्स पर स्थानांतरित कर चुके होंगे:
- NTCP2 (0.9.36, 2018)
- ECIES-X25519-Ratchet end-to-end protocol (0.9.46, 2020)
- ECIES-X25519 tunnel build messages (1.5.0, 2021)
- SSU2 (2.0.0, 2022)
सभी I2P Noise प्रोटोकॉल निम्नलिखित मानक क्रिप्टोग्राफिक एल्गोरिदम का उपयोग करते हैं:
उद्देश्य
- Upgrade the asymmetric cryptography to the much faster X25519
- Use standard symmetric authenticated encryption ChaCha20/Poly1305
- Improve the obfuscation and blocking resistance features of SSU
- Improve the resistance to spoofed addresses by adapting strategies from QUIC
- Improved handshake CPU efficiency
- Improved bandwidth efficiency via smaller handshakes and acknowledgements
- Improve the security of the peer test and relay features of SSU
- Improve the handling of peer IP and port changes by adapting the “connection migration” feature of QUIC
- Move away from heuristic code for packet handling to documented, algorithmic processing
- Support a gradual network transition from SSU to SSU2
- Easy extensibility using the block concept from NTCP2
डिज़ाइन
I2P हमलावरों से ट्रैफिक की सुरक्षा के लिए एन्क्रिप्शन की कई लेयरों का उपयोग करता है। सबसे निचली लेयर ट्रांसपोर्ट प्रोटोकॉल लेयर है, जिसका उपयोग दो routers के बीच पॉइंट-टू-पॉइंट लिंक के लिए होता है। वर्तमान में हमारे पास दो ट्रांसपोर्ट प्रोटोकॉल हैं: NTCP2, जो 2018 में पेश किया गया एक आधुनिक TCP प्रोटोकॉल है, और SSU, जो 2005 में विकसित किया गया एक UDP प्रोटोकॉल है।
SSU2, I2P के पूर्ववर्ती ट्रांसपोर्ट प्रोटोकॉल्स की तरह, डेटा के लिए कोई सर्व-उद्देश्यीय चैनल नहीं है। इसका मुख्य कार्य एक router से अगले तक I2P के निम्न-स्तरीय I2NP messages को सुरक्षित रूप से पहुँचाना है। इनमें से प्रत्येक point-to-point कनेक्शन, I2P tunnel में एक hop होता है। उच्च-स्तरीय I2P प्रोटोकॉल इन point-to-point कनेक्शनों पर चलते हैं ताकि I2P के destinations (गंतव्य) के बीच garlic messages को end-to-end पहुँचाया जा सके।
UDP transport का डिज़ाइन TCP protocols में न मिलने वाली विशिष्ट और जटिल चुनौतियाँ प्रस्तुत करता है। एक UDP protocol को address spoofing (पते की जालसाजी) से उत्पन्न सुरक्षा समस्याओं को संभालना होता है, और अपना स्वयं का congestion control (भीड़-नियंत्रण) लागू करना होता है। इसके अतिरिक्त, सभी संदेशों को नेटवर्क पथ के अधिकतम पैकेट आकार (MTU) में फिट करने के लिए खंडित करना पड़ता है, और प्राप्तकर्ता द्वारा उन्हें पुनः संयोजित किया जाना चाहिए।
पहले, हमने NTCP2, SSU, और स्ट्रीमिंग प्रोटोकॉल के साथ अपने पूर्व अनुभव पर काफी हद तक भरोसा किया। फिर, हमने दो हाल ही में विकसित किए गए UDP प्रोटोकॉलों की सावधानीपूर्वक समीक्षा की और उनसे व्यापक रूप से तत्व अपनाए:
राष्ट्र-स्तरीय फ़ायरवॉल जैसे विरोधी ऑन-पाथ (मार्ग-पर स्थित) आक्रमणकारियों द्वारा प्रोटोकॉल का वर्गीकरण और अवरोधन उन प्रोटोकॉलों के थ्रेट मॉडल का स्पष्ट हिस्सा नहीं है। हालाँकि, यह I2P के थ्रेट मॉडल का एक महत्वपूर्ण हिस्सा है, क्योंकि हमारा उद्देश्य दुनिया भर के जोखिमग्रस्त उपयोगकर्ताओं को एक गुमनाम और सेंसरशिप-प्रतिरोधी संचार प्रणाली प्रदान करना है। इसलिए, हमारे डिज़ाइन कार्य का बड़ा हिस्सा NTCP2 और SSU से सीखे गए पाठों को QUIC और WireGuard द्वारा समर्थित विशेषताओं और सुरक्षा के साथ संयोजित करने पर केंद्रित रहा।
प्रदर्शन
I2P नेटवर्क विभिन्न routers का एक जटिल मिश्रण है। दुनिया भर में दो मुख्य कार्यान्वयन चल रहे हैं, जो उच्च-प्रदर्शन डेटा सेंटर कंप्यूटरों से लेकर Raspberry Pis और Android फ़ोनों तक के हार्डवेयर पर चलते हैं। Routers दोनों TCP और UDP ट्रांसपोर्ट्स का उपयोग करते हैं। हालाँकि SSU2 के सुधार महत्वपूर्ण हैं, हमें उम्मीद नहीं है कि वे उपयोगकर्ता को स्पष्ट रूप से दिखाई देंगे, न तो स्थानीय रूप से और न ही एंड-टू-एंड ट्रांसफर गति में।
SSU2 बनाम SSU के अनुमानित सुधारों के कुछ मुख्य बिंदु निम्नलिखित हैं:
- 40% reduction in total handshake packet size
- 50% or more reduction in handshake CPU
- 90% or more reduction in ACK overhead
- 50% reduction in packet fragmentation
- 10% reduction in data phase overhead
संक्रमण योजना
I2P नेटवर्क स्थिरता सुनिश्चित करने और पुराने routers को उपयोगी व सुरक्षित बने रहने देने के लिए बैकवर्ड कम्पैटिबिलिटी (पिछली संगतता) बनाए रखने का प्रयास करता है। हालांकि, इसकी सीमाएँ हैं, क्योंकि संगतता कोड की जटिलता और रखरखाव आवश्यकताओं को बढ़ाती है।
Java I2P और i2pd परियोजनाएँ नवंबर 2022 के अंत में आने वाले अपने अगले रिलीज़ (2.0.0 और 2.44.0) में डिफ़ॉल्ट रूप से SSU2 सक्षम करेंगी। हालांकि, SSU को निष्क्रिय करने के लिए उनकी योजनाएँ अलग-अलग हैं। i2pd SSU को तुरंत निष्क्रिय कर देगा, क्योंकि SSU2, i2pd के SSU कार्यान्वयन की तुलना में एक बहुत बड़ा सुधार है। Java I2P 2023 के मध्य में SSU को निष्क्रिय करने की योजना बना रहा है, ताकि क्रमिक संक्रमण का समर्थन किया जा सके और पुराने routers को अपग्रेड करने का समय मिल सके।
सारांश
केवल अनुवाद ही प्रदान करें, कुछ और नहीं:
I2P के संस्थापकों को क्रिप्टोग्राफ़िक एल्गोरिथ्म और प्रोटोकॉल के बारे में कई विकल्प चुनने पड़े। उन विकल्पों में से कुछ अन्य की तुलना में बेहतर थे, लेकिन बीस साल बाद, अधिकांश पुराने पड़ते दिख रहे हैं। बेशक, हमें पता था कि ऐसा होने वाला है, और पिछले एक दशक से हम क्रिप्टोग्राफ़िक उन्नयन की योजना बनाने और उन्हें लागू करने में लगे हुए हैं।
SSU2 हमारे लंबे उन्नयन मार्ग में विकसित करने के लिए आख़िरी और सबसे जटिल प्रोटोकॉल था। UDP से जुड़ी मान्यताओं और थ्रेट मॉडल का सेट बहुत चुनौतीपूर्ण है। हमने पहले Noise प्रोटोकॉल के तीन अन्य वैरिएंट डिज़ाइन और तैनात किए, और सुरक्षा तथा प्रोटोकॉल डिज़ाइन से जुड़े मुद्दों के बारे में अनुभव और गहरी समझ हासिल की।
उम्मीद है कि नवंबर 2022 के उत्तरार्ध के लिए निर्धारित i2pd और Java I2P रिलीज़ में SSU2 सक्षम किया जाएगा। यदि अपडेट अच्छी तरह हो जाता है, तो किसी को भी कोई बदलाव बिल्कुल नज़र नहीं आएगा। प्रदर्शन में होने वाले लाभ, महत्वपूर्ण होने के बावजूद, अधिकांश लोगों के लिए संभवतः मापने योग्य नहीं होंगे।
हमेशा की तरह, हम अनुशंसा करते हैं कि उपलब्ध होते ही आप नए रिलीज़ पर अपडेट करें। सुरक्षा बनाए रखने और नेटवर्क की मदद करने का सबसे अच्छा तरीका नवीनतम रिलीज़ चलाना है।