Що таке насправді SHA-256 Cuadernos Lacre · Концепція · 19 травня 2026 https://solo2.net/uk/notebooks/articulos/what-sha-256-actually-is.html Математичний відбиток, що вміщується у шістдесят чотири символи і повністю змінюється, якщо змінити хоча б одну кому в оригінальному тексті. Чому ми називаємо його цифровою сургучною печаткою. --- Проста ідея за технічною назвою Уявіть, що існує машина з одним слотом і одним екраном. У слот ви вставляєте текст: слово, фразу, цілий роман. На екрані за мить з'являється послідовність рівно із шістдесяти чотирьох символів. Ми, професійні читачі, називаємо це хешем або криптографічним резюме; для загального читача ми можемо поки що називати це математичним відбитком тексту, як відбиток пальця є відбитком людини. Якщо ви вставите один і той самий текст двічі, машина обидва рази покаже той самий відбиток. Якщо ви вставите трохи інший текст — одну зміщену кому, велику літеру замість малої — машина покаже зовсім інший відбиток, ніж перший. Не схожий, а саме інший. Ці дві властивості разом — детермінізм і чутливість — і є тією простою ідеєю. Усе інше в SHA-256 — це механізм, який забезпечує їх виконання. Варто відразу сказати, чого машина не робить. Вона не шифрує текст. Не приховує його. Не зберігає його. Машина дивиться на текст, обчислює відбиток і забуває про текст. Відбиток не дозволяє відновити текст, який його створив; він лише дозволяє, маючи кандидат на текст, перевірити, чи збігається він з оригіналом. Тому ми кажемо, що це резюме в один бік: туди можна, назад — ні. Хеш — це не те саме, що шифрування Плутанина виникає часто, і її варто розвіяти: шифрування та хешування — це різні операції. Шифрування полягає в перетворенні тексту так, щоб лише власник ключа міг повернути його до початкового вигляду. Хешування полягає у створенні відбитка тексту, з якого оригінальний текст ніколи не можна відновити, ні з ключем, ні без нього. Перше за задумом є оборотним; друге за задумом — необоротним. Практичний наслідок важливий. Коли додаток каже: «ми зберігаємо ваш пароль зашифрованим», є хтось, хто має ключ для його розшифрування — у будь-якому разі сам додаток. Коли додаток каже: «ми зберігаємо ваш пароль хешованим», сам додаток не може прочитати оригінальний пароль, навіть якби захотів; він може лише перевірити, чи те, що ви вводите, знову створює той самий відбиток. Друга модель, за правильного виконання, набагато краща за першу для зберігання паролів. Далі ми побачимо, чому «правильне виконання» вимагає дещо більшого, ніж просто SHA-256. Чотири властивості, що роблять криптографічний хеш корисним Хеш-функція, що заслуговує на прикметник криптографічна, відповідає чотирьом властивостям: 1. Детермінізм. Один і той самий вхід завжди створює один і той самий відбиток. 2. Ефект лавини. Невелика зміна у вхідних даних створює зовсім інший відбиток, без видимої подібності до попереднього. 3. Стійкість до зворотного перетворення. Маючи відбиток, обчислювально неможливо знайти текст, який його створив. 4. Стійкість до колізій. Обчислювально неможливо знайти два різних тексти, які створювали б однаковий відбиток. «Обчислювально неможливо» не означає «математично неможливо». Це означає, що вартість часу, енергії та грошей для досягнення цього на багато порядків перевищує суму всієї обчислювальної потужності, яка є розумно доступною. Для SHA-256 ця межа вимірюється тисячами трильйонів років навіть за найбільш оптимістичних підходів зі спеціалізованим обладнанням. Що для практичних цілей читача те саме, що й «неможливо». SHA-256, конкретно Назва говорить сама за себе. SHA — це абревіатура від Secure Hash Algorithm: алгоритм безпечного хешування. Число 256 вказує на розмір відбитка в бітах: двісті п'ятдесят шість бітів, тобто тридцять два байти, які у шістнадцятковому форматі виглядають як шістдесят чотири символи, які читач уже впізнає. Стандарт був опублікований американським інститутом NIST, органом, який нормує такі функції, у 2001 році як частина сімейства SHA-2; чинна версія стандарту, FIPS 180-4, датується 2015 роком. Розміри заслуговують на хвилинку уваги. Двісті п'ятдесят шість бітів дозволяють два у двісті п'ятдесятому шостому ступені різних значень: число з сімдесятьма вісьмома десятковими цифрами, що на кілька порядків більше, ніж орієнтовна кількість атомів у спостережуваному всесвіті. Кожен текст у світі — кожна книга, кожен електронний лист, кожне повідомлення — потрапляє на одне з цих значень. Ймовірність того, що два різні тексти випадково збіжаться, для практичних цілей не відрізняється від нуля. Як це виглядає в коді Чому мы називаємо його сургучною печаткою У європейській кореспонденції XV–XIX століть сургуч (lacre) запечатував лист. Крапля розплавленого воску, притиснута зверху печатка — і лист залишався позначеним неповторним чином. Це не захищало вміст від рішучого допитливого ока — папір можна було прочитати на світло, сургуч можна було зламати — але це свідчило про втручання. Будь-яка зміна запечатування була помітна одержувачу ще до того, як він розгорнув папір. Сургуч не запобігав пошкодженню; він його виявляв. SHA-256 тексту кожного Cuaderno виконує ту саму функцію в його цифровій версії. Якби хоча б одне слово статті змінилося між моментом її публікації та моментом, коли ви її читаєте, шістнадцяткова печатка внизу тексту вже не збігалася б із SHA-256 тексту, який перед вами. Будь-який читач із п'ятьма рядками коду міг би це перевірити. Публікація не може переписати свою історію так, щоб печатка її не викрила. Вона не захищає від пошкодження; вона робить його таким, що піддається перевірці. Чим хеш не є Чотири речі іноді очікують від SHA-256, які йому не притаманні: 1. Шифрування. Хеш резюмує, а не приховує. Якщо ви хочете, щоб текст не можна було прочитати, вам потрібно його зашифрувати, а не хешувати. 2. Автентифікація автора. Хеш не говорить, хто написав текст, лише який текст був хешований. Щоб пов'язати авторство, потрібен криптографічний підпис поверх хешу, а не просто сам хеш. 3. Зберігання паролів. Тут є пастка, яку варто розуміти. SHA-256 розроблений бути дуже швидким — що добре для багатьох речей, але погано для цієї. Зловмисник зі спеціалізованим обладнанням може перевіряти мільярди паролів на секунду проти хешу SHA-256, поки не знайде ваш. Для зберігання паролів слід використовувати навмисно повільні функції виведення ключа, такі як Argon2, scrypt або bcrypt, у поєднанні з сіллю (унікальними випадковими даними для кожного користувача, що запобігає ситуації, коли двоє людей з однаковим паролем мають однаковий хеш). 4. Читання хешу як ідентифікатора автора. Це не так. Хеш ідентифікує вміст. Якщо двоє людей хешують слово привіт за допомогою SHA-256, обидва отримають однакове резюме — і це центральна властивість, а не дефект: якби резюме були різними, ми не могли б перевірити збіг між опублікованим і отриманим. Де з'являється SHA-256 у вашому повсякденному житті Хоча ви цього не бачите, SHA-256 підтримує значну частину того, що ви щодня використовуєте в інтернеті. Блокчейн Bitcoin будується шляхом зчеплення SHA-256 кожного блоку з наступним; зміна минулого блоку змушує перераховувати весь наступний ланцюг. Git, система, за допомогою якої версіонується код половини світу, ідентифікує кожне підтвердження (commit) за допомогою SHA-256 (у нових версіях) або його попередника SHA-1 (у старіших версіях) усього його вмісту. Сертифікати HTTPS, які перевіряють автентичність сайту, коли ви на нього заходите, мають пов'язаний відбиток SHA-256. Завантаження програмного забезпечення часто супроводжуються SHA-256, опублікованим розробником, щоб ви могли перевірити, чи не було файл змінено під час передачі. І, як ми вже казали, внизу кожного Cuadernos Lacre. Для професійного читача Чотири оперативні нагадування для тих, хто приймає рішення або проводить аудит систем: 1. Хеш — це не шифрування. Якщо постачальник плутає ці два терміни у своїй технічній документації, варто запитати, що саме він має на увазі. 2. Для зберігання паролів ніколи не слід використовувати лише SHA-256. SHA-256 занадто швидкий для цього завдання (див. пункт 3 розділу Чим хеш не є). Поточним стандартом є Argon2id: повільний за задумом, з можливістю налаштування відповідно до потужності сервера, у поєднанні з різною випадковою сіллю для кожного користувача. 3. Для цілісності документів — контрактів, справ, файлів — SHA-256 залишається еталонним стандартом. Саме його використовують кваліфіковані постачальники послуг довіри для позначення часу в ЄС. 4. Для довгострокового зберігання (десятиліття) варто також обчислювати та архівувати SHA-3 або SHA-512 разом із SHA-256; криптографічна обачність рекомендує не покладатися на одну функцію протягом столітніх архівів. Уявіть, що ви побудували найскладнішу у світі схему з доміно: тисячі фішок, десятки розгалужень, механічні мости та рампи, що проходять через усю кімнату, ретельно розставлені фішка за фішкою. Якщо ви штовхнете першу фішку, ланцюжок впаде у точній і повторюваній послідовності. Однакове налаштування, однаковий перший поштовх → ідентичний фінальний малюнок впалих фішок, знову і знову. Ось що цікаво: посуньте лише одну фішку на пів сантиметра вбік перед початком і знову штовхніть. Рампа, яка мала активуватися, залишається нерухомою, міст не падає, спрацьовує інше розгалуження. Фінальний візерунок фішок на підлозі абсолютно невпізнанний порівняно з першим. Математично SHA-256 — це і є така схема. Текст, який ви пишете, — це початкове положення фішок. Алгоритм — це поштовх, який запускає каскад. А кінцевий результат — те, що ми називаємо хешем (hash), — це незмінне фото підлоги, коли все зупинилося. Змініть хоча б одну кому в оригінальному тексті, і фото буде кардинально іншим. Так просто і так радикально. --- Якщо ви повернетеся до кінця цієї статті, ви побачите шістнадцяткову печатку із шістдесяти чотирьох символів. Це SHA-256 тексту, який ви щойно прочитали, цією мовою. Якби ми переклали статтю, печатка була б іншою; якби змінилося хоча б одне слово в іспанській версії, іспанська печатка змінилася б. Печатка не захищає вміст — для цього є інші інструменти — а однозначно ідентифікує його. І цього, як би скромно це не звучало, достатньо, щоб жоден крок у видавничому ланцюгу не міг змінити сказане непомітно. Усе інше — шифрування, підпис, ідентифікація — будується на цій простій ідеї. Джерела та додаткова література - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), серпень 2015 р. Офіційна специфікація сімейства SHA-2, включаючи SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, травень 2011 р. Нормативна версія для розробників. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). Розділи 5 і 6 охоплюють хеш-функції та їх законне й незаконне використання. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Практичний приклад використання SHA-256 для зчеплення блоків у незмінну за конструкцією структуру. - Регламент (ЄС) 910/2014 (eIDAS) — рамки для кваліфікованих позначок часу. SHA-256 є еталонною функцією для кваліфікованих електронних підписів та печаток, що видаються в ЄС. - Еталонна реалізація в Zig: std.crypto.hash.sha2.Sha256 в офіційному репозиторії мови (github.com/ziglang/zig → lib/std/crypto/sha2.zig). Це оптимізована та аудійована версія, яку фактично використовує Solo2. Корисно для порівняння з навчальною реалізацією в додатку. --- Cuadernos Lacre · Видання Menzuri Gestión S.L. · автор R.Eugenio · під редакцією команди Solo2. https://solo2.net/uk/notebooks/