حملات رمزنگاری: توضیحی برای ذهن های آشفته

وقتی کلمه رمزنگاری را می شنوید، برخی از افراد رمز وای فای خود، قفل سبز رنگ کنار آدرس وب سایت مورد علاقه خود را به یاد می آورند و ورود به ایمیل شخص دیگری چقدر دشوار است. برخی دیگر مجموعه‌ای از آسیب‌پذیری‌ها را در سال‌های اخیر با اختصارات (DROWN، FREAK، POODLE...)، لوگوهای شیک و هشداری برای به‌روزرسانی فوری مرورگر خود به یاد می‌آورند.

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

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

در این سری از مقالات، انواع حملات رمزنگاری را با تاکید بر اصول اولیه بررسی خواهیم کرد. به طور کلی و نه دقیقاً به این ترتیب، اما موارد زیر را پوشش خواهیم داد:

  • استراتژی های اساسی: brute force، تجزیه و تحلیل فرکانس، درون یابی، تنزل رتبه و پروتکل های متقابل.
  • آسیب پذیری های برند: عجایب، جنایت، پودل، غرق، لوجام.
  • استراتژی های پیشرفته: حملات اوراکل (حمله Vodenet، حمله کلسی)؛ روش ملاقات در وسط، حمله تولد، سوگیری آماری (تحلیل رمز تفاضلی، تحلیل رمز انتگرال و غیره).
  • حملات کانال جانبی و بستگان نزدیک آنها، تکنیک های تجزیه و تحلیل شکست.
  • حملات به رمزنگاری کلید عمومی: ریشه مکعب، پخش، پیام مرتبط، حمله مسمیت، الگوریتم Pohlig-Hellman، غربال اعداد، حمله وینر، حمله Bleichenbacher.

این مقاله خاص مطالب فوق را تا حمله کلسی پوشش می دهد.

استراتژی های اساسی

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

برخی از این حملات تا حد زیادی منسوخ شده اند و سال هاست که مورد استفاده قرار نگرفته اند. برخی دیگر قدیمی‌ها هستند که هنوز به طور مرتب به توسعه‌دهندگان سیستم‌های رمزنگاری ناآگاه در قرن بیست و یکم سر می‌زنند. دوران رمزنگاری مدرن را می‌توان با ظهور IBM DES، اولین رمزی که در برابر تمام حملات این لیست مقاومت کرد، آغاز شد.

نیروی وحشیانه ساده

حملات رمزنگاری: توضیحی برای ذهن های آشفتهطرح رمزگذاری از دو بخش تشکیل شده است: 1) تابع رمزگذاری که یک پیام (متن ساده) را با یک کلید ترکیب می کند و سپس یک پیام رمزگذاری شده ایجاد می کند - متن رمزی. 2) یک تابع رمزگشایی که متن رمزی و کلید را می گیرد و متن ساده تولید می کند. محاسبه رمزگذاری و رمزگشایی هر دو باید با کلید آسان باشد – و محاسبه بدون آن دشوار باشد.

بیایید فرض کنیم متن رمز را می بینیم و سعی می کنیم آن را بدون هیچ گونه اطلاعات اضافی رمزگشایی کنیم (این حمله فقط متن رمزی نامیده می شود). اگر به نحوی جادویی کلید صحیح را پیدا کنیم، اگر نتیجه یک پیام معقول باشد، می توانیم به راحتی تأیید کنیم که واقعاً صحیح است.

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

دوم، فرض می کنیم که کلید صحیح تنها کلیدی است که منجر به رمزگشایی معقول می شود. این نیز یک فرض معقول است; اگر متن رمزی بسیار طولانی تر از کلید باشد و قابل خواندن باشد، راضی می شود. این معمولاً در دنیای واقعی اتفاق می افتد، به جز کلیدهای بزرگ غیر عملی یا دیگر اهانت‌ها که بهتر است کنار گذاشته شوند (اگر دوست ندارید که ما توضیح را نادیده گرفته ایم، لطفا قضیه 3.8 را ببینید اینجا).

با توجه به موارد فوق، یک استراتژی به وجود می آید: هر کلید ممکن را بررسی کنید. به این نیروی بی رحم می گویند، و چنین حمله ای تضمین شده است که علیه همه رمزهای عملی - در نهایت، کار کند. به عنوان مثال، brute force برای هک کافی است رمز سزاریک رمز باستانی که در آن کلید یک حرف الفبا است که به بیش از 20 کلید ممکن اشاره دارد.

متأسفانه برای تحلیلگران رمز، افزایش اندازه کلید دفاع خوبی در برابر نیروی بی رحم است. با افزایش اندازه کلید، تعداد کلیدهای ممکن به صورت تصاعدی افزایش می یابد. با اندازه های کلیدی مدرن، نیروی ساده بی رحم کاملا غیر عملی است. برای درک منظورمان، سریع‌ترین ابرکامپیوتر شناخته‌شده در اواسط سال ۲۰۱۹ را در نظر بگیریم: قله از IBM، با حداکثر عملکرد حدود 1017 عملیات در ثانیه. امروزه طول کلید معمولی 128 بیت است که به معنای 2128 ترکیب ممکن است. برای جستجو در میان تمام کلیدها، ابررایانه Summit به زمانی نیاز دارد که تقریباً 7800 برابر سن کیهان است.

آیا خشونت بی رحمانه باید یک کنجکاوی تاریخی در نظر گرفته شود؟ به هیچ وجه: این یک عنصر ضروری در کتاب آشپزی تحلیل رمز است. به ندرت رمزها آنقدر ضعیف هستند که تنها با یک حمله هوشمندانه، بدون استفاده از زور تا یک درجه، شکسته شوند. بسیاری از هک های موفق از یک روش الگوریتمی برای تضعیف رمز هدف ابتدا استفاده می کنند و سپس یک حمله brute force را انجام می دهند.

تحلیل فرکانس

حملات رمزنگاری: توضیحی برای ذهن های آشفتهاکثر متون عبوس نیستند. به عنوان مثال، در متون انگلیسی بسیاری از حروف 'e' و مقالات 'the' وجود دارد. در فایل های باینری، تعداد زیادی بایت صفر به عنوان بالشتک بین قطعات اطلاعات وجود دارد. تحلیل فرکانس هر حمله ای است که از این واقعیت استفاده کند.

مثال متعارف رمزی که در برابر این حمله آسیب پذیر است، رمز جایگزین ساده است. در این رمز، کلید جدولی است که تمام حروف آن جایگزین شده است. به عنوان مثال، 'g' با 'h'، 'o' با j جایگزین می شود، بنابراین کلمه 'go' به 'hj' تبدیل می شود. این رمز به سختی اعمال می شود زیرا جداول جستجوی زیادی وجود دارد. اگر به ریاضیات علاقه دارید، طول کلید موثر حدود 88 بیت است: این
حملات رمزنگاری: توضیحی برای ذهن های آشفته. اما تجزیه و تحلیل فرکانس معمولاً کار را به سرعت انجام می دهد.

متن رمز زیر را در نظر بگیرید که با یک رمز جایگزین ساده پردازش شده است:

XDYLY ALY UGLY XDWNKE WN DYAJYN ANF YALXD DGLAXWG XDAN ALY FLYAUX GR WN OGQL ZDWBGEGZDO

پس از Y اغلب اتفاق می افتد، از جمله در پایان بسیاری از کلمات، می توانیم به طور آزمایشی فرض کنیم که این حرف است e:

XDeLe ALe UGLe XDWNKE WN DeAJeN ANF eALXD DGLAXWG XDAN ALe FleAUX GR WN OGQL ZDWBGEGZDO

زن و شوهر XD در ابتدای چند کلمه تکرار می شود. به طور خاص، ترکیب XDeLe به وضوح این کلمه را نشان می دهد these یا there، پس ادامه می دهیم:

theLe ALe UGLe thWNKE WN heAJeN ANF eALth DGLAtWG از ALe FleAUt GR WN OGQL ZDWBGEGZDO

اجازه دهید بیشتر فرض کنیم که L مربوط به r, A - a و غیره احتمالاً چند تلاش طول می کشد، اما در مقایسه با یک حمله کامل brute force، این حمله متن اصلی را در کمترین زمان بازیابی می کند:

چیزهایی در آسمان و زمین بیش از آنچه در فلسفه شما در خواب دیده می شود وجود دارد

