If-Koubou

Какво е SHAttered? SHA-1 Сблъскващи атаки, обяснено

Какво е SHAttered? SHA-1 Сблъскващи атаки, обяснено (Как да)

На първия ден от 2016 г. Mozilla прекрати поддръжката на отслабващата технология за сигурност, наречена SHA-1, в уеб браузъра Firefox. Почти веднага те се отказаха от решението си, тъй като щяха да намалят достъпа до някои по-стари уебсайтове. Но през февруари 2017 г. техните страхове най-накрая се сбъднаха: изследователите счупиха SHA-1, като създадоха първата реална сблъскваща атака. Ето какво значи всичко това.

Какво представлява SHA-1?

SHA в SHA-1 означава Сигурен хеш алгоритъм, и просто казано, можете да го помислите като нещо като математически проблем или метод кодира данните, които се поставят в него, Разработена от Американския национален орган за сигурност (NSA), тя е основен компонент на много технологии, използвани за криптиране на важни предавания в интернет. Общите методи на шифроване SSL и TLS, за които може да сте чували, могат да използват хеш функция като SHA-1, за да създадат подписаните сертификати, които виждате в лентата с инструменти на вашия браузър.

Няма да стигнем дълбоко в математиката и компютърната наука на някоя от функциите на SHA, но тук е основната идея. "Хеш" е уникален код, базиран на входа на всякакви данни. Дори малката случайна поредица от букви, въведени в хеш функция като SHA-1, ще върне дълъг набор от знаци, което ще направи възможно (невъзможно) връщането на низ от знаци обратно към оригиналните данни. Ето как обикновено работи паметта за съхранение на пароли. Когато създавате парола, въвеждането на вашата парола е хеширано и се съхранява от сървъра. При завръщането си, когато въвеждате паролата си, тя отново се затваря. Ако тя съответства на оригиналния хеш, може да се приеме, че входът е същият и ще ви бъде предоставен достъп до вашите данни.

Хайл функциите са полезни преди всичко защото те улесняват разбирането дали входът, например файл или парола, са се променили. Когато входните данни са тайни, като парола, хешът е почти невъзможно да се обърне и да се възстановят оригиналните данни (известни също като "ключ"). Това е малко по-различно от "криптирането", чиято цел е да се кодират данни, за да се декодира по-късно, като се използват шифри и тайни ключове. Хашисите са предназначени да гарантират целостта на данните - да се уверят, че всичко е същото. Git, версията за контрол и разпространение на софтуер за код с отворен код, използва SHA-1 хешове по тази причина.

Това е много техническа информация, но просто да го кажа: хеш не е същото като криптиране, тъй като тя се използва, за да се установи дали файлът е променен.

Как тази техника ме засяга?

Да приемем, че трябва да посетите частно уебсайт. Вашата банка, вашият имейл, дори вашият Facebook акаунт - всички използват криптиране, за да пазят личните данни, които ги изпращате. Професионалният уебсайт ще осигури криптиране чрез получаване на сертификат от надежден орган - трета страна, която има доверие да гарантира, че криптирането е на ниво, частно между уебсайта и потребителя и не се спира от никоя друга страна. Тази връзка с третата страна, наречена Удостоверяващи органи, или CA, е от решаващо значение, тъй като всеки потребител може да създаде сертификат "самоподписан" - можете дори да го направите сами на машина с Linux с Open SSL. Symantec и Digicert са две широко известни компании от CA например.

Нека да преминем към теоретичен сценарий: How-To Geek иска да държи влезли в сесиите на потребителите частни с криптиране, така че той петиции CA като Symantec с Искане за подписване на сертификат, или CSR, Те създават a публичен ключ и частен ключ за криптиране и декриптиране на данни, изпратени по интернет. Искането за КСО изпраща публичен ключ на Symantec заедно с информация за уебсайта. Symantec проверява ключа срещу неговия запис, за да провери дали данните са непроменени от всички страни, защото всяка малка промяна в данните прави радикално различен хеш.

Тези публични ключове и цифрови сертификати се подписват с хеш функции, тъй като резултатите от тези функции са лесни за разглеждане. Публичен ключ и сертификат с потвърден хеш от Symantec (в нашия пример), орган, гарантира на потребителя на How-To Geek, че ключът е непроменен и не е изпратен от злонамерено лице.

