پروتکل‌های رمزنگاری مانند TLS ،SSL ،IPsec و Open VPN عموما از الگوریتم‌های رمز بلاکی(۱) مانند AES ،Triple-DES و Blowfish استفاده می‌کنند تا داده‌ها را بین سرویس‌گیرنده و سرویس‌دهنده رمز کنند. برای استفاده از این الگوریتم‌ها، داده به تکه‌هایی با اندازه ثابت شکسته می‌شود که آن‌ها را بلاک می‌نامند و هر بلاک به صورت جداگانه مطابق با یک حالت عملکرد(۲) رمز می‌شود. رمزهای بلاکی قدیمی، مانند Triple-DES و Blowfish از بلاک‌ با اندازه ۶۴ بیت استفاده می‌کنند، درحالی‌که AES از بلاک با اندازه ۱۲۸ بیت استفاده می‌کند.

یک موضوع شناخته شده در معماشناسی این است که یک بلاک با اندازه کوچک، یک رمز بلاکی آسیب‌پذیر را نسبت به حمله روز تولد(۳) فراهم می‌کند حتی اگر حملاتی علیه خود رمز بلاکی وجود نداشته باشد. این حملات برای رمزهای بلاکی ۶۴ بیتی متعارف در پروتکل‌های مشهوری مثل TLS و OpenVPN قابل استفاده است. هنوز این رمز‌ها به طور گسترده‌ای در سطح اینترنت، فعال هستند. در حال حاضر، Blowfish رمز پیش‌فرض در OpenVPN است و Triple-DES تقریبا توسط همه سرویس‌دهنده‌ها وب HTTPS پشتیبانی می‌شود و در حال حاضر برای تقریبا ۱ تا ۲ درصد ارتباطات HTTPS بین سرویس‌دهنده و سرویس‌گیرنده استفاده می‌شود. در [۱] نشان داده شد که حمله‌کننده با مانیتور کردن یک long-lived ارتباط HTTPS در Triple-DES بین مرورگر و وب‌سایت، می‌تواند کوکی‌های HTTP را با گرفتن حدود ۷۸۵ گیگابایت از ترافیک بدست آورد. این حمله حدودا کمتر از ۲ روز طول خواهد کشید(با استفاده از جاوا اسکریپت مخرب برای تولید ترافیک). زنده نگه‌داشتن ارتباط به مدت ۲ روز شاید خیلی عملی نباشد اما نویسندگان مقاله ادعا کردند که این مورد در آزمایشگاه به راحتی کار کرده است. در مورد پیچیدگی محاسباتی، این حمله با حملات اخیر روی RC4 مقایسه شده است. در ادامه دو آسیب‌پذیری CVE-2016-2183 و CVE-2016-2183 که به ترتیب روی رمز‌های بلاکی Triple-DES و Blowfish وجود دارند را بیان می‌کنیم.

آسیب‌پذیری CVE-2016-2183

Karthik Bhargavan و Gaetan Leurent از حمله جدیدی به نام SWEET32 [2] روی Triple-DES پرده‌برداری کرده‌اند که در واقع نوعی حمله روز تولد روی رمزهای بلاکی ۶۴ بیتی در TLS و OpenVPN است. نقص SWEET32 در سوم شهریور (۲۴ام اوت) فاش شده است.

سرویس‌دهنده‌های وب، داده‌ها را با استفاده از کلید‌های رمزنگاری، رمز می‌کنند. این کلید‌ها به صورت تصادفی انتخاب می‌شوند و احتمال اینکه دو سرویس‌گیرنده، کلید‌های یکسانی را بگیرند خیلی کم است. با آسیب‌پذیری SWEET32، نشان داده شده است که یک حمله‌کننده می‌تواند حجم زیادی از داده‌های ساختگی را ارسال کند و بلاک‌های رمزی که با یک مشتری تطابق دارد را بگیرد. این امر ممکن است زیرا، بلاک‌های ۶۴ بیتی استفاده شده در ۳DES-DES، بسته‌های زیادی را تولید می‌کنند که احتمال اینکه یک بسته رمز شده از یک مشتری و حمله‌کننده تطابق پیدا کند را افزایش می‌دهد[۳]. برای شکستن آن:

  1. مهاجم تمام اطلاعات ارسال شده به مشتری خود را شنود می‌کند.
  2. مهاجم اطلاعات ساختگی را به سرویس‌دهنده شما تا زمانی که یک کلید استفاده شده برای یک مشتری با کلید نشست مهاجم تطابق داشته باشد، ارسال می‌کند.
  3. زمانی که یک تطابق وجود دارد، داده‌های حساس می‌توانند توسط تعیین کردن چگونگی انتخاب کلید، رمز‌گشایی بشوند.