برای برخی، حل چنین "کریپتوگرام" یک سرگرمی هیجان انگیز است.

ایده تحلیل فرکانس بنیادی تر از آن چیزی است که در نگاه اول به نظر می رسد. و برای رمزهای بسیار پیچیده تری اعمال می شود. در طول تاریخ، طرح‌های رمزی مختلف تلاش کرده‌اند با استفاده از «جایگزینی چند الفبایی» با چنین حمله‌ای مقابله کنند. در اینجا، در طول فرآیند رمزگذاری، جدول جایگزینی حروف به روش های پیچیده اما قابل پیش بینی که به کلید بستگی دارد، اصلاح می شود. شکستن همه این رمزها در یک زمان دشوار بود. و در عین حال تحلیل فرکانس متوسط ​​در نهایت همه آنها را شکست داد.

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

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

محاسبات اولیه

حملات رمزنگاری: توضیحی برای ذهن های آشفتهشهر فرضی Precom Heights با 200 نفر جمعیت را در نظر بگیرید. هر خانه در شهر به طور متوسط ​​دارای اشیای با ارزش 000 دلار است، اما ارزش آن بیش از 30 دلار نیست. طبق تجزیه و تحلیل کارشناسان، یک قفل کلاس Coyote تنها توسط یک ماشین فرضی بسیار پیچیده می تواند شکسته شود که ایجاد آن به حدود پنج سال و 000 دلار سرمایه گذاری نیاز دارد. آیا شهر امن است؟

به احتمال زیاد نه در نهایت، یک جنایتکار نسبتا جاه طلب ظاهر خواهد شد. او چنین استدلال خواهد کرد: «بله، من هزینه های اولیه زیادی را متحمل خواهم شد. پنج سال صبر و 50 دلار. اما وقتی کارم تمام شد، به تمام ثروت این شهر. اگر کارت‌هایم را درست بازی کنم، این سرمایه‌گذاری چند برابر خواهد شد.»

در رمزنگاری هم همینطور است. حملات علیه یک رمز خاص در معرض تجزیه و تحلیل بی رحمانه هزینه و فایده است. اگر نسبت مطلوب باشد، حمله رخ نخواهد داد. اما حملاتی که به طور همزمان علیه بسیاری از قربانیان احتمالی عمل می‌کنند تقریباً همیشه نتیجه می‌دهند، در این صورت بهترین روش طراحی این است که فرض کنیم از همان روز اول شروع شده‌اند. ما اساساً یک نسخه رمزنگاری از قانون مورفی داریم: "هر چیزی که واقعاً بتواند سیستم را بشکند، سیستم را می شکند."

ساده ترین مثال از یک سیستم رمزنگاری که در برابر حمله پیش محاسباتی آسیب پذیر است، یک رمز بدون کلید ثابت است. این مورد بود رمز سزار، که به سادگی هر حرف الفبا را سه حرف به جلو می برد (جدول حلقه شده است، بنابراین آخرین حرف الفبا سوم رمزگذاری می شود). در اینجا دوباره اصل Kerchhoffs مطرح می شود: هنگامی که یک سیستم هک شود، برای همیشه هک می شود.

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

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

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

درون یابی

در اینجا کارآگاه معروف شرلوک هلمز است که در حال انجام یک حمله درون یابی به دکتر واتسون بدبخت است:

بلافاصله حدس زدم که شما از افغانستان آمده‌اید... سلسله افکارم اینگونه بود: «این مرد از نظر نوع پزشک است، اما قدرت نظامی دارد. خب دکتر نظامی او به تازگی از مناطق استوایی آمده است - صورتش تیره است، اما این سایه طبیعی پوست او نیست، زیرا مچ دستش بسیار سفیدتر است. قیافه مضطرب است - بدیهی است که او رنج زیادی کشیده و از بیماری رنج برده است. او از ناحیه دست چپ زخمی شده بود - او آن را بی حرکت و کمی غیر طبیعی نگه می دارد. در کجای مناطق گرمسیری یک پزشک نظامی انگلیسی می توانست سختی ها را تحمل کند و زخمی شود؟ البته در افغانستان». کل رشته فکر حتی یک ثانیه طول نکشید. و من گفتم که از افغانستان آمدی و تعجب کردی.

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

بیایید با یک مثال ساده نشان دهیم که درون یابی چگونه کار می کند. فرض کنید می خواهیم دفتر خاطرات شخصی دشمنمان، باب را بخوانیم. او با استفاده از یک سیستم رمزنگاری ساده که از یک آگهی در مجله "A Mock of Cryptography" در مورد آن آموخته است، تمام شماره های دفتر خاطرات خود را رمزگذاری می کند. سیستم به این صورت عمل می کند: باب دو عدد را که دوست دارد انتخاب می کند: حملات رمزنگاری: توضیحی برای ذهن های آشفته и حملات رمزنگاری: توضیحی برای ذهن های آشفته. از این به بعد، برای رمزگذاری هر شماره حملات رمزنگاری: توضیحی برای ذهن های آشفته، محاسبه می کند حملات رمزنگاری: توضیحی برای ذهن های آشفته. به عنوان مثال، اگر باب انتخاب کرد حملات رمزنگاری: توضیحی برای ذهن های آشفته и حملات رمزنگاری: توضیحی برای ذهن های آشفته، سپس شماره حملات رمزنگاری: توضیحی برای ذهن های آشفته به عنوان رمزگذاری خواهد شد حملات رمزنگاری: توضیحی برای ذهن های آشفته.

بیایید بگوییم که در 28 دسامبر متوجه شدیم که باب چیزی را در دفتر خاطرات خود می خراشد. وقتی کارش تمام شد، بی سر و صدا آن را برمی داریم و آخرین ورودی را تماشا می کنیم:

تاریخ: 235/520

دفتر خاطرات عزیزم،

امروز روز خوبی بود. از طریق 64 امروز با آلیسا که در یک آپارتمان زندگی می کند قرار ملاقات دارم 843. من واقعا فکر می کنم او ممکن است 26!

از آنجایی که ما در مورد دنبال کردن باب در تاریخ او بسیار جدی هستیم (در این سناریو هر دو 15 ساله هستیم)، دانستن تاریخ و همچنین آدرس آلیس بسیار مهم است. خوشبختانه، متوجه شدیم که سیستم رمزنگاری باب در برابر یک حمله درون یابی آسیب پذیر است. شاید ندانیم حملات رمزنگاری: توضیحی برای ذهن های آشفته и حملات رمزنگاری: توضیحی برای ذهن های آشفته، اما ما تاریخ امروز را می دانیم، بنابراین دو جفت متن ساده-متن رمز داریم. یعنی ما این را می دانیم حملات رمزنگاری: توضیحی برای ذهن های آشفته رمزگذاری شده در حملات رمزنگاری: توضیحی برای ذهن های آشفتهو حملات رمزنگاری: توضیحی برای ذهن های آشفته - در حملات رمزنگاری: توضیحی برای ذهن های آشفته. این چیزی است که خواهیم نوشت:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

حملات رمزنگاری: توضیحی برای ذهن های آشفته

از آنجایی که ما 15 ساله هستیم، قبلاً در مورد یک سیستم دو معادله با دو مجهول می دانیم که در این شرایط برای پیدا کردن کافی است. حملات رمزنگاری: توضیحی برای ذهن های آشفته и حملات رمزنگاری: توضیحی برای ذهن های آشفته بدون هیچ مشکلی. هر جفت متن ساده-متن رمز محدودیتی را روی کلید Bob قرار می دهد و این دو محدودیت با هم برای بازیابی کامل کلید کافی هستند. در مثال ما پاسخ این است حملات رمزنگاری: توضیحی برای ذهن های آشفته и حملات رمزنگاری: توضیحی برای ذهن های آشفته (در حملات رمزنگاری: توضیحی برای ذهن های آشفته حملات رمزنگاری: توضیحی برای ذهن های آشفته، بنابراین 26 در دفتر خاطرات با کلمه "یک"، یعنی "همان" مطابقت دارد - تقریباً. مسیر).

حملات درون یابی البته به چنین نمونه های ساده ای محدود نمی شوند. هر سیستم رمزنگاری که به یک شیء ریاضی کاملاً درک شده و فهرستی از پارامترها کاهش می‌یابد، در معرض خطر حمله درون‌یابی قرار می‌گیرد - هر چه شیء قابل درک‌تر باشد، خطر بالاتری دارد.

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

