Какво е 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 са две широко известни компании за сертифициране, например.
Нека да преминем през теоретичен сценарий: How-To Geek иска да запази влезли в сесиите на потребителите частни с криптиране, така че петиции на CA като Symantec с Заявка за подписване на сертификат, или CSR. Те създават публичен ключ и частен ключ за криптиране и декриптиране на данни, изпратени по интернет. Искането за CSR изпраща публичния ключ към 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 хиляди) операции SHA-1 - зашеметяващ брой. Въпреки това, този метод е все още 100 000 пъти по-малко операции, отколкото би било необходимо за постигане на същия резултат с груба сила. Google установи, че с 110 висококачествени графични карти, работещи паралелно, ще са необходими около една година, за да се получи сблъсък. Наемането на това изчислено време от Amazon AWS ще струва около 110 000 долара. Имайте предвид, че тъй като цените се понижават за компютърните части и можете да получите повече мощност за по-малко, атаките като SHAttered стават по-лесни за изтегляне.
$ 110,000 може да изглеждат много, но това е в сферата на достъпността за някои организации - което означава, че кибервиляните в реалния живот могат да изградят цифрови подписи на документи, да се намесват със системите за архивиране и контрол на версиите като Git и SVN или да направят злонамерен Linux.
За щастие има смекчаващи фактори, които пречат на подобни атаки. SHA-1 вече рядко се използва за цифрови подписи. Органите за сертифициране вече не предоставят сертификати, подписани с SHA-1, а Chrome и Firefox са премахнали подкрепата за тях. Дистрибуциите на Linux обикновено се издават по-често от веднъж годишно, което прави невъзможно атакуващият да създаде злонамерена версия и след това да генерира една подложка, която да има същия 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, който може да провери за вас.
Кредити за изображения: Лего Firefox, много хеши, моля, не наранявайте автора на уебсайта, Google.