Тъй като хешът е лесен за наблюдение и невъзможно (някои биха казали "трудно") да се обърне, правилният верифициран хеш подпис означава, че сертификатът и връзката могат да бъдат надеждни и данните могат да бъдат съгласувани да бъдат изпратени криптирани от край до край , Но какво ще стане, ако хеш не беше уникална?

Какво е атака на сблъсък и е възможно в реалния свят?

Може би сте чували за "рожден ден проблем" в математиката, въпреки че може би не сте знаели какво е наречен. Основната идея е, че ако събереш достатъчно голяма група хора, шансовете са доста високи, че двама или повече хора ще имат същия рожден ден. Високо, отколкото очаквахте, всъщност - достатъчно, за да изглежда странно съвпадение. В група от максимум 23 души има 50% шанс двама да споделят рожден ден.

Това е присъщата слабост на всички хешове, включително SHA-1. Теоретично, функцията SHA трябва да създаде уникален хеш за всички данни, които се поставят в нея, но с нарастването на броя на хешове, става по-вероятно различните двойки данни да създават същата хеш. Така че може да се създаде неверен сертификат с идентичен хеш на доверен сертификат. Ако те са ви накарали да инсталирате този неверен сертификат, той може да се маскира като надежден и да разпространява злонамерени данни.

Намирането на съответстващи хешове в рамките на два файла се нарича a атака срещу сблъсък, Най-малко една мащабна атака на сблъсък е известно, че вече е станало за MD5 хешове. Но на 27 февруари 2017 г. Google обяви SHAttered, първия за пръв път сблъсък за SHA-1.Google успя да създаде PDF файл, който има същия SHA-1 хеш като друг PDF файл, въпреки че има различно съдържание.

SHAttered бе извършено на PDF файл. PDF файловете са относително свободен файлов формат; могат да се правят много малки, малко промени в нивата, без да се попречи на читателите да я отварят или да причиняват видими разлики. PDF файловете също често се използват за предаване на злонамерен софтуер. Докато SHAttered може да работи върху други типове файлове, като ISO, сертификатите са строго определени, което прави такава атака малко вероятна.

Така че колко лесна е тази атака да се изпълни? SHAttered се основава на метод, открит от Марк Стивънс през 2012 г., който изисква повече от 2 ^ 60,3 (9,223 quintillion) операции SHA-1 - изумително число. Въпреки това, този метод все още е 100 000 пъти по-малко операции, отколкото би било необходимо за постигане на същия резултат с груба сила. Google установи, че с 110 високопроизводителни графични карти, работещи успоредно, ще отнеме около една година, за да предизвика сблъсък. Наемането на това изчислително време от Amazon AWS ще струва около $ 110,000. Имайте предвид, че тъй като цените падат за компютърните части и можете да получите повече енергия за по-малко, атаките като SHAttered стават по-лесни за издърпване.

$ 110,000 може да изглежда като много, но това е в рамките на достъпността за някои организации - което означава, че кибервилиите в реалния живот могат да изградят цифрови подписи на документи, да пречат на системите за архивиране и управление на версии като Git и SVN или да направят зловреден Linux ISO изглеждат легитимни.

За щастие има смекчаващи фактори, които предотвратяват подобни атаки. SHA-1 се използва рядко за цифрови подписи. Службите за сертифициране вече не предоставят сертификати, подписани със SHA-1, и Chrome и Firefox отпадат поддръжката за тях. Линукс дистрибуциите обикновено се разпространяват по-често от веднъж годишно, което прави непрактично за атакуващия да създаде злонамерена версия и след това да генерира една подложка, за да има същия SHA-1 хеш.

От друга страна, някои атаки, базирани на SHAttered, вече се случват в реалния свят. Системата за контрол на версиите на SVN използва SHA-1 за диференциране на файловете. Качването на двата PDF файла с идентични SHA-1 хешове в хранилище на SVN ще доведе до повреда.

Как мога да се предпазя от SHA-1 атаки?

Няма много за типичния потребител да прави. Ако използвате сборни суми за сравняване на файлове, трябва да използвате SHA-2 (SHA-256) или SHA-3, а не SHA-1 или MD5. Също така, ако сте разработчик, не забравяйте да използвате по-модерни алгоритми за хеширане като SHA-2, SHA-3 или bcrypt. Ако се притеснявате, че SHAttered е бил използван, за да дадете два различни файла със същия хеш, Google е пуснал инструмент на сайта SHAttered, който може да ви провери.

Кредити за изображения: Lego Firefox, много хаши, моля, не обиждайте автора на уеб непознат, Google.