WSS बोगद्याचे एन्क्रिप्शन ॲपमध्ये नाही, TLS टर्मिनेटरवर थांबते
एक wss:// URL एका हॉपवर TLS असल्याचे सिद्ध करते। पेलोडला स्वतःचे एन्क्रिप्शन आहे का, हे क्लायंट आत काय ठेवतो आणि तो TLS कोण संपवतो यावर अवलंबून आहे।
सुरक्षित WebSocket मध्ये वाहून नेलेल्या बोगद्यात क्लायंटने आत ठेवलेल्या इतकेच एन्क्रिप्शन असते, त्यापेक्षा जास्त नाही। wss:// ही योजना सांगते की TLS एका हॉपवर एक कनेक्शनचे रक्षण करते। WebSocket संदेशांच्या आतले बाइट स्वतंत्रपणे संरक्षित आहेत का याबद्दल ती काहीही सांगत नाही, आणि मध्ये काहीतरी TLS संपवते तेव्हा तुमची रहदारी कोण वाचू शकतो हे याच फरकावर ठरते।
एकासारखे दिसणारे दोन स्तर
सुरक्षित WebSocket म्हणजे TLS, ज्यावर WebSocket हँडशेक केला जातो, जसे RFC 6455 त्याच्या कनेक्शन आणि सुरक्षा विभागांत वर्णन करते। TLS स्तर सर्व्हरचे प्रमाणीकरण करतो आणि प्रवाह एन्क्रिप्ट करतो, नंतर WebSocket स्तर ॲप्लिकेशन जे पाठवायचे ठरवते त्याचे फ्रेम करतो।
हे दोन स्वतंत्र निर्णय आहेत, आणि संपूर्ण मार्गावर एकच कुलूप काढणारा आकृती दुसरे लपवते। TLS कनेक्शन कोण संपवते असे विचारा। नंतर क्लायंट प्रत्येक संदेशाच्या आत काय ठेवतो असे विचारा। तैनातीबद्दल बाकी सर्व या दोन उत्तरांतून येते।
रचना A: वाहतूक हेच एकमेव एन्क्रिप्शन
सोप्या रचनेत, क्लायंट कच्चे IP पॅकेट घेऊन ते WebSocket संदेशांत गुंडाळतो। आत काहीही एन्क्रिप्ट नसल्याने TLS सत्र असलेला घटक स्पष्ट मजकुराचे पेलोड वाचतो। तो घटक तुमचाच बोगदा सर्व्हर असेल, तर हाच हेतू असलेला अंतिम बिंदू आहे आणि रचना सुसंगत आहे, कारण सर्व्हरला रहदारी कोणत्याही परिस्थितीत दिसणार होती।
मार्गावर तपासणी प्रॉक्सी बसून क्लायंट विश्वास ठेवतो त्या प्रमाणपत्राने TLS संपवल्यावर ही वेगळी व्यवस्था होते। त्या प्रॉक्सीकडे आता सर्व्हरकडे असते तोच स्पष्ट मजकूर आहे, आणि WebSocket फ्रेमिंगच्या कोणत्याही प्रमाणाने तो बदलत नाही। क्लायंटचा विश्वास संग्रह हा निकाल बोगदा उघडण्याच्या खूप आधीच ठरवून टाकला होता, कारण त्याने त्या नावासाठी ते प्रमाणपत्र स्वीकारण्याचे निवडले। प्रॉक्सीला मागितलेला होस्ट आणि प्रत्येक संदेशाचा आकारही दिसतो, जो अधिक काही डिक्रिप्ट न करता भरपूर क्रियाकलापाची बोटांची खूण घेण्यास पुरतो।
रचना B: पेलोड स्वतःच्या किल्ल्या बाळगते
दुसऱ्या रचनेत, क्लायंट आपली पॅकेट स्वतःची पीअर ओळख आणि किल्ली देवाणघेवाण असलेल्या VPN प्रोटोकॉलने एन्क्रिप्ट व प्रमाणित करतो, नंतर निकाल WebSocket संदेशांच्या आत वाहतो। येथे बाहेरील TLS संपवल्याने रहदारी नाही, सायफरटेक्स्ट उघड होते। प्रॉक्सीला संदेशांचे आकार व वेळ दिसू शकतात, पेलोडमध्ये दुसरे काहीही नाही। हे खूपच लहान उघडपण आहे, आणि तरीही हा असा मेटाडेटा आहे ज्याचा आढाव्यात उल्लेख करावा, बाजूला ढकलू नका।
आतील प्रोटोकॉलच्या स्वतःच्या अंतिम बिंदूंना अजूनही स्पष्ट मजकूर दिसतो, हाच या व्यवस्थेचा उद्देश आणि तिची मर्यादाही। अंतिम बिंदूवरील घटकाला एन्क्रिप्शनपूर्वी किंवा डिक्रिप्शननंतर डेटा वाचण्याचा अधिकार असेल, तर अतिरिक्त स्तर त्याला मर्यादित करत नाही। किल्ल्या आणि त्या हाताळणारे सॉफ्टवेअर ही महत्त्वाची सीमा राहते।
VPN लेबल, परिचित क्लायंट चिन्ह किंवा मार्केटिंग पान हे ही रचना अस्तित्वात असल्याचा पुरावा नाही। पेलोड स्वरूप वाचणे पुरावा आहे।
स्पष्ट मजकूर प्रत्यक्षात कुठे दिसतो याचा माग काढा
URL योजना तुम्हाला एक तथ्य देते, म्हणून उर्वरित इंटरफेसांकडून घ्या। खालील तपासण्या क्रमाने चालवा, कारण प्रत्येक पुढची अरुंद करते:
ss -tnp | grep -E ':(443|8443)\b' ip -br link show type tun openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -brief tcpdump -ni tun0 -c 5 -X
बाहेरील कनेक्शनपासून सुरुवात करा। TLS पोर्टवर एक दीर्घायुषी TCP सत्र असणे हे WebSocket वाहकाचे रूप आहे, आणि असंबंधित होस्टवरचे दुसरे सत्र अधिक खोल पाहण्यापूर्वी स्पष्टीकरणास पात्र आहे। नंतर क्लायंटवरील बोगदा इंटरफेस शोधा, कारण tun किंवा tap उपकरण सांगते की क्लायंट एकच ॲप्लिकेशन प्रवाह प्रॉक्सी करण्याऐवजी IP पॅकेट हाताळत आहे।
बोगदा इंटरफेसवरील कॅप्चर सहसा पेलोडचा प्रश्न सोडवते। तिथे वाचनीय हेडर असणे म्हणजे आतील पॅकेट कधीही स्वतंत्रपणे एन्क्रिप्ट झाले नाहीत, तर उच्च एन्ट्रॉपीचे पेलोड म्हणजे ते एन्क्रिप्ट झाले होते। बाहेरील इंटरफेसवर कॅप्चर पुन्हा करा आणि दोन्हींची तुलना करा: दोन्ही यादृच्छिक दिसत असतील, तर आतील स्तर बाहेरील स्तर मागे घेऊ शकत नाही असे काम करत आहे।
तुम्ही प्रत्यक्षात दिलेल्या विश्वासाचा आढावा घ्या
स्थापित कॉर्पोरेट रूट प्रमाणपत्र हे क्लायंटच्या विश्वास संग्रहाबद्दलचे तथ्य आहे, कोणताही प्रॉक्सी काय नोंदवतो किंवा तपासतो याबद्दलचे विधान नाही। CA असण्यावरून वर्तनाचा अंदाज घेण्याऐवजी तैनात धोरण आणि खरा कनेक्शन मार्ग स्थापित करा।
व्यवस्थापित उपकरणांवर, कोणता घटक TLS संपवतो, क्लायंट पिन केलेले प्रमाणपत्र तपासतो की सार्वजनिक, आणि पेलोड स्वरूप काय आहे हे प्रशासकाला विचारा। ती तीन उत्तरे नंतर तुम्ही समर्थन करू शकाल असा शोध देतात।
निकाल निकाल नाही तर सीमा म्हणून लिहा। "TLS तपासणी प्रॉक्सीवर संपते, आणि आतील पेलोड फक्त अंतिम बिंदूंकडील किल्ल्यांनी स्वतंत्रपणे एन्क्रिप्ट केलेले आहे" हे तपासण्याजोगे विधान आहे जे विक्रेता बदलला तरी टिकते। "WebSockets सुरक्षित आहेत" टिकत नाही।