Ключи генерировали только вдвоём: один вбивает команду, другой жмёт Enter
Когда я работал в криптографии, одна из задач была такая: сгенерировать для клиента ключи на сервере так, чтобы они гарантированно никуда не утекли.
Никакой магии в этом не было. Мы просто брали лучшие общепринятые практики и соблюдали их без исключений.
Начиналось всё с рабочих мест. Компьютеры разработчиков были физически отключены от интернета. Нужно отправить почту или что-то найти — рядом стоял второй компьютер, только для интернета. Диски шифровались TrueCrypt. Сервер для генерации ключей, если я правильно помню, тоже жил внутри зашифрованного контейнера — виртуальная машина, которую запускали только по паролю.
Сама генерация выглядела так:
- На сервер заходят только вдвоём. Пароль разделён: первую половину знает один человек, вторую — другой. В одиночку не войти никому.
- На столе — распечатанный протокол по пунктам: войти, запустить команду, проверить вывод, выйти.
- Один вбивает команду, второй нажимает Enter. Любое действие требует обоих.
- Под каждым пунктом расписываются оба.
- Всё вместе — минут пять. Ключ сгенерирован, наружу уходит только публичная часть, сессия закрыта.
Пар было две — на случай, если кто-то заболел или уволился.
Ни один человек — ни уставший, ни подкупленный, ни с заражённым ноутбуком — не может сделать ничего в одиночку. Каждый шаг оставляет подпись. А зашифрованные машины без интернета не дают утащить что-то по сети.
Всё это — стандарт: dual control и split knowledge, «принцип четырёх глаз», изоляция от сети (air gap), в банковском мире — key ceremony. По такому же принципу генерируют корневые ключи DNSSEC и ключи платёжных HSM. Клиентам мы протокол показывали открыто — их это успокаивало, а не пугало.
Взлом Binance начался с ноутбука одного DevOps-инженера. В системе, где критичные машины не видят интернет, а любое важное действие требует двух людей и двух половин секрета, ноутбук одного человека — ещё не ключ от сейфа.
Что из этого следует сегодня — в отдельной истории.