متقاطع پروتکل / تنزل

حملات رمزنگاری: توضیحی برای ذهن های آشفتهدر Now You See Me (2013)، گروهی از توهم‌گرایان تلاش می‌کنند تا آرتور ترسلر، غول فاسد بیمه را از کل ثروتش کلاه‌برداری کنند. برای دسترسی به حساب بانکی آرتور، افراد توهم باید یا نام کاربری و رمز عبور او را ارائه دهند یا او را مجبور کنند که شخصاً در بانک حاضر شود و در این طرح شرکت کند.

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

(طبق یک افسانه شهری که ما شخصاً آن را تأیید و تأیید کرده‌ایم، الی بیهام رمزنگار یک بار با یک عابر بانک روبرو شد که اصرار داشت یک سؤال امنیتی بپرسد. وقتی عابر نام مادربزرگ مادری خود را پرسید، بیهام شروع به دیکته کردن کرد: "سرمایه X، y کوچک، سه ... ").

در رمزنگاری هم همین‌طور است، اگر دو پروتکل رمزنگاری به طور موازی برای محافظت از یک دارایی استفاده شوند، و یکی بسیار ضعیف‌تر از دیگری باشد. سیستم حاصل در برابر یک حمله متقابل پروتکل آسیب‌پذیر می‌شود، جایی که پروتکل ضعیف‌تر مورد حمله قرار می‌گیرد تا بدون دست زدن به پروتکل قوی‌تر به جایزه برسد.

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

سارق: سلام؟ این آرتور ترسلر است. من می خواهم رمز عبور خود را بازنشانی کنم.

صندوقدار: عالی. لطفاً به کتاب کدهای مخفی شخصی خود، صفحه 28، کلمه 3 نگاهی بیندازید. همه پیام های زیر با استفاده از این کلمه خاص به عنوان کلید رمزگذاری می شوند. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPV…

سارق: هی، هی، صبر کن، صبر کن آیا این واقعا ضروری است؟ آیا نمی توانیم مثل مردم عادی صحبت کنیم؟

صندوقدار: من انجام این کار را توصیه نمی کنم.

سارق: من فقط... ببین، روز بدی داشتم، باشه؟ من یک مشتری VIP هستم و حال و حوصله این کتاب های کد احمقانه را ندارم.

صندوقدار: خوب. اگر اصرار دارید، آقای ترسلر. چه چیزی می خواهید؟

سارق: لطفا، من می خواهم تمام پول خود را به صندوق ملی قربانیان آرتور ترسلر اهدا کنم.

(مکث).

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

سارق: من چی؟

صندوقدار: بنا به درخواست شخصی شما، تراکنش هایی با این اندازه برای تراکنش های بزرگ نیاز به پین ​​دارند. این کد زمانی که حساب کاربری خود را باز کردید به شما داده شد.

سارق:... گمش کردم. آیا این واقعا ضروری است؟ آیا نمی توانید فقط معامله را تأیید کنید؟

صندوقدار: خیر متاسفم، آقای ترسلر. باز هم، این همان اقدام امنیتی است که شما خواسته اید. در صورت تمایل، می توانیم یک کد پین جدید به صندوق پستی شما ارسال کنیم.

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

ترسلر: سلام. من می خواهم یک تراکنش از راه دور را تکمیل کنم، لطفا.

صندوقدار: عالی. لطفاً به صفحه کد رمز شخصی خود نگاهی بیندازید...

(سارق دکمه را فشار می دهد؛ صدای صندوقدار به صدایی نامفهوم تبدیل می شود).

صندوقدار: - #@$#@$#*@$$@#* با این کلمه به عنوان کلید رمزگذاری خواهد شد. AAAYRR PLRQRZ MMNJK LOJBAN…

ترسلر: ببخشید من کاملا متوجه نشدم از نو؟ در چه صفحه ای؟ چه کلمه ای؟

صندوقدار: این صفحه @#$@#*$)#*#@()#@$(#@*$(#@*) است.

ترسلر: چیست؟

صندوقدار: کلمه شماره بیست @$#@$#%#$.

ترسلر: به طور جدی! دیگر بس است! شما و پروتکل امنیتی شما نوعی سیرک هستید. من می دانم که شما می توانید به طور معمول با من صحبت کنید.

صندوقدار: توصیه نمیکنم…

ترسلر: و من به شما توصیه نمی کنم که وقتم را تلف کنید. تا زمانی که مشکلات خط تلفن خود را برطرف نکنید، دیگر نمی‌خواهم در این مورد بشنوم. آیا می توانیم این معامله را نهایی کنیم یا خیر؟

صندوقدار:… آره. خوب. چه چیزی می خواهید؟

ترسلر: من می خواهم 20 دلار به Lord Business Investments، شماره حساب...

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

ترسلر: چی؟ اوه، دقیقا. 1234.

اینجا یک حمله رو به پایین است. پروتکل ضعیف تر "فقط مستقیم صحبت کن" به عنوان پیش بینی شده بود گزینه در مواقع اضطراری و هنوز اینجاییم.

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

این دقیقا همان چیزی است که با پروتکل SSLv2 در سال 1995 اتفاق افتاد. دولت ایالات متحده مدتهاست که رمزنگاری را به عنوان سلاحی می بیند که بهتر است از دشمنان خارجی و داخلی دور نگه داشته شود. قطعات کد به صورت جداگانه برای صادرات از ایالات متحده تأیید می شدند، اغلب با این شرط که الگوریتم عمداً ضعیف شده بود. Netscape، توسعه‌دهنده محبوب‌ترین مرورگر، Netscape Navigator، تنها با کلید آسیب‌پذیر 2 بیتی RSA (و 512 بیتی برای RC40) مجوز SSLv4 را دریافت کرد.

در پایان هزاره، قوانین کاهش یافتند و دسترسی به رمزگذاری مدرن به طور گسترده در دسترس قرار گرفت. با این حال، کلاینت‌ها و سرورها سال‌ها از رمزنگاری ضعیف «صادرات» پشتیبانی می‌کنند، به دلیل همین اینرسی که از هر سیستم قدیمی پشتیبانی می‌کند. مشتریان معتقد بودند که ممکن است با سروری مواجه شوند که هیچ چیز دیگری را پشتیبانی نمی کند. سرورها هم همین کار را کردند. البته پروتکل SSL حکم می‌کند که کلاینت‌ها و سرورها هرگز نباید از پروتکل ضعیفی در صورت موجود بودن پروتکل بهتر استفاده کنند. اما همین فرض در مورد ترسلر و بانکش نیز صادق بود.

این نظریه راه خود را به دو حمله پرمخاطب پیدا کرد که امنیت پروتکل SSL را در سال 2015 متزلزل کرد، هر دو توسط محققان مایکروسافت کشف شدند و INRIA. ابتدا، جزئیات حمله FREAK در ماه فوریه فاش شد و سه ماه بعد حمله مشابه دیگری به نام Logjam انجام شد که وقتی به حملات به رمزنگاری کلید عمومی می‌رویم، با جزئیات بیشتری درباره آن صحبت خواهیم کرد.

حملات رمزنگاری: توضیحی برای ذهن های آشفتهآسیب پذیری چیز غریب (همچنین به عنوان "Smack TLS" شناخته می شود) زمانی آشکار شد که محققان پیاده سازی های مشتری/سرور TLS را تجزیه و تحلیل کردند و یک باگ عجیب را کشف کردند. در این پیاده‌سازی‌ها، اگر مشتری حتی درخواست استفاده از رمزنگاری صادراتی ضعیف را نداشته باشد، اما سرور همچنان با چنین کلیدهایی پاسخ می‌دهد، کلاینت می‌گوید "اوه خوب" و به یک مجموعه رمز ضعیف سوئیچ می‌کند.

