Skip to content

Лекція 40. Хешування і шифрування

Лекція 40. Хешування і шифрування

Section titled “Лекція 40. Хешування і шифрування”

Рівень 7: Вартовий цифрової фортеці

Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.

Що ми сьогодні розкриємо

Section titled “Що ми сьогодні розкриємо”
  • відрізняти hash від encryption
  • зрозуміти цифровий відбиток даних
  • порахувати SHA-256 для вигаданого рядка й файлу

Зв’язок з попередніми лекціями

Section titled “Зв’язок з попередніми лекціями”

У цій лекції ми використаємо знання про безпеку з лекції 39, щоб навчитися відрізняти шифрування від хешування.

Шифрування має шлях назад із ключем

Section titled “Шифрування має шлях назад із ключем”

При шифруванні дані перетворюються на шифротекст, а той, хто має правильний ключ і алгоритм, може їх розшифрувати. Це потрібно, коли інформацію треба зберегти секретною, але пізніше прочитати.

Хеш — односторонній цифровий відбиток

Section titled “Хеш — односторонній цифровий відбиток”

Хеш-функція бере дані будь-якого розміру й створює значення фіксованої довжини. Для криптографічних хешів ми очікуємо, що практично неможливо відновити початкові дані лише з хешу та дуже складно підібрати інші дані з тим самим відбитком.

Хешування не є «шифруванням без ключа». Мета інша.

graph LR
    subgraph Шифрування
        SE["Дані: СЕКРЕТ"] -->|"ключ"| SENC["Шифротекст
(не читається)"]
        SENC -->|"той самий ключ"| SDEC["Знову: СЕКРЕТ"]
    end

    subgraph Хешування
        HE["Дані: СЕКРЕТ"] --> H["Хеш-функція"] --> HH["Відбиток f3a1…
(фіксована довжина)"]
        HH --> REST["← назад неможливо →"]
    end

    style SENC fill:#fce4ec
    style HH fill:#fff3e0
    style REST fill:#e8f5e9

Маленька зміна — зовсім інший відбиток

Section titled “Маленька зміна — зовсім інший відбиток”

Якщо змінити один символ у файлі, SHA-256 зазвичай зміниться кардинально. Саме тому хеші корисні для перевірки цілісності: «чи байти залишилися тими самими?»

Архів із сайту може мати опублікований SHA-256. Після завантаження користувач рахує свій хеш і порівнює значення.

Марко і марко — різні байти, тому їхні SHA-256 будуть зовсім різні.

Зберігання паролів у реальних системах вимагає спеціальних password-hashing алгоритмів із salt і параметрами вартості; простий SHA-256 сам по собі для бази паролів не підходить. Ми не будуємо систему логіну в цій лекції.

Python-лабораторія: цифровий відбиток

Section titled “Python-лабораторія: цифровий відбиток”
import hashlib
text = "training-message"
data = text.encode("utf-8")
digest = hashlib.sha256(data).hexdigest()
print("Текст:", text)
print("SHA-256:", digest)

Потім зміни лише одну літеру й порівняй хеші.

Для навчального файлу Linux також часто має:

Terminal window
sha256sum ~/marko-lab/files/hello.txt

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. порахуй SHA-256 для двох рядків, що відрізняються одним символом
  2. порахуй хеш hello.txt через sha256sum
  3. додай один символ у копію файлу та порівняй хеш
  4. поясни, чому hash і encryption мають різні цілі
  5. назви задачу, де корисно перевірити хеш файлу
  • Чи можна нормальним способом «розшифрувати» криптографічний хеш назад?
  • Для чого потрібен ключ у шифруванні?
  • Чому зміна одного байта важлива для хешу?
  • Для чого sha256sum?
  • Чому простий SHA-256 не є правильним способом самостійно будувати сховище паролів?
  • Шифрування (encryption) — перетворення даних на незрозумілі без ключа.
  • Ключ — секретне значення для шифрування/розшифрування.
  • Хеш (hash) — односторонній відбиток фіксованої довжини.
  • SHA-256 — популярний криптографічний алгоритм хешування.
  • Цілісність (integrity) — стан, коли байти даних залишилися незмінними.
  • Соль (salt) — додаткове випадкове значення для ускладнення підбору паролів.
  • sha256sum — Linux-команда, що рахує SHA-256 для файлу.

Чек-лист перед наступною лекцією

Section titled “Чек-лист перед наступною лекцією”
  • Чи можеш ти пояснити різницю між хешуванням та шифруванням?
  • Чи знаєш ти, як працює хеш-функція SHA-256?
  • Чи розумієш ти, для чого використовуються хеші у безпеці?

Що потрібно винести з лекції

Section titled “Що потрібно винести з лекції”
  • шифрування захищає секретність і має контрольований шлях розшифрування
  • хешування створює односторонній відбиток
  • хеш корисний для перевірки цілісності даних

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.