Криптографски напади: објаснување за збунети умови

Кога ќе го слушнете зборот „криптографија“, некои луѓе се сеќаваат на нивната лозинка за WiFi, зелениот катанец до адресата на нивната омилена веб-страница и колку е тешко да се влезе во е-поштата на некој друг. Други потсетуваат на низа ранливости во последниве години со значајни кратенки (DOWN, FREAK, POODLE...), стилски логоа и предупредување за итно ажурирање на вашиот прелистувач.

Криптографијата опфаќа се, но суштината во друга. Поентата е дека постои тенка линија помеѓу едноставното и сложеното. Некои работи се лесни за правење, но тешко се спојуваат повторно, како кршење јајце. Другите работи се лесни за правење, но тешко се враќаат кога недостасува мал, важен, клучен дел: на пример, отворање заклучена врата кога „клучниот дел“ е клучот. Криптографијата ги проучува овие ситуации и како тие можат да се користат во пракса.

Во последниве години, колекцијата на криптографски напади се претвори во зоолошка градина со светкави логоа, исполнети со формули од научни трудови и предизвикаа општо мрачно чувство дека сè е скршено. Но, всушност, многу од нападите се засноваат на неколку општи принципи, а бескрајните страници со формули честопати се сведуваат на лесно разбирливи идеи.

Во оваа серија на написи, ќе ги разгледаме различните типови на криптографски напади, со акцент на основните принципи. Општо земено и не точно по овој редослед, но ќе го покриеме следново:

  • Основни стратегии: брутална сила, анализа на фреквенција, интерполација, деградирање и вкрстени протоколи.
  • Брендирани ранливости: ЧУД, КРИМИНАЛ, ПУДЛА, УДАВИ, Лоѓам.
  • Напредни стратегии: напади на пророк (напад Воденет, напад на Келси); метод на средба во средината, роденденски напад, статистичка пристрасност (диференцијална криптоанализа, интегрална криптоанализа итн.).
  • Напади на странични канали и нивните блиски роднини, методи за анализа на неуспех.
  • Напади на криптографијата со јавен клуч: корен од коцка, емитување, поврзана порака, напад на бакарот, алгоритам Полиг-Хелман, сито со броеви, напад на Винер, напад на Блајхенбахер.

Оваа конкретна статија го опфаќа горенаведениот материјал до нападот на Келси.

Основни стратегии

Следниве напади се едноставни во смисла дека можат да бидат речиси целосно објаснети без многу технички детали. Ајде да го објасниме секој тип на напад наједноставно, без да навлегуваме во сложени примери или случаи на напредна употреба.

Некои од овие напади во голема мера станаа застарени и не се користат многу години. Други се олдтајмери ​​кои сè уште редовно се прикрадуваат на доверливите развивачи на криптосистеми во 21 век. Ерата на модерната криптографија може да се смета дека започнала со појавата на IBM DES, првата шифра која ги издржа сите напади на оваа листа.

Едноставна брутална сила

Криптографски напади: објаснување за збунети умовиШемата за шифрирање се состои од два дела: 1) функцијата за шифрирање, која зема порака (обичен текст) комбинирана со клуч, а потоа создава шифрирана порака - шифриран текст; 2) функција за дешифрирање која ги зема шифрениот текст и клучот и произведува обичен текст. И шифрирањето и дешифрирањето мора лесно да се пресметаат со клучот - и тешко да се пресметаат без него.

Да претпоставиме дека го гледаме шифрениот текст и се обидуваме да го дешифрираме без никакви дополнителни информации (ова се нарекува напад само за шифриран текст). Ако некако магично го најдеме точниот клуч, лесно можеме да потврдиме дека е навистина точен, ако резултатот е разумна порака.

Забележете дека овде има две имплицитни претпоставки. Прво, знаеме како да извршиме дешифрирање, односно како функционира криптосистемот. Ова е стандардна претпоставка кога се разговара за криптографијата. Криењето на деталите за имплементацијата на шифрата од напаѓачите може да изгледа како дополнителна безбедносна мерка, но штом напаѓачот ќе ги открие овие детали, оваа дополнителна безбедност тивко и неповратно се губи. Така е Керхофсов принцип: Системот што паѓа во рацете на непријателот не треба да предизвикува непријатности.

Второ, претпоставуваме дека точниот клуч е единствениот клуч што ќе доведе до разумно дешифрирање. Ова е исто така разумна претпоставка; се задоволува ако шифрениот текст е многу подолг од клучот и е читлив. Ова е обично она што се случува во реалниот свет, освен огромни непрактични клучеви или други шеговити кои најдобро се оставаат настрана (ако не ви се допаѓа што го прескокнавме објаснувањето, видете ја теоремата 3.8 тука).

Со оглед на горенаведеното, се појавува стратегија: проверете го секој можен клуч. Ова се нарекува брутална сила, а таков напад гарантирано ќе работи против сите практични шифри - на крајот. На пример, брутална сила е доволна за хакирање Цезар шифра, древна шифра каде што клучот е една буква од азбуката, што подразбира нешто повеќе од 20 можни клучеви.

За жал за криптоаналитичарите, зголемувањето на големината на клучот е добра одбрана од брутална сила. Како што се зголемува големината на клучот, бројот на можни клучеви се зголемува експоненцијално. Со модерни големини на клучеви, едноставната брутална сила е целосно непрактична. За да разбереме што мислиме, да го земеме најбрзиот познат суперкомпјутер од средината на 2019 година: Самитот од IBM, со врвни перформанси од околу 1017 операции во секунда. Денес, типичната должина на клучот е 128 бита, што значи 2128 можни комбинации. За да пребарува низ сите копчиња, на суперкомпјутерот Summit ќе му треба време кое е приближно 7800 пати повеќе од староста на Универзумот.

Дали бруталната сила треба да се смета за историски куриозитет? Воопшто не: тоа е неопходна состојка во готвачот за криптоанализа. Ретко, шифрите се толку слаби што може да се скршат само со паметен напад, без употреба на сила до еден или друг степен. Многу успешни хакери користат алгоритамски метод за прво да ја ослабат целната шифра, а потоа да извршат напад со брутална сила.