در آن زمان، رمزنگاری صادراتی به طور گسترده ای منسوخ و غیرمجاز در نظر گرفته می شد، بنابراین این حمله یک شوک کامل بود و بسیاری از حوزه های مهم از جمله کاخ سفید، IRS و سایت های NSA را تحت تاثیر قرار داد. حتی بدتر از آن، معلوم می شود که بسیاری از سرورهای آسیب پذیر با استفاده مجدد از کلیدهای مشابه به جای ایجاد کلیدهای جدید برای هر جلسه، عملکرد را بهینه می کردند. این امر، پس از کاهش سطح پروتکل، انجام یک حمله پیش محاسباتی را ممکن کرد: شکستن یک کلید نسبتاً گران بود (100 دلار و 12 ساعت در زمان انتشار)، اما هزینه عملی حمله به اتصال به طور قابل توجهی کاهش یافت. کافی است یک بار کلید سرور را انتخاب کنید و از آن لحظه به بعد رمزگذاری را برای تمام اتصالات بعدی کرک کنید.

و قبل از حرکت، یک حمله پیشرفته وجود دارد که باید ذکر شود...

حمله اوراکل

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

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

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

بنابراین آلیس و باب با استفاده از یک رمز جایگزین ساده با استفاده از کلیدی که فقط برای آنها شناخته شده است ارتباط برقرار می کنند. آنها در مورد طول پیام ها بسیار سختگیر هستند: آنها دقیقا 20 کاراکتر هستند. بنابراین آنها موافقت کردند که اگر کسی می خواهد پیام کوتاه تری ارسال کند، باید مقداری متن ساختگی به انتهای پیام اضافه کند تا دقیقاً 20 کاراکتر شود. پس از مدتی بحث، آنها تصمیم گرفتند که فقط متون ساختگی زیر را بپذیرند: a, bb, ccc, dddd بنابراین، یک متن ساختگی با هر طول مورد نیاز شناخته می شود.

وقتی آلیس یا باب پیامی را دریافت می‌کنند، ابتدا بررسی می‌کنند که طول پیام (20 کاراکتر) و پسوند متن ساختگی صحیح باشد. اگر اینطور نیست، آنها با یک پیغام خطای مناسب پاسخ می دهند. اگر طول متن و متن ساختگی مناسب باشد، گیرنده خود پیام را می خواند و یک پاسخ رمزگذاری شده ارسال می کند.

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

سارق: PREWF ZHJKL MMMN. LA

آلیس: متن ساختگی نامعتبر است.

سارق: PREWF ZHJKL MMMN. LB

آلیس: متن ساختگی نامعتبر است.

سارق: PREWF ZHJKL MMMN. LC

آلیس: ILCT? TLCT RUWO PUT KCAW CPS OWPOW!

سارق نمی داند که آلیس چه گفته است، اما توجه دارد که این نماد است C باید مطابقت داشته باشد a، از آنجایی که آلیس متن ساختگی را پذیرفت.

سارق: REWF ZHJKL MMMN. LAA

آلیس: متن ساختگی نامعتبر است.

سارق: REWF ZHJKL MMMN. LBB

آلیس: متن ساختگی نامعتبر است.

پس از چند بار تلاش ...

سارق: REWF ZHJKL MMMN. LGG

آلیس: متن ساختگی نامعتبر است.

سارق: REWF ZHJKL MMMN. LHH

آلیس: TLQO JWCRO FQAW SUY LCR C OWQXYJW. IW PWWR TU TCFA CHUYT TLQO JWFCTQUPOLQZ.

باز هم، مهاجم نمی داند که آلیس چه گفته است، اما توجه دارد که H باید با b مطابقت داشته باشد زیرا آلیس متن ساختگی را پذیرفته است.

و به همین ترتیب تا زمانی که مهاجم معنای هر شخصیت را بداند.

در نگاه اول، این روش شبیه یک حمله متن ساده انتخاب شده است. در پایان، مهاجم متن های رمزی را انتخاب می کند و سرور با اطاعت آنها را پردازش می کند. تفاوت اصلی که این حملات را در دنیای واقعی قابل اجرا می‌کند این است که مهاجم نیازی به دسترسی به رونوشت واقعی ندارد - یک پاسخ سرور، حتی یک پاسخ بی‌ضرر به عنوان «متن ساختگی نامعتبر»، کافی است.

در حالی که این حمله خاص آموزنده است، زیاد به جزئیات طرح «متن ساختگی»، سیستم رمزنگاری خاص مورد استفاده، یا توالی دقیق پیام‌های ارسال شده توسط مهاجم معطل نشوید. ایده اصلی این است که آلیس چگونه بر اساس ویژگی‌های متن ساده واکنش متفاوتی نشان می‌دهد، و این کار را بدون تأیید اینکه متن رمز مربوطه واقعاً از طرف مورد اعتماد آمده است انجام می‌دهد. بنابراین، آلیس به مهاجم اجازه می دهد تا اطلاعات محرمانه را از پاسخ های خود حذف کند.

در این سناریو می توان چیزهای زیادی را تغییر داد. نمادهایی که آلیس به آنها واکنش نشان می دهد، یا تفاوت بسیار در رفتار او، یا حتی سیستم رمزگذاری استفاده شده. اما اصل یکسان باقی خواهد ماند و حمله به طور کلی در یک شکل یا آن شکل قابل اجرا باقی خواهد ماند. اجرای اولیه این حمله به کشف چندین باگ امنیتی کمک کرد که به زودی به آنها خواهیم پرداخت. اما ابتدا باید چند درس نظری آموخت. چگونه می توان از این "اسکریپت آلیس" ساختگی در حمله ای استفاده کرد که می تواند روی یک رمز واقعی مدرن کار کند؟ آیا این حتی در تئوری امکان پذیر است؟

در سال 1998، دانیل بلیشن باکر رمزنگار سوئیسی به این سوال پاسخ مثبت داد. او با استفاده از یک طرح پیام خاص، یک حمله اوراکل به سیستم رمزنگاری کلید عمومی پرکاربرد RSA را نشان داد. در برخی از پیاده‌سازی‌های RSA، سرور بسته به اینکه متن ساده با طرح مطابقت دارد یا خیر، با پیام‌های خطای متفاوت پاسخ می‌دهد. این برای انجام حمله کافی بود.

چهار سال بعد، در سال 2002، سرژ ودنای رمزنگار فرانسوی، یک حمله اوراکل تقریباً مشابه آنچه در سناریوی آلیس در بالا توضیح داده شد را نشان داد - با این تفاوت که به جای یک رمز ساختگی، او یک کلاس معتبر از رمزهای مدرن را شکست که در واقع مردم از آنها استفاده می کنند. به طور خاص، حمله Vaudenay رمزهای اندازه ورودی ثابت ("رمزهای بلوکی") را هنگامی که در به اصطلاح "حالت رمزگذاری CBC" و با یک طرح padding محبوب خاص استفاده می‌شوند را هدف قرار می‌دهد، که اساساً معادل با سناریوی Alice است.

همچنین در سال 2002، جان کلسی رمزنگار آمریکایی - نویسنده همکار دوتایی - حملات مختلف اوراکل را به سیستم هایی پیشنهاد کرد که پیام ها را فشرده و سپس آنها را رمزگذاری می کنند. قابل توجه ترین در این میان حمله ای بود که از این واقعیت استفاده کرد که اغلب می توان طول متن اصلی را از طول متن رمزی استنتاج کرد. در تئوری، این امکان را برای یک حمله اوراکل فراهم می‌کند که بخش‌هایی از متن اصلی را بازیابی می‌کند.

در زیر شرح مفصل تری از حملات Vaudenay و Kelsey ارائه می دهیم (وقتی به حملات به رمزنگاری کلید عمومی می رویم، شرح مفصل تری از حمله Bleichenbacher ارائه خواهیم داد). علیرغم بهترین تلاش ما، متن تا حدودی فنی می شود. بنابراین اگر موارد بالا برای شما کافی است، از دو بخش بعدی صرف نظر کنید.

حمله وودنه

برای درک حمله Vaudenay، ابتدا باید کمی بیشتر در مورد رمزهای بلاک و حالت های رمزگذاری صحبت کنیم. همانطور که گفته شد، "رمز بلوک" رمزی است که یک کلید و ورودی با طول ثابت معین ("طول بلوک") می گیرد و یک بلوک رمزگذاری شده با همان طول تولید می کند. رمزهای بلاک به طور گسترده ای مورد استفاده قرار می گیرند و نسبتا امن در نظر گرفته می شوند. DES که اکنون بازنشسته شده است، که اولین رمزگذاری مدرن در نظر گرفته می شود، یک رمز بلوکی بود. همانطور که در بالا ذکر شد، همین امر در مورد AES نیز صادق است که امروزه به طور گسترده مورد استفاده قرار می گیرد.

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