روز تولد

به خاطر اینکه DES و triple-DES تنها یک بلاک ۶۴ بیتی دارند، حمله روز تولد یک نگرانی واقعی در آن‌ها است. با قابلیت اجرای جاوا اسکریپت در یک مرورگر، ممکن است تا ترافیک کافی را به منظور ایجاد یک تصادم ارسال کنیم و از اطلاعات آن برای کشف چیزهایی مثل کوکی نشست استفاده کنیم. آزمایش‌های آن‌ها نشان داده که یک کوکی را می‌تواند در کمتر از ۲ روز بدست آورد [۱].

OpenSSL از رمزنگاری Triple-DES و OpenVPN از رمزنگاری Blowfish استفاده می‌کنند. اکثر مرورگرهای وب، Triple-DES را در ارتباطات امن استفاده می‌کنند. بنابراین اگر سرویس‌دهنده‌های وب شما مانند Apache، NginX و غیره از OpenSSL با پشتیبانی رمزنگاری Triple-DES استفاده می‌کند، سرویس‌دهنده شما به این حمله آسیب‌پذیر است. سرویس‌دهنده‌های با نسخه OpenSSL قبل از ۱٫۰٫۱ نمی‌توانند از رمزنگاری‌های قوی‌ای استفاده کنند و در حال حاضر به انواع مختلفی از حملات مانند تزریق CCS آسیب‌پذیرند. با دستور زیر می‌توانید نسخه OpenSSL خود را بررسی کنید:

OpenSSL

برای بررسی اینکه چه رمزنگاری‌هایی در سرویس‌دهنده OpenSSL شما فعال است می‌توانید از دستور زیر استفاده کنید:

OpenSSL

مقدار ‘۳DES’ در بالا نشان می‌دهد که از رمزنگاری  triple DES در این سرویس‌دهنده استفاده می‌شود که برای امنیت باید آن را غیرفعال کرد [۱].

برای ایمن‌سازی OpenSSL، شما باید triple-DES را در سرویس‌دهنده خود غیرفعال کنید و اگر سرویس‌دهنده شما به علت قدیمی بودن، الگوریتم رمز بهتری را پشتیبانی نمی‌کند، شما باید آن را ارتقا دهید [۴].

میزان تأثیر آسیب‌پذیری CVE-2016-2183

جدول [۵و۶] تاثیر آسیب‌پذیری بر اساس شاخص شدت و معیارهای CVSS v2.0

CVSS

جدول [۵و۶] تاثیر آسیب‌پذیری بر اساس شاخص شدت و معیارهای CVSS v3.0

CVSS

آسیب‌پذیری CVE-2016-6329

زمانی که OpenVPN از رمز بلاکی ۶۴ بیتی (Blowfish با مد CBC) استفاده می‌کند، یک مهاجم راه دور قادر است تا متن واضح داده‌ها را از طریق یک حمله روز تولد (با استفاده از تعداد زیادی از نشست‌های رمز شده) بدست آورد. این حمله Sweet32 نامیده می‌شود که موارد مربوط به آن مشابه آسیب‌پذیری قبلی است که هر دو در [۱] و [۲] به طور کامل بررسی و بیان شده است.

میزان تأثیر آسیب‌پذیری CVE-2016-6329

جدول [۷و۸] تاثیر آسیب‌پذیری بر اساس شاخص شدت و معیارهای CVSS v2.0

جدول [۷و۸] تاثیر آسیب‌پذیری بر اساس شاخص شدت و معیارهای CVSS v3.0

 

 

منابع

[۱] https://sweet32.info/SWEET32_CCS16.pdf

[۲] https://sweet32.info

[۳] https://bobcares.com/blog/how-to-fix-sweet32-birthday-attacks-vulnerability-cve-2016-2183

[۴] https://www.openssl.org/blog/blog/2016/08/24/sweet32

[۵] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-2183

[۶] https://nvd.nist.gov/vuln/detail/CVE-2016-2183

[۷] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6329

[۸] https://nvd.nist.gov/vuln/detail/CVE-2016-6329


(۱) block cipher
(۲) Mode of operation
(۳) birthday