رمزنگاری تونل WSS در پایاندهنده TLS تمام میشود، نه در برنامه
یک نشانی wss:// وجود 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، نماد آشنای کارخواه یا صفحه بازاریابی دلیلی بر وجود این طرح نیست. خواندن قالب بار داده دلیل است.
ردیابی کنید متن ساده واقعاً کجا ظاهر میشود
طرح نشانی یک واقعیت به شما میدهد، پس بقیه را از رابطها بگیرید. بررسیهای زیر را به ترتیب اجرا کنید، زیرا هر کدام بعدی را باریکتر میکند:
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
با اتصال بیرونی شروع کنید. یک نشست TCP دیرپا به درگاه TLS همان چیزی است که حامل WebSocket شبیه آن است، و نشست دومی به میزبان نامرتبط پیش از نگاه عمیقتر ارزش توضیح دارد. سپس رابط تونل را روی کارخواه پیدا کنید، زیرا دستگاه tun یا tap به شما میگوید کارخواه بستههای IP را مدیریت میکند نه اینکه یک جریان برنامه را پروکسی کند.
گرفتن بسته روی رابط تونل معمولاً پرسش بار داده را حل میکند. سرآیندهای خوانا در آنجا یعنی بستههای درونی هرگز جداگانه رمزنگاری نشدهاند، در حالی که بارهای با آنتروپی بالا یعنی شدهاند. گرفتن بسته را روی رابط بیرونی تکرار کنید و دو را مقایسه کنید: اگر هر دو تصادفی به نظر برسند، لایه درونی کاری میکند که لایه بیرونی نمیتواند باطلش کند.
اعتمادی را که واقعاً دادهاید بازبینی کنید
گواهی ریشه شرکتی نصبشده واقعیتی درباره مخزن اعتماد کارخواه است، نه بیانیهای درباره اینکه هر پروکسی چه ثبت یا بازرسی میکند. سیاست مستقر و مسیر واقعی اتصال را مشخص کنید، نه اینکه رفتار را از وجود یک CA استنتاج کنید.
روی تجهیزات مدیریتشده از مدیر بپرسید کدام مؤلفه TLS را پایان میدهد، آیا کارخواه گواهی سنجاقشده را اعتبارسنجی میکند یا گواهی عمومی، و قالب بار داده چیست. این سه پاسخ یافتهای میسازد که بعداً میتوانید از آن دفاع کنید.
نتیجه را بهعنوان یک مرز بنویسید نه یک حکم. «TLS در پروکسی بازرسی پایان مییابد و بار داده درونی جداگانه با کلیدهایی رمزنگاری شده که فقط نقاط پایانی دارند» گزارهای قابلبررسی است که تغییر فروشنده را دوام میآورد. اما «WebSockets امن است» چنین نیست.