29 مه سال 2020
اطلاعات غلط زیادی در مورد WireGuard وجود دارد ، بنابراین ما همچنان به بهترین وجهی می توانیم این اسطوره ها را برطرف کنیم. در این مطلب ، ما به این ایده نگاه می کنیم که WireGuard از روشهای مختلف رمزگذاری و تأیید هویت پشتیبانی می کند. در واقعیت ، بسیار محدودتر از این است.
کدام رمزگذاری توسط WireGuard
پشتیبانی می شود. در حالی که اکثریت قریب به اتفاق سایر پروتکل های VPN طیف گسترده ای از رمزنگاری ها را پشتیبانی می کنند ، WireGuard کمی ساده تر است. این برنامه فقط از یک طرح توافق نامه کلیدی (Curve25519) و دیگری AEAD (رمزگذاری معتبر با داده های همراه) ، ChaCha20-Poly1305 پشتیبانی می کند. بر خلاف WireGuard ، IPSec از RSA ، DSA ، ECDSA ، Curve25519 و تعداد زیادی از الگوریتم های دیگر پشتیبانی می کند.
چگونه WireGuard با سایر پروتکل ها تفاوت دارد
قبل از اینکه توضیح دهیم که دقیقاً در زیر کاپوت چیست ، باید تفاوت مهمی را بین WireGuard و سایر پروتکل های معروف نشان دهیم. WireGuard یک پروتکل همتا به همتا است. بین گره های سرور و گره های مشتری تفاوت قائل نمی شود و به دلیل نقش یک همتا ، هیچ عملکرد ویژه ای به یک همتا اختصاص نمی یابد. [نقشها،مانندسروریامشتری،جزئیاتاستقرارهستندوWireGuardبهاینجزئیاتاهمیتنمیدهداما،برایدرکبهتر،مابههمتایمخفیکردنveşmeبهعنوان"سرور"ودستگاهمشتریبهعنوان"مشتری"خطابخواهیمکردقبلازایجادکلیدجلسهمتقارن،دیگرتنهامکانیسمامکانتأییداعتبارپشتیبانیشدهتوسطWireGuard،تأییداعتبارکلیدعمومیاستپروتکلهایدیگرمانندIKEv2یاOpenVPNتأییدهویتتوسطنامکاربرورمزعبورراانجاممیدهد،اماWireGuardاینکاررانمیکندبااستفادهازWireGuard،کلیدهایعمومیبهعنوانمادهتأییداعتبار،مبنایتوافقنامهکلیدیوپایهواساسمسیریابیکلیدرمزنگاریهستند
به طور کلی ، اگر یک همکار آلیس بخواهد هویت خود را با همت باب دیگر اثبات کند ، از کلید خصوصی خود برای امضای دیجیتالی نوعی پیام استفاده می کند. چنین امضای دیجیتالی را باب تأیید می کند که معتبر باشد ، اما تنها در صورتی که باب دارای کلید عمومی آلیس باشد. بنابراین باب مجبور است دستان خود را بر روی کلید عمومی آلیس به نوعی از قبل بگیرد. WireGuard هیچ امکاناتی را برای چنین مبادله ای در اختیار شما قرار نمی دهد ، بسیار مخفی است ، باید کلیدهای عمومی را از قبل پیکربندی کنید. اگر کلید عمومی همسالان مشخص نیست ، WireGuard ساکت است. بر خلاف WireGuard ، TLS ، پروتکل امنیتی غالب ، در هنگام لرزش ، کلید عمومی سرور را به صورت گواهی به مشتری ارائه می دهد. تأیید هویت Hide.me WireGuard
کار می کند. در veş.me ما این دو را با هم ترکیب کرده ایم. ما از HTTPS برای ایجاد کانال کوتاه مدت ، تأیید هویت و بسیار ایمن برای تبادل کلیدهای عمومی استفاده می کنیم. سپس کلید عمومی مشتری برای جلسه WireGuard که آغاز می شود ، استفاده می شود. برنامه های ما هر بار که سعی در اتصال دارند ، یک جفت جدید از کلیدهای خصوصی و عمومی ایجاد می کنند. پس از نصب کلیدهای عمومی سرور و مشتری ، WireGuard تمام ابزارهای لازم برای ایجاد کلید جلسه در یک طرح توافق نامه کلید Curve25519 را در اختیار دارد. چنین کلید جلسه ای توسط AEAD ChaCha20-Poly1305 متقارن برای انتقال داده بین همسالان استفاده می شود.
توضیح ChaCha20-Poly1305
ChaCha20-Poly1305 یک AEAD است (رمزگذاری معتبر با داده های همراه) ، در واقع ترکیب خوبی از یک عدد (ChaCha20) و یک کد است. احراز هویت پیام (Poly1305). AEAD نه تنها داده های حساس را رمزگذاری می کند ، بلکه آنها را نیز تأیید می کند (قسمت AE). علاوه بر داده های حساس ، سایر داده های غیر حساس نیز می توانند در پیام نهایی که تأیید شده است نیز درج شوند (قسمت AD). AEAD سه رکن امنیتی را ارائه می دهند:
محرمانه بودن ، صداقت و صحت داده ها. امروز ، AEAD غالب AES-GCM است. این ساختاری است که از AES-CTR (AES در حالت پیشخوان) و یک MAC GHASH تشکیل شده است. بسیار ایمن است و از آسیب پذیری های شناخته شده ای برخوردار نیست ، اما محاسبه بر روی سیستم عامل هایی غیر از پردازنده های اخیر اینتل هزینه بر است.
چه حكمى
AES از نظر رمزنگاري از ChaCha20 قوي تر است ، اما بسيار بيشتر تلاش مي كند. بنابراین ، ما فکر می کنیم که ChaCha20 در مقایسه با AES ، به خصوص در سیستم عامل های موبایل گزینه خوبی است "آنچه را که می پردازید بپردازید". قبل از ظهور ChaCha20-Poly1305 ، جایگزینی برای AES-GCM وجود نداشت.
وابستگی به AEAD تنها گزینه ای برای شرکت های بزرگ نبود. چه اتفاقی می افتد اگر یک آسیب پذیری مهم در AES-GCM کشف شود؟ این صنعت اکنون جایگزین دیگری دارد ، اگرچه به اندازه AES-GCM قوی یا سریع نیست ، اگر AES-GCM همچنان گزینه مناسبی باشد. شکست می خورد