Анализа на фреквенција

Криптографски напади: објаснување за збунети умовиПовеќето текстови не се глупости. На пример, во англиските текстови има многу букви „е“ и статии „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 thAN ALe FleAUt GR WN OGQL ZDWBGEGZDO

Понатаму да го претпоставиме тоа L соответствует r, A - a и така натаму. Веројатно ќе бидат потребни неколку обиди, но во споредба со напад со целосна брутална сила, овој напад го враќа оригиналниот текст за кратко време:

има повеќе работи на небото и земјата хорацио отколку што се сонува во вашата филозофија

За некои, решавањето на такви „криптограми“ е возбудливо хоби.

Идејата за анализа на фреквенцијата е пофундаментална отколку што изгледа на прв поглед. И тоа се однесува на многу посложени шифри. Низ историјата, различни дизајни на шифри се обиделе да се спротивстават на таков напад користејќи „полиалфабетска замена“. Овде, за време на процесот на шифрирање, табелата за замена на буквите се менува на сложени, но предвидливи начини кои зависат од клучот. Сите овие шифри се сметаа дека е тешко да се скршат во исто време; а сепак скромната анализа на фреквенцијата на крајот ги порази сите.

Најамбициозната полиазбучна шифра во историјата, а веројатно и најпознатата, беше шифрата Енигма од Втората светска војна. Беше релативно сложен во споредба со неговите претходници, но по многу напорна работа, британските криптоаналитичари го скршија користејќи анализа на фреквенцијата. Се разбира, тие не можеа да развијат елегантен напад како оној прикажан погоре; тие мораа да споредат познати парови на обичен текст и шифриран текст (т.н. „напад на обичен текст“), дури и да ги испровоцираат корисниците на Енигма да шифрираат одредени пораки и да го анализираат резултатот („одбраниот напад на обичен текст“). Но, тоа не ја олесни судбината на поразените непријателски војски и потонати подморници.

По овој триумф, анализата на фреквенцијата исчезна од историјата на криптоанализата. Шифрите во модерното дигитално доба се дизајнирани да работат со битови, а не со букви. Уште поважно, овие шифри беа дизајнирани со мрачно разбирање на она што подоцна стана познато како Шнајров закон: Секој може да создаде алгоритам за шифрирање што самиот не може да го скрши. Тоа не е доволно за системот за шифрирање се чинеше тешко: за да ја докаже својата вредност, мора да биде подложен на безмилосен безбедносен преглед од многу криптоаналитичари кои ќе дадат се од себе за да ја пробијат шифрата.

Прелиминарни пресметки

Криптографски напади: објаснување за збунети умовиЗемете го хипотетичкиот град Преком Хајтс, со население од 200. Секој дом во градот содржи вредни предмети во просек од 000 долари, но не повеќе од 30 долари. Според експертските анализи, бравата од класата Којот може да се скрши само со многу сложена хипотетичка машина, за чие создавање се потребни околу пет години и инвестиција од 000 долари. Дали градот е безбеден?

Најверојатно не. На крајот, ќе се појави прилично амбициозен криминалец. Тој ќе расудува вака: „Да, ќе направам големи трошоци однапред. Пет години чекање на пациентот и 50 долари. Но, кога ќе завршам, ќе имам пристап до целото богатство на овој град. Ако ги играм моите карти правилно, оваа инвестиција ќе се исплати многукратно“.

Истото важи и за криптографијата. Нападите против одредена шифра се предмет на безмилосна анализа на трошоците и придобивките. Ако односот е поволен, нападот нема да се случи. Но, нападите кои работат против многу потенцијални жртви одеднаш речиси секогаш се исплатат, во тој случај најдобрата дизајнерска практика е да се претпостави дека започнале од првиот ден. Ние во суштина имаме криптографска верзија на Марфиовиот закон: „Сè што всушност може да го скрши системот ќе го скрши системот“.

Наједноставниот пример на криптосистем кој е ранлив на напад на предпресметување е шифрата без клуч без константен клуч. Ова беше случај со Цезаровата шифра, што едноставно ја поместува секоја буква од азбуката три букви нанапред (табелата е обвиткана, така што последната буква од азбуката е шифрирана трета). Тука повторно стапува во игра принципот Керхофс: штом системот е хакиран, тој е хакиран засекогаш.

Концептот е едноставен. Дури и почетниот развивач на криптосистем, веројатно ќе ја препознае заканата и ќе се подготви соодветно. Гледајќи ја еволуцијата на криптографијата, таквите напади беа несоодветни за повеќето шифри, од првите подобрени верзии на шифрата Цезар до падот на полиазбучните шифри. Таквите напади се вратија само со доаѓањето на модерната ера на криптографијата.

Ова враќање се должи на два фактори. Прво, конечно се појавија доволно сложени криптосистеми, каде што можноста за експлоатација по хакирањето не беше очигледна. Второ, криптографијата стана толку широко распространета што милиони лаици секој ден носеа одлуки за тоа каде и кои делови од криптографијата да се користат повторно. Помина извесно време пред експертите да ги сфатат ризиците и да го алармираат.

Запомнете го нападот за предпресметување: на крајот од статијата ќе погледнеме два криптографски примери од реалниот живот каде што одигра важна улога.

Интерполација

Еве го познатиот детектив Шерлок Холмс, кој врши интерполациски напад врз несреќниот д-р Вотсон:

Веднаш погодив дека си дојден од Авганистан... Мојот циклус на мисли беше следниов: „Овој човек е лекар по тип, но има воено потекло. Значи, воен лекар. Само што пристигна од тропските предели - лицето му е темно, но ова не е природната нијанса на неговата кожа, бидејќи неговите зглобови се многу побели. Лицето е ослабено - очигледно, тој многу страдаше и страдаше од болест. Бил ранет во левата рака - ја држи неподвижно и малку неприродно. Каде во тропските предели би можел англиски воен лекар да издржи тешкотии и да се повреди? Се разбира, во Авганистан“. Целиот воз на мисли не траеше ни секунда. И така реков дека си дојден од Авганистан и се изненадивте.

