SingLink प्रोटोकॉल अब ओपन सोर्स है

Contents
आज SingLinkVPN के पीछे की टीम SingLinkLabs ने SingLink प्रोटोकॉल का पूरा सोर्स कोड Apache-2.0 लाइसेंस के तहत GitHub पर प्रकाशित कर दिया है। अब कोई भी इसका स्पेसिफ़िकेशन पढ़ सकता है, कोड चला सकता है, इसकी सुरक्षा की जाँच कर सकता है और इसके ऊपर अपना काम खड़ा कर सकता है।
जब हमने SingLinkVPN ओपन-सोर्स योजना शुरू की थी, तब कहा था कि एक VPN प्रोटोकॉल और एक VPN क्लाइंट चरणबद्ध तरीके से आएँगे। यह वही कदम है। प्रोटोकॉल के साथ SingLinkVPN ऐप का पहली पीढ़ी का प्रोटोटाइप भी जारी किया गया है, जो इसी प्रोटोकॉल पर चलता है — देखें SingLinkVPN ऐप का प्रोटोटाइप अब ओपन सोर्स है।
रिपॉज़िटरी: SingLinkLabs / singlink-protocol · संस्करण: 1.0.0-draft (वायर नाम
SingLink/1, स्पेसिफ़िकेशन ड्राफ़्ट 2) · लाइसेंस: Apache-2.0 · भाषा: Go, केवल स्टैंडर्ड लाइब्रेरी
क्या जारी किया जा रहा है
- स्पेसिफ़िकेशन। SPEC.md वायर फ़ॉर्मेट को बाइट-दर-बाइट समझाता है, ताकि कोई भी इस प्रोटोकॉल को स्वतंत्र रूप से लागू कर सके।
- Go में प्रोटोकॉल लाइब्रेरी। यह केवल Go स्टैंडर्ड लाइब्रेरी की क्रिप्टोग्राफ़ी का उपयोग करती है, बिना किसी थर्ड-पार्टी डिपेंडेंसी के।
- एक कमांड-लाइन टूल, जिससे कुंजियाँ बनाई जा सकती हैं, एक्सेस पास जारी किए जा सकते हैं, कनेक्शन लिंक बनाए जा सकते हैं, नोड और क्लाइंट चलाए जा सकते हैं और एक ही मशीन पर डेमो शुरू किया जा सकता है।
- ऐप्स के लिए एक लोकल प्रॉक्सी (SOCKS5 और HTTP) और एक C लाइब्रेरी इंटरफ़ेस (
libsinglink), ताकि किसी भी प्लेटफ़ॉर्म के ऐप इस प्रोटोकॉल को अपने भीतर शामिल कर सकें। - डिप्लॉयमेंट के उदाहरण: एक सैंपल नोड कॉन्फ़िगरेशन और एक सुरक्षा-सख़्त systemd सर्विस फ़ाइल।
- आंतरिक सुरक्षा समीक्षा, हर निष्कर्ष और उसके सुधार के साथ: SECURITY-AUDIT.md।
SingLink 2.0 और SingLink ओपन प्रोटोकॉल अलग-अलग प्रोटोकॉल हैं
आधिकारिक SingLinkVPN ऐप्स हमारे प्रोडक्शन प्रोटोकॉल पर चलते हैं, जिनमें SingLink 2.0 भी शामिल है। SingLink 2.0 का कोर सोर्स कोड इस रिलीज़ का हिस्सा नहीं है और बंद ही रहेगा।
आज प्रकाशित SingLink प्रोटोकॉल — जिसे SingLink 2.0 से अलग पहचानने की ज़रूरत हो तो SingLink ओपन प्रोटोकॉल कहा जाता है — एक अलग प्रोटोकॉल है, जिसे SingLinkLabs ने खुले विकास के लिए शुरू से डिज़ाइन किया है। आधिकारिक ऐप्स फ़िलहाल इसका उपयोग नहीं करते। मौजूदा उपयोगकर्ताओं के लिए कुछ नहीं बदलता: वही ऐप्स, वही अकाउंट और वही कनेक्शन।
हम इसे ओपन सोर्स क्यों कर रहे हैं
- सुरक्षा के दावे परखे जा सकने चाहिए। पोस्ट-क्वांटम की एक्सचेंज, डिवाइस बाइंडिंग और प्रोबिंग से बचाव का दावा करना आसान है। कोड और स्पेसिफ़िकेशन सार्वजनिक होने से कोई भी इन दावों की पुष्टि कर सकता है।
- ज़्यादा नज़रें, समस्याएँ जल्दी पकड़ में। बाहरी शोधकर्ता और इंजीनियर वे समस्याएँ देख लेंगे जो किसी आंतरिक टीम से छूट जाती हैं।
- दूसरे इस पर आगे निर्माण कर सकते हैं। डेवलपर इसे टेस्ट कर सकते हैं, अपने प्रोजेक्ट में शामिल कर सकते हैं और सुधार सुझा सकते हैं।
- यह हमारी योजना को आगे बढ़ाता है। प्रोटोकॉल प्रकाशित करना उन चरणों में से एक था जिनका हमने वादा किया था।
यह कैसे काम करता है, आसान भाषा में
एक वाक्य में मूल विचार: बाहर से देखने पर उपयोगकर्ता बस एक सामान्य HTTPS वेबसाइट खोल रहा होता है। उसके भीतर एक एन्क्रिप्टेड एक्सेस अनुरोध छिपा होता है, और सर्वर केवल उसी का ट्रैफ़िक आगे भेजता है जिसके पास वैध पास हो।
डिज़ाइन में तीन कुंजियाँ हैं। इसे किसी ऑफ़िस बिल्डिंग की सुरक्षा व्यवस्था की तरह समझिए:
- नोड कुंजी, यानी दरवाज़े का ताला। हर सर्वर की अपनी होती है। केवल वही सर्वर उपयोगकर्ता का अनुरोध खोल सकता है, जिससे यह भी साबित होता है कि उपयोगकर्ता असली सर्वर तक पहुँचा है।
- इश्यूअर कुंजी, यानी HR विभाग की मुहर। यह अकाउंट बैकएंड के पास रहती है, जो हर एक्सेस पास पर प्लान, समाप्ति तिथि, स्पीड सीमा और डिवाइस सीमा की मुहर लगाता है।
- डिवाइस कुंजी, यानी उपयोगकर्ता का फ़िंगरप्रिंट। यह उपयोगकर्ता के फ़ोन या कंप्यूटर पर रहती है और हर कनेक्शन पर हस्ताक्षर करती है, जिससे साबित होता है कि पास का उपयोग उसका असली मालिक ही कर रहा है।
किसी पास को ख़ुद जाँचने के लिए सर्वर को बस यह पता होना चाहिए कि मुहर कैसी दिखती है। इसी वजह से नोड न कोई उपयोगकर्ता डेटाबेस रखते हैं और न ही कोई उपयोगकर्ता डेटा संग्रहीत करते हैं।
एक कनेक्शन के दौरान क्या होता है
- ऐप किसी वेबसाइट से एक सामान्य-सा दिखने वाला HTTPS कनेक्शन खोलता है।
- इसके पहले पैकेट में इस कनेक्शन के लिए एक बार इस्तेमाल होने वाली कुंजी, एक पोस्ट-क्वांटम सिफ़रटेक्स्ट, और एक सील किया हुआ हिस्सा होता है जिसमें गंतव्य, एक्सेस पास, असली डेटा के पहले 8 KB तक, और पूरे अनुरोध पर डिवाइस का हस्ताक्षर होता है। किसी अतिरिक्त राउंड ट्रिप की ज़रूरत नहीं पड़ती।
- सर्वर सब कुछ जाँचता है: कि वह अनुरोध को डिक्रिप्ट कर सकता है, कि मुहर असली है, कि डिवाइस का हस्ताक्षर मेल खाता है, कि समय सही है, और कि अनुरोध रीप्ले नहीं है तथा न तो समाप्त हुआ है और न रद्द किया गया है।
- हर जाँच पास होने पर ही वह जवाब देता है और ट्रैफ़िक आगे भेजना शुरू करता है। अगर कोई भी जाँच विफल होती है, तो कनेक्शन बिना छेड़छाड़ के एक असली वेबसाइट को सौंप दिया जाता है। सर्वर को टटोलने (प्रोबिंग) वाले को हमेशा एक सामान्य वेबसाइट ही दिखती है, समय में भी कोई अंतर नहीं होता।
- दोनों पक्ष अपनी एक बार इस्तेमाल होने वाली कुंजियों को मिलाकर इस कनेक्शन की सेशन कुंजियाँ बनाते हैं। डेटा टुकड़ों में एन्क्रिप्ट होता है, शुरुआती टुकड़ों में पैडिंग जोड़ी जाती है, और तय मात्रा में उपयोग के बाद कुंजियाँ अपने आप बदल दी जाती हैं।
सुरक्षा विशेषताएँ
- एन्क्रिप्शन की दो परतें। बाहर HTTPS और भीतर प्रोटोकॉल की अपनी AES-256-GCM परत, ताकि HTTPS को टर्मिनेट करने वाला CDN भी कंटेंट न देख सके।
- पोस्ट-क्वांटम सुरक्षा। की एक्सचेंज में क्लासिकल X25519 को ML-KEM-768 (FIPS 203) के साथ जोड़ा गया है। हमलावर को दोनों को तोड़ना होगा।
- फ़ॉरवर्ड सीक्रेसी। हर कनेक्शन एक बार इस्तेमाल होने वाली कुंजियों का उपयोग करता है, इसलिए बाद में किसी सर्वर में सेंध लग जाने पर भी पिछला ट्रैफ़िक डिक्रिप्ट नहीं किया जा सकता। अपवाद पहला पैकेट है (नीचे दी गई सीमाएँ देखें)।
- डिवाइस बाइंडिंग। कहीं से कॉपी किया गया एक्सेस पास उस डिवाइस कुंजी के बिना बेकार है जिसके लिए वह जारी हुआ था।
- रीप्ले से सुरक्षा। पकड़े गए पैकेट को दोबारा भेजने से कुछ नहीं होता, सर्वर रीस्टार्ट होने के बाद भी नहीं।
- प्रोबिंग से बचाव। समाप्त, रद्द, रीप्ले किए गए या जाली, सभी अनुरोधों के साथ एक जैसा व्यवहार होता है: उन्हें असली वेबसाइट को सौंप दिया जाता है।
- केंद्रीय नियंत्रण। किसी अकाउंट या डिवाइस को रद्द करने पर हर सर्वर पर उसके चालू कनेक्शन लगभग 10 सेकंड के भीतर बंद हो जाते हैं।
- मज़बूत किए गए सर्वर। प्रति सर्वर और प्रति IP कनेक्शन सीमाएँ, हैंडशेक के लिए CPU बजट, और निजी व विशेष-उद्देश्य वाले पतों की पूरी ब्लॉक सूची।
ये विचार कहाँ से आए
SingLink प्रोटोकॉल स्थापित डिज़ाइनों से सीखता है: VLESS और Trojan से एक ही अनुरोध वाले कनेक्शन, Trojan और obfs4 से विफल कनेक्शनों को असली वेबसाइट को सौंपना, Noise NK हैंडशेक पैटर्न, TLS 1.3 से की डेरिवेशन और 0-RTT का प्रबंधन, X-Wing ड्राफ़्ट स्टैंडर्ड से हाइब्रिड पोस्ट-क्वांटम की एक्सचेंज, Shadowsocks AEAD से टुकड़ों में एन्क्रिप्शन, JWT और PASETO से साइन किए गए टोकन, OAuth DPoP से डिवाइस से बंधे टोकन, HAProxy PROXY protocol, और WireGuard से रीप्ले व लोड से सुरक्षा।
ये केवल डिज़ाइन के विचार हैं। सारा कोड शुरू से लिखा गया है। Xray, V2Ray, sing-box या WireGuard का कोई भी कोड इसमें शामिल नहीं है।
मौजूदा स्थिति और ज्ञात सीमाएँ
- यह एक ड्राफ़्ट है। संस्करण 1.0.0-draft है और वायर फ़ॉर्मेट अभी भी बदल सकता है।
- अब तक केवल आंतरिक सुरक्षा समीक्षा। दो समीक्षकों ने क्रिप्टोग्राफ़िक डिज़ाइन और इम्प्लीमेंटेशन की अलग-अलग जाँच की और 31 निष्कर्ष दर्ज किए: 2 उच्च, 14 मध्यम, और बाकी निम्न या केवल सूचनात्मक। इनमें से किसी ने भी उपयोगकर्ता ट्रैफ़िक की गोपनीयता या प्रमाणीकरण को नहीं तोड़ा। सभी उच्च और मध्यम निष्कर्ष ठीक कर दिए गए हैं या उनका असर कम कर दिया गया है, हर एक के लिए एक रिग्रेशन टेस्ट है, और हर पार्सर fuzz टेस्ट से कवर है।
- अभी तक कोई थर्ड-पार्टी ऑडिट नहीं। हमारी सलाह है कि जब तक स्वतंत्र ऑडिट न हो जाए, उच्च जोखिम वाले उपयोग के लिए इस प्रोटोकॉल पर निर्भर न रहें। इसे स्थिर घोषित करने से पहले हम ऐसा ऑडिट कराने की योजना बना रहे हैं।
- पहला पैकेट फ़ॉरवर्ड-सीक्रेट नहीं है। यह सर्वर की दीर्घकालिक कुंजी से सुरक्षित होता है, इसलिए सर्वर कुंजियाँ नियमित रूप से बदलनी चाहिए। कुंजी रोटेशन समर्थित है।
- मेनलैंड चीन में वास्तविक परिस्थितियों में परखा नहीं गया। इसका TLS फ़िंगरप्रिंट और पहले पैकेट का आकार अब भी पहचाने जा सकते हैं। मेनलैंड चीन के उपयोगकर्ताओं के लिए आधिकारिक SingLinkVPN ऐप्स हमारे मौजूदा प्रोडक्शन प्रोटोकॉल का ही उपयोग करते रहेंगे।
- सर्वर के लिए उसका अपना डोमेन ज़रूरी है, साथ ही ब्राउज़र द्वारा स्वीकार किया जाने वाला सर्टिफ़िकेट और उसके पीछे एक असली वेबसाइट।
आज़माएँ और जुड़ें
Go 1.24 या उसके बाद के संस्करण के साथ, make test टेस्ट सूट चलाता है, make cli कमांड-लाइन टूल बनाता है, और singlink demo एक ही मशीन पर एक लोकल सर्वर और क्लाइंट शुरू करता है। रिपॉज़िटरी की README में बताया गया है कि सर्वर कैसे चलाएँ।
GitHub पर सवालों, बग रिपोर्ट और Pull Request का स्वागत है। कृपया सुरक्षा कमज़ोरियों की रिपोर्ट किसी सार्वजनिक Issue में नहीं, बल्कि निजी तौर पर करें — प्रक्रिया SECURITY.md में दी गई है।
लाइसेंस और ट्रेडमार्क
कोड Apache-2.0 के तहत लाइसेंस प्राप्त है: लाइसेंस की शर्तों के अनुसार आप इसका उपयोग, संशोधन और पुनर्वितरण कर सकते हैं, व्यावसायिक रूप से भी। "SingLink" और "SingLinkVPN" नाम और लोगो SingLinkLabs के ट्रेडमार्क हैं, और यह लाइसेंस इनके उपयोग की अनुमति नहीं देता, सिवाय यह बताने के कि काम कहाँ से आया है। संशोधित संस्करण और फ़ोर्क अपने नाम और आइकन के साथ प्रकाशित किए जाने चाहिए।
आगे पढ़ें
- SingLinkVPN ऐप का प्रोटोटाइप अब ओपन सोर्स है — और इसका कोड GitHub पर
- SingLinkLabs के ओपन-सोर्स प्रोजेक्ट
- SingLink 2.0 तकनीकी श्वेतपत्र, आधिकारिक ऐप्स का प्रोडक्शन प्रोटोकॉल

