چگونه DNSCrypt با معرفی یک دوره اعتبار 24 ساعته، مشکل گواهی های منقضی شده را حل کرد؟

چگونه DNSCrypt با معرفی یک دوره اعتبار 24 ساعته، مشکل گواهی های منقضی شده را حل کرد؟

در گذشته، گواهینامه ها اغلب منقضی می شدند زیرا باید به صورت دستی تمدید می شدند. مردم به سادگی فراموش کردند این کار را انجام دهند. با آمدن Let's Encrypt و رویه به روز رسانی خودکار، به نظر می رسد که مشکل باید حل شود. اما اخیر داستان فایرفاکس نشان می دهد که در واقع هنوز مرتبط است. متأسفانه، اعتبار گواهی ها همچنان به پایان می رسد.

اگر داستان را از دست دادید، در نیمه شب 4 مه 2019، تقریباً تمام برنامه‌های افزودنی فایرفاکس به طور ناگهانی از کار افتادند.

همانطور که معلوم شد، شکست عظیم به دلیل این واقعیت رخ داد که موزیلا گواهی منقضی شده است، که برای امضای پسوندها استفاده می شد. بنابراین، آنها به عنوان "نامعتبر" علامت گذاری شدند و تأیید نشدند (جزییات فنی). در انجمن ها، به عنوان یک راه حل، توصیه می شود تأیید امضای برنامه افزودنی را غیرفعال کنید about: config را یا تغییر ساعت سیستم

موزیلا به سرعت پچ فایرفاکس 66.0.4 را منتشر کرد که مشکل گواهی نامعتبر را حل می کند و همه برنامه های افزودنی به حالت عادی باز می گردند. توسعه دهندگان توصیه می کنند آن را نصب کنید و استفاده نکن هیچ راه حلی برای دور زدن تأیید امضا وجود ندارد زیرا ممکن است با وصله در تضاد باشند.

با این حال، این داستان بار دیگر نشان می دهد که انقضای گواهینامه همچنان یک مسئله مبرم است.

در این راستا، جالب است که به روشی نسبتاً اصلی نگاه کنیم که چگونه توسعه دهندگان پروتکل با این کار برخورد کردند DNSC رمزگذاری شده. راه حل آنها را می توان به دو بخش تقسیم کرد. اولاً اینها گواهینامه های کوتاه مدت هستند. ثانیاً هشدار به کاربران در مورد انقضای طولانی مدت.

DNSC رمزگذاری شده

چگونه DNSCrypt با معرفی یک دوره اعتبار 24 ساعته، مشکل گواهی های منقضی شده را حل کرد؟DNSCrypt یک پروتکل رمزگذاری ترافیک DNS است. از ارتباطات DNS در برابر رهگیری ها و MiTM محافظت می کند و همچنین به شما امکان می دهد از مسدود شدن در سطح پرس و جو DNS عبور کنید.

این پروتکل ترافیک DNS را بین کلاینت و سرور در یک ساختار رمزنگاری بسته بندی می کند و روی پروتکل های انتقال UDP و TCP کار می کند. برای استفاده از آن، هم کلاینت و هم حل‌کننده DNS باید از DNSCrypt پشتیبانی کنند. به عنوان مثال، از مارس 2016، در سرورهای DNS خود و در مرورگر Yandex فعال شده است. چندین ارائه‌دهنده دیگر از جمله Google و Cloudflare نیز پشتیبانی خود را اعلام کرده‌اند. متأسفانه تعداد زیادی از آنها وجود ندارد (152 سرور DNS عمومی در وب سایت رسمی ذکر شده است). اما برنامه dnscrypt-proxy می تواند به صورت دستی بر روی کلاینت های لینوکس، ویندوز و MacOS نصب شود. نیز وجود دارد پیاده سازی های سرور.

چگونه DNSCrypt با معرفی یک دوره اعتبار 24 ساعته، مشکل گواهی های منقضی شده را حل کرد؟

DNSCrypt چگونه کار می کند؟ به طور خلاصه، مشتری کلید عمومی ارائه دهنده انتخاب شده را می گیرد و از آن برای تأیید گواهی های خود استفاده می کند. کلیدهای عمومی کوتاه مدت برای جلسه و شناسه مجموعه رمز از قبل وجود دارد. مشتریان تشویق می شوند برای هر درخواست یک کلید جدید ایجاد کنند و سرورها تشویق می شوند که کلیدها را تغییر دهند هر 24 ساعت. هنگام مبادله کلیدها، از الگوریتم X25519 استفاده می شود، برای امضا - EdDSA، برای رمزگذاری بلوک - XSalsa20-Poly1305 یا XChaCha20-Poly1305.

