Що таке криптографічна хеш-функція?
Криптографічна хеш-функція — це алгоритм, який можна запустити на таких даних, як особа файл або пароль для отримання значення, яке називається контрольною сумою.
Основне використання криптографічної хеш-функції — перевірка автентичності частини даних. Два файли можна вважати ідентичними лише в тому випадку, якщо контрольні суми, створені з кожного файлу з використанням однієї і тієї ж криптографічної хеш-функції, ідентичні.
Деякі часто використовувані криптографічні хеш-функції включають MD5 і SHA-1, хоча існує багато інших.
Криптографічні хеш-функції часто називають «хеш-функціями», але це технічно некоректно. Хеш-функція — це загальний термін, який охоплює криптографічні хеш-функції разом з іншими видами алгоритмів, такими як циклічна перевірка надмірності.
Криптографічні хеш-функції: приклад використання
Скажімо, ви завантажили файл останню версію браузера Firefox. З якоїсь причини вам потрібно було завантажити його з сайту, відмінного від Mozilla. Оскільки він не розміщено на сайті, якому ви навчилися довіряти, ви хотіли б переконатися, що інсталяційний файл, який ви щойно завантажили, точно такий же, як той, який пропонує Mozilla.
Використовуючи калькулятор контрольної суми, ви обчислюєте контрольну суму за допомогою певної криптографічної хеш-функції, наприклад SHA-2, а потім порівнюєте її з опублікованою на сайті Mozilla. Якщо вони рівні, ви можете бути достатньо впевнені, що завантаження, яке ви маєте, є тим, яке планувала Mozilla.

