Какво представлява SHA-1?
SHA в SHA-1 означава Сигурен хеш алгоритъм, и просто казано, можете да го помислите като нещо като математически проблем или метод кодира данните, които се поставят в него, Разработена от Американския национален орган за сигурност (NSA), тя е основен компонент на много технологии, използвани за криптиране на важни предавания в интернет. Общите методи на шифроване SSL и TLS, за които може да сте чували, могат да използват хеш функция като SHA-1, за да създадат подписаните сертификати, които виждате в лентата с инструменти на вашия браузър.
Това е много техническа информация, но просто да го кажа: хеш не е същото като криптиране, тъй като тя се използва, за да се установи дали файлът е променен.
Как тази техника ме засяга?
Да приемем, че трябва да посетите частно уебсайт. Вашата банка, вашият имейл, дори вашият Facebook акаунт - всички използват криптиране, за да пазят личните данни, които ги изпращате. Професионалният уебсайт ще осигури криптиране чрез получаване на сертификат от надежден орган - трета страна, която има доверие да гарантира, че криптирането е на ниво, частно между уебсайта и потребителя и не се спира от никоя друга страна. Тази връзка с третата страна, наречена Удостоверяващи органи, или CA, е от решаващо значение, тъй като всеки потребител може да създаде сертификат "самоподписан" - можете дори да го направите сами на машина с Linux с Open SSL. Symantec и Digicert са две широко известни компании от CA например.
Нека да преминем към теоретичен сценарий: How-To Geek иска да държи влезли в сесиите на потребителите частни с криптиране, така че той петиции CA като Symantec с Искане за подписване на сертификат, или CSR, Те създават a публичен ключ и частен ключ за криптиране и декриптиране на данни, изпратени по интернет. Искането за КСО изпраща публичен ключ на Symantec заедно с информация за уебсайта. Symantec проверява ключа срещу неговия запис, за да провери дали данните са непроменени от всички страни, защото всяка малка промяна в данните прави радикално различен хеш.
Тъй като хешът е лесен за наблюдение и невъзможно (някои биха казали "трудно") да се обърне, правилният верифициран хеш подпис означава, че сертификатът и връзката могат да бъдат надеждни и данните могат да бъдат съгласувани да бъдат изпратени криптирани от край до край, Но какво ще стане, ако хеш не беше уникална?
Какво е атака на сблъсък и е възможно в реалния свят?
Може би сте чували за "рожден ден проблем" в математиката, въпреки че може би не сте знаели какво е наречен. Основната идея е, че ако събереш достатъчно голяма група хора, шансовете са доста високи, че двама или повече хора ще имат същия рожден ден. Високо, отколкото очаквахте, всъщност - достатъчно, за да изглежда странно съвпадение. В група от максимум 23 души има 50% шанс двама да споделят рожден ден.
Намирането на съответстващи хешове в рамките на два файла се нарича 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.