Лекція 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 зазвичай зміниться кардинально. Саме тому хеші корисні для перевірки цілісності: «чи байти залишилися тими самими?»
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”Архів із сайту може мати опублікований SHA-256. Після завантаження користувач рахує свій хеш і порівнює значення.
Приклад 2
Section titled “Приклад 2”Марко і марко — різні байти, тому їхні SHA-256 будуть зовсім різні.
Приклад 3
Section titled “Приклад 3”Зберігання паролів у реальних системах вимагає спеціальних 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 також часто має:
sha256sum ~/marko-lab/files/hello.txtМісія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- порахуй SHA-256 для двох рядків, що відрізняються одним символом
- порахуй хеш
hello.txtчерезsha256sum - додай один символ у копію файлу та порівняй хеш
- поясни, чому hash і encryption мають різні цілі
- назви задачу, де корисно перевірити хеш файлу
Перевір себе
Section titled “Перевір себе”- Чи можна нормальним способом «розшифрувати» криптографічний хеш назад?
- Для чого потрібен ключ у шифруванні?
- Чому зміна одного байта важлива для хешу?
- Для чого
sha256sum? - Чому простий SHA-256 не є правильним способом самостійно будувати сховище паролів?
Терміни однією фразою
Section titled “Терміни однією фразою”- Шифрування (encryption) — перетворення даних на незрозумілі без ключа.
- Ключ — секретне значення для шифрування/розшифрування.
- Хеш (hash) — односторонній відбиток фіксованої довжини.
- SHA-256 — популярний криптографічний алгоритм хешування.
- Цілісність (integrity) — стан, коли байти даних залишилися незмінними.
- Соль (salt) — додаткове випадкове значення для ускладнення підбору паролів.
sha256sum— Linux-команда, що рахує SHA-256 для файлу.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити різницю між хешуванням та шифруванням?
- Чи знаєш ти, як працює хеш-функція SHA-256?
- Чи розумієш ти, для чого використовуються хеші у безпеці?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- шифрування захищає секретність і має контрольований шлях розшифрування
- хешування створює односторонній відбиток
- хеш корисний для перевірки цілісності даних
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.