Выбрать главу

Таким образом, это приводит нас к асимметричной криптографии и тому способу, которым она решает эту задачу. Некоторое время назад несколько талантливых математиков разработали способ, при помощи которого можно генерировать пары ключей, математически связанных друг с другом. В этом контексте можно представлять ключ как очень большое число – число с несколькими сотнями цифр{6}. Эти ключи называются «открытый ключ» и «закрытый ключ», или вместе — асимметричные ключи. Оказывается, у этих ключей есть несколько очень полезных свойств!

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

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

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

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

Рис. 2. Асимметричное шифрование. Алиса посылает подписанное зашифрованное сообщение Бобу.

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

Давайте рассмотрим наш изначальный пример с чековой книжкой более подробно, поскольку теперь мы понимаем идею открытого ключа. У меня есть 50 биткойнов на моем мобильном телефоне, и я хотел бы отправить их на мобильный телефон моего друга Джо. Сперва Джо нажимает кнопку на своем телефоне, чтобы сгенерировать новый биткойн-адрес. Хотя, на самом деле, он создает пару асимметричных ключей. Закрытый ключ хранится на телефоне Джо, а производная от открытого ключа (биткойн-адрес) отображается на экране и затем пересылается мне. Используя биткойн-адрес Джо, я начинаю транзакцию на своем телефоне, указывая сумму, которую хочу отправить ему. Затем я подписываю эту транзакцию цифровой подписью, используя мой закрытый ключ, и отправляю транзакцию в интернет. Помните, мы говорили, что выписать чек – это то же самое, что написать в банк письмо, разрешающее банку выделить средства с моего счета указанному человеку. В случае с биткойном, транзакция, в сущности, является публичным объявлением о передаче контроля над XBT 50, зарегистрированными на мой адрес, биткойн-адресу, который я указываю. Только мой закрытый ключ позволяет мне разрешить передачу биткойнов на адрес Джо, и я даю это разрешение, когда подписываю транзакцию цифровой подписью.