и публичный получателя) являются алгоритмически связанной парой – расшифровать послание можно только открытым ключом, который соответствует закрытому ключу отправителя.
Задача решена! Получатель по публичному ключу знает, что письмо отправлено конкретным отправителем, имеющим соответствующий приватный ключ.
Но в реальности нет необходимости зашифровывать само послание. Достаточно вычислить его хэш-код (см. главу «Хэширование: Просто и наглядно»), затем зашифровать этот хэш приватным ключом и присоединить к тексту сообщения. Вот этот зашифрованный хэш и есть ЭЦП – электронная цифровая подпись сообщения.
Получатель послания также вычисляет хэш-код сообщения и сравнивает его с расшифрованным публичным ключом ЭЦП. Если они совпадают, то всё нормально – письмо отправлено тем лицом, у которого есть соответствующий приватный ключ.
Но это еще не все! Использование хэширования послания позволяет также контролировать и его целостность – не были ли по пути к адресату в письмо внесены несанкционированные изменения?
Действительно, если расшифрованная ЭЦП не совпадает с хэшем текста послания, то из этого могут следовать две вещи:
1. Письмо подписал другой человек (публичный ключ не соответствует приватному).2. В текст сообщения были внесены изменения после его отправки.В любом случае, получатель не может считать принятое сообщение достоверным – оно подделано!
Остается вопрос: Как получатель сообщения узнает, каким публичным ключом надо расшифровывать ЭЦП? Ведь для каждого приватного ключа существует свой уникальный публичный ключ.
Для этого существуют т.н. хранилища сертификатов ЭЦП. Каждый отправитель документа подписанного ЭЦП должен получить в соответствующем органе специальный электронный сертификат вместе с приватным ключом, которым он будет зашифровывать хэши своих посланий. Этот сертификат – по сути электронный документ, содержащий открытый ключ и информацию о владельце ключа.
Орган, выдавший сертификат, является доверительной организацией, которая подтверждает, что соответствующий сертификат ЭЦП выдан конкретному установленному лицу.
Сертификат вместе с ЭЦП прикрепляется к отправляемому посланию и получатель по сертификату идентифицирует личность отправителя и получает публичный ключ, соответствующий приватному ключу отправителя.
Электронная цифровая подпись (ЭЦП) используются не только для отправки корреспонденции. При помощи ЭЦП заверяются документы (например, договоры), банковские операции и многое другое. Технология ЭЦП также используется в протоколах криптовалют, включая Биткоин.
Алгоритмы создания ЭЦП и её проверки.
Биткоин для «чайников»
Краткий вводный курс в технологические основы Биткоина
Кошельки и транзакции
Как это ни странно звучит, но «биткоин-кошельки» не содержат биткоинов!
Да-да! Именно так! Собственно биткоины, как монеты или расчетные единицы, существуют только в контексте протокола блокчейна Биткоина, а именно в виде записей транзакций в распределенной базе данных, которую еще называют ledger – бухгалтерская книга или гроссбух. Это база данных – блокчейн Биткоина – содержит записи абсолютно всех транзакций за всю историю со всеми существующими на данный момент биткоинами (расчетными единицами).
Что же такое транзакция и как работают т.н. «биткоин-кошельки» (под этим термином будем подразумевать способ хранения приватных ключей к биткоин-адресам)? Попробуем разобраться…
Транзакция – это финансовая операция по передаче некоторого количества денег от отправителя к получателю. При этом и отправитель, и получатель должны иметь определенные адреса (метки), между которыми и происходит движение денег.
В этом смысле финансовая транзакция подобна почтовым отправлениям – отправитель со своего почтового адреса отправляет в конверте некую сумму денег на адрес получателя.
В банковских структурах финансовая транзакция называется денежным переводом. А адреса – банковскими счетами. Когда некое лицо хочет отправить определенную сумму денег другому лицу, оно обращается в банк с просьбой перевести эту сумму с его банковского счета на банковский счет получателя.
Представьте себе большую таблицу, в каждой строке которой содержатся следующие данные (поля):
– дата и время финансовой операции (перевода денег);– биткоин-адрес кошелька отправителя;– биткоин-адрес кошелька получателя;– сумма перевода.Это и есть запись финансовой транзакции.
В протоколе Биткоина банковский счет аналогичен т.н. биткоин-адресу, который еще называют адресом кошелька. Формально это некая уникальная буквенно-цифровая строка, например:
12ctspmoULfwmeva9aZCmLFMkEssZ5CM3x.Это не просто набор символов, а последовательность, криптографически связанная с приватным ключом от этого адреса. Т.е. биткоин-адрес и приватный ключ к нему являются уникальной парой, подобной публичному и приватному ключу в асимметричном шифровании.
Владелец биткоин-адреса, используя приватный ключ, может отправлять переводы на другие биткоин-адреса. Эти переводы записываются в блокчейн Биткоина (гроссбух – ledger) в виде транзакций.
Отметим, что все транзакции в блокчейне хранятся в незашифрованном виде. Любой человек, используя блокчейн-браузер или Block explorer – специальный сайт, для просмотра содержимого блоков, может увидеть любую транзакцию, включенную в блокчейн, в понятном виде – когда, откуда и куда, какое количество биткоинов было переведено.
Поскольку в блокчейне хранятся абсолютно все транзакции, именно по ним можно не только отследить движение всех монет между биткоин-адресами, но и вычислить, сколько криптоденег находится в данный момент в любом кошельке по его адресу.
Как это происходит? Все транзакции в Биткоине используют Входы (Inputs) и Выходы (Outputs):
1. Входы – пополнения, когда данный адрес выступает в качестве получателя биткоинов.2. Выходы – платежи, переводы и т.п., когда адрес выступает в качестве отправителя.Посредством Входов и Выходов транзакции связаны друг с другом – каждый Вход ссылается на Выход предыдущей, родительской транзакции. Таким образом цепочки связанных транзакций отслеживают все денежные потоки между биткоин-адресами внутри блокчейна.
На Входы каждой транзакции поступают средства с Выходов каких-то предыдущих транзакций, тем самым пополняя биткоин-адрес получателя средств. Если Выход не связан с Входом последующей транзакции, он считается непотраченным. Подсчитав все непотраченные Выходы, можно узнать текущий баланс конкретного биткоин-адреса (кошелька).
Но как владельцы этих адресов (кошельков) управляют своими деньгами? Как они совершают платежи и переводы?
Вот для этого и нужны собственно «биткоин-кошельки», в которых помимо уже упомянутого адреса хранятся приватные ключи (криптографически связанные с этим адресом), при помощи которых осуществляются транзакции-выходы.
Когда владелец соответствующего биткоин-адреса (кошелька) хочет перевести расчетные единицы (биткоины) на другой адрес, он дает соответствующее распоряжение в сеть Биткоина, подписанное электронно-цифровой подписью (ЭЦП), сформированной при помощи соответствующего приватного ключа от биткоин-адреса.
Собственно, эту операцию и совершают специальные компьютерные программы и приложения, называемые «биткоин-кошельками», такие как, например, Electrum или веб-приложение на сайте Blockchain.info и др. Они также подсчитывают баланс биткоин-адреса, отслеживая все непотраченные Выходы по данному адресу, и показывают все предыдущие транзакции по этому адресу.
Функции биткоин-кошелька может также выполнять и основной биткоин-клиент сети – программа Bitcoin Core.
Какие бывают биткоин-кошельки?
Прежде всего, отметим главное: биткоин-кошельки хранят приватные ключи от ваших биткоин-адресов. Это хранение может быть «холодным» или офлайн (без подключения к интернету) и «горячим» или онлайн (с подключением к интернету и сети Биткоин).
Поэтому условно все виды биткоин-кошельков можно разделить на две большие группы – «холодные» и «горячие»:
«Холодные» кошельки:
– бумажные – лист бумаги или другого материала (например, пластик) с нанесенным на него биткоин-адресом и приватным ключом. Может также дополняться соответствующими QR-кодами 13 для быстрого сканирования и добавления ключей в программу-клиент для совершения транзакций. Для надежности данные биткоин-адреса и приватного ключа к нему хранят отдельно друг от друга, снабдив их одинаковыми метками для сопоставления при пользовании.– аппаратные – специальные компактные программно-аппаратные устройства, подключаемые к компьютеру через USB-разъем или другим способом. Внешне похожие на флешку. Позволяют надежно (в зашифрованном виде) хранить приватные ключи и осуществлять при помощи их биткоин-транзакции. В принципе, хранить ключи можно на любом внешнем носителе информации (флеш-карта, HD-диск и т.п.), но в этом случае безопасность гораздо ниже.Образец «холодного» бумажного кошелька.
Преимущества бумажного кошелька заключается в том, что приватные ключи в нем сберегаются офлайн, поэтому не подвержены кибератакам или сбоям оборудования.
Однако, в последнее время бумажные кошельки стали применяться гораздо реже, поскольку их вытеснил более удобный способ хранения – SEED-ключи (см. ниже).
«Холодные» кошельки, как правило, используются для надежного и длительного хранения большого количества биткоинов. Разумеется, в данном случае подразумевается не собственно хранение биткоинов в кошельках, а хранение доступа к соответствующим биткоин-адресам, на балансе которых находятся биткоины. Фактически, как было отмечено выше, в «холодных» кошельках хранятся приватные ключи от этих биткоин-адресов.
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала,