Главная » Криптовалюта » Технология блокчейн » Зачем в блокчейне приватные и публичные ключи
Опубликовано: 14 июля 2020

Зачем в блокчейне приватные и публичные ключи

 

Шифрование в блокчейне: зачем нужна цифровая подпись

Шифрование в блокчейне: зачем нужна цифровая подпись обложка

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

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

Вспоминаем основные понятия

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

Симметричное и асимметричное шифрование

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

До изобретения интернета все известные методы шифрования были симметричными. Это значит, что ключ для шифрования и расшифровки информации использовался один и тот же. Все как с обычными дверными замками: один ключ открывает и закрывает дверь.

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

Симметричное шифрование

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

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

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

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

Асимметричное шифрование

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

Асимметричное шифрование делает интернет безопасным. Каждый пользователь использует приватные и публичные ключи, когда отправляет сообщение в мессенджере, совершает онлайн-покупку или посещает сайт, адрес которого начинается с «https». Благодаря этому, никто не может прочитать сообщения, увидеть пароли или скопировать данные банковской карты.

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

Публичный ключ и адрес в блокчейне

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

Прежде чем купить биткоины, необходимо создать кошелек, на котором они будут храниться. Кошельком называют программу, с помощью которой можно получить как приватные, так и публичные ключи от блокчейна. Для биткоинов есть много таких программ: Bitcoin Core, Electrum, Samurai Wallet.

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

Публичный ключ и адрес в блокчейне

С помощью публичного ключа создается адрес или QR-код адреса

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

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

Приватный ключ и цифровая подпись в блокчейне

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

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

Цифровая подпись — это хеш, созданный на основе приватного ключа и самих подписываемых данных. То есть это набор символов, который получен с помощью шифрования. В Биткоине для создания такого хеша используют Алгоритм Цифровой Подписи Эллиптической Кривой (ECDSA).

Рассмотрим как создается и подписывается транзакция в блкочейне:

Подпись транзакции в блокчейне

  1. Информация об отправлении шифруются с помощью SHA-256.
  2. Алгоритм ECDSA получает на вход приватный ключ и хеш подписываемых данных.
  3. В результате работы алгоритма ECDSA и создается цифровая подпись.
  4. В транзакцию записывается зашифрованная информация об отправлении и цифровая подпись.

Хеш информации вместе с приватным ключом образуют цифровую подпись

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

Проверка подписи в транзакции

Пользователи блокчейна проверяют достоверность транзакции, сравнивая хеш данных с расшифровкой открытого ключа

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

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

Заключение

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

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

Как мне хранить Биткоин? Заводим кошелек

— Как хранить?
— Нужно завести криптовалютный кошелек!
— Где и как это сделать?
— Давайте разбираться!

Удивительно, что такие важные вопросы очень плохо освещаются в интернете. Даже при поиске, например, «bitcoin wallets comparison» выдаются совершенно идиотские сайты, а-ля 20+ Best Bitcoin Wallets to Store Bitcoins (читай скачать бесплатно, без смс), чаще всего, со странным сравнением кошельков и рекламой какого-то одно из них.

В статье Как купить криптовалюту? мы уже говорили о мультивалютном кошельке Jaxx. Он поддерживает массу монет (BTC, ETH, DASH, ETC, REP, LTC, ZEC, RSK, DGE, ICN, GNT, GNO, DGD, BCAP) и прекрасно подойдет для начала работы с криптой, если вы не собираетесь сразу вкладывать в Биткоины большие деньги.

Какие ключи бывают у кошелька?

Рассмотрим кошелек в криптовалюте Bitcoin, у него есть:

Приватный ключ: генерируется случайным образом. Это 256-битное число. Обычно его записывают в шестнадцатеричном формате, например:

Публичный ключ: генерируется из приватного ключа (решается криптографическое эллиптическое уравнение). Это 512-битное число. Обычно его записывают в шестнадцатеричном формате, например:

Адрес: генерируется из публичного ключа с использованием функций хеширования. Состоит из 27-34 латинских букв или цифр (да-да, он может быть разной длины), например:

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

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

 

Важно 1! Никогда и никому не показывайте свой приватный ключ. Завладев приватным ключом вашего кошелька, злоумышленник может перевести все ваши Биткоины куда-угодно (украсть).

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

Важно 3! Неужели никто не может сгенерировать точно такой же приватный ключ, как и я? Может, но вероятность этого чудовищно мала. Такие вот они, БОЛЬШИЕ числа. Не верите? Читайте здесь и здесь. Единственный вариант получения одинаковых кошельков — глюк генератора случайных чисел (когда он выдает неслучайные числа). Давайте посмотрим на сайт https://www.bitaddress.org/ — он генерирует приватный ключ и адрес. Кнопка «Generate new address» делает новую пару. Парадокс в том, что этот адрес, что вы видите сейчас, никто никогда не видел до вас! Вы можете сгенерировать хоть сотню новых адресов, но их никто никогда раньше не встречал! Можете забить в гугл и проверить, кстати.

Кошелек

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

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

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

Бывает холодный, бывает горячий…

Кошельки обычно классифицируют так:

  1. толстые/тонкие (есть или нет полная копия блокчейна)
  2. холодные/горячие (есть или нет доступ к интернету)
  3. бумажные
  4. аппаратные
  5. онлайн
  6. биржа

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

Толстый и тонкий

