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 సురక్షితం" నిలబడదు.