Хеш-функція: що таке хеш і хешування
Хеш-функція перетворює будь-які дані на рядок фіксованої довжини, який називають хешем. Його можна порівняти з відбитком пальця: навіть найменша зміна вхідних даних повністю змінює відбиток. Хеші використовують для перевірки файлів, зберігання паролів, у блокчейні та майнінгу. У цій статті простими словами пояснюємо, що таке хеш, які властивості має хороша хеш-функція, приклади MD5, SHA-1 і SHA-256, хешування паролів із сіллю, роль хешів у блокчейні, а також даємо змогу самому згенерувати SHA-256.
Стаття освітня. Інструмент нижче обчислює хеш у вашому браузері, дані нікуди не надсилаються.
Хеш простими словами: відбиток даних
Уявіть, що ви надсилаєте другові великий файл і хочете переконатися, що він дійшов без змін. Ви обчислюєте хеш файлу і надсилаєте його окремо. Друг обчислює хеш отриманого файлу: якщо вони збігаються, файл ідентичний. Хеш не шифрує дані і не дозволяє їх відновити, він лише дає короткий унікальний «підпис» вмісту. Хеш-сума файлу на сайті завантаження потрібна саме для такої перевірки.
Властивості хеш-функції
- Детермінованість: однакові дані завжди дають однаковий хеш.
- Швидкість: хеш обчислюється швидко для будь-якого обсягу даних.
- Односпрямованість: з хешу неможливо отримати вихідні дані.
- Лавинний ефект: зміна одного символу повністю змінює хеш.
- Стійкість до колізій: практично неможливо знайти два різні входи з однаковим хешем.
Приклади: MD5, SHA-1, SHA-256
| Алгоритм | Довжина | Статус |
|---|---|---|
| MD5 | 128 біт | Колізії знайдені, не придатний для безпеки |
| SHA-1 | 160 біт | Практичні колізії продемонстровані, виводиться з ужитку |
| SHA-256 | 256 біт | Надійний, використовується в біткоїні та сертифікатах |
MD5 досі використовують для перевірки цілісності, де немає зловмисника, але не для захисту.
Де ви стикаєтеся з хешами щодня
- Завантаження програм: сайти публікують SHA-256 файлу, щоб ви могли перевірити, що його не підмінили.
- Паролі: коли ви входите на сайт, сервер порівнює хеш введеного пароля зі збереженим хешем.
- Git: кожен коміт у системі контролю версій має ідентифікатор, отриманий хешуванням вмісту.
- Цифрові підписи: підписують не весь документ, а його хеш, це швидше і так само надійно.
- Хмарні сховища: сервіси використовують хеші, щоб знаходити однакові файли і не зберігати їх двічі.
Тобто хеш-функції працюють навколо вас постійно, навіть якщо ви про них не замислюєтеся. Вони роблять інтернет безпечнішим і допомагають перевіряти, що дані не змінилися дорогою.
Хешування паролів: сіль і повільні алгоритми
Сервіси не повинні зберігати ваш пароль у відкритому вигляді. Вони зберігають його хеш. Але звичайні швидкі хеші на кшталт SHA-256 погано підходять для паролів: зловмисник може перебирати мільярди варіантів на секунду. Тому використовують «сіль», тобто випадкову добавку до кожного пароля, і спеціальні повільні алгоритми, наприклад Argon2id або bcrypt. Вони навмисно вимагають багато часу й пам'яті, щоб перебір став дорогим. Вам як користувачеві це означає одне: використовуйте унікальні довгі паролі і менеджер паролів, бо навіть найкраще хешування не врятує пароль «123456».
Хеші в блокчейні і майнінгу
У блокчейні кожен блок містить хеш попереднього, утворюючи ланцюг: змінити старий запис означає змінити всі наступні хеші. Майнінг біткоїна полягає в пошуку такого числа (nonce), щоб подвійний SHA-256 заголовка блоку був меншим за ціль мережі. Швидкість цього пошуку і є хешрейт: хешрейт. Як працює майнінг: майнінг біткоїна. Загальний огляд теми: криптовалюта і майнінг.
Спробуйте самі: генератор SHA-256
Введіть будь-який текст і подивіться на SHA-256. Потім змініть одну літеру або додайте крапку: хеш стане зовсім іншим. Окремий інструмент: SHA-256 онлайн.
SHA-256 у грі
TotalHash є безкоштовною грою-майнінгом у Telegram. Пристрій обчислює справжні хеші SHA-256 як ігрову механіку, а завдання надсилають невеликі суми USD₮ і GRAM на гаманець TON. Без обіцянок заробітку.
Безкоштовна гра в Telegram.
Відкрити TotalHashКороткі відповіді
Що таке хеш?
Рядок фіксованої довжини, отриманий з даних хеш-функцією, як їхній відбиток.
Чи можна розшифрувати хеш?
Ні, хеш-функція односпрямована.
Чому MD5 не можна використовувати для безпеки?
Для нього знайдені колізії.
Як правильно зберігати паролі?
З сіллю та повільними алгоритмами на кшталт Argon2id або bcrypt.