प्रोटोकॉल दस्तावेज़ कार्यान्वयनों के बीच एक अनुबंध है, और उसे ध्यान से पढ़ने पर पता चलता है कि दो अनुरूप साथी क्या आदान-प्रदान करेंगे और डिज़ाइनर किन गुणों की गारंटी देना चाहते थे। यह आपको नहीं बताता कि जिस सर्वर से आप जुड़ते हैं उस पर कौन-सी बाइनरी चल रही है, वह सर्वर कैसे कॉन्फ़िगर किया गया था या बाद में आपके खाता रिकॉर्ड के साथ क्या होता है। ये तीन अलग-अलग प्रकार के प्रमाण हैं, और विनिर्देश को तीनों मानना ही वह तरीका है जिससे किसी प्रोटोकॉल का नाम ऐसा काम करना शुरू करता है जो वह नहीं कर सकता। तीनों को अलग रखना ही पूरा अभ्यास है।

दस्तावेज़ किसी तर्क की शुरुआत है, उसका निष्कर्ष नहीं।

दस्तावेज़ वास्तव में क्या निर्दिष्ट करता है

WireGuard के लिए प्रोटोकॉल विवरण Noise IK हैंडशेक, आदिम तत्वों का निश्चित समूह, संदेश लेआउट और बाद में पैकेट ढोने वाला परिवहन फ़्रेमिंग परिभाषित करता है। IKEv2 के लिए तुलनीय दस्तावेज़ RFC 7296 है, जो आदान-प्रदान, पेलोड और प्रस्तावों की बातचीत निर्दिष्ट करता है। दोनों मामलों में दायरा सटीक है: संदेश, स्थिति मशीन और वे मान्यताएँ जिनके अंतर्गत सुरक्षा लक्ष्य लागू होते हैं।

वैकल्पिक मोड पढ़ना जटिल बनाते हैं। एक हैंडशेक के लिए लागू गुण भिन्न प्रमाणीकरण व्यवस्था या फ़ॉलबैक कॉन्फ़िगरेशन वाली तैनाती पर लागू नहीं हो सकता।

गारंटियाँ कहाँ रुकती हैं

औपचारिक विश्लेषण किसी मॉडल के बारे में प्रश्न का उत्तर देता है। WireGuard का सत्यापन कार्य Tamarin प्रमाणक में एक प्रतीकात्मक मॉडल का उपयोग करता है, जो दिखा सकता है कि डिज़ाइन अपनी मान्यताओं के अंतर्गत कुछ हमलों का सामना करता है; यह नहीं दिखाता कि वितरित उपयोगकर्ता-स्थान कार्यान्वयन में स्मृति-सुरक्षा की कोई खराबी नहीं है। मॉडल और मशीन के बीच यही खाई वह जगह है जहाँ वास्तविक घटनाएँ रहती हैं। किसी प्रमाण को कार्यान्वयन प्रमाणपत्र के रूप में पढ़ना श्रेणीगत भूल है।

आगे की गोपनीयता वही सीमा दर्शाती है। यह गुण इस पर निर्भर है कि कुंजियाँ प्रोटोकॉल के इरादे के अनुसार नष्ट हों, और वह संदेश प्रारूप का नहीं, कार्यान्वयन और उसके परिवेश का गुण है। मिटाने का प्रावधान करने वाला डिज़ाइन इसे ऐसे प्लेटफ़ॉर्म पर लागू नहीं कर सकता जो स्मृति को डिस्क पर भेजता है।

स्तरित निर्भरताएँ खाई को और चौड़ा करती हैं: TLS-आधारित सुरंग के पीछे की TLS लाइब्रेरी, उपयोगकर्ता-स्थान सुरंग द्वारा प्रयुक्त कर्नेल इंटरफ़ेस और यादृच्छिक संख्या जनरेटर सभी प्रोटोकॉल पाठ से बाहर हैं।

बाइट्स का पीछा बिल्ड तक करें

संस्करणों की पहचान करके और फिर उन्हें उससे तुलना करके दस्तावेज़ से कलाकृतियों की ओर बढ़ें जो वास्तव में ट्रैफ़िक की सेवा करता है। प्रोटोकॉल का नाम लेने वाला उत्पाद प्रावधान, टेलीमेट्री और प्रबंधन घटक जोड़ सकता है जिनका विनिर्देश कभी वर्णन नहीं करता।

openvpn --version | head -3
wg --version
dpkg -l | grep -E 'openvpn|wireguard|libssl'
ss -lunp | grep -E '1194|51820'
sha256sum ./wireguard-tools_1.0.20210914_amd64.deb

पुनरुत्पाद्य बिल्ड और प्रकाशित चेकसम स्रोत वृक्ष को वितरित बाइनरी से जोड़ना संभव बनाते हैं। उस कड़ी के बिना, प्रकाशित स्रोत केवल यह सिद्ध करता है कि निरीक्षण संभव है, यह नहीं कि चल रही फ़ाइल उससे मेल खाती है।

कॉन्फ़िगरेशन उसी चरण का हिस्सा है। सिफ़र सूट, अनुमत साथी और रूटिंग सेटिंग्स तैनाती के चुनाव हैं, और लापरवाही से कॉन्फ़िगर किया गया अनुरूप बिल्ड फिर भी कमज़ोर सुरंग बनाता है।

परिचालन पद्धतियों को अलग रखें

खाता रिकॉर्ड, भुगतान डेटा और सहायता अनुरोध ऑपरेटर के निर्णय हैं जिन्हें कोई प्रोटोकॉल पाठ सीमित नहीं करता। ऑडिट रिपोर्ट घोषित दायरे के भीतर नामित घटकों को कवर करती है, और गोपनीयता नीति इरादों और पद्धतियों का वर्णन करती है; कोई किसी का विकल्प नहीं है, और कोई भी क्रिप्टोग्राफ़िक कथन नहीं है।

सटीक निष्कर्ष संचयी है: विनिर्देश डिज़ाइन समझाता है, बिल्ड और कॉन्फ़िगरेशन सुरंग समझाते हैं, और ऑपरेटर की प्रलेखित पद्धतियाँ वह सब कुछ समझाती हैं जो सुरंग कभी नहीं देखती। बताइए कि इनमें से आपने क्या सत्यापित किया, और दावा सही रहता है।

संबंधित लेख