Если мы хотим понять биткойн на более глубоком, чем аналогия, уровне, то мы должны уяснить идею асимметричного шифрования (также известного как шифрование с открытым ключом). Асимметричное шифрование – это ключевой элемент биткойна, и без него биткойн не мог бы существовать. Идея асимметричного шифрования не нова, и фактически оно является составной частью безопасности многих программных систем. Мы используем асимметричное шифрование каждый раз, когда посещаем безопасный (SSL) сайт, например, сайт интернет-банка.
Прежде чем я объясню, что такое асимметричное шифрование, давайте представим такую задачу. Скажем, Алиса в Австралии хочет отправить письмо Бобу в Англию. Содержимое письма – большой секрет. Как Алисе послать письмо Бобу без риска, что по дороге кто-нибудь прочитает это письмо? Без асимметричной криптографии достичь этого можно только единственным способом, когда Алиса и Боб изначально понимают, как закодировать письмо. Тогда письмо будет зашифровано, и Боб будет знать, как его расшифровать, когда он его получит. Но что если у Алисы и Боба нет заранее подготовленного ключа для шифра; что если Боб никогда до этого не встречал Алису? В таких обстоятельствах без асимметричного шифрования Алиса не сможет безопасно отослать письмо Бобу.
Таким образом, это приводит нас к асимметричной криптографии и тому способу, которым она решает эту задачу. Некоторое время назад несколько талантливых математиков разработали способ, при помощи которого можно генерировать пары ключей, математически связанных друг с другом. В этом контексте можно представлять ключ как очень большое число – число с несколькими сотнями цифр{6}. Эти ключи называются «открытый ключ» и «закрытый ключ», или вместе — асимметричные ключи. Оказывается, у этих ключей есть несколько очень полезных свойств!
Используя открытый ключ, можно зашифровать сообщение таким образом, что его будет возможно расшифровать только закрытым ключом. Таким образом, Боб может теперь сгенерировать пару ключей и передать всему миру свой открытый ключ, поскольку из него невозможно{7} получить его закрытый секретный ключ. Если Алиса хочет послать Бобу безопасное сообщение, она просто должна зашифровать содержимое своего письма открытым ключом Боба при помощи известного алгоритма, и Боб сможет расшифровать сообщение своим закрытым ключом, который он не показывает никому другому.
Вы используете технологию асимметричной криптографии каждый день, когда используете Wi-Fi, Bluetooth или безопасные вебсайты, где данные зашифрованы, чтобы предотвратить то, что называется атакой «человек посередине». Другими словами, асимметричная криптография используется, чтобы предотвратить перехват вашей беседы, письма или транзакции кем-либо еще.
Итак, теперь мы знаем, как Алиса может безопасно послать письмо Бобу, но, когда Боб получит письмо, как он может быть уверен, что письмо отправила Алиса, а не кто-нибудь другой? Оказывается, асимметричные ключи могут решить и эту проблему. Алиса также генерирует пару ключей: открытый и закрытый ключ. Как и Боб, Алиса раскрывает свой открытый ключ всему миру. Алиса может подписать содержимое письма «цифровой подписью», используя свой закрытый ключ. Затем, используя открытый ключ Алисы, Боб может определить, что письмо действительно было подписано Алисой, поскольку никто другой не может подписать письмо без доступа к закрытому ключу Алисы. Таким образом, письмо Алисы может прочитать только Боб, и Боб может удостовериться, что письмо написала именно Алиса.
Это очень полезная и мощная идея – она до сих пор впечатляет меня сегодня, несмотря на повседневное ее использование. Вы можете оценить ее полезность для военных коммуникаций, и, на самом деле, многие годы Соединенные Штаты пытались остановить экспорт программ, которые используют сильную асимметричную криптографию.
Теперь, когда мы понимаем принцип работы асимметричной криптографии, как это относится к биткойну? Помните, в Главе третьей мы проводили аналогию и говорили, что в некоторых отношениях биткойн работает по принципу чековой книжки? Мы говорили, что один пользователь послал биткойны на биткойн-адрес другого пользователя, и что транзакция была подписана отправителем транзакции. Это и есть та точка, где все начинает соединяться: дело в том, что биткойн-адрес – это производная открытого ключа.