یکی از توسعه دهندگان پروتکل فرانک دنیس می نویسد:که تعویض خودکار هر 24 ساعت مشکل گواهینامه های منقضی شده را حل کرد. در اصل، مشتری مرجع dnscrypt-proxy گواهی‌هایی را با هر دوره اعتباری می‌پذیرد، اما اگر بیش از 24 ساعت اعتبار داشته باشد، اخطار "دوره کلید dnscrypt-proxy برای این سرور بسیار طولانی است" صادر می‌کند. در همان زمان، یک تصویر Docker منتشر شد که در آن یک تغییر سریع کلیدها (و گواهی ها) اجرا شد.

اول، برای امنیت بسیار مفید است: اگر سرور به خطر بیفتد یا کلید لو رفته باشد، ترافیک دیروز قابل رمزگشایی نیست. کلید قبلاً تغییر کرده است. این احتمالاً برای اجرای قانون Yarovaya که ارائه دهندگان را مجبور می کند همه ترافیک از جمله ترافیک رمزگذاری شده را ذخیره کنند، مشکل ایجاد می کند. مفهوم این است که بعداً می توان در صورت لزوم با درخواست کلید از سایت رمزگشایی کرد. اما در این مورد، سایت به سادگی نمی تواند آن را ارائه دهد، زیرا از کلیدهای کوتاه مدت استفاده می کند و کلیدهای قدیمی را حذف می کند.

اما مهم‌تر از همه، دنیس می‌نویسد، کلیدهای کوتاه‌مدت سرورها را مجبور می‌کنند از همان روز اول اتوماسیون را راه‌اندازی کنند. اگر سرور به شبکه متصل شود و اسکریپت‌های تغییر کلید پیکربندی نشده باشند یا کار نکنند، بلافاصله شناسایی می‌شود.

وقتی اتوماسیون کلیدها را هر چند سال یکبار تغییر می دهد، نمی توان به آن اعتماد کرد و مردم می توانند انقضای گواهینامه را فراموش کنند. اگر کلیدها را روزانه تغییر دهید، فوراً تشخیص داده می شود.

در عین حال، اگر اتوماسیون به طور معمول پیکربندی شود، مهم نیست که چند بار کلیدها تغییر می کنند: هر سال، هر سه ماه یا سه بار در روز. فرانک دنیس می نویسد: اگر همه چیز بیش از 24 ساعت کار کند، برای همیشه کار خواهد کرد. به گفته وی، توصیه به چرخش روزانه کلید در نسخه دوم پروتکل به همراه تصویر داکر آماده که آن را پیاده سازی می کند، عملا تعداد سرورهای دارای گواهی منقضی شده را کاهش داد و همزمان امنیت را نیز ارتقا داد.

با این حال، برخی از ارائه دهندگان همچنان به دلایل فنی تصمیم گرفتند مدت اعتبار گواهی را بیش از 24 ساعت تعیین کنند. این مشکل تا حد زیادی با چند خط کد در dnscrypt-proxy حل شد: کاربران یک اخطار اطلاعاتی 30 روز قبل از انقضای گواهینامه، یک پیام دیگر با سطح شدت بالاتر 7 روز قبل از انقضا، و یک پیام مهم در صورتی که گواهی باقی مانده باشد دریافت می‌کنند. اعتبار کمتر از 24 ساعت این فقط برای گواهینامه هایی اعمال می شود که در ابتدا دارای دوره اعتبار طولانی هستند.

این پیام ها به کاربران این فرصت را می دهد تا قبل از اینکه خیلی دیر شود، اپراتورهای DNS را از انقضای قریب الوقوع گواهینامه مطلع کنند.

شاید اگر همه کاربران فایرفاکس چنین پیامی را دریافت می کردند، احتمالاً شخصی به توسعه دهندگان اطلاع می داد و آنها اجازه نمی دادند گواهی منقضی شود. فرانک دنیس می نویسد: «من به یاد نمی آورم یک سرور DNSCrypt در لیست سرورهای عمومی DNS که گواهی آن در دو یا سه سال گذشته منقضی شده باشد. در هر صورت، احتمالاً بهتر است ابتدا به کاربران هشدار داده شود تا اینکه برنامه‌های افزودنی را بدون هشدار غیرفعال کنید.

چگونه DNSCrypt با معرفی یک دوره اعتبار 24 ساعته، مشکل گواهی های منقضی شده را حل کرد؟


منبع: www.habr.com

اضافه کردن نظر