Холмс можеше да извлече многу малку информации од секој доказ поединечно. Својот заклучок можел да го донесе само ако ги разгледа сите заедно. Нападот за интерполација функционира слично со испитување на познати парови на обичен и шифриран текст кои произлегуваат од истиот клуч. Од секој пар се извлекуваат поединечни набљудувања кои овозможуваат да се извлече општ заклучок за клучот. Сите овие заклучоци се нејасни и изгледаат бескорисни додека наеднаш не достигнат критична маса и не доведат до единствениот можен заклучок: колку и да е неверојатен, мора да е вистинит. По ова, или клучот се открива, или процесот на дешифрирање станува толку рафиниран што може да се реплицира.

Ајде да илустрираме со едноставен пример како функционира интерполацијата. Да речеме дека сакаме да го читаме личниот дневник на нашиот непријател, Боб. Тој го шифрира секој број во својот дневник користејќи едноставен криптосистем за кој дознал од реклама во списанието „A Mock of Cryptography“. Системот работи вака: Боб избира два броја што му се допаѓаат: Криптографски напади: објаснување за збунети умови и Криптографски напади: објаснување за збунети умови. Отсега па натаму, за шифрирање на кој било број Криптографски напади: објаснување за збунети умови, пресметува Криптографски напади: објаснување за збунети умови. На пример, ако Боб избрал Криптографски напади: објаснување за збунети умови и Криптографски напади: објаснување за збунети умови, потоа бројот Криптографски напади: објаснување за збунети умови ќе биде шифрирана како Криптографски напади: објаснување за збунети умови.

Да речеме дека на 28 декември забележавме дека Боб нешто гребе во својот дневник. Кога ќе заврши, тивко ќе го земеме и ќе го гледаме последниот запис:

Датум: 235/520

Драг дневнику,

Денес беше добар ден. Преку 64 денес имам состанок со Алиса, која живее во стан 843. Навистина мислам дека таа може да биде 26!

Бидејќи сме многу сериозни да го следиме Боб на неговиот состанок (и двајцата сме 15 години во ова сценарио), од клучно значење е да се знае датумот, како и адресата на Алис. За среќа, забележуваме дека криптосистемот на Боб е ранлив на напад на интерполација. Можеби не знаеме Криптографски напади: објаснување за збунети умови и Криптографски напади: објаснување за збунети умови, но го знаеме денешниот датум, така што имаме два пара обичен текст-шифриран текст. Имено, тоа го знаеме Криптографски напади: објаснување за збунети умови шифрирана во Криптографски напади: објаснување за збунети умовиИ Криптографски напади: објаснување за збунети умови - во Криптографски напади: објаснување за збунети умови. Еве што ќе запишеме:

Криптографски напади: објаснување за збунети умови

Криптографски напади: објаснување за збунети умови

Бидејќи имаме 15 години, веќе знаеме за систем од две равенки со две непознати, што во оваа ситуација е доволно да се најде Криптографски напади: објаснување за збунети умови и Криптографски напади: објаснување за збунети умови без никакви проблеми. Секој пар обичен текст-шифриран текст поставува ограничување на клучот на Боб и двете ограничувања заедно се доволни за целосно враќање на клучот. Во нашиот пример одговорот е Криптографски напади: објаснување за збунети умови и Криптографски напади: објаснување за збунети умови (на Криптографски напади: објаснување за збунети умови Криптографски напади: објаснување за збунети умови, така 26 во дневникот одговара на зборот „оној“, односно „ист“ - прибл. лента).

Нападите со интерполација, се разбира, не се ограничени на такви едноставни примери. Секој криптосистем што се сведува на добро разбран математички објект и листа на параметри е изложен на ризик од напад на интерполација - колку е поразбирлив објектот, толку е поголем ризикот.

Новодојденците често се жалат дека криптографијата е „уметност на дизајнирање нешта што е можно погрди“. Најверојатно во голема мера се виновни нападите со интерполација. Боб може или да користи елегантен математички дизајн или да го задржи својот состанок со Алиса приватен - но за жал, обично не можете да го имате на двата начина. Ова ќе стане многу јасно кога на крајот ќе дојдеме до темата за криптографија со јавен клуч.

Вкрстен протокол/намалување

Криптографски напади: објаснување за збунети умовиВо Now You See Me (2013), група илузионисти се обидуваат да го измамат корумпираниот осигурителен магнат Артур Треслер од целото негово богатство. За да добијат пристап до банкарската сметка на Артур, илузионистите мора или да ги дадат неговото корисничко име и лозинка или да го принудат лично да се појави во банката и да учествува во шемата.

Двете опции се многу тешки; Момците се навикнати да настапуваат на сцена, а не да учествуваат во разузнавачки операции. Така, тие ја избираат третата можна опција: нивниот соучесник се јавува во банката и се преправа дека е Артур. Банката поставува неколку прашања за да го потврди идентитетот, како што се името на вујкото и името на првото милениче; нашите херои однапред тие лесно ги извлекуваат овие информации од Артур користејќи паметен социјален инженеринг. Од овој момент, одличната безбедност на лозинката повеќе не е важна.

(Според една урбана легенда што ние лично ја потврдивме и потврдивме, криптографот Ели Бихам еднаш наишол на шалтер во банка кој инсистирал да постави безбедносно прашање. Кога шалтерката го прашала името на неговата баба по мајка, Бихам почнал да диктира: „Капитал Х. мали y, три...“).

Истото е и во криптографијата, ако два криптографски протоколи се користат паралелно за да се заштити истото средство, а едниот е многу послаб од другиот. Резултирачкиот систем станува ранлив на вкрстен протоколски напад, каде што е нападнат послаб протокол со цел да се дојде до наградата без да се допре посилниот.

