У перший день 2016 року Mozilla припинила підтримку ослаблюючої технології безпеки під назвою SHA-1 у веб-браузері Firefox. Майже відразу вони скасували своє рішення, оскільки це зменшило б доступ до деяких старих веб-сайтів. Але в лютому 2017 року їх побоювання нарешті збулись: дослідники розбили SHA-1, створивши перша реальна атака зіткнення . Ось що все це означає.
Що таке SHA-1?
SHA в SHA-1 розшифровується як Алгоритм безпечного хешу , і, простіше кажучи, ви можете сприймати це як якусь математичну задачу чи метод скремблює дані, які в нього введені . Розроблений АНБ США, він є основним компонентом багатьох технологій, що використовуються для шифрування важливих передач в Інтернеті. Поширені методи шифрування SSL та TLS, про які ви вже чули, можуть використовувати хеш-функцію, таку як SHA-1, для створення підписаних сертифікатів, які ви бачите на панелі інструментів браузера.
Ми не будемо заглиблюватися в математику та інформатику жодної функції SHA, але ось основна ідея. "Хеш" - це унікальний код, заснований на введенні будь-яких даних . Навіть невеликий випадковий рядок літер, введених у хеш-функцію, таку як SHA-1, поверне довгу, задану кількість символів, що робить (потенційно) неможливим повернення рядка символів назад до вихідних даних. Так зазвичай працює зберігання паролів. Коли ви створюєте пароль, сервер вводить його та зберігає. Після повернення, коли ви вводите свій пароль, він знову хешується. Якщо він відповідає оригінальному хешу, можна вважати, що введення є однаковим, і ви отримаєте доступ до своїх даних.
Хеш-функції корисні насамперед тим, що дозволяють легко визначити, чи змінився вхід, наприклад, файл чи пароль. Коли вхідні дані є секретними, як пароль, хеш практично неможливо повернути назад і відновити вихідні дані (також відомі як "ключ"). Це дещо відрізняється від "шифрування", метою якого є скрембування даних з метою їх дескрембування пізніше , за допомогою шифрів та секретних ключів. Хеші просто призначені для забезпечення цілісності даних - щоб переконатися, що все однаково. Git, програмне забезпечення для контролю версій та розповсюдження відкритого вихідного коду, саме з цієї причини використовує хеші SHA-1 .
Це багато технічної інформації, але простіше кажучи: хеш - це не те саме, що шифрування, оскільки він використовується для визначення того, чи файл змінився .
Як ця технологія впливає на мене?
Скажімо, вам потрібно відвідати веб-сайт приватно. Ваш банк, електронна пошта, навіть рахунок у Facebook - усі використовують шифрування, щоб зберегти конфіденційність даних, які ви надсилаєте. Професійний веб-сайт забезпечить шифрування, отримавши сертифікат від довіреного органу - третьої сторони, якій довіряють, щоб шифрування було на рівні, приватному між веб-сайтом та користувачем та не підглядалося будь-якою іншою стороною. Ці відносини з третьою стороною, називаються Органи сертифікації , або ТО , має вирішальне значення, оскільки будь-який користувач може створити «самопідписаний» сертифікат - ви навіть можете зробіть це самостійно на машині під управлінням Linux з Openssl . Наприклад, Symantec та Digicert - дві широко відомі компанії CA.
Давайте розглянемо теоретичний сценарій: How-To Geek хоче залишити вхід в сеанси користувачів приватними за допомогою шифрування, тому він звертається із запитом до ЦС, як Symantec, із Запит на підписання сертифіката , або КСВ . Вони створюють відкритий ключ і приватний ключ для шифрування та дешифрування даних, що надсилаються через Інтернет. Запит CSR надсилає відкритий ключ до Symantec разом із інформацією про веб-сайт. Symantec перевіряє ключ у своєму записі, щоб переконатися, що дані незмінні всіма сторонами, оскільки будь-яка незначна зміна даних робить хеш кардинально іншим.
Ці відкриті ключі та цифрові сертифікати підписані хеш-функціями, оскільки результати цих функцій легко переглядати. Відкритий ключ і сертифікат із перевіреним хешем від Symantec (у нашому прикладі), органу, гарантує користувачеві How-To Geek, що ключ не змінився і не надісланий від когось зловмисного.
Оскільки хеш легко відстежувати, а його неможливо (деякі сказали б “важко”) повернути назад, правильний, перевірений підпис хеша означає, що сертифікату та з’єднанню можна довіряти, а дані можна погоджувати надсилати зашифрованими від кінця до кінця . Але що, якщо хеш насправді не було унікальним ?
Що таке атака зіткнення і чи можлива вона в реальному світі?
Ви могли чути про “Проблема з днем народження” з математики , хоча ви могли б і не знати, як це називалося. Основна ідея полягає в тому, що якщо ви зібрали досить велику групу людей, досить великі шанси, що у двох або більше людей буде той самий день народження. Вище, ніж можна було б очікувати, насправді - досить того, що це здається дивним збігом обставин. У групі від 23 осіб існує 50% шансів, що двоє поділять день народження.
Це властива слабкість у всіх хешах, включаючи SHA-1. Теоретично, функція SHA повинна створювати унікальний хеш для будь-яких даних, які в неї вводяться, але із збільшенням кількості хешів стає більш імовірним, що різні пари даних можуть створювати один і той же хеш. Таким чином, можна створити ненадійний сертифікат з однаковим хешем довіреного сертифіката. Якщо вони змусять вас встановити цей ненадійний сертифікат, він може маскуватися як надійний та розповсюджувати шкідливі дані.
Пошук відповідних хешів у двох файлах називається атака зіткнення . Відомо, що принаймні одна широкомасштабна атака зіткнення вже відбулася для хешів MD5. Але 27 лютого 2017 року Google оголосив РОЗРИВАНО , перше в історії створене зіткнення для 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 ISO легітимним.
На щастя, існують пом’якшувальні фактори, що перешкоджають таким атакам. 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 випустив Розділений сайт що може перевірити для вас.
Кредити на зображення: Lego Firefox , Багато хеш , Будь ласка, не завдайте шкоди веб-автору, невідомий, Google .