Що таке 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 Запит на підписання сертифіката, або КСВ. Вони створюють a відкритий ключ і приватний ключ для шифрування та дешифрування даних, надісланих через Інтернет. Запит на КСВ надсилає відкритий ключ до Symantec разом з інформацією про веб-сайт. Symantec перевіряє ключ проти свого запису, щоб переконатися, що дані не змінилися всіма учасниками, оскільки будь-яка невелика зміна даних робить радикально іншим хеш.
Ці відкриті ключі та цифрові сертифікати підписуються хеш-функціями, тому що виводити ці функції легко побачити. Відкритий ключ і сертифікат з перевіреним хешем від Symantec (у нашому прикладі), авторитет, гарантує користувачеві How-To Geek, що ключ незмінний, а не відправлений від когось зловмисника.
Оскільки хеш легко відстежувати і неможливо (деякі скажуть «важко»), щоб повернути назад, правильний, підтверджений хеш-підпис означає, що сертифікат і з'єднання можна довіряти, і дані можуть бути погоджені, щоб бути надіслані зашифрованими з кінця в кінець . Але що, якщо хеш насправді не було унікальним?
Що таке зіткнення, і чи можливо в реальному світі?
Можливо, ви чули про «проблему з днем народження» в математиці, хоча, можливо, ви не знали, як її називали. Основна ідея полягає в тому, що якщо ви збираєте досить велику групу людей, шанси досить великі, що два або більше людей матимуть той самий день народження. Вище, ніж ви очікуєте, насправді-достатньо, що здається дивним збігом. У групі, яка складається з 23 осіб, є шанс, що два дні поділять день народження.
Це властива слабкість у всіх хешах, включаючи 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, який може перевірити вас.
Кредити зображень: Lego Firefox, багато хеш-файлів, будь ласка, не зашкодьте автору веб-сайту невідомо, Google.