Во некои сложени случаи, не е доволно едноставно да го контактирате серверот користејќи послаб протокол, туку бара неволно учество на легитимен клиент. Ова може да се организира со помош на таканаречениот напад за намалување на квалитетот. За да го разбереме овој напад, да претпоставиме дека нашите илузионисти имаат потешка задача отколку во филмот. Да претпоставиме дека вработен во банка (благајник) и Артур наишле на некои непредвидени околности, што резултирало со следниот дијалог:

Крадец: Здраво? Ова е Артур Треслер. Би сакал да ја ресетирам мојата лозинка.

Касиерка: Одлично. Ве молиме погледнете ја вашата лична книга со тајни кодови, страница 28, збор 3. Сите следни пораки ќе бидат шифрирани со користење на овој специфичен збор како клуч. PQJGH. LOTJNAM PGGY MXVRL ZZLQ SRIU HHNMLPPPPV…

Крадец: Еј, еј, чекај, чекај. Дали е ова навистина потребно? Зарем не можеме да зборуваме како нормални луѓе?

Касиерка: Не препорачувам да го правите ова.

Крадец: Само... погледнете, имав лош ден, добро? Јас сум ВИП клиент и не сум расположен да копам низ овие глупави шифри.

Касиерка: Добро. Ако инсистирате, господине Треслер. Што сакаш?

Крадец: Ве молам, би сакал да ги донирам сите мои пари на Националниот фонд за жртви на Артур Треслер.

(Пауза).

Касиерка: Дали е сега јасно. Ве молиме наведете го вашиот PIN за големи трансакции.

Крадец: Моето што?

Касиерка: На Ваше лично барање, за трансакции од оваа големина е потребен ПИН за големи трансакции. Овој код ви беше даден кога ја отворивте вашата сметка.

Крадец:... Го изгубив. Дали е ова навистина потребно? Не можеш само да го одобриш договорот?

Касиерка: бр. Жал ми е, г-дин Треслер. Повторно, ова е безбедносната мерка што ја побаравте. Доколку сакате, можеме да испратиме нов ПИН-код до вашето поштенско сандаче.

Нашите херои ја одложуваат операцијата. Тие прислушуваат неколку големи трансакции на Треслер, надевајќи се дека ќе го слушнат ПИН-от; но секој пат кога разговорот се претвора во шифрирана глупост пред да се каже нешто интересно. Конечно, еден убав ден, планот е ставен на дело. Трпеливо го чекаат моментот кога Треслер треба да направи голема трансакција преку телефон, тој се качува на линија, а потоа ...

Треслер: Здраво. Би сакал да завршам трансакција од далечина, ве молам.

Касиерка: Одлично. Ве молиме погледнете ја вашата лична книга со тајни шифри, страница...

(Провалникот го притиска копчето; гласот на касиерот се претвора во неразбирлив шум).

Касиерка: - #@$#@$#*@$$@#* ќе биде шифрирана со овој збор како клуч. AAAYRR PLRQRZ MMNJK LOJBAN…

Треслер: Извини, не разбрав баш. Повторно? На која страница? Кој збор?

Касиерка: Ова е страницата @#$@#*$)#*#@()#@$(#@*$(#@*.

Треслер: Што?

Касиерка: Збор број дваесет @$#@$#%#$.

Треслер: Сериозно! Веќе доволно! Вие и вашиот безбедносен протокол сте некој вид циркус. Знам дека можеш нормално да разговараш со мене.

Касиерка: Не препорачувам…

Треслер: И не ве советувам да ми го губите времето. Не сакам да слушам повеќе за ова додека не ги решите проблемите со телефонската линија. Можеме ли да го финализираме овој договор или не?

Касиерка:… Да. Добро. Што сакаш?

Треслер: Би сакал да префрлам 20 долари на Lord Business Investments, број на сметка...

Касиерка: Една минута Ве молам. Ова е голема работа. Ве молиме наведете го вашиот PIN за големи трансакции.

Треслер: Што? О, точно. 1234 година.

Еве напад надолу. Послабиот протокол „само зборувај директно“ беше замислен како опција во итен случај. А сепак еве сме.

Можеби ќе се запрашате кој со здрав ум би дизајнирал вистински „безбеден додека не се побара поинаку“ систем како оној опишан погоре. Но, исто како што измислената банка презема ризици за да ги задржи клиентите кои не ја сакаат криптографијата, системите генерално често гравитираат кон барања кои се рамнодушни или дури и целосно непријателски настроени кон безбедноста.

Токму тоа се случи со протоколот SSLv2 во 1995 година. Владата на САД одамна почна да гледа на криптографијата како на оружје што најдобро се чува подалеку од странските и домашните непријатели. Парчињата код беа поединечно одобрени за извоз од Соединетите Држави, често со услов алгоритмот намерно да биде ослабен. Netscape, развивачот на најпопуларниот прелистувач, Netscape Navigator, доби дозвола за SSLv2 само со инхерентно ранливиот 512-битен RSA клуч (и 40-битен за RC4).

До крајот на милениумот, правилата беа опуштени и пристапот до модерното шифрирање стана широко достапен. Сепак, клиентите и серверите со години поддржуваат ослабена „извозна“ криптографија поради истата инерција што ја одржува поддршката за кој било наследен систем. Клиентите веруваа дека може да наидат на сервер кој не поддржува ништо друго. Серверите го направија истото. Се разбира, протоколот SSL диктира дека клиентите и серверите никогаш не треба да користат слаб протокол кога е достапен подобар. Но, истата премиса важеше за Треслер и неговата банка.

Оваа теорија се најде во два напади од висок профил кои ја разнишаа безбедноста на протоколот SSL во 2015 година, откриени од истражувачите на Мајкрософт и ИНРИЈА. Прво, деталите за нападот FREAK беа откриени во февруари, а три месеци подоцна следеше друг сличен напад наречен Logjam, за кој ќе разговараме подетално кога ќе преминеме на нападите на криптографијата со јавен клуч.

