В главе 12 было представлено введение в асимметричную криптографию для начинающих. Также было отмечено, что блокчейн использует криптографические открытые ключи в качестве номеров учетных записей, а способ направления информации от открытого к закрытому ключу применяется для передачи права владения между учетными записями. Но это лишь часть того, что вам следует знать. Блокчейн-система должна быть абсолютно уверена в том, что только законный владелец имеет возможность передавать свою собственность другим учетным записям. Именно здесь на первый план выходит концепция авторизации. Таким образом, в этой главе рассматривается использование асимметричной криптографии в технологии блокчейна для авторизации транзакций. Особое внимание здесь уделено концепции цифровой подписи, применяющей способ передачи информации от закрытого к открытому ключу.
Рукописные подписи предназначены для важной цели: они подтверждают согласие с содержимым подписанного документа и с вводом его в действие с момента подписания. Рукописные подписи принимаются в качестве доказательства согласия, потому что особенности почерка любого человека неповторимы. Каждый пишет свою фамилию и имя особенным, характерным только для него способом. Таким образом, при идентификации фамилии, написанной особенным способом, мы можем прийти к выводу о том, что данная рукописная подпись действительно выполнена конкретным человеком, следовательно, этот человек согласен с содержимым подписанного документа и со вступлением документа в силу. В этой главе рассматривается концепция подтверждения согласия с выполнением транзакций в электронном реестре, аналогичная концепции использования рукописных подписей. Эта концепция чрезвычайно важна для защиты отдельных транзакций в блокчейн-системе.
Важна полная уверенность в том, что только владелец учетной записи может передавать собственность, связанную с этой учетной записью, другим учетным записям. Любая попытка доступа к учетной записи и соответствующей собственности, выполняемая кем-либо, кроме законного владельца, должна быть определена как несанкционированная и запрещена.
Рассматриваемая здесь пиринговая система открыта для всех. Любой пользователь может создавать транзакции и передавать их в систему. Данные транзакции являются основой для описания и утверждения права владения. Только законному владельцу должна быть разрешена передача собственности или прав владения, связанных с его учетной записью, другой учетной записи. Главная задача блокчейна – сохранять открытость системы, при этом разрешая передавать права владения только законным владельцам.
Основная идея, гарантирующая, что только законный владелец может передавать право владения, состоит в использовании цифрового средства защиты, аналогичного рукописной подписи и служащего той же цели: идентификации учетной записи, подтверждению согласия ее владельца с содержимым конкретных данных транзакции и утверждению ее выполнения, позволяющему добавить данные этой транзакции в общую хронологию данных транзакций.
Цифровые подписи (digital signatures) являются аналогом рукописных подписей. Они используют функции криптографического хэширования и метод асимметричной криптографии, направляющий поток информации от закрытого к открытому ключу. Ниже приведен небольшой пример, демонстрирующий три основных элемента технологии цифровых подписей:
• создание цифровой подписи;
• проверка данных с использованием цифровой подписи;
• выявление факта мошенничества с использованием цифровой подписи.
Создание цифровой подписи
Предположим, что я намерен передать всему миру приветствие Hello World! с подтверждением своего авторства. Я создаю сообщение, содержащее это приветствие и соответствующую цифровую подпись. На рис. 13.1 показана полная схема процесса создания цифровой подписи данных. Процесс начинается с белого прямоугольника в верхнем левом углу рис. 13.1, в котором размещено мое приветствие. Я создаю хэш-значение для этого приветствия – 7F83B165 – и зашифровываю это хэш-значение с помощью своего закрытого ключа. Зашифрованный текст хэш-значения (черный прямоугольник с белыми буквами) представляет собой мою цифровую подпись к приветствию. Эта цифровая подпись уникальна с двух точек зрения: во-первых, можно выполнить обратное прослеживание и убедиться, что это моя подпись, поскольку я создал ее с помощью личного закрытого ключа. Во-вторых, подпись уникальна по отношению к тексту приветствия, так как основана на цифровых отпечатках этого приветствия. После этого текст приветствия и цифровая подпись размещаются в одном файле (серый прямоугольник), который, собственно, и является моим сообщением, адресованным всему миру и заверенным цифровой подписью.
Рис. 13.1 Схема создания цифровой подписи
Сообщение, то есть мое приветствие с цифровой подписью, посылается всему миру. Каждый может проверить, действительно ли я являюсь автором этого сообщения, используя для этого мой открытый ключ. На рис. 13.2 показан процесс проверки сообщения с использованием цифровой подписи. Процесс начинается с текста сообщения. Сначала читатель сообщения вычисляет хэш-значение текста приветствия и получает результат 7F83B165. Затем читатель расшифровывает приложенный к приветствию зашифрованный текст (цифровую подпись) с помощью моего открытого ключа. Это дает значение 7F83B165, то есть хэш-значение для той версии приветствия, которую я намеревался послать миру. Сравнение обоих хэш-значений завершает процесс проверки. Так как хэш-значения равны, читатель вполне обоснованно приходит к выводу, что, во-первых, сообщение подписано именно мной, потому что он смог расшифровать подпись с помощью моего открытого ключа, во-вторых, текст приветствия, содержащийся в сообщении, действительно тот, который я отправил, поскольку расшифрованная подпись совпала с хэш-значением, вычисленным для текста приветствия.
Рис. 13.2 Использование цифровой подписи для проверки подлинности сообщения
На рис. 13.3 показано, как цифровая подпись позволяет выявить факт подделки текста приветствия.
Рис. 13.3 Использование цифровой подписи для выявления факта мошенничества
На рис. 13.3 показано сообщение, доставленное в почтовый ящик моего друга. Обратите внимание на изменение в тексте приветствия. Какой-то злоумышленник заменил восклицательный знак на вопросительный, тем самым полностью исказив изначальный смысл приветствия. Это совсем не та фраза, которой я хотел приветствовать мир. К счастью, цифровая подпись позволяет узнать об изменениях в тексте сообщения, сделанных без моего согласия.
Сначала читатель сообщения вычисляет хэш-значение текста приветствия и получает результат 8A0B7C66. Затем читатель расшифровывает приложенный к приветствию зашифрованный текст (цифровую подпись) с помощью моего открытого ключа. Это дает значение 7F83B165, то есть хэш-значение для той версии приветствия, которую я намеревался послать миру. При сравнении хэш-значений обнаруживается, что они не равны. Это явно указывает на то, что текст в принятом сообщении не является тем приветствием, которое я хотел послать миру. Таким образом, любой читатель приходит к выводу, что я не являюсь автором принятого сообщения, следовательно, не несу никакой ответственности за его содержимое.
Цифровые подписи в блокчейн-системе соответствуют следующим требованиям:
• они подтверждают согласие владельца учетной записи, передающего право владения собственностью, с конкретными данными транзакции;
• они уникальны для всего содержимого данных транзакции в целом, что позволяет запретить их использование для авторизации других транзакций без согласия автора/владельца;
• только владелец учетной записи, передающий право владения собственностью, может создать подтверждающую цифровую подпись;
• цифровые подписи легко проверяются любым пользователем.
Существуют два варианта практического применения цифровых подписей в блокчейн-системе:
• цифровая подпись транзакции;
• проверка (верификация) транзакции.
Цифровая подпись транзакции
Для создания цифровой подписи транзакции владелец учетной записи, передающий право владения собственностью, выполняет следующие действия:
1. Описание транзакции с помощью всей необходимой информации, например номера всех учетных записей, участвующих в транзакции, передаваемое количество объектов собственности и т. п., за исключением самой цифровой подписи, которая пока еще недоступна.
2. Создание криптографического хэш-значения для данных этой транзакции.
3. Зашифрование хэш-значения транзакции с помощью закрытого ключа учетной записи, передающей право владения.
4. Добавление зашифрованного текста, созданного на шаге 3, в транзакцию в качестве цифровой подписи.
Проверка (верификация) транзакции
Для проверки транзакции необходимо выполнить следующие действия:
1. Создание хэш-значения для данных транзакции, подлежащей проверке, без учета самой цифровой подписи.
2. Расшифрование цифровой подписи рассматриваемой транзакции с помощью номера учетной записи, передающей право владения.
3. Сравнение хэш-значения, вычисленного на шаге 1, с хэш-значением, полученным на шаге 2. Если значения равны, то транзакция считается санкционированной и подтвержденной владельцем закрытого ключа, соответствующего учетной записи, передающей право владения. Если хэш-значения не равны, то транзакция незаконна.
Цифровые подписи для данных транзакций представляют собой комбинацию следующих элементов:
• криптографические хэш-значения для данных транзакции;
• зашифрованный текст, подлинность которого можно проверить, выполнив прослеживание в обратном направлении до соответствующего закрытого ключа в проверяемой учетной записи.
Благодаря тому что криптографические хэш-значения могут считаться цифровыми отпечатками, они неповторимы для каждой транзакции. Неотъемлемым свойством криптографии с открытым ключом является то, что зашифрованный текст, созданный с помощью одного ключа, может быть расшифрован только с помощью соответствующего парного ключа. Совокупность двух ключей также является неповторимой. Таким образом, успешное расшифрование зашифрованного текста с помощью конкретного открытого ключа является доказательством того, что этот текст был создан с помощью соответствующего парного закрытого ключа. Объединение обеих концепций используется для создания зашифрованного текста, происхождение которого можно проследить в обратном направлении до конкретных исходных данных транзакции и единственного закрытого ключа в одном процессе. Это свойство делает цифровые подписи вполне пригодными в качестве доказательства того факта, что владелец закрытого ключа, примененного для создания цифровой подписи, действительно согласен с содержимым рассматриваемой транзакции.
В этой главе завершено описание процесса, с помощью которого блокчейн защищает право владения на уровне отдельного набора данных конкретной транзакции. В результате транзакции и их задачи по передаче и подтверждению права владения становятся безопасными и защищенными. Но, кроме этого, очень важно, чтобы данные транзакций были защищены не только на уровне отдельных транзакций. Необходимо также хранить всю хронологию данных транзакций с соблюдением секретности и закрытости, то есть обеспечить защиту. В следующей главе более подробно рассматриваются пути достижения этой цели.
• Рукописные подписи подтверждают согласие с содержимым подписанного документа и с вводом его в действие с момента подписания.
• Доказательная юридическая сила рукописных подписей основана на неповторимости почерка различных людей.
• Цифровые подписи являются цифровыми аналогами рукописных подписей.
• Цифровые подписи служат для достижения двух целей:
– недвусмысленная идентификация автора подписи;
– подтверждение согласия автора подписи с содержимым подписанного документа и вступлением его в законную силу.
• В блокчейн-системе цифровые подписи транзакций представляют собой криптографические хэш-значения данных транзакций, зашифрованных с помощью закрытого ключа, связанного с учетной записью, от имени которой происходит передача права владения собственностью.
• Цифровые подписи в блокчейн-системе можно проследить в обратном направлении до конкретных исходных данных транзакции и единственного закрытого ключа в одном процессе.