Нажмите "Enter" для перехода к содержанию

Шесть вещей, которые биткойнеры должны знать о приватных ключах

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

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

Биткойн: Защищенная система обмена сообщениями

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

Пример поможет нам проиллюстрировать проблемы, с которыми способен справиться приватный ключ. Представьте, что Алиса хочет заплатить Бобу 10 биткойнов. Она начинает с того, что создаёт транзакцию, обозначая Боба в качестве получателя платежа и 10 биткойнов в качестве суммы, которую собралась переслать. Затем, Алиса оповещает о данной транзакции всех пользователей Биткойн-сети.

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

Далее, Алисе необходимо найти способ предотвратить сторонние изменения в транзакции, а также создание транзакций от её имени.

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

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

1. Приватный ключ – это просто номер

Приватный ключ Биткойна это просто число от одного до 1077. Это может казаться не таким уж и большим объемом для выбора, однако, при практическом применении — он бесконечен.

Если бы вы могли перебирать один триллион приватных ключей в секунду, вам понадобилось бы более миллиона возрастов нашей вселенной, чтобы просчитать их все. Даже хуже, только отображение этих ключей могло бы потребить больше энергии, чем производит солнце за 32 года. Этот самый объем ключей играет фундаментальную роль в защите сети Биткойна.

Так как приватные ключи содержат множество цифр в своем десятичном выражении, были разработан альтернативный формат, названный как «Формат Импорта Кошелька», или WIF. Этот формат начинается с цифры 5 и содержит последовательность букв и цифр. Например, вот приватный ключ, отображённый в формате WIF:

5KJvsngHeMpm884wtkJNzQGaCErckhHJBGFsvd3VyK5qMZXj3hS

2. Транзакции – это Сообщения, подписанные приватным ключом

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

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

На иллюстрации выше показаны две транзакции от Алисы к Бобу. Первая отправляет 10 биткойнов, вторая — 2. Один приватный ключ ведет к генерации двух уникальных подписей.

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

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

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

Многие пути открыты ворам, жаждущим приватных ключей. Два самых популярных пути – носители памяти (флеш-карты) и каналы коммуникаций. Поэтому, следует придерживаться строгих мер при транспортировке и хранении приватных ключей.

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

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

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

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

4. Адреса выводятся из публичных ключей, которые сами выводятся из приватных ключей

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

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

Публичные ключи, также, как и приватные, могут быть сокращены, с целью сделать их более удобными для дисплеев и клавиатур. Адрес – результат применения многоступенчатой трансформации по отношению к публичному ключу. Это даёт строку из букв и цифр, обычно с цифрой “1” в начале.

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

5. Безопасность зависит от выбора хорошего приватного ключа

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

Например, вообразите, что мы хотим использовать приватный ключ который легко запомнить. Цифра 1 – и легко запомнить, и действительный приватный ключ Биткойна. Но как безопасен он на практике?

Приватный ключ 1 генерирует такой адрес:

1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm

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

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

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

Что может случиться, если генератор случайных чисел был не совсем случайным? Например, что если итоговые приватные ключи были сконцентрированы вокруг постоянного значения в узком промежутке?

Случайное распределение Приватных ключей и Концентрированное распределение

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

Необходимость выбирать хороший приватный ключ становится особенно важной в случае с мозговыми кошельками. Один из способов создания мозгового кошелька состоит во фразе “Быть или не быть”, к которой применяется математическая функция для конвертации данного текста в приватный ключ. Применяя самый популярный алгоритм конверсии (SHA-256) к данным словам мы получаем адрес:

1J3m4nneGFppRjx6qv92qyz7EsMVdLfr8R

Как вы можете заметить, этот адрес недавно использовался для хранения средств, которые были немедленно выведены.

К сожалению, не всегда легко определить, какая фраза является небезопасным мозговым кошельком, а какая – безопасным. Атакующие могут использовать данную неопределённость а также неопытность новых пользователей для кражи средств. Наример, вор мог бы скомпилировать огромную базу данных простых и распространённых фраз и паролей. Такая база данных может содержать триллионы записей или более того, но всё равно будет доступной к всеобъемлющему поиску с минимальными вычислительными затратами.

Сравните данную ситуацию с паролями для веб-сайтов. Если вы регистрируетесь в веб сервисе с использованием пароля, который избрал ещё кто-то, вы не захватываете его аккаунт, так как у вас должен быть уникальный “username”, или имя пользователя.Приватные ключи Биткойна отличаются в том, что служат двойной цели идентификации пользователя (через генерацию адресов) и аутентификации (через цифровые подписи).

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

6. Приватные ключи (типа) переносимы

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

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

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

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

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

Выводы

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

Картинки: Sherry Egger

Источник

Поделиться

Ваш комментарий будет первым

    Добавить комментарий