در گذشته، گواهینامه ها اغلب منقضی می شدند زیرا باید به صورت دستی تمدید می شدند. مردم به سادگی فراموش کردند این کار را انجام دهند. با آمدن Let's Encrypt و رویه به روز رسانی خودکار، به نظر می رسد که مشکل باید حل شود. اما اخیر
اگر داستان را از دست دادید، در نیمه شب 4 مه 2019، تقریباً تمام برنامههای افزودنی فایرفاکس به طور ناگهانی از کار افتادند.
همانطور که معلوم شد، شکست عظیم به دلیل این واقعیت رخ داد که موزیلا
موزیلا به سرعت پچ فایرفاکس 66.0.4 را منتشر کرد که مشکل گواهی نامعتبر را حل می کند و همه برنامه های افزودنی به حالت عادی باز می گردند. توسعه دهندگان توصیه می کنند آن را نصب کنید و
با این حال، این داستان بار دیگر نشان می دهد که انقضای گواهینامه همچنان یک مسئله مبرم است.
در این راستا، جالب است که به روشی نسبتاً اصلی نگاه کنیم که چگونه توسعه دهندگان پروتکل با این کار برخورد کردند
DNSC رمزگذاری شده
DNSCrypt یک پروتکل رمزگذاری ترافیک DNS است. از ارتباطات DNS در برابر رهگیری ها و MiTM محافظت می کند و همچنین به شما امکان می دهد از مسدود شدن در سطح پرس و جو DNS عبور کنید.
این پروتکل ترافیک DNS را بین کلاینت و سرور در یک ساختار رمزنگاری بسته بندی می کند و روی پروتکل های انتقال UDP و TCP کار می کند. برای استفاده از آن، هم کلاینت و هم حلکننده DNS باید از DNSCrypt پشتیبانی کنند. به عنوان مثال، از مارس 2016، در سرورهای DNS خود و در مرورگر Yandex فعال شده است. چندین ارائهدهنده دیگر از جمله Google و Cloudflare نیز پشتیبانی خود را اعلام کردهاند. متأسفانه تعداد زیادی از آنها وجود ندارد (152 سرور DNS عمومی در وب سایت رسمی ذکر شده است). اما برنامه
DNSCrypt چگونه کار می کند؟ به طور خلاصه، مشتری کلید عمومی ارائه دهنده انتخاب شده را می گیرد و از آن برای تأیید گواهی های خود استفاده می کند. کلیدهای عمومی کوتاه مدت برای جلسه و شناسه مجموعه رمز از قبل وجود دارد. مشتریان تشویق می شوند برای هر درخواست یک کلید جدید ایجاد کنند و سرورها تشویق می شوند که کلیدها را تغییر دهند هر 24 ساعت. هنگام مبادله کلیدها، از الگوریتم X25519 استفاده می شود، برای امضا - EdDSA، برای رمزگذاری بلوک - XSalsa20-Poly1305 یا XChaCha20-Poly1305.
یکی از توسعه دهندگان پروتکل فرانک دنیس
اول، برای امنیت بسیار مفید است: اگر سرور به خطر بیفتد یا کلید لو رفته باشد، ترافیک دیروز قابل رمزگشایی نیست. کلید قبلاً تغییر کرده است. این احتمالاً برای اجرای قانون Yarovaya که ارائه دهندگان را مجبور می کند همه ترافیک از جمله ترافیک رمزگذاری شده را ذخیره کنند، مشکل ایجاد می کند. مفهوم این است که بعداً می توان در صورت لزوم با درخواست کلید از سایت رمزگشایی کرد. اما در این مورد، سایت به سادگی نمی تواند آن را ارائه دهد، زیرا از کلیدهای کوتاه مدت استفاده می کند و کلیدهای قدیمی را حذف می کند.
اما مهمتر از همه، دنیس مینویسد، کلیدهای کوتاهمدت سرورها را مجبور میکنند از همان روز اول اتوماسیون را راهاندازی کنند. اگر سرور به شبکه متصل شود و اسکریپتهای تغییر کلید پیکربندی نشده باشند یا کار نکنند، بلافاصله شناسایی میشود.
وقتی اتوماسیون کلیدها را هر چند سال یکبار تغییر می دهد، نمی توان به آن اعتماد کرد و مردم می توانند انقضای گواهینامه را فراموش کنند. اگر کلیدها را روزانه تغییر دهید، فوراً تشخیص داده می شود.
در عین حال، اگر اتوماسیون به طور معمول پیکربندی شود، مهم نیست که چند بار کلیدها تغییر می کنند: هر سال، هر سه ماه یا سه بار در روز. فرانک دنیس می نویسد: اگر همه چیز بیش از 24 ساعت کار کند، برای همیشه کار خواهد کرد. به گفته وی، توصیه به چرخش روزانه کلید در نسخه دوم پروتکل به همراه تصویر داکر آماده که آن را پیاده سازی می کند، عملا تعداد سرورهای دارای گواهی منقضی شده را کاهش داد و همزمان امنیت را نیز ارتقا داد.
با این حال، برخی از ارائه دهندگان همچنان به دلایل فنی تصمیم گرفتند مدت اعتبار گواهی را بیش از 24 ساعت تعیین کنند. این مشکل تا حد زیادی با چند خط کد در dnscrypt-proxy حل شد: کاربران یک اخطار اطلاعاتی 30 روز قبل از انقضای گواهینامه، یک پیام دیگر با سطح شدت بالاتر 7 روز قبل از انقضا، و یک پیام مهم در صورتی که گواهی باقی مانده باشد دریافت میکنند. اعتبار کمتر از 24 ساعت این فقط برای گواهینامه هایی اعمال می شود که در ابتدا دارای دوره اعتبار طولانی هستند.
این پیام ها به کاربران این فرصت را می دهد تا قبل از اینکه خیلی دیر شود، اپراتورهای DNS را از انقضای قریب الوقوع گواهینامه مطلع کنند.
شاید اگر همه کاربران فایرفاکس چنین پیامی را دریافت می کردند، احتمالاً شخصی به توسعه دهندگان اطلاع می داد و آنها اجازه نمی دادند گواهی منقضی شود. فرانک دنیس می نویسد: «من به یاد نمی آورم یک سرور DNSCrypt در لیست سرورهای عمومی DNS که گواهی آن در دو یا سه سال گذشته منقضی شده باشد. در هر صورت، احتمالاً بهتر است ابتدا به کاربران هشدار داده شود تا اینکه برنامههای افزودنی را بدون هشدار غیرفعال کنید.
منبع: www.habr.com