حمله Vodene بر روی حالت محبوب CBC (Cipher Block Chaining) متمرکز شده است. این حمله رمز بلوک زیرین را به عنوان یک جعبه سیاه جادویی و غیرقابل نفوذ در نظر می گیرد و امنیت آن را به طور کامل دور می زند.

در اینجا نموداری وجود دارد که نحوه عملکرد حالت CBC را نشان می دهد:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

حملات رمزنگاری: توضیحی برای ذهن های آشفته

علامت مثبت دایره شده، عملیات XOR (OR انحصاری) را نشان می دهد. به عنوان مثال، دومین بلوک از متن رمزی دریافت می شود:

  1. با انجام عملیات XOR بر روی بلوک متن ساده دوم با بلوک متن رمزی اول.
  2. رمزگذاری بلوک به دست آمده با یک رمز بلوک با استفاده از یک کلید.

از آنجایی که CBC از عملیات XOR باینری بسیار استفاده می کند، اجازه دهید چند لحظه به یادآوری برخی از ویژگی های آن بپردازیم:

  • ناتوانی: حملات رمزنگاری: توضیحی برای ذهن های آشفته
  • جابجایی: حملات رمزنگاری: توضیحی برای ذهن های آشفته
  • انجمنی: حملات رمزنگاری: توضیحی برای ذهن های آشفته
  • خود برگشت پذیری: حملات رمزنگاری: توضیحی برای ذهن های آشفته
  • اندازه بایت: بایت n از حملات رمزنگاری: توضیحی برای ذهن های آشفته = (بایت n از حملات رمزنگاری: توضیحی برای ذهن های آشفته) حملات رمزنگاری: توضیحی برای ذهن های آشفته (بایت n از حملات رمزنگاری: توضیحی برای ذهن های آشفته)

به طور معمول، این ویژگی ها نشان می دهد که اگر معادله ای شامل عملیات XOR و یک مجهول داشته باشیم، می توان آن را حل کرد. مثلاً اگر بدانیم حملات رمزنگاری: توضیحی برای ذهن های آشفته با ناشناخته حملات رمزنگاری: توضیحی برای ذهن های آشفته و معروف حملات رمزنگاری: توضیحی برای ذهن های آشفته и حملات رمزنگاری: توضیحی برای ذهن های آشفته، سپس می توانیم برای حل معادله به ویژگی های فوق الذکر تکیه کنیم حملات رمزنگاری: توضیحی برای ذهن های آشفته. با اعمال XOR در دو طرف معادله با حملات رمزنگاری: توضیحی برای ذهن های آشفته، ما گرفتیم حملات رمزنگاری: توضیحی برای ذهن های آشفته. این همه در یک لحظه بسیار مرتبط خواهد شد.

دو تفاوت جزئی و یک تفاوت عمده بین سناریوی آلیس ما و حمله Vaudenay وجود دارد. دو مورد جزئی:

  • در فیلمنامه، آلیس انتظار داشت که متن های ساده به شخصیت ها ختم شود a, bb, ccc و غیره در حمله Wodene، قربانی در عوض انتظار دارد متن‌های ساده N بار با N بایت (یعنی هگزادسیمال 01 یا 02 02، یا 03 03 03 و غیره) پایان یابد. این صرفا یک تفاوت آرایشی است.
  • در سناریوی آلیس، با پاسخ "متن ساختگی نادرست" به راحتی می توان تشخیص داد که آیا آلیس پیام را پذیرفته است یا خیر. در حمله Vodene، تجزیه و تحلیل بیشتری مورد نیاز است و اجرای دقیق از طرف قربانی مهم است. اما برای اختصار، بیایید آن را به عنوان یک داده فرض کنیم که این تحلیل هنوز امکان پذیر است.

تفاوت اصلی:

  • از آنجایی که ما از سیستم رمزگذاری یکسانی استفاده نمی کنیم، رابطه بین بایت های متن رمزی کنترل شده توسط مهاجم و اسرار (کلید و متن ساده) بدیهی است که متفاوت خواهد بود. بنابراین، مهاجم هنگام ایجاد متن رمزنگاری و تفسیر پاسخ‌های سرور باید از استراتژی متفاوتی استفاده کند.

این تفاوت عمده آخرین قطعه پازل برای درک حمله Vaudenay است، بنابراین بیایید لحظه ای به این فکر کنیم که چرا و چگونه حمله اوراکل به CBC در وهله اول قابل نصب است.

فرض کنید به ما یک متن رمزی CBC از 247 بلوک داده شده است و می خواهیم آن را رمزگشایی کنیم. ما می توانیم پیام های جعلی را به سرور ارسال کنیم، همانطور که قبلاً می توانستیم پیام های جعلی را برای آلیس ارسال کنیم. سرور پیام‌ها را برای ما رمزگشایی می‌کند، اما رمزگشایی را نشان نمی‌دهد - در عوض، مانند آلیس، سرور فقط یک بیت از اطلاعات را گزارش می‌کند: آیا متن ساده دارای padding معتبر است یا خیر.

در نظر بگیرید که در سناریوی آلیس ما روابط زیر را داشتیم:

$$display$$text{SIMPLE_SUBSTITUTION}(متن{متن رمزی}، متن{کلید}) = متن{plaintext}$$display$$

بیایید این را «معادله آلیس» بنامیم. ما متن رمز را کنترل کردیم. سرور (آلیس) اطلاعات مبهم در مورد متن ساده دریافتی را فاش کرد. و این به ما امکان داد اطلاعاتی در مورد آخرین عامل - کلید - استنباط کنیم. به قیاس، اگر بتوانیم چنین ارتباطی را برای اسکریپت CBC پیدا کنیم، ممکن است بتوانیم برخی از اطلاعات مخفی را در آنجا نیز استخراج کنیم.

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

حملات رمزنگاری: توضیحی برای ذهن های آشفته

بیایید این را «معادله CBC» بنامیم.

در سناریوی آلیس، با نظارت بر متن رمزنگاری شده و مشاهده نشت متن ساده مربوطه، ما توانستیم حمله ای را انجام دهیم که عبارت سوم را در معادله بازیابی کرد - کلید. در سناریوی CBC، ما همچنین متن رمز را رصد کرده و نشت اطلاعات را در متن ساده مربوطه مشاهده می‌کنیم. اگر قیاس برقرار باشد، می توانیم اطلاعاتی در مورد آن به دست آوریم حملات رمزنگاری: توضیحی برای ذهن های آشفته.

بیایید فرض کنیم واقعاً بازسازی کردیم حملات رمزنگاری: توضیحی برای ذهن های آشفته، بعدش چی شد؟ خوب، پس می‌توانیم کل آخرین بلوک متن ساده را هم‌زمان چاپ کنیم (حملات رمزنگاری: توضیحی برای ذهن های آشفته)، به سادگی با وارد کردن حملات رمزنگاری: توضیحی برای ذهن های آشفته (که داریم) و
اخذ شده حملات رمزنگاری: توضیحی برای ذهن های آشفته به معادله CBC

اکنون که نسبت به طرح کلی حمله خوش بین هستیم، زمان آن رسیده که جزئیات را بررسی کنیم. لطفاً به نحوه افشای اطلاعات متن ساده روی سرور دقت کنید. در اسکریپت آلیس، نشت به این دلیل رخ داد که آلیس تنها در صورتی با پیام صحیح پاسخ می‌داد که $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ با خط ختم شود. a (یا bbو غیره، اما احتمال ایجاد این شرایط به طور تصادفی بسیار کم بود). مشابه CBC، سرور padding را می پذیرد اگر و فقط اگر حملات رمزنگاری: توضیحی برای ذهن های آشفته به هگزادسیمال ختم می شود 01. پس بیایید همین ترفند را امتحان کنیم: ارسال متن های رمزی جعلی با مقادیر جعلی خودمان حملات رمزنگاری: توضیحی برای ذهن های آشفتهتا زمانی که سرور پر کردن را بپذیرد.

وقتی سرور برای یکی از پیام های جعلی ما یک بالشتک می پذیرد، به این معنی است که:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

اکنون از خاصیت XOR بایت بایت استفاده می کنیم:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

ترم اول و سوم را می دانیم. و قبلاً دیده‌ایم که این به ما امکان می‌دهد که عبارت باقی‌مانده - آخرین بایت را بازیابی کنیم حملات رمزنگاری: توضیحی برای ذهن های آشفته:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