Криптографски напади: објаснување за збунети умовиРанливост СУДЕЕ (исто така познат како „Smack TLS“) излезе на виделина кога истражувачите ги анализираа имплементациите на клиент/сервер на TLS и открија љубопитна грешка. Во овие имплементации, ако клиентот дури и не побара да користи слаба извозна криптографија, но серверот сепак одговара со такви клучеви, клиентот вели „О, добро“ и се префрла на слабиот пакет на шифри.

Во тоа време, извозната криптографија нашироко се сметаше за застарена и неограничена, така што нападот беше целосен шок и влијаеше на многу важни домени, вклучувајќи ги Белата куќа, IRS и сајтовите на НСА. Уште полошо, излегува дека многу ранливи сервери ги оптимизирале перформансите со повторна употреба на истите клучеви наместо да генерираат нови за секоја сесија. Ова овозможи, по намалувањето на протоколот, да се изврши напад пред пресметување: кршењето на еден клуч остана релативно скапо (100 долари и 12 часа во моментот на објавување), но практичните трошоци за напад на врската беа значително намалени. Доволно е еднаш да го изберете клучот на серверот и да ја пробиете шифрирањето за сите наредни врски од тој момент.

И пред да продолжиме, има еден напреден напад што треба да се спомене...

Oracle напад

Криптографски напади: објаснување за збунети умовиМокси Марлинспајк најдобро познат како татко на апликацијата за крипто пораки Signal со вкрстени платформи; но ние лично ни се допаѓа една од неговите помалку познати иновации - принцип на криптографска пропаст (Криптографски принцип на пропаст). Малку да парафразираме, можеме да го кажеме ова: „Ако протоколот функционира било кој врши криптографска операција на порака од потенцијално злонамерен извор и се однесува различно во зависност од резултатот, таа е осудена на пропаст“. Или во поостра форма: „Не земајте информации од непријателот за обработка, а ако треба, тогаш барем не покажувајте го резултатот“.

Да ги оставиме настрана прелевањата на баферот, командните инјекции и слично; тие се надвор од опсегот на оваа дискусија. Прекршувањето на „принципот на пропаст“ доведува до сериозни хакирање на криптографијата поради фактот што протоколот се однесува точно како што се очекуваше.

Како пример, да земеме фиктивен дизајн со ранлива шифра за замена, а потоа да покажеме можен напад. Иако веќе видовме напад на шифра за замена користејќи анализа на фреквенцијата, тоа не е само „друг начин да се скрши истата шифра“. Напротив, Oracle нападите се многу помодерен изум, применлив во многу ситуации каде што анализата на фреквенцијата не успева, а ќе видиме демонстрација за тоа во следниот дел. Овде едноставната шифра е избрана само за да се направи примерот појасен.

Така, Алис и Боб комуницираат користејќи едноставна шифра за замена користејќи клуч што им е познат само на нив. Тие се многу строги за должината на пораките: тие се долги точно 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 режим на шифрирање“ и со одредена популарна шема за полнење, во основа еквивалентна на онаа во сценариото Alice.

Исто така во 2002 година, американскиот криптограф Џон Келси - коавтор Твофиш — предложи различни напади на oracle на системи кои ги компресираат пораките и потоа ги шифрираат. Најзабележителен меѓу нив беше нападот што го искористи фактот дека често е можно да се заклучи оригиналната должина на обичниот текст од должината на шифрениот текст. Теоретски, ова овозможува напад на пророк кој враќа делови од оригиналниот обичен текст.

Подолу даваме подетален опис на нападите на Vaudenay и Kelsey (ќе дадеме подетален опис на нападот Bleichenbacher кога ќе преминеме на напади врз криптографијата со јавен клуч). И покрај нашите најдобри напори, текстот станува донекаде технички; па ако горенаведеното е доволно за вас, прескокнете ги следните два дела.

Нападот на Водене

За да го разбереме нападот на Vaudenay, прво треба да зборуваме малку повеќе за блок шифрите и режимите на шифрирање. „Блок шифра“ е, како што споменавме, шифра која зема клуч и влез со одредена фиксна должина („должина на блок“) и произведува шифриран блок со иста должина. Блок шифрите се широко користени и се сметаат за релативно безбедни. Сега пензионираниот DES, кој се смета за прва модерна шифра, беше блок шифра. Како што споменавме погоре, истото важи и за AES, кој е широко користен денес.

За жал, блок-шифрите имаат една очигледна слабост. Типичната големина на блокот е 128 бита или 16 знаци. Очигледно, модерната криптографија бара работа со поголеми влезни податоци, и тука влегуваат во игра режимите на шифрирање. Режимот на шифрирање во суштина е хакирање: тоа е начин некако да се примени блок-шифра која прифаќа само внесување со одредена големина на влез со произволна должина.

Нападот на Водене е фокусиран на популарниот начин на работа CBC (Cipher Block Chaining). Нападот ја третира основната блок-шифра како магична, непробојна црна кутија и целосно ја заобиколува нејзината безбедност.

Еве дијаграм што покажува како функционира режимот CBC:

Криптографски напади: објаснување за збунети умови

Криптографски напади: објаснување за збунети умови

Заокружениот плус ја означува операцијата XOR (ексклузивно ИЛИ). На пример, вториот блок од шифриран текст е примен:

  1. Со извршување на операција XOR на вториот блок со обичен текст со првиот блок за шифриран текст.
  2. Шифрирање на добиениот блок со блок шифра користејќи клуч.

Бидејќи CBC толку многу ја користи бинарната операција XOR, ајде малку да се потсетиме на некои од неговите својства:

  • Идемпотенција: Криптографски напади: објаснување за збунети умови
  • Комутативност: Криптографски напади: објаснување за збунети умови
  • Асоцијативност: Криптографски напади: објаснување за збунети умови
  • Самореверзибилност: Криптографски напади: објаснување за збунети умови
  • Големина на бајт: бајт n од Криптографски напади: објаснување за збунети умови = (бајт n од Криптографски напади: објаснување за збунети умови) Криптографски напади: објаснување за збунети умови (бајт n од Криптографски напади: објаснување за збунети умови)