Чи можна змінити криптографічні хеш-функції?
Криптографічні хеш-функції призначені для запобігання можливості повернення контрольних сум, які вони створюють, до вихідних текстів. Однак, незважаючи на те, що їх практично неможливо повернути назад, вони не гарантують на 100 відсотків захист даних.
Хакери можуть використовувати райдужну таблицю, щоб визначити звичайний текст контрольної суми. Веселкові таблиці — це словники, у яких перераховані тисячі, мільйони або навіть мільярди контрольних сум разом із відповідним значенням у відкритому тексті.
Хоча це технічно не змінює криптографічний хеш-алгоритм, це також може бути, враховуючи, що це так просто зробити. Насправді, оскільки жодна райдужна таблиця не може перерахувати всі можливі контрольні суми, вони зазвичай корисні лише для простих фраз, таких як слабкі паролі.
Ось спрощена версія райдужної таблиці, щоб показати, як працюватиме при використанні криптографічної хеш-функції SHA-1:
Приклад таблиці Rainbow | |
---|---|
Простий текст | Контрольна сума SHA-1 |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
пароль1 | e38ad214943daad1d64c102faec29de4afe9da3d |
ilovemydog | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Дженні400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
даллас 1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Хакер повинен знати, який криптографічний хеш-алгоритм був використаний для генерування контрольних сум, щоб визначити значення.
Для додаткового захисту деякі веб-сайти, які зберігають паролі користувачів виконувати додаткові функції криптографічного хеш-алгоритму після створення значення, але до його збереження. Цей процес створює нове значення, яке розуміє лише веб-сервер і яке не відповідає початковій контрольній сумі.
Наприклад, після введення пароля та створення контрольної суми його можна розділити на кілька частин і переупорядкований до того, як він буде збережений в базі даних паролів, або певні символи можуть бути поміняні місцями інші. Під час спроби автентифікації наступного разу, коли користувач увійде в систему, веб-сервер скасовує це додаткова функція, і початкова контрольна сума генерується знову, щоб перевірити, чи пароль користувача є дійсним.
Виконання цих кроків обмежує корисність злому, коли всі контрольні суми викрадаються. Ідея полягає у виконанні функції, яка невідома, тому, якщо хакер знає криптографічний алгоритм хешування, але не користувальницький, то знання контрольних сум пароля не допоможе.
Паролі та криптографічні хеш-функції
База даних зберігає паролі користувачів так само, як і райдужна таблиця. Коли ваш пароль буде введено, контрольна сума створюється та порівнюється з записом із вашим іменем користувача. Тоді вам буде надано доступ, якщо вони ідентичні.
Враховуючи, що криптографічна хеш-функція створює незворотну контрольну суму, чи безпечно для вас зробити свій пароль таким простим, як 12345, замість 12@34$5, просто тому, що самі контрольні суми не можна зрозуміти? Ні, і ось чому.
Ці два паролі неможливо розшифрувати, просто подивившись лише на контрольні суми:
MD5 для 12345:827ccb0eea8a706c4c34a16891f84e7b
MD5 для 12@34$5:a4d3cc004f487b18b2ccd4853053818b
На перший погляд ви можете подумати, що можна використовувати будь-який із цих паролів. Це вірно, якщо зловмисник спробував дізнатися ваш пароль, вгадавши контрольну суму MD5, чого ніхто не робить, але невірно, якщо виконується груба сила або атака за словником, що є загальноприйнятою тактикою.
Атака грубої сили відбувається, коли для вгадування пароля виконується кілька випадкових ударів. У цьому випадку здогадатися буде нескладно 12345, але досить важко випадково визначити іншу. Словникова атака подібна тим, що зловмисник може спробувати кожне слово, число або фразу зі списку поширених (і не дуже поширених) паролів, і 12345 є одним із таких поширених паролів.
Незважаючи на те, що криптографічні хеш-функції створюють контрольні суми, які важко або неможливо вгадати, вам все одно це потрібно використовувати складний пароль для всіх ваших онлайн- та локальних облікових записів користувачів.
Додаткова інформація про криптографічні хеш-функції
Може здатися, що криптографічні хеш-функції пов’язані з шифруванням, але вони працюють по-різному.
Шифрування - це двосторонній процес, коли щось шифрується, щоб стати нечитаним, а потім розшифровується, щоб знову використовуватися в звичайному режимі. Ти можеш зашифрувати збережені файли так що будь-хто, хто отримує до них доступ, не зможе їх використовувати, або ви можете використовувати шифрування передачі файлів для шифрування файлів, які переміщуються по мережі, наприклад файлів, які ви завантажуєте або завантажуєте в Інтернеті.
Криптографічні хеш-функції працюють по-іншому, оскільки контрольні суми не мають бути змінені за допомогою спеціального пароля дехешування. Єдина мета криптографічних хеш-функцій — порівняння двох частин даних, наприклад, під час завантаження файлів, зберігання паролів та отримання даних із бази даних.
Криптографічна хеш-функція може виробляти однакову контрольну суму для різних частин даних. Коли це відбувається, це називається зіткненням, що є величезною проблемою, враховуючи, що суть криптографічної хеш-функції полягає в створенні унікальних контрольних сум для кожного введеного в неї даних.
Колізії можуть виникати через те, що кожна криптографічна хеш-функція видає значення фіксованої довжини незалежно від вхідних даних. Наприклад, криптографічна хеш-функція MD5 генерує 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 і e10adc3949ba59abbe56e057f20f883e для трьох абсолютно різних блоки даних.
Перша контрольна сума від 12345. Другий був створений із понад 700 букв і цифр, а третій — із 123456. Усі три вхідні дані мають різну довжину, але результати завжди містять лише 32 символи Контрольна сума MD5 був використаний.
Кількість контрольних сум, які можна створити, не обмежена, оскільки кожна невелика зміна у вхідних даних має створювати абсолютно іншу контрольну суму. Оскільки існує обмеження на кількість контрольних сум, які може створити одна криптографічна хеш-функція, завжди є ймовірність того, що ви зіткнетеся з колізією.
Ось чому були створені інші криптографічні хеш-функції. У той час як MD5 генерує значення з 32 символів, SHA-1 генерує 40 символів, а SHA-2 (512) генерує 128 символів. Чим більшу кількість символів має контрольна сума, тим менша ймовірність виникнення зіткнення.