- 13.11.18
- 675
- 3,000,000 ₽
- 10
Как подписываются онлайн-транзакции, если приватный ключ находится в офлайне
Один из частых вопросов у новичков в криптографии и блокчейне: как вообще можно подписывать транзакции, если приватный ключ никогда не подключается к интернету?
На первый взгляд это кажется противоречием, но на практике именно так и достигается высокий уровень безопасности.
Разберем процесс по шагам.
1. Базовый принцип: подпись ≠ отправка
Ключевая идея — подпись транзакции и её отправка в сеть — это разные операции.
- Подпись выполняется приватным ключом
- Отправка выполняется уже готовой подписанной транзакцией
Приватный ключ не обязан иметь доступ к сети, потому что он:
- не получает данные из блокчейна
- не взаимодействует с нодами
- не «отправляет» транзакцию
Он лишь выполняет математическую операцию: создает цифровую подпись.
2. Что именно подписывается
Перед подписью формируется сырой объект транзакции (raw transaction), который содержит:
- входы (UTXO или account nonce)
- выходы (адреса и суммы)
- комиссии
- служебные поля (chain id, gas limit и т.д.)
Важно:
Подписывается не «перевод», а хэш детерминированной структуры данных.
Этот хэш можно безопасно передать в офлайн-среду.
3. Типовой сценарий офлайн-подписи
Шаг 1. Онлайн-устройство (watch-only)
- Имеет доступ к интернету
- Знает публичный адрес, но не приватный ключ
- Формирует неподписанную транзакцию
- Сохраняет её в файл или отображает как QR-код
Шаг 2. Офлайн-устройство (cold wallet)
- Никогда не подключается к сети
- Содержит приватный ключ
- Получает неподписанную транзакцию (через QR, USB, SD-карту)
- Проверяет параметры вручную
- Создает цифровую подпись
- Возвращает подписанную транзакцию
Шаг 3. Онлайн-устройство
- Получает подписанную транзакцию
- Отправляет её в блокчейн
На этом участие приватного ключа завершено.
4. Почему это безопасно
- Приватный ключ не покидает офлайн-среду
- Подписывается только заранее сформированное сообщение
- Подпись:
- нельзя подделать без ключа
- нельзя использовать для другой транзакции
- Даже если онлайн-устройство скомпрометировано:
- злоумышленник не сможет подписать новую транзакцию
- пользователь увидит подмену при проверке на офлайн-экране
5. Аппаратные кошельки — автоматизация этого процесса
Ledger, Trezor, Coldcard и аналоги делают то же самое, но удобнее:
- компьютер/смартфон формирует транзакцию
- аппаратный кошелек:
- показывает детали на своем экране
- подписывает внутри защищенного чипа
- наружу выходит только подпись
Приватный ключ:
- не доступен ОС
- не доступен браузеру
- не доступен вредоносному ПО
6. Air-gapped системы
Наиболее параноидальный (и самый безопасный) вариант:
- полностью изолированный компьютер
- без Wi-Fi, Bluetooth, USB
- обмен данными только через QR-коды
Используется:
- в институциональном хранении
- у крупных холдеров
- в multisig-схемах
7. Частая ошибка мышления
«Если транзакция онлайн, значит и ключ онлайн»
Это неверно.
На самом деле:
- блокчейн видит только подпись
- подпись не раскрывает приватный ключ
- математически невозможно восстановить ключ из подписи
8. Итог
Онлайн-транзакции с офлайн-ключами возможны потому, что:
- подпись — локальная криптографическая операция
- сеть не требует знания приватного ключа
- разделение ролей (создание / подпись / отправка) повышает безопасность
Именно этот принцип лежит в основе:
- cold storage
- аппаратных кошельков
- multisig
- корпоративного кастодиального хранения
Если приватный ключ хоть раз оказался в онлайне — он уже не считается холодным.