Вообичаено, овие својства имплицираат дека ако имаме равенка која вклучува операции на XOR и една непозната, таа може да се реши. На пример, ако го знаеме тоа Криптографски напади: објаснување за збунети умови со непознатото Криптографски напади: објаснување за збунети умови и познати Криптографски напади: објаснување за збунети умови и Криптографски напади: објаснување за збунети умови, тогаш можеме да се потпреме на гореспоменатите својства за да ја решиме равенката за Криптографски напади: објаснување за збунети умови. Со примена на XOR на двете страни од равенката со Криптографски напади: објаснување за збунети умови, добиваме Криптографски напади: објаснување за збунети умови. Сето ова ќе стане многу релевантно во еден момент.

Има две мали разлики и една голема разлика помеѓу нашето сценарио Алиса и нападот на Воденеј. Две помали:

  • Во сценариото, Алиса очекуваше обичните текстови да завршат со ликовите a, bb, ccc и така натаму. Во нападот Wodene, жртвата наместо тоа, очекува обичните текстови да завршуваат N пати со N бајт (т.е. хексадецимално 01 или 02 02, или 03 03 03, и така натаму). Ова е чисто козметичка разлика.
  • Во сценариото на Алис, беше лесно да се каже дали Алис ја прифатила пораката со одговорот „Неточен кукла текст“. Во нападот на Водене, потребна е поголема анализа и важно е прецизното спроведување на страната на жртвата; но за да бидеме за кратко, да го земеме како предвидено дека оваа анализа е сè уште можна.

Главната разлика:

  • Бидејќи не го користиме истиот криптосистем, односот помеѓу бајтите на шифриран текст контролиран од напаѓачот и тајните (клуч и обичен текст) очигледно ќе биде различен. Затоа, напаѓачот ќе мора да користи различна стратегија при креирање шифрирани текстови и интерпретација на одговорите на серверот.

Оваа главна разлика е последниот дел од сложувалката за да се разбере нападот на Vaudenay, па ајде да одвоиме малку време да размислиме зошто и како на прво место може да се монтира напад на пророк врз CBC.

Да претпоставиме дека ни е даден CBC шифриран текст од 247 блокови и сакаме да го дешифрираме. Можеме да испраќаме лажни пораки до серверот, исто како што можевме да испраќаме лажни пораки до Алис порано. Серверот ќе ги дешифрира пораките за нас, но нема да ја прикаже дешифрирањето - наместо тоа, повторно, како и кај Алис, серверот ќе пријави само еден дел од информациите: дали обичниот текст има валидно полнење или не.

Сметајте дека во сценариото на Алис ги имавме следниве односи:

$$display$$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key}) = text{plaintext}$$display$$

Да го наречеме ова „Алисова равенка“. Го контролиравме шифрениот текст; серверот (Алиса) протече нејасни информации за примениот обичен текст; и тоа ни овозможи да извлечеме информации за последниот фактор - клучот. По аналогија, ако можеме да најдеме таква врска за скриптата CBC, можеби ќе можеме да извлечеме некои тајни информации и таму.

За среќа, навистина постојат врски што можеме да ги искористиме. Размислете за излезот од последниот повик за дешифрирање на блок шифра и означете ги овие податоци како Криптографски напади: објаснување за збунети умови. Означуваме и блокови од обичен текст Криптографски напади: објаснување за збунети умови и блокови за шифриран текст Криптографски напади: објаснување за збунети умови. Погледнете го дијаграмот на CBC и забележете што се случува:

Криптографски напади: објаснување за збунети умови

Да го наречеме ова „равенка на ПС“.

Во сценариото на Алиса, со следење на шифрениот текст и гледајќи го соодветното протекување на обичен текст, можевме да извршиме напад што го врати третиот член во равенката - клучот. Во сценариото за CBC, го следиме и шифрениот текст и набљудуваме протекување информации на соодветниот обичен текст. Ако важи аналогијата, можеме да добиеме информации за Криптографски напади: објаснување за збунети умови.

Да претпоставиме дека навистина сме обновени Криптографски напади: објаснување за збунети умови, што тогаш? Па, тогаш можеме да го испечатиме целиот последен блок од обичен текст одеднаш (Криптографски напади: објаснување за збунети умови), едноставно со внесување Криптографски напади: објаснување за збунети умови (што го имаме) и
примени Криптографски напади: објаснување за збунети умови во CBC равенката.

Сега, кога сме оптимисти за целокупниот план за напад, време е да ги разработиме деталите. Ве молиме обрнете внимание на тоа како точно протекуваат информации за обичен текст на серверот. Во скриптата на Алис, протекувањето се случи затоа што Алис ќе одговори само со точната порака ако $inline$text{SIMPLE_SUBSTITUTION}(text{ciphertext},text{key})$inline$ заврши со линијата a (Или bb, и така натаму, но шансите овие состојби да се активираат случајно беа многу мали). Слично на CBC, серверот прифаќа пополнување ако и само ако Криптографски напади: објаснување за збунети умови завршува на хексадецимално 01. Затоа, ајде да го пробаме истиот трик: испраќање лажни шифрирани текстови со наши лажни вредности Криптографски напади: објаснување за збунети умовидодека серверот не го прифати полнењето.

Кога серверот прифаќа подлога за една од нашите лажни пораки, тоа значи дека:

Криптографски напади: објаснување за збунети умови

Сега го користиме својството XOR бајт-бајт:

Криптографски напади: објаснување за збунети умови

Ги знаеме првиот и третиот термин. И веќе видовме дека ова ни овозможува да го вратиме преостанатиот термин - последниот бајт од Криптографски напади: објаснување за збунети умови:

Криптографски напади: објаснување за збунети умови

Ова, исто така, ни го дава последниот бајт од последниот блок на обичен текст преку равенката CBC и својството бајт-по-бајт.

Би можеле да оставиме така и да бидеме задоволни што извршивме напад на теоретски силна шифра. Но, всушност, можеме да направиме многу повеќе: всушност можеме да го вратиме целиот текст. Ова бара трик што не беше во оригиналното сценарио на Алиса и не е потребен за нападот на пророк, но сепак вреди да се научи.