این همچنین آخرین بایت بلوک متن ساده نهایی را از طریق معادله CBC و ویژگی بایت به بایت به ما می دهد.

می‌توانیم آن را کنار بگذاریم و راضی باشیم که به یک رمز از لحاظ نظری قوی حمله کرده‌ایم. اما در واقع ما می‌توانیم کارهای بیشتری انجام دهیم: در واقع می‌توانیم تمام متن را بازیابی کنیم. این به ترفندی نیاز دارد که در فیلمنامه اصلی آلیس وجود نداشت و برای حمله اوراکل لازم نیست، اما همچنان ارزش یادگیری را دارد.

برای درک آن، ابتدا توجه داشته باشید که نتیجه خروجی مقدار صحیح آخرین بایت است حملات رمزنگاری: توضیحی برای ذهن های آشفته ما یک توانایی جدید داریم حال، هنگام جعل متون رمزی، می‌توانیم آخرین بایت متن ساده مربوطه را دستکاری کنیم. باز هم، این به معادله CBC و ویژگی بایت به بایت مربوط می شود:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

از آنجایی که ما اکنون عبارت دوم را می دانیم، می توانیم از کنترل خود بر اولی برای کنترل عبارت سوم استفاده کنیم. ما به سادگی محاسبه می کنیم:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

ما قبلاً نمی توانستیم این کار را انجام دهیم زیرا هنوز آخرین بایت را نداشتیم حملات رمزنگاری: توضیحی برای ذهن های آشفته.

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

حملات رمزنگاری: توضیحی برای ذهن های آشفته

و بایت ماقبل آخر را بازیابی می کنیم حملات رمزنگاری: توضیحی برای ذهن های آشفته درست مثل آخرین بازسازی شد. با همان روحیه ادامه می دهیم: دو بایت آخر متن ساده را به تصحیح می کنیم 03 03، این حمله را برای بایت سوم از انتها تکرار می کنیم و به همین ترتیب در نهایت به طور کامل بازیابی می شود حملات رمزنگاری: توضیحی برای ذهن های آشفته.

بقیه متن چطور؟ لطفا توجه داشته باشید که ارزش حملات رمزنگاری: توضیحی برای ذهن های آشفته در واقع $inline$text{BLOCK_DECRYPT}(text{key},C_{247})$inline$ است. ما می توانیم هر بلوک دیگری را به جای آن قرار دهیم حملات رمزنگاری: توضیحی برای ذهن های آشفتهو حمله همچنان موفق خواهد بود. در واقع، می‌توانیم از سرور بخواهیم که $inline$text{BLOCK_DECRYPT}$inline$ را برای هر داده‌ای انجام دهد. در این مرحله، بازی تمام شده است - ما می‌توانیم هر متن رمزی را رمزگشایی کنیم (برای مشاهده این موضوع به نمودار رمزگشایی CBC نگاهی بیندازید؛ و توجه داشته باشید که IV عمومی است).

این روش خاص نقش مهمی در حمله اوراکل ایفا می کند که بعداً با آن مواجه خواهیم شد.

حمله کلسی

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

این نتیجه شگفت انگیز ناشی از دو اصل است. اول، یک همبستگی قوی بین طول متن ساده و طول متن رمزی وجود دارد. برای بسیاری از رمزها برابری دقیق است. دوم، هنگامی که فشرده سازی انجام می شود، همچنین یک همبستگی قوی بین طول پیام فشرده و میزان "نویز" متن ساده، یعنی نسبت کاراکترهای غیر تکراری وجود دارد (اصطلاح فنی "آنتروپی بالا" است. ).

برای مشاهده این اصل در عمل، دو متن ساده را در نظر بگیرید:

متن ساده 1: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

متن ساده 2: ATVXCAGTRSVPTVVULSJQHGEYCMQPCRQBGCYIXCFJGJ

بیایید فرض کنیم هر دو متن ساده فشرده و سپس رمزگذاری شده اند. شما دو متن رمزی به دست می آورید و باید حدس بزنید که کدام متن رمزی با متن ساده مطابقت دارد:

متن رمز 1: PVOVEYBPJDPVANEAWVGCIUWAABCIYIKOOURMYDTA

متن رمز 2: DWKJZXYU

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

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

دوباره، مانند سایر حملات اوراکل، ما این رابطه را داریم:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

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

برای نشان دادن اینکه چگونه چنین حمله ای ممکن است کار کند، بیایید از یک طرح فشرده سازی ساختگی استفاده کنیم: TOYZIP. به دنبال خطوطی از متن می‌گردد که قبلاً در متن ظاهر شده‌اند و آنها را با سه بایت نگهدارنده جایگزین می‌کند که نشان می‌دهد کجا می‌توان نمونه قبلی خط را پیدا کرد و چند بار در آنجا ظاهر می‌شود. مثلا خط helloworldhello را می توان در آن فشرده کرد helloworld[00][00][05] 13 بایت در مقایسه با 15 بایت اصلی.

فرض کنید یک مهاجم سعی می کند متن ساده یک فرم را بازیابی کند password=...، جایی که رمز عبور خود ناشناخته است. بر اساس مدل حمله کلسی، مهاجم می‌تواند از سرور بخواهد پیام‌های فرم را فشرده و سپس رمزگذاری کند (متن ساده و به دنبال آن حملات رمزنگاری: توضیحی برای ذهن های آشفته) کجا حملات رمزنگاری: توضیحی برای ذهن های آشفته - متن آزاد. هنگامی که سرور کار خود را به پایان رساند، طول نتیجه را گزارش می کند. حمله به این صورت است:

سارق: لطفاً متن ساده را بدون هیچ گونه بالشتکی فشرده و رمزگذاری کنید.

سرور: طول نتیجه 14.

سارق: لطفاً متن ساده ای را که به آن ضمیمه شده است فشرده و رمزگذاری کنید password=a.

سرور: طول نتیجه 18.

یادداشت های کرکر: [اصلی 14] + [سه بایت که جایگزین شد password=] + a

سارق: لطفاً متنی را که به آن اضافه شده است فشرده و رمزگذاری کنید password=b.

سرور: طول نتیجه 18.

سارق: لطفاً متنی را که به آن اضافه شده است فشرده و رمزگذاری کنید password=с.

سرور: طول نتیجه 17.

یادداشت های کرکر: [اصلی 14] + [سه بایت که جایگزین شد password=c]. این فرض می‌کند که متن اصلی حاوی رشته است password=c. یعنی رمز با یک حرف شروع می شود c

سارق: لطفاً متنی را که به آن اضافه شده است فشرده و رمزگذاری کنید password=сa.

سرور: طول نتیجه 18.

یادداشت های کرکر: [اصلی 14] + [سه بایت که جایگزین شد password=с] + a

سارق: لطفاً متنی را که به آن اضافه شده است فشرده و رمزگذاری کنید password=сb.

سرور: طول نتیجه 18.

(… چند وقت بعد…)

سارق: لطفاً متنی را که به آن اضافه شده است فشرده و رمزگذاری کنید password=со.

سرور: طول نتیجه 17.

یادداشت های کرکر: [اصلی 14] + [سه بایت که جایگزین شد password=co]. با استفاده از همین منطق، مهاجم به این نتیجه می رسد که رمز عبور با حروف شروع می شود co

و به همین ترتیب تا زمانی که کل رمز عبور بازیابی شود.

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

آسیب پذیری های برند: CRIME، POODLE، DROWN

در نهایت، پس از مطالعه دقیق تئوری، می‌توان مشاهده کرد که چگونه این تکنیک‌ها در حملات رمزنگاری واقعی اعمال می‌شوند.

جرم

حملات رمزنگاری: توضیحی برای ذهن های آشفتهاگر حمله به مرورگر و شبکه قربانی باشد، برخی آسان تر و برخی دشوارتر خواهند بود. به عنوان مثال، دیدن ترافیک قربانی آسان است: فقط با او در یک کافه با WiFi بنشینید. به همین دلیل، معمولاً به قربانیان بالقوه (یعنی همه) توصیه می شود از یک اتصال رمزگذاری شده استفاده کنند. ارسال درخواست‌های HTTP از طرف قربانی به برخی از سایت‌های شخص ثالث (مثلاً Google) دشوارتر است، اما همچنان ممکن است. مهاجم باید قربانی را با اسکریپتی که درخواست را ارسال می کند به یک صفحه وب مخرب فریب دهد. مرورگر وب به طور خودکار کوکی جلسه مربوطه را ارائه می دهد.

