СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
INFORMATION PROTECTION SYSTEM AND METHOD

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[1] Это изобретение относится, в целом, к способам и устройствам для защиты информации.
УРОВЕНЬ ТЕХНИКИ
[2] Персональная информация играет важную роль при осуществлении связи и переносе данных между различными пользователями. В отсутствие защиты пользователи подвергаются опасности хищения личных данных, незаконного перевода или других возможных потерь. Опасность дополнительно увеличивается, когда передачи и переводы реализуются онлайн, вследствие свободного доступа к онлайновой информации.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[3] Различные варианты осуществления настоящего изобретения включают в себя системы, способы и долговременные машиночитаемые носители для защиты информации.
[4] Согласно одному аспекту, компьютерно-реализуемый способ защиты информации содержит: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем.
[5] В некоторых вариантах осуществления, генерирование первого ключа содержит: генерирование первого ключа на основе закрытого ключа SK_A отправителя транзакции и общедоступного ключа PK_B получателя согласно протоколу обмена ключами Диффи-Хеллмана (DH).
[6] В некоторых вариантах осуществления, схема обязательств содержит схему обязательств Педерсена на основе, по меньшей мере, коэффициента r_t ослепления транзакции, и при этом сумма t транзакции является заверенным значением.
[7] В некоторых вариантах осуществления, комбинация коэффициента r_t ослепления транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t ослепления транзакции и суммы t транзакции.
[8] В некоторых вариантах осуществления, передача заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем, содержит передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, предписывающих узлу-получателю: генерировать второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя транзакции; дешифровать зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции; и проверять транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[9] В некоторых вариантах осуществления, предписание узлу-получателю проверять транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции содержит предписание узлу-получателю: в ответ на определение, что заверяющее значение T транзакции не соответствует схеме обязательств суммы t транзакции на основе коэффициента r_t ослепления транзакции, отказываться от транзакции; и в ответ на определение, что заверяющее значение T транзакции согласуется со схемой заверения суммы t транзакции на основе коэффициента r_t ослепления транзакции, одобрять транзакцию путем подписания транзакции для генерации подписи SIGB получателя, возвращаемой на узел-отправитель, связанный с отправителем.
[10] В некоторых вариантах осуществления, до передачи зашифрованной комбинации на узел-получатель, связанный с получателем, способ дополнительно содержит: заверение изменения y транзакции согласно схеме обязательств для получения заверяющего значения Y изменения, причем схема обязательств содержит, по меньшей мере, коэффициент r_y ослепления изменения, причем изменение y является одним или более активов отправителя, выведенных для транзакции, меньших суммы t транзакции; генерирование еще одного ключа на основе закрытого ключа SK_A отправителя и общедоступного ключа PK_A отправителя; и шифрование другой комбинации коэффициента r_y ослепления изменения и изменения y с помощью еще одного ключа.
[11] В некоторых вариантах осуществления, способ дополнительно содержит: в ответ на прием подписи SIGB получателя, одобрение транзакции путем подписания транзакции для генерации подписи SIGA отправителя; и предоставление транзакции, содержащей зашифрованную комбинацию, зашифрованную другую комбинацию, заверяющее значение T транзакции, заверяющее значение Y изменения, подпись SIGA отправителя и подпись SIGB получателя, одному или более узлам в блокчейн сети с целью проверки транзакции одним или более узлами.
[12] В некоторых вариантах осуществления, предоставление транзакции, содержащей зашифрованную комбинацию, зашифрованную другую комбинацию, заверяющее значение T транзакции, заверяющее значение Y изменения, подпись SIGA отправителя и подпись SIGB получателя, одному или более узлам в блокчейн сети с целью проверки транзакции одним или более узлами содержит: предоставление транзакции, содержащей зашифрованную комбинацию, зашифрованную другую комбинацию, заверяющее значение T транзакции, заверяющее значение Y изменения, подпись SIGA отправителя и подпись SIGB получателя, одному или более узлам в блокчейн сети, предписывающее одному или более узлам, в ответ на успешную проверку транзакции, выдавать сумму t транзакции получателю, устранять один или более активов, выведенных для транзакции, и выдавать изменение y отправителю.
[13] Согласно другому аспекту, на долговременном машиночитаемом носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания процессору осуществлять операции, содержащие: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем.
[14] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, подключенный к процессору, причем на носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания системе осуществлять операции, содержащие: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем.
[15] Согласно другому аспекту, компьютерно-реализуемый способ защиты информации содержит: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, чтобы узел-получатель: генерировал второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровал зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверял транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[16] Согласно другому аспекту, на долговременном машиночитаемом носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания процессору осуществлять операции, содержащие: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, чтобы узел-получатель: генерировал второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровал зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверял транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[17] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, подключенный к процессору, причем на носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания системе осуществлять операции, содержащие: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, чтобы узел-получатель: генерировал второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровал зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверял транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[18] Согласно другому аспекту, компьютерно-реализуемый способ защиты информации содержит: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, чтобы узел-получатель: генерировал второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровал зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверял транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[19] Согласно другому аспекту, на долговременном машиночитаемом носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания процессору осуществлять операции, содержащие: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, чтобы узел-получатель: генерировал второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровал зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверял транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[20] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, подключенный к процессору, причем на носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания системе осуществлять операции, содержащие: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование первого ключа из пары симметричных ключей; шифрование комбинации коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа; и передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, чтобы узел-получатель: генерировал второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровал зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверял транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[21] Согласно другому аспекту, компьютерно-реализуемый способ защиты информации содержит: получение комбинации коэффициента r_t ослепления транзакции и суммы t транзакции, зашифрованной с помощью первого ключа из пары симметричных ключей, и получение заверяющего значения T транзакции, причем: сумма t транзакции заверяется с помощью схемы обязательств узлом-отправителем, связанным с отправителем транзакции, для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование второго ключа из пары симметричных ключей; дешифрование полученной комбинации с помощью второго ключа, сгенерированного узлом-получателем, связанным с получателем транзакции, для получения коэффициента r_t ослепления транзакции и суммы t транзакции; и проверку транзакции на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[22] Согласно другому аспекту, на долговременном машиночитаемом носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания процессору осуществлять операции, содержащие: получение комбинации коэффициента r_t ослепления транзакции и суммы t транзакции, зашифрованной с помощью первого ключа из пары симметричных ключей, и получение заверяющего значения T транзакции, причем: сумма t транзакции заверяется с помощью схемы обязательств узлом-отправителем, связанным с отправителем транзакции, для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование второго ключа из пары симметричных ключей; дешифрование полученной комбинации с помощью второго ключа, сгенерированного узлом-получателем, связанным с получателем транзакции, для получения коэффициента r_t ослепления транзакции и суммы t транзакции; и проверку транзакции на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[23] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, подключенный к процессору, причем на носителе данных хранятся инструкции, подлежащие выполнению процессором, для предписания системе осуществлять операции, содержащие: получение комбинации коэффициента r_t ослепления транзакции и суммы t транзакции, зашифрованной с помощью первого ключа из пары симметричных ключей, и получение заверяющего значения T транзакции, причем: сумма t транзакции заверяется с помощью схемы обязательств узлом-отправителем, связанным с отправителем транзакции, для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции; генерирование второго ключа из пары симметричных ключей; дешифрование полученной комбинации с помощью второго ключа, сгенерированного узлом-получателем, связанным с получателем транзакции, для получения коэффициента r_t ослепления транзакции и суммы t транзакции; и проверку транзакции на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[24] Эти и другие признаки раскрытых здесь систем, способов и долговременных машиночитаемых носителей, а также способы работы и функции соответствующих элементов конструкции и комбинация частей и экономий производства, явствуют из нижеследующего описания и нижеследующей формулы изобретения, приведенных со ссылкой на прилагаемые чертежи, которые все образуют часть этого описания изобретения, где аналогичные ссылочные позиции обозначают соответствующие части на различных фигурах. Однако очевидно, что чертежи служат только для иллюстрации и описания, но не призваны ограничивать изобретение.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[25] Некоторые признаки различных вариантов осуществления настоящей технологии подробно изложены в нижеследующей формуле изобретения. Чтобы лучше понять признаки и преимущества технологии, следует обратиться к нижеследующему подробному описанию, где изложены иллюстративные варианты осуществления, где используются принципы изобретения, и прилагаемым чертежам, в которых:
[26] фиг. 1 демонстрирует иллюстративную систему для защиты информации, в соответствии с различными вариантами осуществления;
[27] фиг. 2 демонстрирует иллюстративные этапы для инициирования и проверки транзакции, в соответствии с различными вариантами осуществления;
[28] фиг. 3A демонстрирует блок-схему операций иллюстративного способа защиты информации, в соответствии с различными вариантами осуществления;
[29] фиг. 3B демонстрирует блок-схему операций иллюстративного способа защиты информации, в соответствии с различными вариантами осуществления;
[30] фиг. 4A демонстрирует блок-схему операций иллюстративного способа защиты информации, в соответствии с различными вариантами осуществления;
[31] фиг. 4B демонстрирует блок-схему операций иллюстративного способа защиты информации, в соответствии с различными вариантами осуществления;
[32] фиг. 5 демонстрирует блок-схему иллюстративной компьютерной системы, в которой может быть реализован любой из описанных здесь вариантов осуществления.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[33] Блокчейн можно рассматривать как децентрализованную базу данных, в целом именуемую распределенной бухгалтерской книгой, поскольку операция осуществляется различными узлами (например, вычислительными устройствами) в сети. Любая информация может записываться в блокчейн и сохраняться в нем или считываться из него. Можно создать сервер и подключиться к блокчейн сети с образованием узла. Любой узел может вносить вклад в вычислительную мощность для поддержания блокчейна путем осуществления сложных вычислений, например, вычисления хеша для добавления блока к текущему блокчейну, и добавленный блок может содержать различные типы данных или информации. Узел, который вносит вклад в вычислительную мощность для добавленного блока, может вознаграждаться жетоном (например, единицей цифровой валюты). Поскольку блокчейн не имеет центрального узла, все узлы одинаковы и в каждом из них содержится вся база данных блокчейна.
[34] Узлы являются, например, вычислительными устройствами или большими компьютерными системами, которые поддерживают блокчейн сеть и ее плавное выполнение. Узлы могут использоваться индивидами или группами людей, которые вносят денежный вклад в покупку мощных компьютерных систем, известные как майнинг-фермы. Существует два типа узлов: полные узлы и облегченные узлы. На полных узлах хранится полная копия блокчейна. Полные узлы в блокчейн сети подтверждают транзакции и блоки, которые они принимают, и ретранслируют их на подключенные равноправные устройства для обеспечения проверки консенсуса транзакций. С другой стороны, в облегченные узлы загружается только часть блокчейна. Например, облегченные узлы используются для транзакций в цифровой валюте. Облегченный узел будет осуществлять связь с полным узлом для осуществления транзакции.
[35] Это свойство децентрализации позволяет препятствовать появлению центра управления в управляемой позиции. Например, обслуживание биткойнового блокчейна осуществляется сетью узлов связи биткойнового программного обеспечения в области выполнения. Это изобретение использует в качестве примеров один или более блокчейнов или цифровых валют, например, биткойн и Эфириум. Специалисту в данной области техники очевидно, что технические решения, раскрытые в этом изобретении, могут использоваться или применяться к другому типу блокчейнов и цифровых валют. Таким образом, вместо банков, учреждений или администраторов в традиционном смысле, множественные посредники существуют в форме компьютеров-серверов, выполняющих биткойновое программное обеспечение. Эти компьютеры-серверы образуют сеть, соединенную через интернет, и потенциально любой может подключиться к сети. Транзакции, производимые сетью, могут иметь форму: ʺпользователь A хочет отправить Z биткойнов пользователю B,ʺ причем транзакции рассылаются в сеть с использованием легкодоступных прикладных программ. Компьютеры-серверы функционируют как биткойновые серверы, которые способны подтверждать эти финансовые транзакции, добавлять запись о них в свою копию бухгалтерской книги, и затем рассылать эти добавления в бухгалтерскую книгу на другие серверы сети.
[36] Поддержание блокчейна именуется ʺмайнингомʺ, и те, которые осуществляют такое поддержание, вознаграждаются вновь созданными биткойнами и вышеупомянутыми транзакционными взносами. Например, узлы могут определять, действительны ли транзакции, на основе набора правил, которым подчиняется блокчейновая сеть. Майнеры могут располагаться на любом континенте и обрабатывать платежи, проверяя действительность каждой транзакции и добавляя ее к блокчейну. Такая проверка достигается через консенсус, обеспеченный множеством майнеров, и предполагает отсутствие систематического сговора. В конце, все данные будут согласованы, поскольку вычисление должно удовлетворять некоторым требованиям, чтобы приводить к правильному результату, и все узлы будут синхронизироваться чтобы гарантировать согласованность блокчейна. Таким образом, данные могут согласованно храниться в распределенной системе блокчейновых узлов.
[37] В процессе майнинга, транзакции, например, переводы активов, проверяются и добавляются к растущей цепи блоков блокчейна сетевыми узлами. При обходе всего блокчейна, проверка может включать в себя, например, имеет ли оплачивающая сторона доступ к активу, подлежащему переводу, был ли актив потрачен до этого, верна ли сумма перевода, и т.д. Например, в гипотетической транзакции (например, транзакции биткойнов согласно модели UTXO (неизрасходованного выхода транзакции)), транзакции монет Эфириум согласно модели модель счета/баланса) подписанной отправителем, предложенная транзакция может рассылаться в блокчейн сеть для майнинга. Майнеру нужно проверять, подлежит ли транзакция выполнению, согласно истории блокчейна. Если на балансе кошелька отправителя достаточно средств согласно существующей истории блокчейна, транзакция считается действительной и может добавляться к блоку. После проверки, переводы активов могут быть включены в следующий блок, подлежащий добавлению в блокчейн.
[38] Блок во многом подобен записи базы данных. Каждый раз при записи данных создается блок. Эти блоки связаны и защищены с использованием криптографии, образуя взаимосвязанные сети. Каждый блок соединен с предыдущим блоком, откуда происходит название ʺблокчейнʺ. Каждый блок обычно содержит криптографический хеш предыдущего блока, время генерации и фактические данные. Например, каждый блок содержит две части: заголовок блока для записи характерного значения текущего блока и тело для записи фактических данных (например, данных транзакции). Блоки цепи связаны заголовками блоков. Каждый заголовок блока может содержать множественные характерные значения, например, версию, хеш предыдущего блока, корень Меркла, метку времени, целевой уровень сложности и нонс (nonce). Хеш предыдущего блока содержит не только адрес предыдущего блока, но и хеш данных внутри предыдущего блока, что обеспечивает неизменность блокчейнов. Нонс представляет собой число, которое, будучи включено, дает хеш с заданным количеством ведущих нулевых битов.
[39] Для майнинга, узел берет хеш содержимого нового блока. Нонс (например, случайная строка) присоединяется к хешу для получения новой строки. Новая строка снова хешируется. Затем окончательный хеш сравнивается с целевым уровнем сложности (например, уровнем), и производится определение, меньше ли фактически окончательный хеш целевого уровня сложности. Если нет, то нонс изменяется, и процесс повторяется снова. Если да, то блок добавляется в цепь, и открытая бухгалтерская книга обновляется и получает объявление о добавлении. Узел, отвечающий за успешное добавление, вознаграждается биткойнами, например, путем добавления транзакции своего вознаграждения в новый блок (известного как генерация coinbase).
[40] Таким образом, для каждого выхода ʺYʺ, если k выбирается из распределения с высокой минимальной энтропией, невозможно найти вход x таким образом, что H(k|x)=Y, где K - нонс, x - хеш блока, Y - целевой уровень сложности, и ʺ|ʺ обозначает конкатенацию. Поскольку криптографические хеши, по существу, случайны, в том смысле, что их выход нельзя прогнозировать на основе их входов, найти нонс можно только одним способом: проверять целые числа одно за другим, например, 1, затем 2, затем 3 и т.д., то есть "в лоб". Чем больше количество ведущих нулей, тем больше времени в среднем потребуется, чтобы найти необходимый нонс Y. В одном примере, система биткойна постоянно регулирует количество ведущих нулей, таким образом, что среднее время нахождения нонса составляет около десяти минут. Таким образом, поскольку возможности обработки вычислительного оборудования возрастают со временем, в течение лет, протокол биткойна всегда будет просто требовать больше ведущих нулевых битов, чтобы осуществление майнинга занимало около десяти минут.
[41] Как описано, хеширование является краеугольным камнем блокчейна. Алгоритм хеширования можно понимать как функцию, которая сжимает сообщения произвольной длины в сборник сообщений фиксированной длины. Более широко используются MD5 и SHA. В некоторых вариантах осуществления, хеш блокчейна имеет длину 256 битов, и это означает, что независимо от первоначального содержимого, в конце концов вычисляется 256-битовое двоичное число. Можно гарантировать, что соответствующий хеш уникален при условии, что первоначальное содержимое отличается. Например, хеш строки ʺ123ʺ равен a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0 (в шестнадцатеричном формате), что составляет 256 битов будучи преобразован в двоичный формат, и только ʺ123ʺ имеет этот хеш. Алгоритм хеширования в блокчейне необходим, то есть прямое вычисление осуществляется легко (из ʺ123ʺ в a8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0), и обратное вычисление неосуществимо даже если израсходовать все вычислительные ресурсы. Таким образом, хеш каждого блока блокчейна уникален.
[42] Дополнительно, если содержимое блока изменяется, его хеш также изменяется. Существует взаимно-однозначное соответствие между блоком и хешем, и хеш каждого блока вычисляется в зависимости от заголовка блока. Таким образом, характерные значения заголовков блоков соединяются для формирования длинной строки, и затем вычисляется хеш строки. Например, ʺХеш=SHA256 (заголовок блока)ʺ - формула вычисления хеша блока, SHA256 - алгоритм хеширования блокчейна, применяемый к заголовку блока. Хеш уникально определяется заголовком блока, но не телом блока. Как упомянуто выше, заголовок блока содержит много содержимого, включая хеш текущего блока и хеш предыдущего блока. Это означает, что, если содержимое текущего блока изменяется, или если хеш предыдущего блока изменяется, это приведет к изменению хеша в текущем блоке. Если взломщик изменяет блок, хеш этого блока изменяется. Для соединения более позднего блока с измененным блоком, взломщик должен последовательно изменить все последующие блоки, поскольку следующий блок должен содержать хеш предыдущего блока. В противном случае измененный блок будет отсоединяться от блокчейна. По соображениям конструкции, вычисления хеша требуют длительного времени, и почти невозможно изменить множественные блоки за короткий период времени, если только взломщик не завладеет более 51% вычислительной мощности всей сети. Таким образом, блокчейн гарантирует свою собственную надежность, и как только данные записаны, с ним нельзя ничего сделать.
[43] Как только майнер находит хеш (то есть пригодную подпись или решение) для нового блока, майнер рассылает эту подпись всем остальным майнерам (узлам блокчейна). Теперь другие майнеры проверяют, в свою очередь, соответствует ли это решение задаче блока отправителя (то есть, определяют, приводит ли фактически ввод хеша к этой подписи). Если решение верно, другие майнеры подтвердят решение и согласятся добавить новый блок в блокчейн. Таким образом, достигается консенсус нового блока. Это также называется ʺдоказательством выполнения работыʺ. Теперь блок, для которого достигнут консенсус, можно добавить в блокчейн и разослать на все узлы в сети совместно с его подписью. Узлы будут принимать блок и сохранять его в своих данных транзакции при условии, что транзакции внутри блока точно соответствуют текущим балансам кошелька (истории транзакций) в этот момент времени. Каждый раз при добавлении нового блока поверх этого блока, добавление также рассматривается как другое ʺподтверждениеʺ для блоков до него. Например, если транзакция включена в блок 502, и длина блокчейна составляет 507 блоков, это означает, что транзакция имеет пять подтверждений (соответствующих блокам 507-502). Чем больше подтверждений имеет транзакция, тем труднее злоумышленникам изменить ее.
[44] В некоторых вариантах осуществления, иллюстративная система активов блокчейна использует криптографию общедоступного ключа, в которой генерируются два криптографических ключа, один общедоступный ключ и один закрытый ключ. общедоступный ключ можно рассматривать как номер счета, и закрытый ключ можно рассматривать как права собственности. Например, биткойновый кошелек является совокупностью общедоступных и закрытых ключей. Владение активом (например, цифровой валютой, наличным активом, акциями, собственными средствами, облигации) связанным с некоторым адресом актива можно продемонстрировать знанием закрытого ключа, принадлежащего адресу. Например, программное обеспечение биткойнового кошелька, иногда именуемое ʺклиентским программным обеспечением биткойнаʺ, позволяет данному пользователю совершать транзакции в биткойнах. Программа кошелька генерирует и сохраняет закрытые ключи и осуществляет связь с равноправными устройствами в биткойновой сети.
[45] В блокчейновых транзакциях, отправители и получатели платежа идентифицируются в блокчейне своими общедоступными криптографическими ключами. Например, наиболее современные переводы биткойнов совершаются от одного общедоступного ключа к другому общедоступному ключу. На практике хеши этих ключей используются в блокчейне и называются ʺадресами биткойновʺ. В принципе, гипотетическое злонамеренное лицо S может похитить денежные средства у лица A, просто добавив в блокчейн бухгалтерскую книгу транзакцию наподобие ʺлицо A уплачивает лицу S 100 биткойновʺ с использованием адресов биткойнов пользователей вместо их имен. Протокол биткойна препятствует хищению такого рода, требуя, чтобы каждый перевод был снабжен цифровой подписью в виде закрытого ключа плательщика, и чтобы в блокчейн бухгалтерскую книгу добавлялись только подписанные переводы. Поскольку лицо S не может подделать подпись лица A, лицо S не может обмануть лицо A путем добавления в блокчейн элемент, эквивалентный ʺлицо A уплачивает лицу S 200 биткойновʺ. В то же время, любой может проверить с использованием своего общедоступного ключа подпись лица A и, таким образом, уполномочено совершать любую транзакцию в блокчейне, где оно является плательщиком.
[46] В контексте биткойновой транзакции, для перевода некоторой суммы в биткойнах пользователю B, пользователь A может построить запись, содержащую информацию о транзакции через узел. Запись может быть подписана ключом подписания (закрытым ключом) пользователя A и содержать общедоступный проверочный ключ пользователя A и общедоступный проверочный ключ пользователя B. Подпись используется для подтверждения, что транзакция пришла от пользователя, и также препятствует изменению транзакции после ее выдачи. Запись, связанная с другой записью, которая возникала в том же временном окне в новом блоке, может рассылаться на полные узлы. Приняв записи, полные узлы могут включать в бухгалтерскую книгу записи всех транзакций, когда-либо произошедших в блокчейн системе, добавлять новый блок в ранее принятый блокчейн через вышеописанный процесс майнинга, и подтверждать добавленный блок согласно правилам консенсуса сети.
[47] Модель UTXO (неизрасходованного выхода транзакции) и модель счета/баланса являются двумя иллюстративными моделями для осуществления блокчейновых транзакций. UTXO является объектной моделью блокчейна. Согласно UTXO, активы представлены выходами блокчейновых транзакций, которые не были потрачены, которые могут использоваться как входы в новых транзакциях. Например, актив пользователя A, подлежащий переносу, может иметь форму UTXO. Чтобы потратить (перевести) актив, пользователь A должен подписаться закрытым ключом. Биткойн является примером цифровой валюты, которая использует модель UTXO. В случае действительной блокчейн транзакции, неизрасходованные выходы могут использоваться для осуществления дополнительных транзакций. В некоторых вариантах осуществления, только неизрасходованные выходы могут использоваться в дополнительных транзакциях для предотвращения двойного расходования и мошенничества. По этой причине, входы на блокчейне удаляются, когда происходит транзакция, хотя в то же время, выходы создаются в форме UTXO. Эти неизрасходованные выходы транзакции могут использоваться (держателями закрытых ключей, например, лицами, имеющими кошельки цифровой валюты) в целях будущих транзакций.
[48] Модель счета/баланса (именуемая моделью транзакции на основе счета), с другой стороны, отслеживает баланс каждого счета в качестве глобального состояния. Баланс счета проверяется чтобы убедиться в том, что он больше или равен сумме расходной транзакции. Приведен пример того, как модель счета/баланса работает в Эфириуме:
[49] 1. Алиса добывает 5 эфиров посредством майнинга. В системе записывается, что Алиса имеет 5 эфиров.
[50] 2. Алиса хочет дать Бобу 1 эфир, поэтому система сначала списывает 1 эфир со счета Алисы, в результате чего, Алиса теперь имеет 4 эфира.
[51] 3. Затем система увеличивает счет Боба на 1 эфир. Система знает, что сначала Боб имеет 2 эфира, поэтому баланс Боба увеличивается до 3 эфиров.
[52] Записи для Эфириума могут вестись наподобие того, как это делается в банке. Аналогия состоит в использовании банкоматов/дебетовых карт. Банк отслеживает, сколько денежных средств присутствует на каждой дебетовой карте, и когда Бобу нужно потратить денежные средства, банк проверяет свою запись, чтобы убедиться в том, что Боб имеет достаточный баланс до одобрения транзакции.
[53] Поскольку блокчейн и другие аналогичные бухгалтерские книги полностью открыты, блокчейн сам по себе не имеет защиты персональной информации. общедоступный характер сети P2P означает, что, хотя ее пользователи не идентифицируются по имени, транзакции легко связывать с индивидами и компаниями. Например, в заграничных переводах или в логистических цепочках, сумма транзакции имеет чрезвычайно высокий уровень защиты персональной информации, поскольку из информации о сумме транзакции можно вывести конкретное местоположение и личности сторон транзакции. Предмет транзакции может содержать, например, денежные средства, жетон, цифровую валюту, контракт, акт, медицинскую карту, детали потребителя, акции, облигации, собственные средства или любой другой актив, который можно описать в цифровой форме. Хотя модель UTXO может обеспечивать анонимность объемов транзакций, например, через кольцевую подпись в Monero и криптографию нулевого разглашения Zcash, объемы транзакций остаются незащищенными согласно модели счета/баланса. Таким образом, техническая проблема, решаемая настоящим изобретением, состоит в защите онлайновой информации, например, персональной информации об объемов транзакций. Такие транзакции могут отвечать модели счета/баланса.
[54] В некоторых современных технологиях предлагается использовать схему обязательств Педерсена для шифрования суммы транзакции и заменять модель счета/баланса. Согласно схеме, отправитель отправляет сумму транзакции и случайное число, соответствующее схеме обязательств Педерсена суммы транзакции, получателю платежа по защищенному каналу вне блокчейна. Получатель платежа проверяет, совпадает ли случайное число с заверением транзакции, и осуществляет локальное хранение. Например, согласно модели счета/баланса, счет может обрабатываться как кошелек (счет) для поддержания активов, которые агрегируются, но не объединяются. Каждый актив может соответствовать типу актива (например, криптовалюте), и баланс счета равен сумме значений активов. Даже активы одного типа не объединяются. В ходе транзакции может задаваться получатель переводимого актива, и соответствующий актив можно удалять из кошелька для финансирования транзакции. Блокчейновые узлы удостоверяются в том, что в кошельке плательщика имеется достаточно актива(ов) для покрытия транзакции, и затем узлы удаляют переносимый актив из кошелька плательщика и добавляют соответствующий актив в кошелек получателя.
[55] Однако для такой схемы существуют ограничения. Во-первых, схема требует, чтобы пользователь локально поддерживал постоянное хранилище для управления балансами случайных чисел и нешифрованного текста, соответствующими зашифрованному балансу счета, и реализация управления усложняется; во-вторых, хранилище балансов коэффициентов ослепления (например, случайных чисел) и нешифрованного текста, соответствующих ʺактиву Педерсенаʺ в одном локальном узле подвержено потере или повреждению, тогда как хранилище резервных копий на множественных узлах трудно реализовать вследствие частого изменения баланса счета.
[56] Системы и способ, представленные в этом изобретении, позволяют преодолеть вышеупомянутые ограничения и достичь надежной защиты персональной информации для объемов транзакций, значений активов и коэффициентов ослепления в схемах обязательств. Для этого симметричные ключи, полученные согласно протоколу обмена ключами Диффи-Хеллмана (DH), можно использовать для шифрования/дешифрования балансов случайных чисел и нешифрованного текста, таким образом, обеспечивая удобное управление. Дополнительно, хранение зашифрованной информации в блокчейне гарантирует, что объемы транзакций, значения активов и коэффициенты ослепления в схемах обязательств нелегко потерять или подделать.
[57] Прежде чем рассмотреть фигуры этого изобретения, опишем схему обязательств Педерсена и протокол обмена ключами Диффи-Хеллмана (DH).
[58] В некоторых вариантах осуществления, схема обязательств (например, схема обязательств Педерсена) может шифровать некоторое значение a (например, сумму транзакции, значение актива, параметр ключа) следующим образом:
PC(a)=r×G+a×H
[59] где r - случайный коэффициент ослепления (альтернативно именуемый коэффициентом связывания), который обеспечивает сокрытие, G и H - публично согласованные генераторы/базисные точки эллиптической кривой, которые могут выбираться произвольно, sn - значение заверения, C(sn) - точка кривой, используемая как заверение и передаваемая контрагенту, и H - другая точка кривой. Таким образом, G и H могут быть параметрами, известными узлам. Генерация H ʺничего в рукавеʺ может генерироваться путем хеширования базисной точки G с помощью хеш-функции, отображающей одну точку в другую с H= Hash(G). H и G - открытые параметры данной системы (например, произвольно сгенерированные точки на эллиптической кривой). Хотя выше приведен пример схемы обязательств Педерсена в форме эллиптической кривой, альтернативно можно использовать различные другие формы схемы обязательств Педерсена или другие схемы обязательств.
[60] Схема обязательств поддерживает секретность данных, но заверяет данные таким образом, чтобы отправитель данных не мог изменять их позже. Если сторона знает только заверяющее значение (например, PC(a)), она не может определить, какие значения основополагающих данных (например, a) были заверены. Данные (например, a) и коэффициент ослепления (например, r) могут раскрываться позже (например, узлом-инициатором), и получатель (например, консенсусный узел) заверения может выполнять заверение и удостоверяться в том, что заверенные данные совпадают с раскрытыми данными. Коэффициент ослепления присутствует, поскольку без него, кто-то может попытаться угадать данные.
[61] Схемы обязательств позволяют отправителю (заверяющей стороне) заверять значение (например, a) таким образом, что заверенное значение остается личным, но может раскрываться в более позднее время, когда заверяющая сторона разглашает необходимый параметр процесса заверения. Сильные схемы обязательств могут предусматривать как сокрытие информации, так и вычислительное связывание. Сокрытие означает указание, что данное значение a и заверение этого значения PC(a) не подлежат связыванию. Таким образом, PC(a) не должно раскрывать информацию об a. Зная PC(a), G и H, почти невозможно узнать a, поскольку r является случайным числом. Схема обязательств является связывающей в отсутствие правдоподобной возможности, что два разные значения могут приводить к одной и той же заверения. Схема обязательств Педерсена является хорошо скрывающей и вычислительно связывающей при предположении дискретного логарифма. Дополнительно, зная r, G, H и PC(a), можно проверять PC(a) путем проверки условия PC(a)=r×G+a×H.
1
1
2
2
1
2
1
2
1
1
1
1
[62] Схема обязательств Педерсена обладает дополнительным свойством: заверения можно добавлять, и сумма набора заверений идентична заверения в отношении суммы данных (где коэффициент ослепления установлен как сумма коэффициентов ослепления): PC(r, data)+PC(r, data) == PC(r+r, data+data); PC(r, data) - PC(r, data) == 0. Другими словами, заверение сохраняет сложение и применяет свойство коммутативности, т.е. схема обязательств Педерсена является аддитивно гомоморфной, т.е. основополагающими данными можно математически манипулировать, как если бы они не были зашифрованы.
[63] В одном варианте осуществления, схему обязательств Педерсена, используемую для шифрования входного значения, можно построить с использованием точек эллиптической кривой. Традиционно, общедоступный ключ криптографии на основе эллиптических кривых (ECC) создается путем умножения генератора для группы (G) на секретный ключ (r): Pub=rG. Результат может быть преобразован к последовательному виду в качестве 33-байтового массива. Общедоступные ключи ECC могут обладать свойством аддитивного гомоморфизма, упомянутым выше в отношении схем обязательств Педерсена. То есть: Pub1+Pub2=(r1+r2(mod n))G.
[64] Схема обязательств Педерсена для входного значения может создаваться путем взятия дополнительного генератора для группы (H, в нижеприведенных уравнениях) таким образом, чтобы никто не знал дискретный журнал для второго генератора H в отношении первого генератора G (или наоборот), то есть, чтобы никто не знал x, благодаря чему rG=H. Это может осуществляться, например, с использованием криптографического хеша G для взятия H: H=to_point(SHA256(ENCODE(G))).
[65] При наличии двух генераторов G и H, иллюстративную схему обязательств для шифрования входного значения можно определить как: заверение=rG+aH. Здесь, r может быть секретным коэффициентом ослепления, и a может быть входным значением, являющимся целью заверения. Следовательно, если sn заверено, можно получить вышеописанную схему обязательств PC(a)=r×G+a×H. Схемы обязательств Педерсена связаны с теорией информации: для любой заверения, существует некоторый коэффициент ослепления, величина которого совпадает с заверением. Схемы обязательств Педерсена могут быть вычислительно защищены от ложной заверения, таким образом, что произвольное отображение невозможно вычислить.
[66] Сторона (узел), заверившая значение, может открывать заверение путем раскрытия первоначального значения a и коэффициента r, который удовлетворяет уравнению заверения. Сторона, желающая открыть значение PC(a), будет снова вычислять заверение для проверки, что совместно используемое первоначальное значение действительно совпадает с первоначально принятой заверением PC(a). Таким образом, информацию о типе актива можно защищать путем ее отображения в уникальный порядковый номер, и затем ее шифрования заверением Педерсена. Случайное число r, выбранное при генерации заверения, практически не позволяет никому вывести тип типа актива, который заверен согласно заверяющему значению PC(a).
[67] В некоторых вариантах осуществления, обмен ключом Диффи-Хеллмана (DH) может использоваться в качестве способа безопасного обмена криптографическими ключами по общедоступному каналу. Обмен ключом DH, также именуемый экспоненциальным обменом ключами, является способом цифрового шифрования, в котором используются числа, возведенные в конкретные степени для генерации ключей дешифрования на основе компонентов, которые никогда напрямую не передаются, что ставит перед потенциальным дешифровщиком математически невыполнимую задачу.
[68] В примере осуществления обмена ключами Диффи-Хеллмана (DH), два конечных пользователя Алиса и Боб, осуществляя связь по каналу, известному им как закрытый, согласуют друг с другом положительные целые числа p и q, таким образом, что p является простым числом, и q является генератором p. Генератор q представляет собой число, которое, будучи возведено в положительные целочисленные степени, меньшие p, никогда не даст один и тот же результат для любых двух таких целых чисел. Значение p может быть большим, но значение q обычно мало. Таким образом, q является первообразным корнем по модулю p.
[69] После того, как Алиса и Боб конфиденциально согласовали p и q, они выбирают положительные целочисленные персональные ключи a и b, которые оба меньше простого числа по модулю p и оба могут быть произвольно сгенерированы. Пользователи никому не открывает свои персональные ключи, и, в идеале, они запоминают эти числа и нигде их не записывают и не сохраняют. Затем Алиса и Боб вычисляют общедоступные ключи a* и b* на основе своих персональных ключей по формулам
a
a*=q mod p
и
b
b*=q mod p
[70] Два пользователя могут совместно использовать свои общедоступные ключи a* и b* в среде передачи данных, которая предполагается небезопасной, например, в интернете или корпоративной глобальной сети (WAN). Из этих общедоступных ключей любой пользователь может генерировать число k1 на основе своих собственных персональных ключей.
a
[71] Алиса вычисляет k1 по формуле: k1=(b*) mod p
b
[72] Боб вычисляет k1 по формуле: k1=(a*) mod p
[73] Значение k1 оказывается одинаковым согласно любой из двух вышеприведенных формул. Однако персональные ключи a и b, критичный при вычислении k1, не передаются в общедоступный среде. Даже зная p, q, a* и b*, все еще очень трудно вычислить a и b. Поскольку это большой и, очевидно, случайное число, потенциальный взломщик почти не имеет шансов точно угадать k1, даже при наличии мощного компьютера, способного совершать миллионы попыток. Поэтому, теоретически, два пользователя могут осуществлять связь приватно в общедоступный среде способом шифрования по своему выбору с использованием ключа дешифрования k1.
[74] В другом примере осуществления обмена ключами Диффи-Хеллмана (DH), все вычисления осуществляются в дискретной группе достаточного размера, где задача Диффи-Хеллмана считается трудной, обычно мультипликативной группе по модулю большого простого числа (например, для классического DH) или группе эллиптических кривых (например, для эллиптической кривой Диффи-Хеллмана).
[75] Для двух сторон транзакции, каждая сторона выбирает закрытый ключ a или b.
[76] Каждая сторона вычисляет соответствующий общедоступный ключ aG или bG.
[77] Каждая сторона отправляет общедоступный ключ aG или bG другой стороне.
[78] Каждая сторона использует принятый общедоступный ключ совместно со своим собственным закрытым ключом для вычисления нового совместно используемого секрета a(bG)=b(aG), который может именоваться симметричными ключами пары симметричных ключей.
a
b
ab
ba
[79] Как описано ниже, этот иллюстративный способ может использоваться для генерации симметричных ключей abG и baG. Результатом этого обмена ключами является совместно используемый секрет, который затем можно использовать с помощью функции вывода ключа (например, функции шифрования E() с использованием другого входа, известного обеим сторонам, например, конкатенации случайного числа и значения актива) для вывода набора ключей для симметричной схемы шифрования. Альтернативно, могут использоваться различные другие способы вычисления, например, путем генерирования общедоступных ключей gи g и совместно используемого ключа gили g.
[80] В ходе транзакций, защита информации важна для защиты персональной информации пользователя, и сумма транзакции является одним типом информации, которому не хватает защиты. На фиг. 1 показана иллюстративная система 100 для защиты информации, в соответствии с различными вариантами осуществления. Как показано, блокчейновая сеть может содержать множество узлов (например, полные узлы, реализованные в серверах, компьютерах и т.д.). Для некоторой платформы блокчейна (например, NEO), полные узлы с некоторым уровнем права голоса могут именоваться консенсусными узлами, которые предполагают ответственность за проверку транзакции. В этом изобретении, полные узлы, консенсусный узел или другие эквивалентные узлы могут проверять транзакцию.
[81] Так же, как показано на фиг. 1, пользователь A и пользователь B могут использовать соответствующие устройства, например, портативные компьютеры и мобильные телефоны, выступающие в роли облегченных узлов, для осуществления транзакций. Например, пользователь A может пожелать совершать транзакции с пользователем B путем перевода некоторого актива со счета пользователя A на счет пользователя B. Пользователь A и пользователь B могут использовать соответствующие устройства с установленным на них надлежащим программным обеспечением блокчейна для транзакции. Устройство пользователя A может именоваться узлом-инициатором A, который инициирует транзакцию с устройством пользователя B, именуемым узлом-получателем B. Узел A может осуществлять доступ к блокчейну путем связи с узлом 1, и узел B может осуществлять доступ к блокчейну путем связи с узлом 2. Например, узел A и узел B могут предоставлять транзакции блокчейну через узел 1 и узел 2 для запрашивания добавления транзакций в блокчейн. Вне блокчейна, узел A и узел B могут иметь другие каналы связи (например, регулярную интернет-связь без прохождения через узлы 1 и 2).
[82] Каждый из узлов на фиг. 1 может содержать процессор и долговременный машиночитаемый носитель данных, где хранятся инструкции, подлежащие выполнению процессором, для предписания узлу (например, процессору) осуществлять различные описанные здесь этапы для защиты информации. На каждом узле может быть установлено программное обеспечение (например, программа транзакций) и/или оборудование (например, провода, беспроводные соединения) для осуществления связи с другими узлами и/или другими устройствами. Дополнительные детали оборудования и программного обеспечения узла описаны ниже со ссылкой на фиг. 5.
[83] Фиг. 2 демонстрирует иллюстративные этапы транзакции и проверки между узлом-отправителем A, узлом-получателем B и одним или более узлами проверки, в соответствии с различными вариантами осуществления. Представленные ниже операции предназначены для иллюстрации. В зависимости от реализации, иллюстративные этапы могут включать в себя больше, меньше или альтернативные этапы, осуществляемые в различном порядке или параллельно.
[84] В различных вариантах осуществления, счета сторон транзакции (пользователя-отправителя A и пользователя-получателя B) сконфигурированы для модели счета/баланса. Пользователь A и пользователь B могут осуществлять следующие этапы для осуществления транзакции через одно или более устройств, например, портативный компьютер, мобильный телефон и т.д. На устройствах может быть установлено надлежащее программное обеспечение и оборудование для осуществления различных этапов. Каждый счет может быть связан с криптографической парой закрытого ключа (секретного ключа) - общедоступного ключа. Закрытый ключ может обозначаться SK=x, и общедоступный ключ может обозначаться PK=xG, где G является генератором группы. Каждый счет может содержать различные активы, обозначенные: (V=PC(r, v), E(K, r, v)), где v представляет номинальное значение актива, V представляет схему обязательств Педерсена номинального значения v, r - коэффициент ослепления (например, случайное число), PC() - алгоритм схемы обязательств Педерсена, E() - алгоритм шифрования (например, алгоритм шифрования симметричными ключами), и K - ключ шифрования. В одном примере, каждый актив могут обозначаться (V=PC(r, v), E(K, r||v)), где || представляет конкатенацию. Каждый актив также может включать в себя информацию, отличную от перечисленной, например, исходную информацию актива.
[85] В одном примере, прежде чем пользователь A успешно переведет сумму t пользователю B в транзакции, удостоверенной блокчейном, адреса активов в счете A и счете B таковы:
[86] Для счета A (счета A):
адрес: (SK_A=a, PK_A=aG)
активы A_1 - A_m, соответственно, значений a_1 - a_m обозначены:
(A_1=PC(r_{a_1}, a_1), E(K_A, r_{a_1}||a_1)),
(A_2=PC(r_{a_2}, a_2), E(K_A, r_{a_2}||a_2)),
...
(A_m=PC(r_{a_m}, a_m), E(K_A, r_{a_m}||a_m))
[87] Для счета B (счета B):
адрес: (SK_B=b, PK_B=bG)
активы B_1 - B_n, соответственно, значений b_1 - b_n обозначены:
(B_1=PC(r_{b_1}, b_1), E(K_B, r_{b_1}||b_1)),
(B_2=PC(r_{b_2}, b_2), E(K_B, r_{b_2}||b_2)),
...
(B_n=PC(r_{b_n}, b_n), E(K_B, r_{b_n}||b_n))
256
[88] В некоторых вариантах осуществления генерация ключей может базироваться на эллиптической кривой ecp256k1 для каждого счета согласно модели счета/баланса. Например, на Эфириуме ecp256k1, любое число от 1 до 2-1 может быть действительным закрытым ключом SK. Хорошая библиотека генерирует закрытый ключ с учетом достаточной случайности. Эфириум требует, чтобы закрытый ключ SK имел длину 256 битов. Генерация общедоступных ключей осуществляется с использованием групповой операции криптографии ECC. Для вывода общедоступного ключа PK, закрытый ключ может умножаться на G. Умножение, используемое для вывода общедоступного ключа PK, является умножением ECC (умножением точки эллиптическая кривой), которое отличается от обычного умножения. G является точкой-генератором, которая представляет собой один из параметров домена криптографии ECC. G может иметь фиксированное значение для ecp256k1. Адресом могут быть, например, последние 20 байтов хеша общедоступного ключа PK.
[89] В некоторых вариантах осуществления, на этапе 201, узел A может инициировать транзакцию с узлом B. Например, пользователь A и пользователь B могут согласовывать сумму t транзакции со счета A пользователя A на счет B пользователя B. Счет A и счет B могут соответствовать описанным здесь ʺкошелькамʺ. Счет A может иметь один или более активов. Актив может содержать, например, денежные средства, жетон, цифровую валюту, контракт, акт, медицинскую карту, детали потребителя, акции, облигации, собственные средства, или любой другой актив, который можно описать в цифровой форме. Счет B может иметь один или более активов или ни одного актива. Каждый актив может быть связан с различной информацией блокчейна, хранящейся в блоках блокчейна, причем информация блокчейна содержит, например, NoteType, представляющий тип актива, NoteID, представляющий уникальную идентификацию актива, заверяющие значения, представляющие значение заверения (например, заверение Педерсена) значения актива, шифрование случайного числа и значения актива, и т.д.
[90] Как описано в отношении счета A, в некоторых вариантах осуществления, активы A_1 - A_m, соответственно, соответствуют значениям a_1 - a_m активов и случайным числам r_1 - r_m. На основе случайных чисел r_1 - r_m, узел A может заверять значения активов на счете A согласно схеме обязательств (например, схеме обязательств Педерсена) для получения зашифрованных заверяющих значений. Например, зашифрованные заверяющие значения могут быть PC_1 - PC_m, где PC_i=PC(r_{a_i}, a_i)=r_{a_i}×G+a_i×H, где G и H - известные параметры, и i принимает значения от 1 до m. Помимо первого поля PC(…), каждый актив также связан со вторым полем E(…), как описано выше. Второе поле E(…) может представлять шифрование соответствующего случайного числа и значения актива, зашифрованной ключом K_A. Например, шифрование может представлять собой E(K_A, r_{a_i}||a_i)). PC(…) и E(…) для каждого актива могут наследоваться из предыдущих транзакций. Тот же механизм можно применять к счету B и его активам.
[91] В некоторых вариантах осуществления, K_A может содержать различные типы ключа шифрования. Например, K_A может быть a*PK_A=aaG что дополнительно описано ниже, и K_B может быть a*PK_B=abG, что дополнительно описано ниже, где a, b, и G могут умножаться путем умножения ECC.
[92] В некоторых вариантах осуществления, для удовлетворения сумме t транзакции, пользователь A может выводить один или более активов с агрегированным значением по меньшей мере t со счета A. Например, со ссылкой на фиг. 1, узел A может выбирать активы A_1 и A_2 для этой транзакции. Узел A может считывать активы PC(r_1, a_1) и PC(r_2, a_2) из узла 1. На основе случайных чисел r_1 и r_2, известных узлу A, узел A может дешифровать считанные активы PC(r_1, a_1) и PC(r_2, a_2) для получения значений a_1 и a_2 активов, чтобы гарантировать, что сумма a_1 и a_2 не меньше суммы t транзакции. Разные активы могут обмениваться друг с другом на счете на основе различных ставок.
[93] В некоторых вариантах осуществления, величина выбранного значения актива, превышающая t, при наличии, задается равной y в качестве изменения. Например, узел A может определять изменение y=a_1+a_2 - t. Узел A может выбирать случайные числа r_t и r_y в качестве коэффициентов ослепления для генерации заверений Педерсена для t и y: T=PC(r_t, t), Y=PC(r_y, y). Таким образом, узел A может генерировать случайное число r_t для t и случайное число r_y для y. Узел A может заверять t и r_t согласно схеме обязательств (например, гомоморфному шифрованию) для получения заверяющего значения T=PC(r_t, t), и заверять y и r_y согласно схеме обязательств (например, гомоморфному шифрованию) для получения заверяющего значения Y=PC(r_y, y).
[94] Дополнительно, в некоторых вариантах осуществления, узел A генерирует первый ключ из пары симметричных ключей a*PK_B=abG и генерирует еще один ключ a*PK_A=aaG. Узел A использует первый ключ abG для шифрования (r_t||t), что дает шифрование E(abG, r_t||t), и использует ключ aaG для шифрования (r_y||y), что дает шифрование E(aaG, r_y||y). Фиг. 3A и фиг. 3B могут демонстрировать этот пример. Альтернативно получению шифрования E(abG, r_t||t) узлом A, пользователь A может отправлять r_t и t на узел B совместно с информацией о транзакции, предписывающей узлу B генерировать второй ключ из пары симметричных ключей b*PK_A=baG для шифрования (r_t||t). Узел B будет отправлять шифрование на узел A, чтобы узел A мог осуществлять проверку. Фиг. 4A и фиг. 4B могут демонстрировать этот пример. Хотя в различных примерах этого изобретения используется конкатенация, альтернативные комбинации входов, выходов, или других параметров может использоваться для функции шифрования или другой операции.
t
y
t
y
n
n
[95] Дополнительно, в некоторых вариантах осуществления, узел A может генерировать доказательство диапазона RP, чтобы доказывать блокчейновым узлам, находится ли каждое из значения PC(r, t) и значения PC(r, y) в правильном диапазоне. Например, чтобы иметь правильные значения PC(r, t), сумма t транзакции может находиться в правильном диапазоне [0, 2-1]; и чтобы иметь правильные значения PC(r, y), изменение y может находиться в правильном диапазоне [0, 2-1]. В одном варианте осуществления, узел A может использовать метод блочного доказательства для генерации доказательства диапазона RP, соответствующего (r_y, y, Y, r_t, t, T) для блокчейновых узлов (например, консенсусного узла) для проверки на более позднем этапе, находятся ли сумма t транзакции и изменение y в правильном диапазоне, на основе доказательства диапазона. Доказательство диапазона может содержать, например, буллетпруфы, кольцевую подпись Борромео и т.д.
[96] На этапе 202, узел A может отправлять информацию о транзакции на узел B (например, по защищенному каналу вне блокчейна). Отправленная информация о транзакции может содержать, например, заверяющее значение T=PC(r_t, t), заверяющее значение Y=PC(r_y, y), шифрование E(abG, r_t||t), шифрование E(aaG, r_y||y), доказательство диапазона RP и т.д. заверяющее значение Y=PC(r_y, y), шифрование E(aaG, r_y||y), и доказательство диапазона RP могут быть необязательными, поскольку узел B может не интересовать изменение, отправленное обратно на счет A. В некоторых вариантах осуществления, передача по каналу связи вне блокчейна может предотвращать запись информации о транзакции в блокчейн и предотвращать получение информации о транзакции узлами, отличными от узла-отправителя A и узла-получателя B. E(aaG, r_y||y) может не нуждаться в отправке на узел B, но в будущем пользователю A может потребоваться потратить изменение y, поскольку изменение нужно возвратить на счет A.
[97] На этапе 203, узел B может проверять случайное число r_t, сумму t транзакции и заверяющее значение T. В некоторых вариантах осуществления, узел B может генерировать второй ключ из пары симметричных ключей b*PK_A=baG и использовать второй ключ baG для дешифрования шифрования E(abG, r_t||t) для получения r_t||t. Из r_t||t, узел B может получать r_t и t, и затем проверять, отвечают ли r_t и t условию T=PC(r_t, t). Таким образом, узел B может проверять, верно ли заверяющее значение T=PC(r_t, t), на основе случайного числа r_t и суммы t транзакции согласно алгоритму схемы обязательств Педерсена. Если согласование/проверка не удается, узел B может отказываться от транзакции; и если согласование/проверка увенчивается успехом, узел B может подписывать транзакцию для ответа узлу A на этапе 204.
[98] На этапе 204, узел B может подписывать транзакцию закрытым ключом SK_B пользователя B для генерации подписи SIGB. Подписание может осуществляться согласно алгоритму цифровой подписи (DSA), например, алгоритму цифровой подписи на основе эллиптических кривых (ECDSA), благодаря чему, получатель подписи может проверять подпись общедоступным ключом подписывающей стороны для аутентификации подписанных данных. Подпись SIGB указывает, что узел-получатель B согласен с транзакцией.
[99] На этапе 205, узел B может передавать подписанную транзакцию обратно на узел A с подписью SIGB.
[100] На этапе 206, если не удалось проверить SIGB, узел A может отказываться от транзакции. Если SIGB успешно проверена, узел A может подписывать транзакцию закрытым ключом SK_A пользователя A для генерации подписи SIGA. Аналогично, подписание может осуществляться согласно алгоритму цифровой подписи (DSA). В одном варианте осуществления, узел A может подписывать (E(abG, r_t||t); E(aaG, r_y||y); Y; T; RP) закрытым ключом пользователя A для генерации подписи SIGA.
[101] На этапе 207, узел A может предоставлять транзакцию блокчейну, предписывая блокчейновым узлам проверять транзакции и определять, добавлять ли транзакцию в блокчейн. В одном варианте осуществления, узел A может предоставлять транзакцию (E(abG, r_t||t); E(aaG, r_y||y); Y; T; RP; SIGA; SIGB) блокчейну через узел 1 для выполнения транзакции. Транзакция может содержать дополнительные параметры или может содержать не все перечисленные параметры. Транзакция может рассылаться одному или более узлам (например, консенсусному узлу) в блокчейне для проверки. Если проверка увенчивается успехом, транзакция добавляется в блокчейн. Если проверка не удается, добавление транзакции в блокчейн отвергается.
[102] На этапах 208-213, один или более узлов (например, консенсусный узел) проверяют подписи, доказательство диапазона и другую информацию о предоставленной транзакции. Если проверка не удается, узлы отказываться от транзакции. Если проверка увенчивается успехом, узлы соглашаются с транзакцией, обновляют счет пользователя A и пользователь счет B по отдельности.
[103] В некоторых вариантах осуществления, для выполнения транзакции, информация о транзакции может проверяться различными блокчейновыми узлами. Информация о транзакции может содержать адрес TXID транзакции, подпись(и), вход и выход. TXID может содержать хеш содержимого транзакции. Подписи могут содержать подписи криптоключом отправителем и получателем. Вход может содержать адрес счета отправителя в блокчейне, один или более активов, выведенных с блокчейнового счета отправителя для транзакции, и т.д. Выход может содержать адрес счета получателя в блокчейне, тип(ы) актива для актива(ов) получателя, заверяющее(ие) значение(я) актива(ов) получателя и т.д. Вход и выход могут содержать индексированную информацию в табличной форме. В некоторых вариантах осуществления, значение NoteID может быть ʺTXID+индекс актива на выходеʺ.
[104] В некоторых вариантах осуществления, один или более узлов блокчейна могут проверять предоставленную транзакцию (E(abG, r_t||t); E(aaG, r_y||y); Y; T; RP; SIGA; SIGB).
[105] На этапе 208 узлы могут проверять, была ли транзакция исполнена с использованием механизма противодействия двойному расходованию или механизма противодействия атаке путем повтора. Если транзакция была исполнена, узлы могут отказываться от транзакции; в противном случае, способ может переходить к этапу 209.
[106] На этапе 209 узлы могут проверять подписи SIGA и SIGB (например, на основе общедоступного ключа A и общедоступного ключа B соответственно). Если какая-либо из подписей неверна, узлы могут отказываться от транзакции; в противном случае, способ может переходить к этапу 210.
[107] На необязательном этапе 210, узлы могут проверять, согласованы ли типы активов. Например, узлы могут проверять, согласованы ли типы активов в NoteType для A_1 - A_2 с типом(ами) актива суммы t транзакции. Если какой-либо из типов активов является несогласованным, узлы могут отказываться от транзакции; в противном случае, способ может переходить к этапу 211. В некоторых вариантах осуществления, первоначальный тип актива в кошельке может быть преобразован в другой тип на основе частоты обмена, и этот этап можно пропустить.
t
y
[108] На этапе 211, узлы могут проверять доказательство диапазона RP для подтверждения значения PC(r, t) и значения PC(r, y). В одном варианте осуществления, узлы могут проверять доказательство диапазона RP для проверки, не меньше ли сумма t транзакции нуля, и не меньше ли изменение y нуля. Если проверка не удается, узлы могут отказываться от транзакции; в противном случае, способ может переходить к этапу 212.
[109] На этапе 212, узлы могут проверять, согласованы ли входы и выходы транзакции. Если проверка не удается, узлы могут отказываться от транзакции; в противном случае, способ может переходить к этапу 213.
[110] На этапе 213, узлы могут проверять, имеет ли узел A актив(ы), выведенный(е) для транзакции. В одном варианте осуществления, узлы могут осуществлять эту проверку на основе информации, хранящейся в блокчейне, например, информации, соответствующей счету A. Информация может содержать информация о предыдущей транзакции всех активов. Таким образом, узлы могут определять, имеет ли счет A переводимый актив для транзакции. Если нет, узлы могут отказываться от транзакции; в противном случае, способ может переходить к этапу 214.
[111] На этапе 214 узлы могут обновлять счет A и счет B. Например, узлы могут удалять переводимый актив величины t со счета A и добавлять его на счет B. На основе свойства гомоморфизма, поскольку Y=PC(r_y, y), и узел 1 знает r_y и может осуществлять доступ к заверяющему значению Y из блокчейна, узел 1 может дешифровать Y для получения значения y актива и возвращать его на счет A. Узел 2 получает на этапе 202 случайное число r_t от узла 1 и может получать из блокчейна заверяющее значение T. Таким образом, узел 2 может дешифровать T для получения значения t актива и добавлять ее на счет B.
[112] В одном примере, после обновления счета A и счета B, счет A принимает изменение y в выведенные активы и принимает свои невыведенные активы. Например, выведенными активами могут быть A_1 и A_2, которые удаляются в транзакции с изменением y, возвращаемым на счет A, и невыведенными активами являются A_3, …, A_m. Счет B принимает сумму t транзакции и принимает свои первоначальные активы (например, B_1, …, B_n). Активы на счете A и счете B таковы:
[113] Для счета A (счета A), обновленные активы обозначены:
(Y=PC(r_y, y), E(aaG, r_y||y)),
...
(A_m=PC(r_{a_m}, a_m), E(K_A, r_{a_m}||a_m))
[114] Для счета B (счета B), обновленные активы обозначены:
(B_1=PC(r_{b_1}, b_1), E(K_B, r_{b_1}||b_1)),
(B_2=PC(r_{b_2}, b_2), E(K_B, r_{b_2}||b_2)),
...
(B_n=PC(r_{b_n}, b_n), E(K_B, r_{b_n}||b_n)),
(T=PC(r_t, t), E(abG, r_t||t))
[115] Хотя в этом изобретении используются узел A/пользователь A и узел B/пользователь B для иллюстрации отправителя и получателя, соответственно, отправителем и получателем может быть один и тот же узел/пользователь. Например, изменение y транзакции (сумма выведенных активов на счете A минус сумма транзакции) может отправляться обратно отправителю транзакции. Таким образом, различные описанные здесь этапы, осуществляемые узлом B, могут альтернативно осуществляться узлом A.
[116] Фиг. 3A демонстрирует блок-схему операций иллюстративного способа 300 для защиты информации, согласно различным вариантам осуществления настоящего изобретения. Способ 300 может осуществляться одним или более компонентами (например, узлом A, узлом 1, комбинацией узла A и узла 1) системы 100, показанной на фиг. 1. Способ 300 может осуществляться системой или устройством (например, компьютером, сервером), содержащим процессор и долговременный машиночитаемый носитель данных (например, память), где хранятся инструкции, подлежащие выполнению процессором, для предписания системе или устройству (например, процессору) осуществлять способ 300. Операции способа 300 представленного ниже, предназначены для иллюстрации. В зависимости от реализации, иллюстративный способ 300 может включать в себя больше, меньше или альтернативные этапы, осуществляемые в различном порядке или параллельно.
[117] Блок 301 содержит: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции. Например, как описано выше, T=PC(r_t, t). В некоторых вариантах осуществления, схема обязательств содержит схему обязательств Педерсена на основе, по меньшей мере, коэффициента r_t ослепления транзакции, и при этом сумма t транзакции является заверенным значением.
[118] Блок 302 содержит: генерирование первого ключа из пары симметричных ключей. Например, как описано выше, SK_A=a, PK_B=bG, и первый ключ может быть a*PK_B=abG. В некоторых вариантах осуществления, генерирование первого ключа и второго ключа содержит: генерирование первого ключа и второго ключа на основе закрытого ключа SK_A отправителя транзакции и общедоступного ключа PK_B получателя согласно протоколу обмена ключами Диффи-Хеллмана (DH).
[119] Блок 303 содержит: шифрование комбинации (например, конкатенации) коэффициента r_t ослепления транзакции и суммы t транзакции с помощью первого ключа. Например, как описано выше, узел A может использовать первый ключ abG для шифрования (r_t||t), что дает шифрование E(abG, r_t||t).
[120] Блок 304 содержит: передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем. В некоторых вариантах осуществления, передача заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем, содержит передачу заверяющего значения T транзакции и зашифрованной комбинации на узел-получатель, связанный с получателем транзакции, предписывающих узлу-получателю: генерировать второй ключ из пары симметричных ключей на основе закрытого ключа SK_B получателя и общедоступного ключа PK_A отправителя, дешифровать зашифрованную комбинацию с помощью второго ключа, сгенерированного узлом-получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции, и проверять транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции. См., например, этап 203. Например, как описано выше, узел-получатель может независимо генерировать второй ключ b*PK_A=baG. Ключи abG и baG симметричны и равны. Таким образом, узел-получатель может не принимать первый ключ abG от узла-отправителя и вместо этого, узел-получатель независимо генерирует второй ключ baG как эквивалент abG.
[121] В некоторых вариантах осуществления, предписание узлу-получателю проверять транзакцию на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции содержит предписание узлу-получателю: в ответ на определение, что заверяющее значение T транзакции не соответствует схеме обязательств суммы t транзакции на основе коэффициента r_t ослепления транзакции, отказываться от транзакции; и в ответ на определение, что заверяющее значение T транзакции согласуется со схемой заверения суммы t транзакции на основе коэффициента r_t ослепления транзакции, одобрять транзакцию путем подписания транзакции для генерации подписи SIGB получателя, возвращаемой на узел-отправитель, связанный с отправителем.
[122] В некоторых вариантах осуществления, до (блок 304) передачи зашифрованной комбинации на узел-получатель, связанный с получателем, способ дополнительно содержит: заверение изменения y транзакции согласно схеме обязательств для получения заверяющего значения Y изменения, причем схема обязательств содержит, по меньшей мере, коэффициент r_y ослепления изменения, причем изменение y является одним или более активов отправителя, выведенных для транзакции, меньших суммы t транзакции; генерирование еще одного ключа на основе закрытого ключа SK_A отправителя и общедоступного ключа PK_A отправителя; и шифрование другой комбинации коэффициента r_y ослепления изменения и изменения y с помощью еще одного ключа. Например, как описано выше, Y=PC(r_y, y), PK_A =a, и узел A может генерировать ключ a*PK_A=aaG и использовать ключ aaG для шифрования (r_y||y), что дает шифрование E(aaG, r_y||y).
[123] В некоторых вариантах осуществления, способ дополнительно содержит: в ответ на прием подписи SIGB получателя, одобрение транзакции путем подписания транзакции для генерации подписи SIGA отправителя; и предоставление транзакции, содержащей зашифрованную комбинацию, зашифрованную другую комбинацию, заверяющее значение T транзакции, заверяющее значение Y изменения, подпись SIGA отправителя и подпись SIGB получателя, одному или более узлам в блокчейн сети с целью проверки транзакции одним или более узлами. Дополнительные детали описаны выше со ссылкой на этапы 208-213.
[124] В некоторых вариантах осуществления, предоставление транзакции, содержащей зашифрованную комбинацию, зашифрованную другую комбинацию, заверяющее значение T транзакции, заверяющее значение Y изменения, подпись SIGA отправителя и подпись SIGB получателя, одному или более узлам в блокчейн сети с целью проверки транзакции одним или более узлами содержит: предоставление транзакции, содержащей зашифрованную комбинацию, зашифрованную другую комбинацию, заверяющее значение T транзакции, заверяющее значение Y изменения, подпись SIGA отправителя и подпись SIGB получателя, одному или более узлам в блокчейн сети, предписывающее одному или более узлам, в ответ на успешную проверку транзакции, выдавать сумму t транзакции получателю, устранять один или более активов, выведенных для транзакции, и выдавать изменение y отправителю. Дополнительные детали описаны выше со ссылкой на этап 214.
[125] Фиг. 3B демонстрирует блок-схему операций иллюстративного способа 400 для защиты информации, согласно различным вариантам осуществления настоящего изобретения. Способ 400 может осуществляться одним или более компонентами (например, узлом B, узлом 2, комбинацией узла B и узла 2 и т.д.) системы 100, показанной на фиг. 1. Способ 400 может осуществляться системой или устройством (например, компьютером, сервером), содержащим процессор и долговременный машиночитаемый носитель данных (например, память), где хранятся инструкции, подлежащие выполнению процессором, для предписания системе или устройству (например, процессору) осуществлять способ 400. Операции способа 400 представленного ниже, предназначены для иллюстрации. В зависимости от реализации, иллюстративный способ 400 может включать в себя больше, меньше или альтернативные этапы, осуществляемые в различном порядке или параллельно.
[126] Блок 401 содержит: получение комбинации коэффициента r_t ослепления транзакции и суммы t транзакции, зашифрованной с помощью первого ключа из пары симметричных ключей, и получение заверяющего значения T транзакции. Сумма t транзакции заверяется с помощью схемы обязательств узлом-отправителем, связанным с отправителем транзакции, для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции. В некоторых вариантах осуществления, первый ключ генерируется узлом-отправителем на основе закрытого ключа SK_A отправителя транзакции и общедоступного ключа PK_B получателя транзакции.
[127] Блок 402 содержит: генерирование второго ключа из пары симметричных ключей. В некоторых вариантах осуществления, генерирование второго ключа из пары симметричных ключей содержит генерирование второго ключа из пары симметричных ключей на основе закрытого ключа SK_B получателя транзакции и общедоступного ключа PK_A отправителя согласно протоколу обмена ключами Диффи-Хеллмана (DH).
[128] Блок 403 содержит: дешифрование полученной комбинации с помощью второго ключа, сгенерированного узлом-получателем, связанным с получателем, для получения коэффициента r_t ослепления транзакции и суммы t транзакции.
[129] Блок 404 содержит: проверку транзакции на основе, по меньшей мере, заверяющего значения T транзакции, коэффициента r_t ослепления транзакции и суммы t транзакции.
[130] Альтернативно шифрованию комбинации (r_t, t), например, (r_t||t) на узле A, узел A может передавать (r_t, t) на узел B, предписывая узлу B шифровать комбинацию (r_t, t), как описано ниже со ссылкой на фиг. 4A и фиг. 4B. Другие этапы и описания фиг. 1-3B можно аналогично применять к фиг. 4A и фиг. 4B.
[131] Фиг. 4A демонстрирует блок-схему операций иллюстративного способа 440 для защиты информации, согласно различным вариантам осуществления настоящего изобретения. Способ 440 может осуществляться одним или более компонентами (например, узлом A, узлом 1, комбинацией узла A и узла 1) системы 100, показанной на фиг. 1. Способ 440 может осуществляться системой или устройством (например, компьютером, сервером), содержащим процессор и долговременный машиночитаемый носитель данных (например, память), где хранятся инструкции, подлежащие выполнению процессором, для предписания системе или устройству (например, процессору) осуществлять способ 440. Операции способа 440, представленного ниже, предназначены для иллюстрации. В зависимости от реализации, иллюстративный способ 440 может включать в себя больше, меньше или альтернативные этапы, осуществляемые в различном порядке или параллельно.
[132] Блок 441 содержит: заверение суммы t транзакции транзакции с помощью схемы обязательств для получения заверяющего значения T транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t ослепления транзакции.
[133] Блок 442 содержит: отправку суммы t транзакции, коэффициента r_t ослепления транзакции и заверяющего значения T транзакции на узел-получатель, связанный с получателем транзакции, с целью проверки транзакции узлом-получателем и для шифрования коэффициента r_t ослепления транзакции и суммы t транзакции вторым ключом из пары симметричных ключей. Например, узел B может проверять условие T=PC(r_t, t), и узел B может шифровать комбинацию ключом baG для получения E(baG, r_t||t).
[134] Блок 443 содержит: получение зашифрованной комбинации (например, E(baG, r_t||t)) коэффициента r_t ослепления транзакции и суммы t транзакции от узла-получателя.
[135] Блок 444 содержит: генерирование первого ключа пары симметричных ключей для дешифрования зашифрованной комбинации для проверки транзакции. Например, узел A может генерировать первый ключ abG для дешифрования E(baG, r_t||t) и проверять правильность r_t и t. После взаимной проверки r_t и t узлом-отправителем и узлом-получателем, транзакция может предоставляться блокчейну для проверки.
[136] Фиг. 4B демонстрирует блок-схему операций иллюстративного способа 450 для защиты информации, согласно различным вариантам осуществления настоящего изобретения. Способ 450 может осуществляться одним или более компонентами (например, узлом B, узлом 2, комбинацией узла B и узла 2 и т.д.) системы 100, показанной на фиг. 1. Способ 450 может осуществляться системой или устройством (например, компьютером, сервером), содержащим процессор и долговременный машиночитаемый носитель данных (например, память), где хранятся инструкции, подлежащие выполнению процессором, для предписания системе или устройству (например, процессору) осуществлять способ 450. Операции способа 450, представленного ниже, предназначены для иллюстрации. В зависимости от реализации, иллюстративный способ 450 может включать в себя больше, меньше или альтернативные этапы, осуществляемые в различном порядке или параллельно.
[137] Блок 451 содержит: получение суммы t транзакции транзакции, коэффициента r_t ослепления транзакции и заверяющего значения T транзакции.
[138] Блок 452 содержит: проверку транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t ослепления транзакции и полученного заверяющего значения T транзакции.
[139] Блок 453 содержит: в ответ на успешную проверку транзакции, шифрование коэффициента r_t ослепления транзакции и суммы t транзакции вторым ключом из пары симметричных ключей для получения зашифрованной комбинации (например, E(baG, r_t||t)).
[140] Блок 454 содержит: передачу зашифрованной комбинации на узел-отправитель, связанный с отправителем транзакции.
[141] Как показано, персональную информацию для суммы транзакции можно защищать посредством различных усовершенствований вычислительной технологии. Например, счета структура содержат одно или более полей, например, первое поле, связанное с заверением Педерсена значения актива (например, первое поле, представляющее собой PC(r_{a_i}, a_i), где i принимает значения от 1 до m) и второе поле, связанное со случайным числом для схемы обязательств Педерсена и значения актива (например, второе поле представляющее собой E(…)). Первое поле и второе поле также используются на этапах транзакции и сохранения в блокчейне.
[142] В порядке другого примера, симметричный ключ используется для шифрования случайного числа каждого заверения Педерсена и соответствующего значения актива, и сохранения транзакции, включающей в себя зашифрованные случайные числа и значения активов в блокчейне. Этот способ избегает локального управления такими случайными числами и обеспечивает защиту на основе распределенного и согласованного хранения блокчейна.
[143] Дополнительно, согласно протоколу обмена ключами DH или альтернативному протоколу, даже в отсутствие прямой связи, пользователь A и пользователь B совместно используют общий секрет (пару симметричных ключей abG и baG) для шифрования/дешифрования случайного числа заверения и значения актива. Поскольку пара симметричных ключей получается из пары общедоступного-закрытого ключа соответствующих счетов, случайное число для заверения может эффективно сохраняться посредством блокчейна, без дополнительного добавления ключа шифрования.
[144] В порядке еще одного примера, доказательство диапазона используется для доказательства, что уже существующие активы транзакции сбалансированы относительно новых активов и транзакции, и что значение каждого нового актива находится в приемлемом диапазоне. Дополнительно, стороны транзакции могут передавать заверенное случайное число и значение нового актива получателю по защищенному каналу вне блокчейна для проверки, совпадает ли заверенное значение со значением актива транзакции.
[145] Таким образом, случайными числами заверений Педерсена удобно управлять, без опасности повреждения и без навлечения дополнительной нагрузки управления ключами. Таким образом, можно полностью защитить персональная информация о транзакции, и также держать в секрете объемы транзакций.
[146] Описанные здесь методы реализуются одним или более вычислительными устройствами специального назначения. Вычислительные устройства специального назначения могут быть настольными компьютерными системами, серверными компьютерными системами, портативными компьютерными системами, карманными устройствами, сетевыми устройствами или любым другим устройством или комбинацией устройств, которые включают в себя аппаратную и/или программную логику для осуществления методов. Вычислительное(ые) устройство(а), в целом, управляются и координируются программным обеспечением операционной системы. Традиционные операционные системы управляют выполнением компьютерных процессов и планируют его, осуществляют управление памятью, обеспечивают файловую систему, сетевую связь, службы I/O и обеспечивают функциональные возможности пользовательского интерфейса, например, графического пользовательского интерфейса (ʺGUIʺ), помимо прочего.
[147] На фиг. 5 показана блок-схема, которая демонстрирует компьютерную систему 500, в которой можно реализовать любой из описанных здесь вариантов осуществления. Система 500 может быть реализована в любом из описанных здесь узлов и выполнена с возможностью осуществлять соответствующие этапы способов защиты информации. Компьютерная система 500 включает в себя шину 502 или другой механизм связи для передачи информации, один или более аппаратных процессоров 504, соединенных с шиной 502 для обработки информации. Аппаратные процессоры 504 могут представлять собой, например, один или более микропроцессоров общего назначения.
[148] Компьютерная система 500 также включает в себя основную память 506, например, оперативную память (RAM), кэш-память и/или другие динамические запоминающие устройства, подключенные к шине 502 для сохранения информации и инструкций, подлежащих выполнению процессором(ами) 504. Основная память 506 также может использоваться для сохранения временных переменных или другой промежуточной информации в ходе выполнения инструкций, подлежащих выполнению процессором(ами) 504. Такие инструкции, хранящиеся на носителях данных, доступных процессору(ам) 504, превращают компьютерную систему 500 в машину специального назначения, которая специализирована для осуществления операций, заданных в инструкциях. Компьютерная система 500 дополнительно включает в себя постоянную память (ROM) 508 или другое статическое запоминающее устройство, подключенное к шине 502, для хранения статической информации и инструкций для процессора(ов) 504. Запоминающее устройство 510, например, магнитный диск, оптический диск или карта флэш-памяти (флэш-носитель) на USB и т.д., обеспечивается и подключается к шине 502 для сохранения информации и инструкций.
[149] Компьютерная система 500 может осуществлять описанные здесь методы с использованием специализированной аппаратной логики, один или более ASIC или FPGA, программно-аппаратное обеспечение и/или программная логика, которая, совместно с компьютерной системой, предписывает или программирует компьютерную систему 500 быть машиной специального назначения. Согласно одному варианту осуществления, описанные здесь операции, способы и процессы осуществляются компьютерной системой 500, когда процессор(ы) 504 выполняют одну или более последовательностей из одной или более инструкций, содержащихся в основной памяти 506. Такие инструкции могут считываться в основную память 506 с другого носителя данных, например, запоминающего устройства 510. Выполнение последовательностей инструкций, содержащихся в основной памяти 506, предписывает процессору(ам) 504 осуществлять процесс описанные здесь этапы. В альтернативных вариантах осуществления, аппаратная схема может использоваться вместо программных инструкций или совместно с ними.
[150] Основная память 506, ROM 508 и/или хранилище 510 может включать в себя долговременные носители данных. Используемый здесь термин ʺдолговременные носителиʺ и аналогичные термины, означает носители, где хранятся данные и/или инструкции, которые предписывают машине действовать тем или иным образом, носители исключают передаваемые сигналы. Такие долговременные носители могут содержать энергонезависимые носители и/или энергозависимые носители. Энергонезависимые носители включает в себя, например, оптические или магнитные диски, например, запоминающее устройство 510. Энергозависимые носители включают в себя динамическую память, например, основную память 506. Общие формы долговременных носителей включают в себя, например, флоппи-диск, гибкий диск, жесткий диск, твердотельный привод, магнитную ленту или любой другой магнитный носитель данных, CD-ROM, любой другой оптический носитель данных, любой физический носитель с шаблонами отверстий, RAM, PROM, EPROM, FLASH-EPROM, NVRAM, любую другую микросхему памяти или картриджа и их сетевые версии.
[151] Компьютерная система 500 также включает в себя сетевой интерфейс 518, подключенный к шине 502. Сетевой интерфейс 518 обеспечивает двустороннюю передачу данных, подключающуюся к одной или более сетевым линиям связи, которые подключены к одной или более локальным сетям. Например, сетевой интерфейс 518 может представлять собой карту цифровой сети связи с комплексными услугами (ISDN), кабельный модем, спутниковый модем или модем для обеспечения соединения для передачи данных для соответствующего типа телефонной линии. В порядке другого примера, сетевой интерфейс 518 может представлять собой карту локальной сети (LAN) для обеспечения соединения для передачи данных для совместимой LAN (или компонента WAN, соединенного с WAN). Также можно реализовать беспроводные линии связи. В любой подобной реализации, сетевой интерфейс 518 отправляет и принимает электрические, электромагнитные или оптические сигналы, которые несут потоки цифровых данных, представляющие различные типы информации.
[152] Компьютерная система 500 может отправлять сообщения и принимать данные, включающий в себя программный код, через сеть(и), сетевую линию связи и сетевой интерфейс 518. В примере интернета, сервер может передавать запрошенный код для прикладной программы через интернет, ISP, локальную сеть и сетевой интерфейс 518.
[153] Принятый код может выполняться процессором(ами) 504, когда он принимается и/или сохраняется в запоминающем устройстве 510 или другом энергонезависимом хранилище для выполнения в дальнейшем.
[154] Каждый из процессов, способов и алгоритмов, описанных в предыдущих разделах, может быть реализован и полностью или частично автоматизироваться в модулях кода, исполняемых одной или более компьютерными системами или компьютерными процессорами, содержащими компьютерное оборудование. Процессы и алгоритмы могут осуществляться частично или полностью в схеме специального назначения.
[155] Различные вышеописанные признаки и процессы можно использовать независимо друг от друга или можно комбинировать по-разному. Все возможные комбинации и подкомбинации подлежат включению в объем этого изобретения. Кроме того, в некоторых реализациях некоторые блоки способа или процесса могут быть исключены. Описанные здесь способы и процессы также не ограничиваются никакой конкретной последовательностью, и блоки или связанные с ними состояния могут осуществляться в других надлежащих последовательностях. Например, описанные блоки или состояния могут осуществляться в порядке, отличном от конкретно раскрытого, или множественные блоки или состояния можно комбинировать в единый блок или состояние. Иллюстративные блоки или состояния могут осуществляться последовательно, параллельно, или каким-либо другим способом. Блоки или состояния могут добавляться в раскрытые иллюстративные варианты осуществления или удаляться из них. Иллюстративные системы и компоненты, описанный здесь, могут быть сконфигурированы иначе, чем описаны. Например, элементы могут добавляться, удаляться или переставляться по сравнению с раскрытыми иллюстративными вариантами осуществления.
[156] Различные операции описанных здесь иллюстративных способов могут осуществляться, по меньшей мере, частично, посредством алгоритма. Алгоритм может содержаться в программных кодах или инструкциях, хранящихся в памяти (например, вышеописанного долговременного машиночитаемого носителя данных). Такой алгоритм может содержать алгоритм машинного обучения. В некоторых вариантах осуществления, алгоритм машинного обучения может в явном виде не программировать компьютеры для осуществления функции, но может осуществляться из обучающих данных для создания прогностической модели, которая осуществляет функцию.
[157] Различные операции описанных здесь иллюстративных способов могут осуществляться, по меньшей мере, частично, одним или более процессорами, которые временно конфигурируются (например, программным обеспечением) или постоянно конфигурируются для осуществления соответствующих операций. Будучи сконфигурированы на временной или постоянной основе, такие процессоры могут образовывать процессорно-реализованные машины, которые действуют для осуществления описанных здесь одной или более операций или функций.
[158] Аналогично, описанные здесь способы могут быть, по меньшей мере, частично процессорно-реализованы, причем конкретный процессор или процессоры являются примером оборудования. Например, по меньшей мере, некоторые из операций способа могут осуществляться одним или более процессорами или процессорно-реализованными машинами. Кроме того, один или более процессоров также могут действовать для поддержки эксплуатационных показателей соответствующих операций в среде ʺоблачных вычисленийʺ или в качестве ʺпрограммного обеспечения как услугиʺ (SaaS). Например, по меньшей мере, некоторые из операций могут осуществляться группой компьютеров (в качестве примеров машин, включающих в себя процессоры), причем эти операции доступны через сеть (например, интернет) и через один или более надлежащих интерфейсов (например, интерфейс прикладных программ (API)).
[159] Эксплуатационные показатели некоторых из операций могут распределяться между процессорами, не только присутствующими в единой машине, но установленными на нескольких машинах. В некоторых иллюстративных вариантах осуществления, процессоры или процессорно-реализованные машины могут располагаться в одном географическом положении (например, в домашней среде, офисной среде или серверной ферме). В других иллюстративных вариантах осуществления, процессоры или процессорно-реализованные машины могут распределяться в нескольких географических положениях.
[160] В этом описании изобретения, множественные экземпляры могут осуществлять компоненты, операции или структуры, описанные как единственный экземпляр. Хотя отдельные операции одного или более способов проиллюстрированы и описаны как отдельные операции, одна или более из отдельных операций могут осуществляться одновременно, и не требуется, чтобы операции осуществлялись в проиллюстрированном порядке. Структуры и функциональные возможности, представленные как отдельные компоненты в иллюстративных конфигурациях, могут осуществляться как комбинированная конструкция или компонент. Аналогично, структуры и функциональные возможности, представленные в виде единого компонента, могут осуществляться как отдельные компоненты. Эти и другие вариации, модификации, добавления и усовершенствования подлежат включению в объем настоящего изобретения.
[161] Хотя настоящее изобретение описано со ссылкой на конкретные иллюстративные варианты осуществления, различные модификации и изменения можно вносить в эти варианты осуществления, не выходя за рамки более широкого объема вариантов осуществления настоящего изобретения. Такие варианты осуществления изобретения может именоваться здесь, по отдельности или совместно, термином ʺизобретениеʺ лишь для удобства и без намерения добровольно ограничивать объем данной заявки никаким отдельным раскрытием или понятием, если фактически раскрыто более одного. Подробное описание не следует понимать в ограничительном смысле, и объем различных вариантов осуществления задается только нижеследующей формулой изобретения, совместно с полным диапазоном эквивалентов, на которые формула изобретения имеет право.