За да го разберете, прво забележете дека резултатот од излезот на точната вредност на последниот бајт е Криптографски напади: објаснување за збунети умови имаме нова способност. Сега, кога фалсификуваме шифрирани текстови, можеме да манипулираме со последниот бајт од соодветниот обичен текст. Повторно, ова е поврзано со равенката CBC и со својството бајт-по-бајт:

Криптографски напади: објаснување за збунети умови

Бидејќи сега го знаеме вториот термин, можеме да ја искористиме нашата контрола над првиот за да го контролираме третиот. Ние едноставно пресметуваме:

Криптографски напади: објаснување за збунети умови

Не можевме да го направиме ова порано бидејќи сè уште го немавме последниот бајт Криптографски напади: објаснување за збунети умови.

Како ова ќе ни помогне? Да претпоставиме дека сега ги создаваме сите шифрирани текстови така што во соодветните обични текстови последниот бајт е еднаков на 02. Серверот сега прифаќа пополнување само ако обичниот текст завршува со 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

И така натаму додека не се врати целата лозинка.

На читателот би му се простило да мисли дека ова е чисто академска вежба и дека такво сценарио за напад никогаш нема да се појави во реалниот свет. За жал, како што наскоро ќе видиме, подобро е да не се откажуваме од криптографијата.

Ранливост на брендот: КРИМИНАЛ, ПУДЛА, УДАВИ

Конечно, по детално проучување на теоријата, можеме да видиме како овие техники се применуваат во криптографските напади во реалниот живот.

КРИМИНАЛ

Криптографски напади: објаснување за збунети умовиАко нападот е насочен кон прелистувачот и мрежата на жртвата, некои ќе бидат полесни, а некои потешко. На пример, лесно е да се види сообраќајот на жртвата: само седете со него во истото кафуле со WiFi. Поради оваа причина, на потенцијалните жртви (т.е. на сите) генерално им се советува да користат шифрирана врска. Ќе биде потешко, но сепак можно, да се упатуваат барања за HTTP во име на жртвата на некоја трета страна (на пример, Google). Напаѓачот мора да ја намами жртвата на злонамерна веб-страница со скрипта што го прави барањето. Веб-прелистувачот автоматски ќе го обезбеди соодветното колаче за сесија.

Ова изгледа неверојатно. Ако Боб отиде во evil.com, дали скриптата на оваа страница може само да побара од Google да ја испрати лозинката на Боб по е-пошта [email protected]? Па, во теорија да, но во реалноста не. Ова сценарио се нарекува напад за фалсификување на барање меѓу локации (Фалсификување на барање меѓу локации, CSRF), и беше популарен околу средината на 90-тите. Денес ако evil.com го испроба овој трик, Google (или која било веб-страница која се почитува себеси) обично ќе одговори со: „Одлично, но вашиот CSRF токен за оваа трансакција ќе биде... хм... три триллиона и семь. Ве молиме повторете го овој број“. Современите прелистувачи имаат нешто што се нарекува „политика за исто потекло“ според кое скриптите на страницата А немаат пристап до информациите испратени од веб-локацијата Б. Така, скриптата на evil.com може да испраќа барања до google.com, но не може да ги прочита одговорите или всушност да ја заврши трансакцијата.

Мора да нагласиме дека освен ако Боб користи шифрирана врска, сите овие заштити се бесмислени. Напаѓачот може едноставно да го чита сообраќајот на Боб и да го врати колачето за сесија на Google. Со ова колаче, тој едноставно ќе отвори нова картичка на Google без да го напушти сопствениот прелистувач и ќе го имитира Боб без да наиде на досадни политики со исто потекло. Но, за жал за провалник, ова станува се поретко. Интернетот како целина одамна им објави војна на нешифрираните врски, а појдовниот сообраќај на Боб веројатно е шифриран, без разлика дали тој сака или не. Дополнително, од самиот почеток на имплементацијата на протоколот се одвиваше и сообраќај се намалил пред шифрирање; ова беше вообичаена практика за намалување на латентноста.

Ова е местото каде што тоа влегува во игра КРИМИНАЛ (Сооднос на компресија Infoleak Лесно, едноставно истекување низ односот на компресија). Ранливоста беше откриена во септември 2012 година од безбедносните истражувачи Хулиано Ризо и Таи Дуонг. Веќе ја испитавме целата теоретска основа, што ни овозможува да разбереме што и како направиле. Напаѓачот може да го принуди прелистувачот на Боб да испраќа барања до Google и потоа да ги слуша одговорите на локалната мрежа во компресирана, шифрирана форма. Затоа имаме:

Криптографски напади: објаснување за збунети умови

Овде напаѓачот го контролира барањето и има пристап до сообраќајниот трагач, вклучувајќи ја и големината на пакетот. Фиктивното сценарио на Келси оживеа.

Разбирање на теоријата, авторите на CRIME создадоа експлоатација што може да украде колачиња за сесија за широк опсег на сајтови, вклучувајќи ги Gmail, Twitter, Dropbox и Github. Ранливоста ги погоди повеќето модерни веб-прелистувачи, што резултираше со објавени закрпи кои тивко ја закопаа функцијата за компресија во SSL, така што воопшто нема да се користи. Единствениот заштитен од ранливоста беше преподобниот Internet Explorer, кој никогаш воопшто не користел SSL компресија.

OODУБВИЛО

Криптографски напади: објаснување за збунети умовиВо октомври 2014 година, безбедносниот тим на Google направи бранови во безбедносната заедница. Тие беа во можност да ја искористат ранливоста во протоколот SSL што беше закрпен пред повеќе од десет години.

Излегува дека додека серверите го извршуваат сјајниот нов TLSv1.2, многумина оставија поддршка за наследниот SSLv3 за компатибилност наназад со Internet Explorer 6. Веќе разговаравме за напади за деградирање, па можете да замислите што се случува. Добро оркестрирана саботажа на протоколот за ракување и серверите се подготвени да се вратат на стариот добар SSLv3, во суштина поништувајќи ги последните 15 години безбедносно истражување.