این شگفت انگیز به نظر می رسد. اگر باب به evil.com، می تواند اسکریپت موجود در این سایت فقط از گوگل بخواهد که رمز عبور باب را به آن ایمیل کند [email protected]? خوب، در تئوری بله، اما در واقعیت نه. این سناریو حمله جعل درخواست بین سایتی نامیده می شود (درخواست جعلی درخواست از طریق سایت، CSRF)، و در اواسط دهه 90 محبوبیت داشت. امروز اگر evil.com این ترفند را امتحان کنید، گوگل (یا هر وب سایتی که به خود احترام می گذارد) معمولاً با این جمله پاسخ می دهد: "عالی است، اما توکن CSRF شما برای این تراکنش... اوم... три триллиона и семь. لطفا این شماره را تکرار کنید.» مرورگرهای مدرن چیزی به نام «خط مشی منشأ یکسان» دارند که به موجب آن اسکریپت های سایت A به اطلاعات ارسال شده توسط وب سایت B دسترسی ندارند. بنابراین اسکریپت در evil.com می تواند درخواست ارسال کند google.com، اما نمی تواند پاسخ ها را بخواند یا در واقع تراکنش را کامل کند.

باید تاکید کنیم که مگر اینکه باب از یک اتصال رمزگذاری شده استفاده کند، همه این حفاظت ها بی معنی هستند. یک مهاجم به سادگی می تواند ترافیک باب را بخواند و کوکی جلسه Google را بازیابی کند. با این کوکی، او به سادگی یک برگه جدید گوگل را بدون ترک مرورگر خود باز می کند و بدون مواجهه با خط مشی های مزاحم مبدا مشابه باب را جعل می کند. اما، متأسفانه برای یک سارق، این کمتر و کمتر رایج می شود. کل اینترنت مدتهاست که به اتصالات رمزگذاری نشده اعلام جنگ کرده است و ترافیک خروجی باب چه بخواهد چه نخواهد احتمالاً رمزگذاری شده است. علاوه بر این، از همان ابتدای اجرای پروتکل، ترافیک نیز وجود داشت کوچک شد قبل از رمزگذاری؛ این روش معمول برای کاهش تأخیر بود.

اینجاست که مطرح می شود جرم (نسبت فشرده سازی Infoleak باعث شده است که نشت ساده از طریق نسبت تراکم آسان شود). این آسیب پذیری در سپتامبر 2012 توسط محققان امنیتی جولیانو ریزو و تای دوونگ فاش شد. ما قبلاً کل مبنای نظری را بررسی کرده ایم که به ما امکان می دهد بفهمیم آنها چه کاری و چگونه انجام دادند. یک مهاجم می‌تواند مرورگر باب را مجبور کند تا درخواست‌هایی را به Google ارسال کند و سپس به پاسخ‌های شبکه محلی به شکل فشرده و رمزگذاری‌شده گوش دهد. بنابراین ما داریم:

حملات رمزنگاری: توضیحی برای ذهن های آشفته

در اینجا مهاجم درخواست را کنترل می کند و به sniffer ترافیک از جمله اندازه بسته دسترسی دارد. سناریوی تخیلی کلسی جان گرفت.

با درک این نظریه، نویسندگان CRIME یک سوء استفاده ایجاد کردند که می‌تواند کوکی‌های جلسه را برای طیف گسترده‌ای از سایت‌ها، از جمله Gmail، Twitter، Dropbox و Github بدزدد. این آسیب‌پذیری بیشتر مرورگرهای وب مدرن را تحت تأثیر قرار داد و در نتیجه وصله‌هایی منتشر شد که به‌طور بی‌صدا ویژگی فشرده‌سازی را در SSL پنهان می‌کرد تا اصلاً مورد استفاده قرار نگیرد. تنها موردی که از این آسیب پذیری محافظت می شود اینترنت اکسپلورر محترم بود که هرگز از فشرده سازی SSL استفاده نکرد.

رنگ

حملات رمزنگاری: توضیحی برای ذهن های آشفتهدر اکتبر 2014، تیم امنیتی گوگل موجی در جامعه امنیتی ایجاد کرد. آنها توانستند از یک آسیب پذیری در پروتکل SSL که بیش از ده سال پیش اصلاح شده بود، سوء استفاده کنند.

به نظر می رسد که در حالی که سرورها TLSv1.2 جدید براق را اجرا می کنند، بسیاری از SSLv3 قدیمی برای سازگاری با اینترنت اکسپلورر 6 پشتیبانی می کنند. خرابکاری کاملاً سازماندهی شده پروتکل دست دادن و سرورها آماده بازگشت به SSLv3 خوب قدیمی هستند که اساساً تحقیقات امنیتی 15 سال گذشته را خنثی می کند.

برای بافت تاریخی، در اینجا خلاصه ای کوتاه از تاریخچه SSL تا نسخه 2 از متیو گرین آورده شده است:

امنیت لایه حمل و نقل (TLS) مهمترین پروتکل امنیتی در اینترنت است. [..] تقریباً هر تراکنشی که در اینترنت انجام می دهید به TLS بستگی دارد. [..] اما TLS همیشه TLS نبود. پروتکل حیات خود را در این سال آغاز کرد ارتباطات نت اسکیپ به نام "لایه سوکت های امن" یا SSL. شایعات حاکی از آن است که اولین نسخه SSL آنقدر وحشتناک بود که توسعه دهندگان تمام پرینت های کد را جمع آوری کردند و آنها را در یک محل دفن زباله مخفی در نیومکزیکو دفن کردند. در نتیجه، اولین نسخه SSL در دسترس عموم است نسخه SSL 2. این بسیار ترسناک است و [..] محصول اواسط دهه 90 بود که رمزنگاران مدرن آن را به عنوان "دوران تاریک رمزنگاری" بسیاری از فجیع ترین حملات رمزنگاری که امروزه درباره آنها می دانیم هنوز کشف نشده اند. در نتیجه، توسعه دهندگان پروتکل SSLv2 اساساً رها شدند تا راه خود را در تاریکی جستجو کنند و آنها با بسیاری از هیولاهای وحشتناک - به نفع ما و ناراحتی آنها، زیرا حملات به SSLv2 درس های ارزشمندی برای نسل بعدی پروتکل ها به جا گذاشت.

به دنبال این رویدادها، در سال 1996، یک نت اسکیپ ناامید پروتکل SSL را از ابتدا طراحی کرد. نتیجه SSL نسخه 3 بود که چندین مشکل امنیتی شناخته شده قبلی خود را برطرف کرد.

خوشبختانه برای سارقان، "چند" به معنای "همه" نیست. به طور کلی، SSLv3 تمام بلوک های ساختمانی لازم برای راه اندازی یک حمله Vodene را فراهم کرد. این پروتکل از یک رمز بلاک حالت CBC و یک طرح padding ناامن استفاده می کرد (این مورد در TLS تصحیح شد؛ بنابراین نیاز به یک حمله تنزل رتبه است). اگر طرح padding را در توصیف اصلی ما از حمله Vaudenay به خاطر دارید، طرح SSLv3 بسیار شبیه است.

اما، متأسفانه برای سارقان، "مشابه" به معنای "یکسان" نیست. طرح padding SSLv3 "N بایت تصادفی به دنبال عدد N" است. سعی کنید، تحت این شرایط، یک بلوک خیالی از متن رمز را انتخاب کنید و تمام مراحل طرح اصلی Vaudene را طی کنید: متوجه خواهید شد که حمله با موفقیت آخرین بایت را از بلوک متن ساده مربوطه استخراج می کند، اما جلوتر نمی رود. رمزگشایی هر 16 بایت از متن رمزی یک ترفند عالی است، اما یک پیروزی نیست.

در مواجهه با شکست، تیم گوگل به آخرین راه حل متوسل شد: آنها به مدل تهدید قدرتمندتری روی آوردند - مدلی که در CRIME استفاده می شد. با فرض اینکه مهاجم یک اسکریپت است که در تب مرورگر قربانی اجرا می شود و می تواند کوکی های جلسه را استخراج کند، حمله همچنان چشمگیر است. در حالی که مدل تهدید گسترده تر کمتر واقع بینانه است، در بخش قبل دیدیم که این مدل خاص امکان پذیر است.

