:::section{mins=2} Зачем криптография :::
:::lead [[gloss:cryptography|Криптография]] превращает блокчейн из базы данных в систему права собственности. :::
:::p В банке личность подтверждает институт: паспорт, пин, SMS — и банк решает, авторизован ли перевод. Убери банк — и главный вопрос: кто авторизует перевод? :::
:::p Ответ: твой [[gloss:private key|приватный ключ]]. Из одного большого случайного числа математика выводит [[gloss:public key|публичный ключ]] и публичный идентификатор кошелька. Процесс односторонний: вперёд быстро, назад вычислительно невозможно. :::
:::p Когда ты подписываешь [[gloss:transaction|транзакцию]] приватным ключом, любая нода может проверить [[gloss:digital signature|цифровую подпись]] через публичный ключ — без паспорта и банка. Доверие заменяется математикой. :::
:::callout{icon=💡} Модель почтового ящика: адрес публичный (любой может отправить), но тратить может только владелец ключа. :::
:::keypoints{label="Ключевые моменты"}
- [[gloss:private key|Приватный ключ]] — не пароль, а владение
- [[gloss:public key|Публичный ключ]] можно показывать; приватный — никогда
- [[gloss:digital signature|Подпись]] авторизует перевод без раскрытия ключа :::
:::quiz{id=q-1-4-s1 correct=2 explanation="Верно. Криптография заменяет доверенных посредников. Банк верифицирует личность и авторизует переводы. В блокчейне это делает приватный ключ — через математику, которую любая нода может проверить независимо."} Что криптография заменяет в блокчейне по сравнению с традиционной финансовой системой?
- Шифрование данных транзакций
- Необходимость интернет-соединения
- Банк, нотариуса и верификацию личности — заменены математикой которую может проверить каждый
- Сам блокчейн :::
:::section{mins=3} Приватный и публичный ключ :::
:::lead [[gloss:private key|Приватный ключ]] — случайное число, которым нельзя делиться. [[gloss:public key|Публичный ключ]] — вычисляется из приватного и им можно делиться. Обратное вычисление невозможно. :::
:::p Приватный ключ — «просто число», но астрономически большое: 256 бит — это примерно (10^{77}) вариантов. Кошелёк выбирает один случайно при создании. :::
:::p Из приватного ключа однонаправленная математика на [[gloss:elliptic curve|эллиптических кривых]] выводит публичный. Вперёд — быстро, назад — вычислительно неосуществимо. :::
:::p [[gloss:seed phrase|Seed-фраза]] — человекочитаемая запись того же секрета. Кто знает seed — фактически знает приватный ключ. :::
:::keypoints{label="Ключевые моменты"}
- Никогда не делись [[gloss:private key|приватным ключом]] или [[gloss:seed phrase|seed-фразой]]
- [[gloss:public key|Публичный ключ]] безопасно показывать: он не даёт права тратить
- Случайность — не «деталь», слабая случайность ломает безопасность ключей :::
:::quiz{id=q-1-4-s2 correct=0 explanation="Верно. Публичный ключ предназначен для публичного использования — именно через него отправляют тебе средства. Математика однонаправленная: публичный выводится из приватного, но обратное вычислительно невозможно. Делись свободно."} Друг просит публичный ключ чтобы отправить тебе ETH. Безопасно ли поделиться?
- Да — публичный ключ предназначен для публичного использования. Он не даёт доступа к средствам
- Нет — из публичного ключа можно вывести приватный
- Делись только последними 20 байтами (адресом), никогда полным ключом
- Зависит от блокчейна :::
:::section{mins=2} Цифровая подпись :::
:::lead [[gloss:digital signature|Цифровая подпись]] доказывает, что именно ты авторизовал транзакцию — не раскрывая [[gloss:private key|приватный ключ]]. :::
:::p Когда нажимаешь «Send», кошелёк формирует данные транзакции, хеширует их и подписывает хеш приватным ключом (в Bitcoin/Ethereum используется [[gloss:ecdsa|ECDSA]]). :::
:::p По сети идёт подпись вместе с транзакцией. Любая нода проверяет подпись через [[gloss:public key|публичный ключ]]. Измени хоть один байт — подпись сразу становится недействительной. :::
:::callout{icon=💡} Аналогия с печатью: проверить может любой, создать — только владелец. :::
:::keypoints{label="Ключевые моменты"}
- Приватный ключ остаётся на устройстве — наружу уходит только подпись
- Подпись доказывает и авторизацию, и целостность данных
- Подделать «от кого» без приватного ключа невозможно :::
:::quiz{id=q-1-4-s3 correct=2 explanation="Верно. Приватный ключ никуда не передаётся. Кошелёк подписывает локально и отправляет данные транзакции плюс подпись. Любая нода может проверить подпись используя публичный ключ — доказывая авторизацию без доступа к приватному ключу."} Ты нажимаешь «Отправить». Приватный ключ подписывает транзакцию. Что именно передаётся по сети?
- Приватный ключ + данные транзакции
- Публичный ключ + данные транзакции
- Данные транзакции + подпись (приватный ключ никогда не покидает устройство)
- Только подпись — ноды восстанавливают транзакцию из неё :::
:::section{mins=3} От ключа к адресу :::
:::lead [[gloss:private key|Приватный ключ]] → [[gloss:public key|публичный ключ]] → идентификатор кошелька. Каждый шаг односторонний. :::
:::p Идея такая: приватный ключ — число. На [[gloss:elliptic curve|эллиптической кривой]] есть базовая точка. Умножение базовой точки на число даёт публичный ключ. Вперёд легко, назад — сложнейшая задача (ECDLP). :::
:::p Чтобы получить короткий идентификатор, берут публичный ключ и пропускают через [[gloss:hash|хеш-функцию]]. Хеш — это отпечаток фиксированного размера, из которого нельзя восстановить исходные данные. :::
:::keypoints{label="Ключевые моменты"}
- Публичный идентификатор не секрет — он выводится из секрета
- [[gloss:hash|Хеши]] делают длинную математику удобной
- Односторонность (вперёд легко, назад невозможно) — фундамент :::
:::quiz{id=q-1-4-s4 correct=1 explanation="Верно. Адрес публичный по дизайну — делись свободно. Знание чужого адреса не даёт никакого доступа к средствам. Можно только отправлять на него или смотреть баланс в блок-эксплорере."} Кто-то знает твой Ethereum адрес. Что они могут с ним сделать?
- Получить доступ к средствам если знают seed-фразу
- Отправить тебе ETH и видеть баланс — и ничего больше
- Восстановить приватный ключ используя данные блокчейна
- Подписывать транзакции от твоего имени :::
:::section{mins=3} Почему ключ невозможно подобрать :::
:::lead 256-битные ключи практически невозможно подобрать: перебор [[gloss:private key|приватного ключа]] недостижим для реальных вычислений. :::
:::p Пространство 256 бит — это (2^{256}) вариантов. Даже если проверять триллионы ключей в секунду, ты не приблизишься к успеху. :::
:::p Поэтому реальные риски — не «сломают математику», а человеческие ошибки: фишинг, malware, утечка [[gloss:seed phrase|seed-фразы]] или плохая случайность при генерации ключа. :::
:::keypoints{label="Ключевые моменты"}
- Взлом — это чаще операционная безопасность, а не перебор 256 бит
- Защищай [[gloss:seed phrase|seed-фразу]] как ключ от сейфа :::
:::quiz{id=q-1-4-s5 correct=3 explanation="Верно. Пространство ключей настолько огромно, что ломает человеческую интуицию. 2^256 ≈ 10^77 — сопоставимо с числом атомов в наблюдаемой Вселенной. Случайно попасть на существующий ключ статистически невозможно."} Почему практически невозможно угадать чужой приватный ключ даже со всеми компьютерами мира?
- Приватные ключи хранятся зашифрованными на серверах
- Угадывание требует знания личности владельца
- Ключи автоматически меняются каждые 24 часа
- 2^256 возможных ключей — больше атомов в наблюдаемой Вселенной. Даже все компьютеры за всё время не смогли бы их перебрать :::
:::section{mins=3} Эллиптические кривые :::
:::lead [[gloss:elliptic curve|Эллиптические кривые]] — математика ключей Bitcoin и Ethereum: публичный ключ легко получить из приватного, но обратное вычисление практически невозможно. :::
:::p Bitcoin и Ethereum используют одну кривую — secp256k1. Публичный ключ — точка на кривой, приватный — число, которым умножают базовую точку. :::
:::p Тебе не нужно считать вручную — достаточно помнить ключевое свойство: односторонность и есть причина, почему асимметричная криптография работает для владения. :::
:::keypoints{label="Ключевые моменты"}
- Приватный → публичный быстро
- Публичный → приватный — нерешаемая задача при реальных ресурсах
- Это позволяет работать [[gloss:digital signature|цифровым подписям]] :::
:::quiz{id=q-1-4-s6 correct=0 explanation="Верно. Одна кривая означает одинаковый алгоритм генерации ключей — поэтому MetaMask и большинство кошельков поддерживают и Bitcoin, и Ethereum с одной seed-фразой. Адреса выглядят по-разному, но лежащая в основе математика идентична."} Bitcoin и Ethereum используют одну эллиптическую кривую (secp256k1). Какое практическое преимущество это даёт?
- Один кошелёк может работать с обоими — одна генерация ключей, одна логика вывода адресов
- Транзакции можно отправлять между двумя блокчейнами напрямую
- Обе цепочки разделяют один бюджет безопасности
- Приватные ключи взаимозаменяемы между двумя сетями :::
:::section{mins=2} Квантовая угроза :::
:::lead Квантовые компьютеры — потенциальная долгосрочная угроза для текущей криптографии, но не «взлом завтра». :::
:::p Достаточно мощный квантовый компьютер теоретически может атаковать математические предпосылки некоторых схем подписей. Поэтому развиваются post-quantum подписи. :::
:::p Практически вопрос в миграции: смогут ли сети обновиться до новых схем до того, как квантовые атаки станут реальными? :::
:::keypoints{label="Ключевые моменты"}
- Квантовая угроза — это про будущую миграцию
- Сегодня деньги чаще теряют из-за утечек ключей и скамов, а не из-за сломанной математики :::
:::quiz{id=q-1-4-s7 correct=0 explanation="Верно. Адрес — это хеш публичного ключа, а не сам ключ. Пока не отправлял транзакцию, публичный ключ никогда не раскрывался. Квантовому компьютеру нужен публичный ключ чтобы работать в обратном направлении к приватному. Нет публичного ключа = нет поверхности атаки."} У тебя есть Ethereum адрес, с которого никогда не отправлялись транзакции. Он безопаснее от квантовых атак чем тот с которого отправляли?
- Да — пока не отправлял, публичный ключ скрыт. Квантовый компьютер не может атаковать то, чего не видит
- Нет — сам адрес раскрывает достаточно информации
- Разницы нет — квантовые компьютеры могут брутфорсить адреса напрямую
- Только аппаратные кошельки защищены от квантовых атак :::