Горячее и холодное хранение. Иерархические кошельки


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

Для того, чтобы использовать оба способа хранения , очевидно, для каждого из них нужно будет придумать секретный ключ, иначе коины на холодном хранении окажутся под угрозой, если кто-то взломает горячее. Между горячим и холодным то и дело будут происходить перемещения средств, так что каждой из сторон нужно будет знать адрес другой (иными словами, её публичный ключ).

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

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

Самое примитивное решение - сгенерировать на холодной стороне целую кучу адресов и выдавать их горячей стороне по одному. Недостаток состоит в том, что периодически придётся переподключать холодную сторону для передачи новых адресов.

Иерархические кошельки. Более эффективное решение - это иерархический кошелёк. Он позволяет холодной стороне использовать практически неограниченное количество адресов, а горячей стороне - узнать о них всё за короткую единовременную связь с другой стороной. Проблема в том, что для этого понадобится проявить некоторую криптографическую ловкость.

Когда мы говорили о генерировании ключа и цифровых подписях в главе 1, вопрос стоял о функции generateKeys, которая создаёт публичный ключ, выполняющий роль адреса, а также секретный ключ. В иерархическом ключе ключи генерируются ина че: вместо создания одного адреса создаётся "информация о генерировании адреса", а вместо приватного ключа создаётся "информация о генерировании приватного ключа". Имя первую, мы можем сгенерировать серию адресов, применив функцию генерирования адреса, которая использует информацию о генерировании адреса в качестве ввода, а также любое целое i для создания i- того адреса в серии. Аналогично мы можем сгенерировать и серию приватных ключей на основании информации о генерировании приватных ключей.

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

Другое важное криптографическое свойство - безопасность. ИГА не включает в себя никаких данных о приватных ключах. Это означает, что её можно давать кому угодно, и они сами смогут сгенерировать i-тый ключ.

Однако, не все схемы цифровых подписей могут быть модифицированы для поддержки генерирования иерархических ключей. Однако, схема цифровых подписей, применяемая в биткоине (ECDSA) поддерживает иерархическое генерирование, поэтому вы смело можете провернуть этот трюк.

Рис. 4.2: Схема иерархического ключа. Холодная сторона создаёт и сохраняет ИГПК и ИГА, и проводит однократный трансфер последней на горячую сторону, которая в свою очередь генерирует новый адрес в последовательности каждый раз, когда коины отправляются на холодную сторону.

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

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

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

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

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

На практике также разумно использовать заведомо медленную функцию для выведения приватного ключа из фразы (т.н. "растягивание ключа"), чтобы как можно дальше оттянуть момент угадывания. Основной способ здесь - взять быструю криптографическую хэш-функцию (например, SHA-256) и сделать на ней, допустим, 2Л20 итераций, чтобы рабочая нагрузка на злодея выросла соответственнно. Конечно, если это слишком долго, то эти же затруднения испытает и сам пользователь. Если же эта фраза становится недоступной - например, вы её начисто позабыли, а записать нигде не удосужились - свои коины вы никогда уже не увидите.

Бумажный кошелёк. Третий вариант — так называемый бумажный кошелёк. Мы просто распечатываем ключ на бумажный носитель, а затем кладём его в надёжное место. Очевидно, что надёжность этого метода в точности равна надёжности бумаги. Обычно бумажные кошельки шифруют оба ключа и как QR-код и как нотацию по основанию 58. Аналогично мнемоническому кошельку, достаточно хранить небольшую часть материала для воссоздания кошелька.

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

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

 



Дата добавления: 2023-05-18; просмотров: 257;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.009 сек.