با توجه به این قابلیت های مهاجم قدرتمندتر، حمله اکنون می تواند ادامه یابد. توجه داشته باشید که مهاجم می داند کوکی جلسه رمزگذاری شده کجا در سربرگ ظاهر می شود و طول درخواست HTTP قبل از آن را کنترل می کند. بنابراین، می تواند درخواست HTTP را طوری دستکاری کند که آخرین بایت کوکی با انتهای بلوک تراز شود. اکنون این بایت برای رمزگشایی مناسب است. شما به سادگی می توانید یک کاراکتر به درخواست اضافه کنید و بایت ماقبل آخر کوکی در همان مکان باقی می ماند و برای انتخاب با همان روش مناسب است. حمله به این ترتیب تا بازیابی کامل فایل کوکی ادامه می یابد. نام آن POODLE: Padding Oracle on Downgraded Legacy Encryption است.

غرق شدن

حملات رمزنگاری: توضیحی برای ذهن های آشفتههمانطور که اشاره کردیم، SSLv3 دارای ایراداتی بود، اما اساساً با نسخه قبلی خود متفاوت بود، زیرا SSLv2 درز محصول یک دوره متفاوت بود. در آنجا می توانید پیام را در وسط قطع کنید: соглашусь на это только через мой труп تبدیل شد به соглашусь на это; مشتری و سرور می توانند به صورت آنلاین ملاقات کنند، اعتماد ایجاد کنند و اسرار را در مقابل مهاجم رد و بدل کنند، که سپس به راحتی می تواند هر دو را جعل کند. همچنین مشکل رمزنگاری صادراتی وجود دارد که در مورد FREAK به آن اشاره کردیم. اینها سدوم و گومورا رمزنگاری شده بودند.

در مارس 2016، تیمی از محققان در زمینه های فنی مختلف گرد هم آمدند و به کشف شگفت انگیزی دست یافتند: SSLv2 هنوز در سیستم های امنیتی استفاده می شود. بله، مهاجمان دیگر نمی‌توانند جلسات TLS مدرن را به SSLv2 تنزل دهند، زیرا آن حفره پس از FREAK و POODLE بسته شد، اما همچنان می‌توانند به سرورها متصل شوند و جلسات SSLv2 را خودشان شروع کنند.

ممکن است بپرسید، چرا برای ما مهم است که آنها در آنجا چه می کنند؟ آنها یک جلسه آسیب پذیر دارند، اما نباید روی جلسات دیگر یا امنیت سرور تأثیر بگذارد - درست است؟ خوب، نه کاملا. بله، در تئوری باید اینطور باشد. اما نه - زیرا تولید گواهی‌های SSL بار خاصی را تحمیل می‌کند و در نتیجه بسیاری از سرورها از گواهی‌های مشابه و در نتیجه کلیدهای RSA یکسان برای اتصالات TLS و SSLv2 استفاده می‌کنند. بدتر از آن، به دلیل یک اشکال OpenSSL، گزینه "غیرفعال کردن SSLv2" در این پیاده سازی محبوب SSL در واقع کار نمی کند.

این یک حمله متقابل پروتکلی به TLS را امکان پذیر کرد غرق شدن (رمزگشایی RSA با رمزگذاری منسوخ و ضعیف شده، رمزگشایی RSA با رمزگذاری منسوخ و ضعیف شده). به یاد داشته باشید که این همان حمله کوتاه نیست. مهاجم نیازی ندارد به عنوان "مردی در وسط" عمل کند و نیازی ندارد مشتری را برای شرکت در یک جلسه ناامن درگیر کند. مهاجمان به سادگی یک جلسه SSLv2 ناامن را با سرور خود آغاز می کنند، به پروتکل ضعیف حمله می کنند و کلید خصوصی RSA سرور را بازیابی می کنند. این کلید برای اتصالات TLS نیز معتبر است و از این مرحله به بعد هیچ مقدار امنیت TLS مانع از به خطر افتادن آن نمی شود.

اما برای شکستن آن، به یک حمله کاری علیه SSLv2 نیاز دارید، که به شما امکان می دهد نه تنها ترافیک خاص، بلکه کلید سرور مخفی RSA را نیز بازیابی کنید. اگرچه این یک راه‌اندازی پیچیده است، اما محققان می‌توانند هر آسیب‌پذیری را که پس از SSLv2 کاملاً بسته شده است، انتخاب کنند. آنها در نهایت یک گزینه مناسب پیدا کردند: حمله بلیشن باکر که قبلاً به آن اشاره کردیم و در مقاله بعدی به تفصیل توضیح خواهیم داد. SSL و TLS در برابر این حمله محافظت می شوند، اما برخی از ویژگی های تصادفی SSL، همراه با کلیدهای کوتاه در رمزنگاری درجه صادرات، این امکان را فراهم می کند. یک پیاده سازی خاص از DROWN.

در زمان انتشار، 25 درصد از سایت‌های برتر اینترنت تحت تأثیر آسیب‌پذیری DROWN قرار گرفتند و این حمله می‌توانست با منابع متوسطی که حتی در اختیار هکرهای تنها و بدجنس قرار دارد، انجام شود. بازیابی کلید RSA سرور به هشت ساعت محاسبه و 440 دلار نیاز داشت و SSLv2 از منسوخ شدن به رادیواکتیو تبدیل شد.

صبر کن، در مورد Heartbleed چطور؟

این یک حمله رمزنگاری به معنای توصیف شده در بالا نیست. این یک سرریز بافر است.

بیایید کمی استراحت کنیم

ما با چند تکنیک اساسی شروع کردیم: نیروی brute force، interpolation، downgrading، cross-protocol و precomputation. سپس به یک تکنیک پیشرفته نگاه کردیم، شاید جزء اصلی حملات رمزنگاری مدرن: حمله اوراکل. ما زمان زیادی را صرف کشف آن کردیم - و نه تنها اصل اساسی، بلکه جزئیات فنی دو پیاده سازی خاص را نیز درک کردیم: حمله Vaudenay به حالت رمزگذاری CBC و حمله Kelsey به پروتکل های رمزگذاری پیش فشرده سازی.

در بررسی حملات کاهش رتبه و پیش محاسباتی، به طور خلاصه حمله FREAK را بیان کردیم که از هر دو روش استفاده می‌کند و سایت‌های هدف را به کلیدهای ضعیف کاهش می‌دهد و سپس از همان کلیدها استفاده مجدد می‌کند. برای مقاله بعدی، حمله Logjam (بسیار مشابه) را که الگوریتم های کلید عمومی را هدف قرار می دهد، ذخیره می کنیم.

سپس سه نمونه دیگر از کاربرد این اصول را بررسی کردیم. اول، CRIME و POODLE: دو حمله که متکی به توانایی مهاجم برای تزریق متن ساده دلخواه در کنار متن اصلی هدف است، سپس پاسخ های سرور را بررسی می کند و سپسبا استفاده از روش حمله اوراکل، از این اطلاعات پراکنده برای بازیابی تا حدی متن ساده استفاده کنید. CRIME مسیر حمله Kelsey به فشرده سازی SSL را طی کرد، در حالی که POODLE در عوض از یک نوع حمله Vaudenay به CBC با همان اثر استفاده کرد.

سپس توجه خود را به حمله بین پروتکلی DROWN معطوف کردیم که با استفاده از پروتکل قدیمی SSLv2 با سرور ارتباط برقرار می کند و سپس کلیدهای مخفی سرور را با استفاده از حمله Bleichenbacher بازیابی می کند. ما در حال حاضر از جزئیات فنی این حمله صرف نظر کرده ایم. مانند Logjam، باید منتظر بمانیم تا درک خوبی از سیستم‌های رمزنگاری کلید عمومی و آسیب‌پذیری‌های آن‌ها داشته باشیم.

در مقاله بعدی در مورد حملات پیشرفته مانند meet-in-the-middle، cryptanalysis تفاضلی و حملات تولد صحبت خواهیم کرد. بیایید یک حمله سریع به حملات کانال جانبی داشته باشیم و سپس به قسمت سرگرم کننده آن برویم: سیستم های رمزگذاری کلید عمومی.

منبع: www.habr.com

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