За историски контекст, еве кратко резиме на историјата на SSL до верзија 2 од Метју Грин:

Безбедноста на транспортниот слој (TLS) е најважниот безбедносен протокол на Интернет. [..] речиси секоја трансакција што ја правите на Интернет зависи од TLS. [..] Но, TLS не беше секогаш TLS. Протоколот го започна својот живот во Netscape Communications наречен „Secure Sockets Layer“ или SSL. Гласините велат дека првата верзија на SSL била толку страшна што програмерите ги собрале сите отпечатоци од кодот и ги закопале во тајна депонија во Ново Мексико. Како последица на тоа, првата јавно достапна верзија на SSL е всушност верзија SSL 2. Тоа е прилично страшно, и [..] тоа беше производ од средината на 90-тите години, што модерните криптографи го сметаат како "темни времиња на криптографијата" Многу од најгрозоморните криптографски напади за кои знаеме денес сè уште не се откриени. Како резултат на тоа, програмерите на протоколот SSLv2 во суштина беа оставени да се шетаат во мракот, и тие се соочија многу страшни чудовишта - на нивна жалост и наша корист, бидејќи нападите врз SSLv2 оставија непроценливи лекции за следната генерација протоколи.

По овие настани, во 1996 година, фрустрираниот Netscape го редизајнираше SSL протоколот од нула. Резултатот беше SSL верзија 3, која поправи неколку познати безбедносни проблеми на неговиот претходник.

За среќа за провалниците, „неколку“ не значи „сите“. Генерално, SSLv3 ги обезбеди сите потребни градежни блокови за да започне напад на Воден. Протоколот користеше блок шифра на CBC режим и несигурна шема за полнење (ова беше поправено во TLS, па оттука и потребата за напад за поништување). Ако се сеќавате на шемата за полнење во нашиот оригинален опис на нападот Vaudenay, шемата SSLv3 е многу слична.

Но, за жал за провалниците, „слично“ не значи „идентично“. Шемата за полнење SSLv3 е „N случајни бајти проследени со бројот N“. Обидете се, под овие услови, да изберете имагинарен блок од шифриран текст и да ги поминете сите чекори на оригиналната шема на Воден: ќе откриете дека нападот успешно го извлекува последниот бајт од соодветниот блок на обичен текст, но не оди понатаму. Дешифрирањето на секој 16-ти бајт од шифрениот текст е одличен трик, но не е победа.

Соочен со неуспех, тимот на Google прибегна кон последно средство: тие се префрлија на помоќен модел на закана - оној што се користи во КРИМИНАЛ. Претпоставувајќи дека напаѓачот е скрипта што работи во картичката на прелистувачот на жртвата и може да извлече колачиња од сесијата, нападот е сè уште импресивен. Додека поширокиот модел на закана е помалку реален, во претходниот дел видовме дека овој конкретен модел е изводлив.

Со оглед на овие помоќни способности на напаѓачите, нападот сега може да продолжи. Забележете дека напаѓачот знае каде се појавува шифрираното колаче за сесија во заглавието и ја контролира должината на барањето HTTP што му претходи. Затоа, може да манипулира со барањето HTTP така што последниот бајт од колачето е порамнет со крајот на блокот. Сега овој бајт е погоден за дешифрирање. Можете едноставно да додадете еден знак на барањето, а претпоследниот бајт од колачето ќе остане на истото место и е погоден за избор со истиот метод. Нападот продолжува на овој начин додека датотеката со колачиња не биде целосно обновена. Се вика ПУДЛ: Пополнување на Oracle на намалена енкрипција на наследство.

се удави

Криптографски напади: објаснување за збунети умовиКако што споменавме, 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?

Ова не е криптографски напад во смислата опишана погоре; Ова е прелевање на тампон.

Ајде да се одмориме

Почнавме со некои основни техники: брутална сила, интерполација, деградирање, вкрстен протокол и предпресметување. Потоа разгледавме една напредна техника, можеби главната компонента на модерните криптографски напади: нападот на оракулите. Поминавме доста време за да го откриеме - и го разбравме не само основниот принцип, туку и техничките детали за две специфични имплементации: нападот Vaudenay на режимот на шифрирање CBC и нападот Келси на протоколите за шифрирање пред компресија.

При прегледот на нападите за деградирање и предпресметување, накратко го претставивме нападот FREAK, кој ги користи двата методи со тоа што целните страници се деградираат на слаби клучеви и потоа повторно ги користат истите клучеви. За следната статија, ќе го зачуваме (многу сличен) напад Logjam, кој цели кон алгоритми со јавни клучеви.

Потоа разгледавме уште три примери за примена на овие принципи. Прво, CRIME и POODLE: два напади кои се потпираа на способноста на напаѓачот да внесе произволен обичен текст до целниот чист текст, потоа да ги испита одговорите на серверот и тогаш, користејќи ја методологијата за напад на Oracle, искористете ги овие ретки информации за делумно враќање на обичниот текст. CRIME тргна по патот на нападот на Келси на компресија на SSL, додека ПУДЛ наместо тоа користеше варијанта на нападот на Vaudenay на CBC со истиот ефект.

Потоа го свртевме нашето внимание на нападот DROWN меѓу протоколот, кој воспоставува врска со серверот користејќи го наследениот протокол SSLv2 и потоа ги обновува тајните клучеви на серверот користејќи го нападот Bleichenbacher. Засега ги прескокнавме техничките детали за овој напад; како Logjam, ќе мора да почека додека не ги разбереме криптосистемите со јавен клуч и нивните ранливости.

Во следната статија ќе зборуваме за напредни напади како meet-in-the-middle, диференцијална криптоанализа и роденденски напади. Ајде да направиме брз напад во нападите на страничните канали, а потоа да преминеме на забавниот дел: криптосистеми со јавен клуч.

Извор: www.habr.com

Додадете коментар