По первоначальной задумке каждый пользователь криптовалюты должен иметь на своем компьютере полную копию блокчейна, это называется узлом сети или нодой (Подробнее). Во времена зарождения Биткоина так и было. Очень удачно написано в Популярной Механике:

Никому не доверяй

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

Толстым клиентом называется кошелек, у которого есть полная нода. Такой кошелек может сам проверить транзакцию, определить что у Маши, действительно, есть 1 BTC на счету, отследив полный путь Биткоинов до машиного адреса. Основной толстый клиент для Биткоин — Bitcoin Core, хотя есть и другие: Bitcoin Knots, BTCD, Libbitcoin.

Тонкие клиенты (их еще называет легкими) не хранят блокчейн. Они обращаются на свои серверы. Так, например, у кошелька Electrum, который существует с 2011 года, специальные сервера, которые индексируют весь блокчейн по адресам. Клиент связывается с 10 разными, случайно выбранными серверами, соединение защищено c помощью SSL.

Jaxx, о котором мы говорили, тоже тонкий клиент.

Считается, что толстые клиенты с полной копией блокчейна надежнее!

Основной их минус — размер загружаемых данных. Сейчас для Bitcoin это уже 148 ГБ. Неслабо. Альтернатива — доверять серверам легких кошельков.

Онлайн-кошелек

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

Один из самых известных онлайн-кошельков — BitGo. Да, его рекомендуют многие пользователи. Да, он даже находится в списке кошельков на сайте bitcoin.org:

Но, все равно, как-то страшновато хранить там большие суммы.

Холодный или горячий

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

Холодный кошелек установлен на компьютере без доступа к интернету. Можно ли так работать? Да, вполне. Вы можете на оффлайн компьютере подписать транзакцию о переводе Маше 1 BTC, скопировать текст транзакции на флешку, перенести на компьютер с доступом к интернету и отправить транзакцию в сеть. Звучит сложно (на самом деле это делается просто), но безопасность стоит того. Инструкция на английском как создать кошелек Electrum на двух компьютерах, один — оффлайн с приватным ключом, другой — онлайн, без приватного ключа.

Бумажный

Можно зайти на сайт https://www.bitaddress.org/ или другой сервис для генерации ключей. Создать ключи. Записать приватный ключ и Биткоин адрес в txt-файл. Сохранить на 3 флешки. Зашифровать. Одну флешку закопать в огороде, другую положить в карман, третью положить в банковскую ячейку…

Боитесь, что bitadress может запомнить ваш приватный ключ? Вполне может быть и такое. Тогда можно, опять же, пойти на оффлайн компьютер, поставить там Electrum и сгенерировать ключи.

Что делать если вы совсем параноик? Можно подбросить монетку 256 раз, установить на оффлайн компьютер все необходимые программы для вычисления хешей. Сгенерировать адрес. Дальше флешка, огород и т.д.

Не доверяете флешкам? Распечатайте ключи на бумаге, но эту бумагу надо как-то сохранить, и кто ее подсмотрит — получит доступ ко всему. Опасно.

Биржа

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

Настоятельно не рекомендуем хранить какие-либо средства на бирже!

Как сказал Andreas Antonopoulos: «Как я могу доверить свои деньги стартапу из шести человек, который существует 3 месяца?» Кстати, классный дядька, у него много видео с ликбезом по Биткоину: https://www.youtube.com/user/aantonop/featured

Аппаратный кошелек

Аппаратный кошелек — это «флешка», которая играет роль оффлайн-компьютера с вашим приватным ключом. Такие кошельки можно использовать не только для Биткоина, но и для некоторых других популярных криптовалют. По сути — это идеальный вариант хранения ключей. Даже если вы подключите аппаратный кошелек к компьютеру, благодаря продуманной защите, никто не сможет украсть ваш приватный ключ. Кошелек защищен пин-кодом, если злоумышленник его украдет, он ничего не сможет сделать. Считается, что такие кошельки самые безопасные, но есть одно НО:

У аппаратного кошелька существует механизм восстановления на тот случай, если кошелек сломается или потеряется. Для восстановления генерируется специальный набор слов (seed), например:

constant forest adore false green weave stop guy fur freeze giggle clock sympathy interesno kto eto chitaet swing bless napishite nam vchat pleasure possess

В комплекте с кошельком даже идет специальная книжечка, чтобы записать фразу для восстановления:

Так вот, любой, кто стырит у вас этот набор слов, может получить все ваши средства. А если потерять их и сломать кошелек — прощай биточки. Такая вот фигня. Можно татуху набить, конечно, но и ее могут посмотреть…

Основные 3 конкурирующих продукта на рынке: Trezor — 90$, Ledger Nano S — 80$ и KeepKey -130$.

АААА, столько информации, что мне делать то?

Предположим, вы решили «жить в крипте».

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

2. Средства для переводов друзьям/родственникам/сотрудникам, оплаты личных счетов, счетов фирмы, получения средств за товары/услуги и т.п. мы рекомендуем хранить на локальном кошельке. Есть нормальный интернет и 150GB свободного места — Bitcoin Core. Нет — ставьте легкий, зарекомендовавший себя, Electrum. При установке обязательно проверьте контрольную сумму установочного файла (Что это?).

https://maff.io/private_public_key/
https://2bitcoins.ru/kak-mne-hranit-bitcoin-i-druguyu-kriptovalyutu-zavodim-koshelyok/

 

Оставить комментарий

X-закрыть
Яндекс.Метрика