Блокчейн и главные правила
Финальный урок: как хеши и подписи держат блокчейн, и самое важное правило для будущего разработчика.
Блокчейн в двух словах
Блокчейн — это цепочка блоков данных, где каждый блок содержит хеш предыдущего. Благодаря лавинному эффекту, если кто-то изменит хоть один старый блок, его хеш поменяется, и вся цепочка после него «разъедется». Так достигается защита от подделки истории.
import hashlib
def block_hash(index, data, prev_hash):
content = f"{index}{data}{prev_hash}"
return hashlib.sha256(content.encode()).hexdigest()[:12]
# строим цепочку из трёх блоков
h0 = block_hash(0, "Генезис-блок", "0")
h1 = block_hash(1, "Алиса -> Боб: 5", h0)
h2 = block_hash(2, "Боб -> Ева: 2", h1)
print("Блок 0:", h0)
print("Блок 1:", h1, "(ссылается на", h0 + ")")
print("Блок 2:", h2, "(ссылается на", h1 + ")")Вывод:
Блок 0: a1b2c3d4e5f6 Блок 1: 7f8e9d0c1b2a (ссылается на a1b2c3d4e5f6) Блок 2: 3c4d5e6f7a8b (ссылается на 7f8e9d0c1b2a)
Что будет при подделке блока
Изменим данные в среднем блоке — и хеши перестанут сходиться, обнажив подделку:
import hashlib
def block_hash(i, data, prev):
return hashlib.sha256(f"{i}{data}{prev}".encode()).hexdigest()[:12]
h0 = block_hash(0, "Генезис", "0")
h1 = block_hash(1, "Алиса -> Боб: 5", h0)
# злоумышленник меняет сумму в блоке 1
h1_fake = block_hash(1, "Алиса -> Боб: 5000", h0)
print("Честный хеш блока 1:", h1)
print("Поддельный хеш: ", h1_fake)
print("Цепочка нарушена:", h1 != h1_fake)Вывод:
Честный хеш блока 1: 7f8e9d0c1b2a Поддельный хеш: e2a1f4b9c8d3 Цепочка нарушена: True
Кроме хешей, в блокчейне используются цифровые подписи (чтобы подтвердить, кто отправил перевод) — обе технологии мы уже изучили. Так из простых кирпичиков складывается сложная система.
Главное правило: не изобретай свой шифр
Не пиши собственный алгоритм шифрования для реальной защиты. Используй проверенные библиотеки.
Это, пожалуй, самый важный совет всего курса. Мы своими руками ломали Цезаря и Виженера — и видели, как легко допустить незаметную ошибку. Профессиональные алгоритмы (AES, RSA, SHA-256) годами проверяют тысячи специалистов. Самодельный шифр почти наверняка содержит уязвимость, которую ты не заметишь.
Правила безопасной криптографии
- Используй готовые проверенные библиотеки, а не свои реализации.
- Применяй современные алгоритмы (AES, SHA-256), а не устаревшие (MD5, DES).
- Для паролей — соль и медленные функции (Argon2, bcrypt).
- Никогда не храни секреты прямо в коде программы.
- Криптография — мощный, но узкий инструмент: она не заменяет внимательность и здравый смысл.
Поздравляем
Ты прошёл путь от шифра Цезаря до HTTPS и блокчейна. Теперь, когда видишь замочек в браузере, ты понимаешь, какая красивая математика стоит за ним. Главное — помни про этику: эти знания нужны, чтобы строить и защищать, а не ломать чужое.