Читаем Введение в технологию Блокчейн полностью

Вместо того, чтобы генерировать единственный адрес, мы генерируем то, что будем называть информацией о генерации адреса, а вместо приватного ключа генерируем то, что мы будем называть информацией о генерации секретного ключа.

Учитывая информацию о генерации адреса, мы можем генерировать последовательность адресов: мы применяем функцию генерации адреса, которая принимает в качестве входных данных информацию о генерации адресов и любое целое число n и генерирует n-й адрес в последовательности.

Аналогичным образом мы можем генерировать последовательность приватных ключей с использованием информации о генерации секретного ключа.



Криптографическая магия заключается в том, что для каждого i, адрес и секретный ключ соответствуют друг другу, то есть i-й секретный ключ может использоваться для траты биткойнов с i-го адреса так же, как если бы пара была сформирована прежним способом.

Таким образом, теперь у нас есть последовательность пар ключей.

Другим важным криптографическим свойством здесь является безопасность: информация о генерации адресов не передает никакой информации о закрытых ключах.

Это означает, что безопасно предоставить информацию о генерации адресов кому угодно, и этот кто-угодно не сможет сгенерировать i-й ключ.

Теперь, не все существующие схемы цифровой подписи могут быть изменены для поддержки генерации иерархических ключей.

Но хорошей новостью является то, что схема цифровой подписи, используемая Bitcoin, ECDSA, поддерживает иерархическое генерирование ключей, что позволяет использовать этот трюк.

То есть, холодное хранилище может сгенерировать произвольное количество ключей, а горячее хранилище сгенерирует соответствующие адреса.

Холодное хранилище создает и сохраняет информацию о генерации секретного ключа и информацию о генерации адреса.

Оно создает одноразовую передачу информации о генерации адреса горячему хранилищу.

Горячее хранилище генерирует новый адрес последовательно каждый раз, когда оно хочет отправить монеты холодному хранилищу.

Когда холодное хранилище снова подключается в сеть, оно последовательно генерирует адреса и проверяет цепочку блоков для транзакций на эти адреса, пока не достигнет адреса, который не получил никаких монет.

Оно также может последовательно генерировать приватные ключи, если оно хочет отправить монеты обратно горячему хранилищу или потратить их другим способом.

Теперь давайте поговорим о различных способах хранения холодной информации – будь то один или несколько ключей, или хранение информации о генерации ключей.

Первый способ – хранить эту информацию на каком-либо устройстве и помещать это устройство в сейф.

Это может быть портативный компьютер, мобильный телефон или планшет, или флэш-накопитель.

Главное – выключить устройство и заблокировать его, чтобы, если кто-то захочет его украсть, ему придется взломать заблокированное хранилище.

Второй способ, который мы можем использовать, называется мозговым кошельком.

Это способ контролировать доступ к биткойнам, используя только секретную кодовую фразу.

Это позволяет избежать необходимости использования жестких дисков, бумаги или любого другого долговременного механизма хранения.

Это может быть особенно полезно в ситуациях, когда у вас могут украсть носитель для хранения ключей, например, когда вы путешествуете.

Мозговой кошелек основан на предсказуемом алгоритме для конвертации ключевой фразы в публичный и приватный ключи.

Например, вы можете хэшировать кодовую фразу подходящей хеш-функцией для получения приватного ключа, а с учетом приватного ключа, публичный ключ можно получить стандартным способом.

Кроме того, объединив это с иерархическим кошельком, мы можем генерировать последовательность адресов и приватных ключей из кодовой фразы, что позволяет создать полноценный кошелек.

Тем не менее, злоумышленник также может получить все приватные ключи в мозговом кошельке, если он сможет угадать кодовую фразу.

Как и всегда в компьютерной безопасности, мы должны предположить, что злоумышленник знает процедуру, которую вы использовали для генерации ключей, и только ваша кодовая фраза обеспечивает безопасность.

Таким образом, злоумышленник может использовать различные фразы и генерировать адреса, проверяя их; если он найдет какие-либо неизрасходованные транзакции в цепочке блоков по любому из этих адресов, он может немедленно потратить их для себя.

Злоумышленник может не знать, кому принадлежали монеты, и эта атака не требует взлома конкретной машины.

Угадывание кодовых фраз мозговых кошельков не направлено на конкретных пользователей, и не оставляет следов.

Кроме того, в отличие от задачи угадывания пароля электронной почты, которая может быть ограничена вашим почтовым сервером, с мозговыми кошельками, злоумышленник может загрузить список адресов с неиспользованными монетами и пробовать неограниченное число потенциальных фраз.

Обратите внимание, что здесь злоумышленнику не нужно знать, какие адреса соответствуют мозговым кошелькам.

Это называется автономным взломом пароля.

Перейти на страницу:

Похожие книги