18.03.2020
220.018.0cd2

СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ

Вид РИД

Изобретение

Юридическая информация Свернуть Развернуть
№ охранного документа
0002716740
Дата охранного документа
16.03.2020
Краткое описание РИД Свернуть Развернуть
Аннотация: Изобретение относится к вычислительной технике. Технический результат заключается в повышении безопасности финансовой транзакции. Способ защиты информации содержит этапы, на которых удостоверяют сумму t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции, шифруют комбинацию коэффициента r_t маскирования транзакции и сумму t транзакции с помощью общедоступного ключа PK_B получателя транзакции и передают значение T удостоверения транзакции и зашифрованную комбинацию в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем. 6 н. и 17 з.п. ф-лы, 7 ил.
Реферат Свернуть Развернуть

Область техники, к которой относится изобретение

[1] Данное раскрытие, в общем, относится к способам и устройствам для защиты информации.

Уровень техники

[2] Конфиденциальность является важной для связи и переводов данных между различными пользователями. Без защиты, пользователи подвержены риску кражи личных сведений, несанкционированного перевода или других возможных потерь. Риск становится еще больше, когда связь и переводы реализуются онлайн, вследствие свободного доступа онлайновой информации.

Сущность изобретения

[3] Различные варианты осуществления настоящего раскрытия включают в себя системы, способы и долговременные машиночитаемые носители для защиты информации.

[4] Согласно одному аспекту, машинореализуемый способ защиты информации содержит: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования (‘ослепления’, blinding) транзакции; шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем.

[5] В некоторых вариантах осуществления, общедоступный ключ PK_B представляет собой асимметричный ключ шифрования.

[6] В некоторых вариантах осуществления, схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r_t маскирования транзакции, при этом сумма t транзакции является удостоверенным значением.

[7] В некоторых вариантах осуществления, комбинация коэффициента r_t маскирования транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t маскирования транзакции и суммы t транзакции.

[8] В некоторых вариантах осуществления, передача значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем содержит передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, что предписывает узлу-получателю: дешифровать зашифрованную комбинацию с помощью секретного ключа SK_B получателя, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.

[9] В некоторых вариантах осуществления, предписание узлу-получателю верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции содержит предписание узлу-получателю: в ответ на определение того, что значение T удостоверения транзакции не совпадает со схемой обязательств для суммы t транзакции на основе коэффициента r_t маскирования транзакции, отклонять транзакцию; и в ответ на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств для суммы t транзакции на основе коэффициента r_t маскирования транзакции, подтверждать (одобрять) транзакцию посредством подписания транзакции с помощью секретного ключа SK_B получателя, чтобы формировать подпись SIGB получателя.

[10] В некоторых вариантах осуществления, до передачи зашифрованной комбинации в узел-получатель, ассоциированный с получателем, способ дополнительно содержит: удостоверение сдачи y транзакции с помощью схемы обязательств для того, чтобы получать значение Y удостоверения сдачи, причем схема обязательств содержит, по меньшей мере, коэффициент r_y маскирования сдачи, при этом сдача y представляет собой один или более активов отправителя транзакции, которые являются отведенными для транзакции, меньшей суммы t транзакции; и шифрование другой комбинации коэффициента r_y маскирования сдачи и сдачи y с помощью общедоступного ключа PK_A отправителя.

[11] В некоторых вариантах осуществления, способ дополнительно содержит: в ответ на прием подписи SIGB получателя, подтверждение транзакции посредством подписания транзакции с помощью секретного ключа SK_A отправителя, чтобы формировать подпись SIGA отправителя; и отправку транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков (блокчейн) для верификации транзакции одним или более узлами.

[12] В некоторых вариантах осуществления, отправка транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков для верификации транзакции одним или более узлами содержит: отправку транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков, что предписывает одному или более узлов, в ответ на успешную верификацию транзакции, эмитировать сумму t транзакции получателю, исключать один или более активов, отведенных для транзакции, и эмитировать сдачу y отправителю.

[13] Согласно другому аспекту, долговременный машиночитаемый носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают процессору выполнять операции, содержащие: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем.

[14] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают системе выполнять операции, содержащие: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем.

[15] Согласно другому аспекту, машинореализуемый способ защиты информации содержит: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью общедоступного ключа PK_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена узлом-отправителем, ассоциированным с отправителем транзакции, с помощью схемы обязательств для получения значения T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; дешифрование полученной комбинации с помощью секретного ключа SK_B получателя транзакции, чтобы получить коэффициент r_t маскирования транзакции и сумму t транзакции; и верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.

[16] В некоторых вариантах осуществления, общедоступный ключ PK_B получателя и секретный ключ SK_B получателя представляют собой асимметричные ключи шифрования.

[17] Согласно другому аспекту, долговременный машиночитаемый носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают процессору выполнять операции, содержащие: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью общедоступного ключа PK_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена узлом-отправителем, ассоциированным с отправителем транзакции, с помощью схемы обязательств для получения значения T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; дешифрование полученной комбинации с помощью секретного ключа SK_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.

[18] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают системе выполнять операции, содержащие: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью общедоступного ключа PK_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена узлом-отправителем, ассоциированным с отправителем транзакции, с помощью схемы обязательств для получения значения T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; дешифрование полученной комбинации с помощью секретного ключа SK_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.

[19] Согласно другому аспекту, машинореализуемый способ защиты информации содержит: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя; получение зашифрованной комбинации коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя; и передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.

[20] Согласно другому аспекту, долговременный машиночитаемый носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают процессору выполнять операции, содержащие: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя; получение зашифрованной комбинации коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя; и передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.

[21] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают системе выполнять операции, содержащие: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя; получение зашифрованной комбинации коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя; и передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.

[22] Согласно другому аспекту, машинореализуемый способ защиты информации содержит: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции; верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции, чтобы получать зашифрованную комбинацию; и передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.

[23] Согласно другому аспекту, долговременный машиночитаемый носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают процессору выполнять операции, содержащие: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции; верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции, чтобы получать зашифрованную комбинацию; и передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.

[24] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые, при их исполнении процессором, предписывают системе выполнять операции, содержащие: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции; верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции, чтобы получать зашифрованную комбинацию; и передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.

[25] Эти и другие признаки систем, способ и долговременных машиночитаемых носителей, раскрытых в данном документе, а также способы работы и функции связанных элементов структуры и комбинации частей и изделий должны становиться более очевидными при рассмотрении последующего описания и прилагаемой формулы изобретения со ссылкой на прилагаемые чертежи, все из которых составляют часть этого подробного описания, при этом аналогичные ссылки с номерами обозначают соответствующие части на различных чертежах. Тем не менее, следует четко понимать, что чертежи служат только для целей иллюстрации и описания не предназначены в качестве задания ограничений изобретения.

Краткое описание чертежей

[26] Определенные признаки различных вариантов осуществления настоящей технологии подробно изложены в прилагаемой формуле изобретения. Лучшее понимание признаков и преимуществ технологии должно получаться со ссылкой на нижеприведенное подробное описание, которое излагает иллюстративные варианты осуществления, в которых используются принципы изобретения, и на прилагаемые чертежи, на которых:

[27] Фиг. 1 иллюстрирует примерную систему для защиты информации, в соответствии с различными вариантами осуществления.

[28] Фиг. 2 иллюстрирует примерные этапы для инициирования и верификации транзакций, в соответствии с различными вариантами осуществления.

[29] Фиг. 3A иллюстрирует блок-схему последовательности операций примерного способа защиты информации, в соответствии с различными вариантами осуществления.

[30] Фиг. 3B иллюстрирует блок-схему последовательности операций примерного способа защиты информации, в соответствии с различными вариантами осуществления.

[31] Фиг. 4A иллюстрирует блок-схему последовательности операций примерного способа защиты информации, в соответствии с различными вариантами осуществления.

[32] Фиг. 4B иллюстрирует блок-схему последовательности операций примерного способа защиты информации, в соответствии с различными вариантами осуществления.

[33] Фиг. 5 иллюстрирует блок-схему примерной компьютерной системы, в которой могут реализовываться любые из вариантов осуществления, описанных в данном документе.

Подробное описание изобретения

[34] Цепочка блоков может рассматриваться как децентрализованная база данных, обычно называемая "распределенным реестром", поскольку операция выполняется посредством различных узлов (например, вычислительных устройств) в сети. Любая информация может записываться в цепочку блоков и храниться или считываться из нее. Любой может устанавливать сервер и присоединяться к сети цепочек блоков, чтобы становиться узлом. Любой узел может вносить вычислительную мощность, чтобы поддерживать цепочку блоков посредством выполнения сложных вычислений, таких как вычисление хеш-функции, чтобы добавлять блок в текущую цепочку блоков, и добавленный блок может содержать различные типы данных или информации. Узел, который вносит вычислительную мощность для добавленного блока, может вознаграждаться маркером (например, единицей цифровой валюты). Поскольку цепочка блоков не имеет центрального узла, каждый узел является одинаковым и хранит всю базу данных цепочек блоков.

[35] Узлы, например, представляют собой вычислительные устройства или крупные компьютерные системы, которые поддерживают сеть цепочек блоков и поддерживают ее работу без сбоев. Предусмотрено два типа узлов, полные узлы и облегченные узлы. Полные узлы хранят полную копию цепочки блоков. Полные узлы в сети цепочек блоков проверяют достоверность транзакций и блоков, которые они принимают, и ретранслируют их соединенным равноправным узлам для предоставления консенсусной верификации транзакций. С другой стороны, облегченные узлы загружают только часть цепочки блоков. Например, облегченные узлы используются для цифровых валютных транзакций. Облегченный узел должен обмениваться данными с полным узлом, когда он хочет осуществлять транзакции.

[36] Это свойство децентрализации может помогать предотвращать появление центра управления в управляемой позиции. Например, обслуживание цепочки блоков биткоина выполняется посредством сети узлов связи программного обеспечения для работы с биткоинами в рабочей области. Это раскрытие использует одну или более цепочек блоков или цифровых валют, таких как биткоин и эфириум, в качестве примеров. Специалисты в данной области техники должны принимать во внимание, что технические решения, раскрытые в этом раскрытии, могут использовать или применяться к другому типу цепочек блоков и цифровых валют. Таким образом, вместо банков, учреждений или администраторов в традиционном смысле, несколько посредников существуют в форме компьютеров-серверов, выполняющих программное обеспечение для работы с биткоинами. Эти компьютеры-серверы формируют сеть, соединенную через Интернет, при этом любой может потенциально присоединяться к сети. Транзакции, приспосабливаемые посредством сети, могут иметь форму: "пользователь A хочет отправлять Z биткоинов пользователю B", при этом транзакции передаются в широковещательном режиме в сеть с использованием легкодоступных приложений. Компьютеры-серверы функционируют в качестве серверов биткоинов, которые выполнены с возможностью проверять достоверность этих финансовых транзакций, добавлять их запись в свою копию реестра и затем передавать в широковещательном режиме эти добавления реестра на другие серверы сети.

[37] Поддержание цепочки блоков упоминается как "майнинг", и те, кто осуществляет такое поддержание, вознаграждается новыми созданными биткоинами и комиссионными за транзакции, как упомянуто выше. Например, узлы могут определять то, являются или нет транзакции достоверными, на основе набора правил, с которыми согласована сеть цепочек блоков. Майнеры могут находиться на любом континенте и обрабатывать платежи посредством верификации каждой транзакции в качестве достоверной и ее добавления в цепочку блоков. Такая верификация достигается с помощью консенсуса, предоставленного посредством множества майнеров, и допускает то, что отсутствует систематический тайный сговор. В конечном счете, все данные должны быть согласованными, поскольку вычисление должно удовлетворять определенным требованиям для того, чтобы быть достоверным, и все узлы синхронизируются, чтобы обеспечивать то, что цепочка блоков является согласованной. Таким образом, данные могут согласованно храниться в распределенной системе узлов цепочки блоков.

[38] Посредством процесса майнинга, транзакции, такие как переводы активов, верифицируются и добавляются в растущую цепочку блоков из цепочки блоков посредством сетевых узлов. Посредством прохождения по всей цепочке блоков, верификация может включать в себя, например, то, имеет или нет оплачивающая сторона доступ к переводимому активу, то, потрачен или нет актив ранее, то, является или нет переводимая сумма корректной, и т.д. Например, в гипотетической транзакции (например, в транзакции биткоинов согласно модели на основе UTXO (непотраченного вывода по транзакциям), в транзакции монет эфириума согласно модели на основе счетов/балансов), подписанной посредством отправителя, предложенная транзакция может передаваться в широковещательном режиме в сеть цепочек блоков для майнинга. Майнер должен проверять то, является или нет транзакция соответствующей установленным критериям для выполнения, согласно предыстории цепочек блоков. Если баланс кошелька отправителя имеет достаточно денежных средств согласно существующей предыстории цепочек блоков, транзакция считается достоверной и может добавляться в блок. После верификации, переводы активов могут быть включены в следующий блок, который должен добавляться в цепочку блоков.

[39] Блок является во многом аналогичным записи в базе данных. Каждая запись данных создает блок. Эти блоки связываются и защищаются с использованием криптографии, так что они становятся взаимно соединенными сетями. Каждый блок соединяется с предыдущим блоком, что также представляет собой источник названия "цепочка блоков". Каждый блок обычно содержит криптографический хеш предыдущего блока, время формирования и фактические данные. Например, каждый блок содержит две части: заголовок блока, чтобы записывать значение признака текущего блока и тело, чтобы записывать фактические данные (например, данные транзакции). Цепочка блоков связывается через заголовки блоков. Каждый заголовок блока может содержать несколько значений признаков, таких как версия, хеш предыдущего блока, корень Меркла, временная метка, целевой уровень сложности и одноразовый номер. Хеш предыдущего блока содержит не только адрес предыдущего блока, но также и хеш данных в предыдущем блоке, в силу этого делая цепочки блоков неизменными. Одноразовый номер является числом, которое, если включено, обеспечивает в результате хеш с указанным числом начальных нулевых битов.

[40] Для майнинга, хеш контента нового блока принимается посредством узла. Одноразовый номер (например, случайная строка) добавляется в хеш, чтобы получать новую строку. Новая строка хешируется снова. Конечный хеш затем сравнивается с целевым уровнем сложности (например, уровнем), и определяется то, конечный хеш фактически меньше целевого уровня сложности или нет. Если нет, то одноразовый номер изменяется, и процесс повторяется снова. Если да, то блок добавляется в цепочку, и общедоступный реестр обновляется и предупреждается в отношении добавления. Узел, отвечающий за успешное добавление, вознаграждается биткоинами, например, посредством добавления транзакции вознаграждения себе в новый блок (известно как формирование коинбейса).

[41] Таким образом, для каждого вывода "Y", если k выбирается из распределения с высокой минимальной энтропией, невозможно находить ввод x таким образом, что H (k|x)=Y, где K является одноразовым номером, x является хешем блока, Y является целевым уровнем сложности, и "|" обозначает конкатенацию. Вследствие фактической случайности криптографических хешей, в том смысле, что их вывод не может прогнозироваться из их вводов, имеется только один известный способ находить одноразовый номер: пробовать целые числа одно за другим, например, 1, затем 2, затем 3 и т.д., что может представлять собой известный метод прямого опробования. Чем больше число начальных нулей, тем больше в среднем требуется для того, чтобы находить требуемый одноразовый номер Y. В одном примере, система работы с биткоинами постоянно регулирует число начальных нулей таким образом, что среднее время для того, чтобы находить одноразовый номер, составляет приблизительно десять минут. Таким образом, по мере того, как характеристики обработки вычислительных аппаратных средств улучшаются со временем, за эти годы, протокол биткоинов должен требовать просто большего числа начальных нулевых битов, чтобы майнинг всегда требовал длительности приблизительно в десять минут для реализации.

[42] Как описано выше, хеширование является важным краеугольным камнем для цепочки блоков. Хеш-алгоритм может пониматься как функция, которая сжимает сообщения любой длины в дайджест сообщения фиксированной длины. Чаще всего используются MD5 и SHA. В некоторых вариантах осуществления, длина хеша цепочки блоков составляет 256 битов, что означает то, что независимо от того, каким является исходный контент, в конечном счете вычисляется 256-битовое двоичное число. Кроме того, можно гарантировать то, что соответствующий хеш является уникальным при условии, что исходный контент отличается. Например, хеш строки "123" представляет собой a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0 (шестнадцатеричная форма), который имеет 256 битов при преобразовании в двоичную форму, и "только 123" имеет этот хеш. Хеш-алгоритм в цепочке блоков является необратимым, т.е. прямое вычисление является простым (из "123" в a8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0), и обратное вычисление не может выполняться, даже если все вычислительные ресурсы исчерпываются. Таким образом, хеш каждого блока из цепочки блоков является уникальным.

[43] Дополнительно, если контент блока изменяется, его хеш должен изменяться. Блок и хеш находятся в соответствии "один-к-одному", и хеш каждого блока, в частности, вычисляется для заголовка блока. Таким образом, значения признаков заголовков блоков соединяются, чтобы формировать длинную строку, и затем хеш вычисляется для строки. Например, "Hash=SHA256 (заголовок блока)" представляет собой формулу вычисления хеш-функции блока, SHA256 представляет собой хеш-алгоритм цепочек блоков, применяемый к заголовку блока. Хеш уникально определяется посредством заголовка блока, а не тела блока. Как упомянуто выше, заголовок блока содержит большое количество контента, включающего в себя хеш текущего блока и хеш предыдущего блока. Это означает то, что если контент текущего блока изменяется, либо если хеш предыдущего блока изменяется, это вызывает изменение хеша текущего блока. Если хакер модифицирует блок, хеш этого блока изменяется. Для соединения последующего блока с модифицированным блоком, хакер должен модифицировать все последующие блоки по очереди, поскольку следующий блок должен содержать хеш предыдущего блока. В противном случае, модифицированный блок должен отсоединяться от цепочки блоков. Вследствие проектных причин, вычисления хеш-функции являются времязатратными, и практически невозможно модифицировать несколько блоков за короткий период времени, если хакер не приспосабливает более 51% вычислительной мощности всей сети. Таким образом, цепочка блоков гарантирует собственную надежность, и как только данные записываются, они не могут имитироваться.

[44] После того, как майнер находит хеш (т.е. соответствующую установленным критериям подпись или решение) для нового блока, майнер передает в широковещательном режиме эту подпись всем другим майнерам (в узлы цепочки блоков). Другие майнеры теперь верифицируют по очереди то, соответствует или нет это решение проблеме блока отправителя (т.е. определяют то, приводит или нет ввод хеша фактически к этой подписи). Если решение является достоверным, другие майнеры должны подтверждать решение и согласовывать то, что новый блок может добавляться в цепочку блоков. Таким образом, достигается консенсус для нового блока. Это также известно как "доказательство выполнения работы". Блок, для которого достигнут консенсус, теперь может добавляться в цепочку блоков и передается в широковещательном режиме во все узлы по сети наряду с подписью. Узлы должны подтверждать блок и хранить его в своих данных транзакции при условии, что транзакции в блоке корректно соответствуют текущим балансам кошелька (предыстории транзакций) в этот момент времени. Каждый раз, когда новый блок добавляется поверх этого блока, добавление также подсчитывается в качестве другого "подтверждения" для блоков перед ним. Например, если транзакция включена в блок 502, и цепочка блоков имеет длину в 507 блоков, это означает то, что транзакция имеет пять подтверждений (соответствующих блокам от 507 до 502). Чем больше подтверждений имеет транзакция, тем тяжелее для взломщиков вносить переделки.

[45] В некоторых вариантах осуществления, примерная система управления активами на основе цепочек блоков использует криптографию с общедоступным ключом, в которой формируются два криптографических ключа, один общедоступный ключ и один секретный ключ. Общедоступный ключ может рассматриваться в качестве номера счета, и секретный ключ может рассматриваться в качестве учетных данных владения. Например, кошелек биткоинов представляет собой совокупность общедоступных и секретных ключей. Владение активом (например, цифровой валютой, денежным активом, акциями, долей в капитале, долговым обязательством), ассоциированным с определенным адресом актива, может быть продемонстрировано со знанием секретного ключа, принадлежащего адресу. Например, программное обеспечение кошелька биткоинов, иногда называемое "клиентским программным обеспечением для работы с биткоинами", обеспечивает возможность данному пользователю осуществлять транзакции с биткоинами. Программа-кошелек формирует и хранит секретные ключи и обменивается данными с равноправными узлами по сети биткоинов. Общедоступный и секретный ключи могут упоминаться как асимметричные ключи шифрования (или несимметричные ключи шифрования).

[46] В транзакциях с цепочками блоков, плательщики и получатели платежа идентифицируются в цепочке блоков посредством своих общедоступных криптографических ключей. Например, самые современные переводы биткоинов выполняются из одного общедоступного ключа в другой общедоступный ключ. На практике, хеши этих ключей используются в цепочке блоков и называются "адресами биткоинов". В принципе, если гипотетический человек-взломщик S может красть деньги человека A посредством простого добавления транзакций в реестр цепочек блоков, к примеру "человек S выплачивает человеку A 100 биткоинов", с использованием адресов биткоинов пользователей вместо их имен. Протокол биткоинов предотвращает этот вид кражи посредством требования для каждого перевода иметь цифровую подпись с секретным ключом плательщика, и только подписанные переводы могут добавляться в реестр цепочек блоков. Поскольку человек S не может подделывать подпись человека A, человек S не может обманывать человека A посредством добавления записи в цепочку блоков, эквивалентной "человек S выплачивает человеку A 200 биткоинов". Одновременно, любой может верифицировать подпись человека A с использованием своего общедоступного ключа, и в силу того он авторизует любую транзакцию в цепочке блоков, в которой он представляет собой плательщика.

[47] В контексте транзакций с биткоинами, чтобы переводить некоторые биткоины пользователю B, пользователь A может конструировать запись, содержащую информацию относительно транзакции, через узел. Запись может подписываться ключом подписи (секретным ключом) пользователя A и содержит общедоступный ключ верификации пользователя A и общедоступный ключ верификации пользователя B. Подпись используется для того, чтобы подтверждать, что транзакция исходит от пользователя, а также предотвращает переделку транзакции кем угодно после того, как она эмитирована. Запись, пакетированная с другой записью, которая осуществлена в идентичном временном окне в новом блоке, может передаваться в широковещательном режиме в полные узлы. После приема записей, полные узлы могут работать для включения записей в реестр всех транзакций, которые когда-либо осуществлялись в системе цепочек блоков, добавление нового блока в ранее подтвержденную цепочку блоков посредством вышеописанного процесса майнинга, и проверять достоверность добавленного блока на основе консенсусных правил сети.

[48] Модель на основе UTXO (непотраченного вывода по транзакциям) и модель на основе счетов/балансов представляют собой две примерные модели для реализации транзакций с цепочками блоков. UTXO представляет собой объектную модель цепочек блоков. Согласно UTXO, активы представляются посредством выводов транзакций с цепочками блоков, которые не потрачены, которые могут использоваться в качестве вводов в новых транзакциях. Например, актив пользователя A, который должен переводиться, может иметь форму UTXO. Чтобы тратить (осуществлять транзакции) актив, пользователь A должен подписывать с помощью секретного ключа. Биткоин представляет собой пример цифровой валюты, которая использует UTXO-модель. В случае достоверной транзакции с цепочками блоков, непотраченные выводы могут использоваться для того, чтобы осуществлять дополнительные транзакции. В некоторых вариантах осуществления, только непотраченные выводы могут использоваться в дополнительных транзакциях, чтобы предотвращать двойную трату и мошенничество. По этой причине, вводы в цепочке блоков удаляются, когда транзакция возникает, при этом одновременно, выводы создаются в форме UTXO. Эти непотраченные выводы транзакции могут использоваться (посредством держателей секретных ключей, например, людей с цифровыми валютными кошельками) в целях будущих транзакций.

[49] С другой стороны, модель на основе счетов/балансов (иначе называемая "моделью проведения транзакций на основе счетов") отслеживает баланс каждого счета в качестве глобального состояния. Баланс счета проверяется, чтобы удостоверяться в том, что он превышает или равен потраченной сумме транзакции. Пример того, как модель на основе счетов/балансов работает в эфириуме, предоставляется:

[50] 1. Alice получает 5 эфиров посредством майнинга. В системе записывается то, что Alice имеет 5 эфиров.

[51] 2. Alice хочет предоставлять Bob 1 эфир, так что система сначала должна вычитать 1 эфир из счета Alice, в силу чего Alice теперь имеет 4 эфира.

[52] 3. Система затем увеличивает счет Bob на 1 эфир. Система знает, что Bob имеет 2 эфира для начала, в силу чего баланс Bob увеличивается до 3 эфиров.

[53] Ведение записей для эфириума может быть аналогичным ведению записей в банке. Аналогия представляет собой использование ATM/дебетовой карты. Банк отслеживает, сколько денег имеет каждая дебетовая карта, и когда Bob должен тратить деньги, банк проверяет его запись, чтобы удостоверяться в том, что Bob имеет достаточный баланс, перед подтверждением транзакции.

[54] Поскольку цепочка блоков и другие аналогичные реестры являются полностью общедоступными, непосредственно цепочка блоков не имеет защиты конфиденциальности. Общедоступный характер P2P-сети означает то, что хотя те, кто используют ее, не идентифицируются по имени, связывание транзакций с людьми и компаниями является осуществимым. Например, в международном ремитировании или в системе поставок, сумма транзакции имеет чрезвычайно высокий уровень значения защиты конфиденциальности, поскольку с помощью информацией сумм транзакций, можно логически выводить конкретное местоположение и идентификационные данные сторон транзакции. Предмет транзакции может содержать, например, деньги, маркер, цифровую валюту, договор, купчую, медицинскую карту, сведения о клиентах, акции, долговое обязательство, долю в капитале или любой другой актив, который может описываться в цифровой форме. Хотя UTXO-модель может предоставлять анонимность для сумм транзакций, например, через кольцевую подпись в Monero и криптографии Zcash с нулевым разглашением, суммы транзакций остаются незащищенными согласно модели на основе счетов/балансов. Таким образом, техническая проблема, разрешаемая посредством настоящего раскрытия, заключается в том, как защищать онлайновую информацию, такую как конфиденциальность сумм транзакций. Такие транзакции могут соответствовать модели на основе счетов/балансов.

[55] Некоторые существующие технологии предлагают использовать схему обязательств Педерсена, чтобы шифровать сумму транзакции и заменять модель на основе счетов/балансов. В соответствии со схемой, отправитель отправляет сумму транзакции и случайное число, соответствующее схеме обязательств Педерсена для суммы транзакции, получателю платежа через защищенный канал вне цепочки блоков. Получатель платежа верифицирует то, совпадает или нет случайное число с удостоверением транзакции, и выполняет локальное хранение данных. Например, согласно модели на основе счетов/балансов, счет может трактоваться в качестве кошелька (счета) для хранения активов, которые агрегируются, но не объединяются. Каждый актив может соответствовать типу активов (например, криптовалюта), и баланс счета является суммой стоимостей активов. Даже активы идентичного типа не объединяются. Во время транзакции, может указываться получатель переводимого актива, и соответствующий актив может удаляться из кошелька, чтобы финансировать транзакцию. Узлы цепочки блоков верифицируют то, что кошелек платежа имеет достаточный актив(ы) для того, чтобы покрывать транзакцию, и затем узлы удаляют переведенный актив из кошелька платежа и добавляют соответствующий актив в кошелек получателя.

[56] Тем не менее, по-прежнему существуют ограничения для такой схемы. Во-первых, схема требует от пользователя поддерживать постоянное хранение данных локально, чтобы управлять случайными числами и балансами в виде простого текста, соответствующими зашифрованному балансу счета, и реализация управления усложняется; во-вторых, хранение коэффициентов маскирования (например, случайных чисел) и балансов в виде простого текста, соответствующих "активу Педерсена" в одном локальном узле, имеет предрасположенность к потерям или повреждению, тогда как многоузловое резервное хранение данных затруднительно реализовывать вследствие частого изменения баланса счета.

[57] Системы и способ, представленные в этом раскрытии, могут преодолевать вышеуказанные ограничения и достигать надежной защиты конфиденциальности для сумм транзакций, стоимостей активов и коэффициентов маскирования в схемах обязательств. С этой целью, общедоступный-секретный ключи могут использоваться для того, чтобы шифровать/дешифровать случайные числа и балансы в виде простого текста, за счет этого предоставляя удобное управление. Дополнительно, хранение зашифрованной информации в цепочке блоков обеспечивает, что суммы транзакций, стоимости активов и коэффициенты маскирования в схемах обязательств легко не теряются или имитируются.

[58] В некоторых вариантах осуществления, схема обязательств (например, схема обязательств Педерсена) может шифровать определенное значение (например, сумму транзакции, стоимость активов, параметр ключа) следующим образом:

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.

[62] Схема обязательств Педерсена имеет дополнительное свойство: удостоверения могут добавляться, и сумма набора удостоверений является идентичной удостоверению суммы данных (с коэффициентом маскирования, заданным в качестве суммы коэффициентов маскирования): PC(r1, data1) + PC(r2, data2) == PC(r1+r2, data1+data2); PC(r1, data1) - PC(r1, data1) == 0. Другими словами, удостоверение сохраняет суммирование, и коммутативное свойство применяется, т.е. схема обязательств Педерсена является аддитивно гомоморфной в том, что базовые данные могут манипулироваться математически, как если они не шифруются.

[63] В одном варианте осуществления, схема обязательств Педерсена, используемая для шифрования входного значения, может конструироваться с использованием точек эллиптической кривой. Традиционно, общедоступный ключ на основе криптографии в эллиптических кривых (ECC) создается посредством умножения генератора для группы (G) на секретный ключ (r): Pub=rG. Результат может преобразовываться в последовательную форму в качестве 33-байтового массива. Общедоступные ECC-ключи могут подчиняться аддитивно гомоморфному свойству, упомянутому выше относительно удостоверений Педерсена. Иными словами: Pub1+Pub2=(r1+r2(mod n))G.

[64] Удостоверение Педерсена для входного значения может создаваться посредством подбора дополнительного генератора для группы (H, в нижеприведенных уравнениях) таким образом, что никто не знает дискретный логарифм для второго генератора H относительно первого генератора G (или наоборот), что означает то, что никто не знает x таким образом, что xG=H. Это может осуществляться, например, посредством использования криптографического хеша G для того, чтобы подбирать H: H=to_point(SHA256(ENCODE(G))).

[65] С учетом двух генераторов G и H, примерная схема обязательств для шифрования входного значения может задаваться следующим образом: commitment=rG+aH. Здесь, r может быть секретным коэффициентом маскирования, и a может быть удостоверяемым входным значением. Следовательно, если sn удостоверяется, может получаться вышеописанная схема обязательств PC(a)=r*G+a*H. Схемы обязательств Педерсена являются теоретико-информационно секретными: для любого удостоверения существует некоторый коэффициент маскирования, который должен приводить к тому, что любая сумма совпадает с удостоверением. Схемы обязательств Педерсена могут быть вычислительно защищенными от поддельного удостоверения в том, что произвольное отображение может не вычисляться.

[66] Сторона (узел), которая удостоверяет значение, может открывать удостоверение посредством раскрытия исходного значения a и коэффициента r, который завершает уравнение удостоверения. Сторона, желающая открывать значение PC(a), затем вычислит удостоверение снова, чтобы верифицировать то, что совместно используемое исходное значение фактически совпадает с первоначально принимаемым удостоверением PC(a). Таким образом, информация типов активов может защищаться посредством ее отображения в уникальный серийный номер и затем шифрования посредством схемы обязательств Педерсена. Случайное число r, выбранное при формировании удостоверения, делает почти невозможным для кого-либо логически выводить тип для типа активов, который удостоверяется согласно значению PC(a) удостоверения.

[67] Во время транзакций, защита информации является важной для того, чтобы защищать конфиденциальность пользователей, и сумма транзакции представляет собой один тип информации, для которой отсутствует защита. Фиг. 1 показывает примерную систему 100 для защиты информации, в соответствии с различными вариантами осуществления. Как показано, сеть цепочек блоков может содержать множество узлов (например, полных узлов, реализованных на серверах, в компьютерах и т.д.). Для некоторой платформы цепочек блоков (например, NEO), полные узлы с определенным правом голоса могут упоминаться как консенсусные узлы, которые принимают на себя ответственность за верификацию транзакций. В этом раскрытии, полные узлы, консенсусные узлы или другие эквивалентные узлы могут верифицировать транзакцию.

[68] Кроме того, как показано на фиг. 1, пользователь A и пользователь B могут использовать соответствующие устройства, такие как переносные компьютеры и мобильные телефоны, служащие в качестве облегченных узлов для того, чтобы выполнять транзакции. Например, пользователь A может хотеть осуществлять транзакции с пользователем B посредством перевода некоторого актива на счету пользователя A на счет пользователя B. Пользователь A и пользователь B могут использовать соответствующие устройства с установленным соответствующим программным обеспечением для цепочек блоков для транзакции. Устройство пользователя A может упоминаться как узел-инициатор, который инициирует транзакцию с устройством пользователя B, называемым "узлом-получателем B". Узел A может осуществлять доступ к цепочке блоков через связь с узлом 1, и узел B может осуществлять доступ к цепочке блоков через связь с узлом 2. Например, узел A и узел B могут отправлять транзакции в цепочку блоков через узел 1 и узел 2, чтобы запрашивать добавление транзакций в цепочку блоков. Вне цепочки блоков, узел A и узел B могут иметь другие каналы связи (например, регулярную Интернет-связь без прохождения через узлы 1 и 2).

[69] Каждый из узлов на фиг. 1 может содержать процессор и долговременный машиночитаемый носитель данных, хранящий инструкции, которые, при их исполнении процессором, предписывают узлу (например, процессору) выполнять различные этапы для защиты информации, описанные в данном документе. На каждый узел может устанавливаться программное обеспечение (например, программа для проведения транзакций) и/или аппаратные средства (например, проводные, беспроводные соединения) для того, чтобы обмениваться данными с другими узлами и/или другими устройствами. Ниже описывается более подробная информация аппаратных средств и программного обеспечения узла со ссылкой на фиг. 5.

[70] Фиг. 2 иллюстрирует примерные этапы для транзакции и верификации между узлом-отправителем A, узлом-получателем B и одним или более узлов верификации, в соответствии с различными вариантами осуществления. Операции, представленные ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерные этапы могут включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.

[71] В различных вариантах осуществления, счета сторон транзакции (пользователя-отправителя 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)), где || представляет конкатенацию. Каждый актив также может включать в себя информацию, отличную от перечисленной информации, такую как исходная информация актива.

[72] В одном примере, до того, как пользователь A успешно осуществляет транзакцию с суммой t пользователю B в верифицированной по цепочке блоков транзакции, адреса и активы на счете A и B являются следующими:

[73] Для счета A (счета 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(PK_A, r_{a_1}||a_1)),

(A_2=PC(r_{a_2}, a_2), E(PK_A, r_{a_2}||a_2)),

...

(A_m=PC(r_{a_m}, a_m), E(PK_A, r_{a_m}||a_m))

[74] Для счета B (счета 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(PK_B, r_{b_1}||b_1)),

(B_2=PC(r_{b_2}, b_2), E(PK_B, r_{b_2}||b_2)),

...

(B_n=PC(r_{b_n}, b_n), E(PK_B, r_{b_n}||b_n)),

[75] В некоторых вариантах осуществления, формирование ключей может быть основано на эллиптической кривой ecp256k1 для каждого счета согласно модели на основе счетов/балансов. Например, для эфириума ecp256k1, любое число от 1 до 2256-1 может быть достоверным секретным ключом SK. Хорошая библиотека формирует секретный ключ с учетом достаточной случайности. Эфириум требует секретного ключа SK длиной в 256 битов. Формирование общедоступных ключей выполняется с использованием групповой операции ECC-криптографии. Чтобы извлекать общедоступный ключ PK, секретный ключ может умножаться на G. Умножение, используемое для того, чтобы извлекать общедоступный ключ PK, представляет собой ECC-умножение (умножение по точкам эллиптической кривой), которое отличается от нормального умножения. G является точкой генератора, которая представляет собой один из доменных параметров ECC-криптографии. G может иметь фиксированное значение для ecp256k1. Адрес, например, может составлять последние 20 байтов хеша общедоступного ключа PK.

[76] В некоторых вариантах осуществления, на этапе 201, узел A может инициировать транзакцию с узлом B. Например, пользователь A и пользователь B могут согласовывать сумму t транзакции со счета A пользователя A на счет B пользователя B. Счет A и счет B могут соответствовать "кошелькам", описанным в данном документе. Счет A может иметь один или более активов. Актив может содержать, например, деньги, маркер, цифровую валюту, договор, купчую, медицинскую карту, сведения о клиентах, акции, долговое обязательство, долю в капитале или любой другой актив, который может описываться в цифровой форме. Счет B может иметь один или более активов или не иметь активов. Каждый актив может быть ассоциирован с различной информацией цепочек блоков, хранящейся в блоках цепочки блоков, причем информация цепочек блоков содержит, например, NoteType, представляющий тип активов, NoteID, представляющий уникальный идентификатор актива, значения удостоверения, представляющие значение удостоверения (например, удостоверения Педерсена) стоимости активов, шифрование случайного числа и стоимости активов и т.д.

[77] Как описано относительно счета 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(...) может представлять шифрование соответствующего случайного числа и стоимости активов, зашифрованной с помощью ключа PK_A. Например, шифрование может представлять собой E(PK_A, r_{a_i}||a_i)). PC(...) и E(...) для каждого актива могут быть унаследованы из предыдущих транзакций. Идентичный механизм может применяться к счету B и его активам.

[78] В некоторых вариантах осуществления, чтобы удовлетворять сумме t транзакции, пользователь A может использовать секретный ключ SK_A, чтобы дешифровать один или более активов с агрегированной стоимостью, по меньшей мере, t из счета A. Например, узел A может отводить активы A_1, A_2,..., A_k для этой транзакции, где k меньше или равно m. Оставшиеся активы A_k+1, A_k+2,..., A_m счета A являются неотведенными. Соответственно, узел A может считывать активы PC(r_{a_1}, a_1), PC(r_{a_2}, a_2),..., PC(r_{a_k}, a_k) из узла 1. Когда случайные числа r_{a_1}, r_{a_2},..., r_{a_k} известны узлу A, узел A может дешифровать считанные активы PC(r_{a_1}, a_1), PC(r_{a_2}, a_2),..., PC(r_{a_k}, a_k), чтобы получать стоимости a_1, a_2,..., a_k активов, чтобы обеспечивать то, что сумма (a_1+a_2+...+a_k), не меньше суммы t транзакции. Различными активами можно обмениваться на основе счетов с различными темпами.

[79] В некоторых вариантах осуществления, сумма выбранной стоимости активов сверх t, если имеется, задается равной y в качестве сдачи. Например, узел A может определять сдачу y=(a_1+a_2+...+ a_k) -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).

[80] Дополнительно, в некоторых вариантах осуществления, узел A может использовать общедоступный ключ PK_B пользователя B, чтобы шифровать (r_t||t), что обеспечивает шифрование E(PK_B, r_t||t), и использовать общедоступный ключ PK_A пользователя А, чтобы шифровать (r_y ||y), что обеспечивает шифрование E(PK_A, r_y ||y). Фиг. 3A и фиг. 3B могут соответствовать этому примеру. Альтернативно получению шифрование E(PK_B, r_t||t) посредством узла A, пользователь A может отправлять r_t и t в узел B наряду с информацией транзакций, что предписывает узлу B формировать второй ключ, чтобы шифровать (r_t||t) с помощью PK_B. Узел B должен отправлять шифрование в узел A, чтобы обеспечивать возможность узлу A выполнять верификацию. Фиг. 4A и фиг. 4B могут соответствовать этому примеру. Хотя конкатенация используется в различных примерах этого раскрытия, альтернативные комбинации вводов, выводов или других параметров могут использоваться для функции шифрования или другой операции.

[81] Дополнительно, в некоторых вариантах осуществления, узел A может формировать доказательство RP по диапазону, чтобы доказывать узлам цепочки блоков то, находятся или нет значение T=PC(r_t, t) и значение Y=PC(r_y, y) в пределах достоверного диапазона. Например, чтобы иметь достоверные значения T=PC(r_t, t), сумма t транзакции может находиться в пределах достоверного диапазона [0, 2n-1]; и иметь достоверные значения Y=PC(r_y, y), сдача y может находиться в пределах достоверного диапазона [0, 2n-1]. В одном варианте осуществления, узел A может использовать технологию на основе поблочного доказательства, чтобы формировать доказательство RP по диапазону, связанное с (r_y, y, Y, r_t, t, T) для узлов цепочки блоков (например, консенсусных узлов), чтобы верифицировать на следующем этапе то, находятся или нет сумма t транзакции и сдача y в пределах достоверного диапазона, на основе доказательства по диапазону. Доказательство по диапазону может содержать, например, пуленепробиваемые доказательства, кольцевую подпись Борромена и т.д.

[82] На этапе 202, узел A может отправлять информацию транзакций в узел B (например, через защищенный канал вне цепочки блоков). Отправленная информация транзакций может содержать, например, значение удостоверения T=PC(r_t, t), значение удостоверения Y=PC(r_y, y), шифрование E(PK_B, r_t||t), шифрование E(PK_A, r_y ||y), доказательство RP по диапазону и т.д. Значение удостоверения Y=PC(r_y, y), шифрование E(PK_A, r_y ||y) и доказательство RP по диапазону могут быть необязательными, поскольку узел B может не беспокоиться относительно сдачи, отправляемой обратно на счет A. В некоторых вариантах осуществления, передача через канал связи вне цепочки блоков может предотвращать запись информации транзакций в цепочку блоков и предотвращать получение информации транзакций посредством узлов, отличных от узла-отправителя A и узла-получателя B. E(PK_A, r_y ||y), возможно, не должен отправляться в узел B, но может требоваться в будущем для пользователя A, чтобы тратить сдачу y, поскольку сдача должна возвращаться на счет A.

[83] На этапе 203, узел B может верифицировать случайное число r_t, сумму t транзакции и значение T удостоверения. В некоторых вариантах осуществления, узел B может использовать секретный ключ SK_B, чтобы дешифровать шифрование E(PK_B, 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.

[84] На этапе 204, узел B может подписывать транзакцию с помощью секретного ключа SK_B пользователя B, чтобы формировать подпись SIGB. Подписание может соответствовать алгоритму цифровой подписи (DSA), такому как алгоритм цифровой подписи в эллиптических кривых (ECDSA), за счет чего приемник подписи может верифицировать подпись с помощью общедоступного ключа подписавшей стороны, чтобы аутентифицировать подписанные данные. Подпись SIGB указывает то, что узел-получатель B согласуется с транзакцией.

[85] На этапе 205, узел B может передавать подписанную транзакцию обратно в узел A с подписью SIGB.

[86] На этапе 206, если SIGB не верифицируется успешно, узел A может отклонять транзакцию. Если SIGB успешно верифицируется, узел A может подписывать транзакцию с помощью секретного ключа SK_A пользователя A, чтобы формировать подпись SIGA. Аналогично, подписание может соответствовать алгоритму цифровой подписи (DSA). В одном варианте осуществления, узел A может подписывать (E(PK_B, r_t||t); E(PK_A, r_y ||y); Y; T; RP) с помощью секретного ключа SK_A пользователя A, чтобы формировать подпись SIGA.

[87] На этапе 207, узел A может отправлять транзакцию в цепочку блоков, что предписывает узлам цепочки блоков верифицировать транзакцию и определять то, следует или нет добавлять транзакцию в цепочку блоков. В одном варианте осуществления, узел A может отправлять транзакцию (E(PK_B, r_t||t); E(PK_A, r_y ||y); Y; T; r'; RP; SIGA; SIGB) в цепочку блоков через узел 1, чтобы выполнять транзакцию: r'=r_1+...+r_k-r_t-r_y. Транзакция может содержать дополнительные параметры или может не содержать все перечисленные параметры. Транзакция может передаваться в широковещательном режиме в один или более узлов (например, консенсусных узлов) в цепочке блоков для верификации. Если верификация выполняется успешно, транзакция добавляется в цепочку блоков. Если верификация завершается неудачно, транзакция отклоняется на предмет добавления в цепочку блоков.

[88] На этапах 208-213, один или более узлов (например, консенсусных узлов) верифицируют подписи, доказательство по диапазону и другую информацию отправленной транзакции. Если верификация завершается неудачно, узлы отклоняют транзакцию. Если верификация выполняется успешно, узлы подтверждают транзакцию, обновляют счет пользователя A и счет пользователя B отдельно.

[89] В некоторых вариантах осуществления, чтобы выполнять транзакцию, информация транзакций может верифицироваться посредством различных узлов цепочки блоков. Информация транзакций может содержать адрес TXID транзакции, подпись(и), ввод и вывод. TXID может содержать хеш контента транзакции. Подписи могут содержать криптоключи-подписи посредством отправителя и получателя. Ввод может содержать адрес счета отправителя в цепочке блоков, один или более активов, отведенных из счета цепочки блоков отправителя для транзакции, и т.д. Вывод может содержать адрес счета получателя в цепочке блоков, тип(ы) активов для актива(ов) получателя, значение(я) удостоверения актива(ов) получателя и т.д. Ввод и вывод могут содержать индексированную информацию в табличной форме. В некоторых вариантах осуществления, стоимость значения NoteID может представлять собой "TXID+индекс актива в выводе". Общедоступный ключ PK_A отправителя может служить в качестве адреса для счета A, и общедоступный ключ PK_B получателя может служить в качестве адреса для счета B.

[90] В некоторых вариантах осуществления, один или более узлов цепочки блоков могут верифицировать отправленную транзакцию (E(PK_B, r_t||t); E(PK_A, r_y||y); Y; T; RP; SIGA; SIGB).

[91] На этапе 208, узлы могут верифицировать то, выполнена либо нет транзакция, с использованием механизма защиты от двойной траты или механизма защиты от атак с повторением пакетов. Если транзакция выполнена, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 209.

[92] На этапе 209, узлы могут проверять подписи SIGA и SIGB (например, на основе общедоступного ключа A и общедоступного ключа B, соответственно). Если какая-либо из подписей является некорректной, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 210.

[93] На необязательном этапе 210, узлы могут верифицировать то, являются или нет типы активов согласованными. Например, узлы могут верифицировать то, являются или нет типы активов в NoteType для A_1 в A_k согласованными с типом(ами) активов суммы t транзакции. Если какие-либо из типов активов являются несогласованным, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 211. В некоторых вариантах осуществления, исходный тип активов в кошельке может преобразовываться в другой тип на основе обменного курса, и этот этап может пропускаться.

[94] На этапе 211, узлы могут проверять доказательство RP по диапазону, чтобы проверять достоверность значения PC(r_t, t) и значения PC(r_y, y). В одном варианте осуществления, узлы могут проверять доказательство RP по диапазону, чтобы верифицировать то, не меньше либо нет сумма t транзакции нуля, и то, не меньше либо нет сдача y нуля. Если верификация завершается неудачно, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 212.

[95] На этапе 212, узлы могут проверять то, являются или нет вводы и выводы транзакции согласованными. В одном варианте осуществления, r' может соответствовать стоимости активов t'=a_1+...+a_k-t-y на основе гомоморфного свойства, где r'=r_1+...+r_k-r_t-r_y. Поскольку входные активы составляют a_1-a_k, и вывод составляет t+y, t'=0, когда ввод и вывод являются согласованными: a_1+...a_k=t+y. Таким образом, значение удостоверения, соответствующее r', составляет PC(r', t')=r' *G+t'*H=r'G. Поскольку r'=r_1+...+r_k-r_t-r_y, узлы могут определять то, равны или нет вводы и выводы, посредством верификации того, равен r'G или нет PC_1+...+PC_k-T-Y согласно r_1+...+r_k-r_t-r_y. Если r'G равен PC_1+...+PC_k-T-Y, узлы могут определять то, что вводы и выводы транзакции являются согласованными, и переходить к следующему этапу; в противном случае, узлы могут определять то, что вводы и выводы транзакции являются несогласованными, и отклонять транзакцию.

[96] На этапе 213, узлы могут верифицировать то, имеет или нет узел A актив(ы), отведенные для транзакции. В одном варианте осуществления, узлы могут выполнять эту верификацию на основе информации, хранящейся в цепочке блоков, к примеру, информации, соответствующей счету A. Информация может содержать информацию предыдущих транзакций всех активов. Узлы в силу этого могут определять то, имеет или нет счет A актив для проведения транзакции для транзакции. Если определение представляет собой "Нет", узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 214.

[97] На этапе 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.

[98] В одном примере, после обновления счета A и счета B, счет A принимает сдачу y на отведенные активы A_1, A_2,..., A_k и принимает свои неотведенные активы A_k+1,..., A_m, и счет B принимает сумму t транзакции и принимает свои исходные активы B_1, B_2,..., B_n. Активы на счету A и на счету B являются следующими:

[99] Для счета A (счета A), обновленные активы обозначаются следующим образом:

(Y=PC(r_y, y), E(PK_A, r_y ||y)),

(A_k+1=PC(r_{a_ k+1}, a_ k+1), E(PK_A, r_{a_ k+1}||a_ k+1))

(A_k+2=PC(r_{a_ k+2}, a_ k+2), E(PK_A, r_{a_ k+2}||a_ k+2))

...

(A_m=PC(r_{a_m}, a_m), E(PK_A, r_{a_m}||a_m))

[100] Для счета B (счета B), обновленные активы обозначаются следующим образом:

(B_1=PC(r_{b_1}, b_1), E(PK_B, r_{b_1}||b_1)),

(B_2=PC(r_{b_2}, b_2), E(PK_B, r_{b_2}||b_2)),

...

(B_n=PC(r_{b_n}, b_n), E(PK_B, r_{b_n}||b_n)),

(T=PC(r_t, t), E(PK_B, r_t||t))

[101] Хотя это раскрытие использует узел A/пользователя A и узел B/пользователя B для того, чтобы иллюстрировать отправителя и получателя, соответственно, отправитель и получатель могут представлять собой идентичный узел/пользователя. Например, сдача y транзакции (общее число отведенных активов на счету A минус сумма транзакции) может отправляться обратно отправителю транзакции. Таким образом, различные этапы, выполняемые посредством узла B, как описано в данном документе, альтернативно могут выполняться посредством узла A.

[102] Фиг. 3A иллюстрирует блок-схему последовательности операций примерного способа 300 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 300 может реализовываться посредством одного или более компонентов (например, узла A, узла 1, комбинации узла A и узла 1) системы 100 по фиг. 1. Способ 300 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), хранящий инструкции, которые должны выполняться посредством процессора, чтобы предписывать системе или устройству (например, процессору) осуществлять способ 300. Операции способа 300, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 300 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.

[103] Этап 301 содержит: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции. Например, как описано ранее, T=PC(r_t, t). В некоторых вариантах осуществления, схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r_t маскирования транзакции, при этом сумма t транзакции является удостоверенным значением.

[104] Этап 302 содержит: шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции. Например, узел А может использовать ключ PK_B, чтобы шифровать (r_t||t), что дает шифрование E(PK_B, r_t||t). В некоторых вариантах осуществления, общедоступный ключ PK_B представляет собой асимметричный ключ шифрования. В некоторых вариантах осуществления, комбинация коэффициента r_t маскирования транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t маскирования транзакции и суммы t транзакции.

[105] Этап 303 содержит: передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем (например, предписание узлу-получателю верифицировать транзакцию). В некоторых вариантах осуществления, передача значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем содержит передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, что предписывает узлу-получателю: дешифровать зашифрованную комбинацию с помощью секретного ключа SK_B получателя, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции. См, например, этап 203.

[106] В некоторых вариантах осуществления, предписание узлу-получателю верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции содержит предписание узлу-получателю: в ответ на определение того, что значение T удостоверения транзакции не совпадает со схемой обязательств для суммы t транзакции на основе коэффициента r_t маскирования транзакции, отклонять транзакцию; и в ответ на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств для суммы t транзакции на основе коэффициента r_t маскирования транзакции, подтверждать транзакцию посредством подписания транзакции с помощью секретного ключа SK_B получателя, чтобы формировать подпись SIGB получателя.

[108] В некоторых вариантах осуществления, до (этапа 304) передачи зашифрованной комбинации в узел-получатель, ассоциированный с получателем, способ дополнительно содержит: удостоверение сдачи y транзакции с помощью схемы обязательств для того, чтобы получать значение Y удостоверения сдачи, причем схема обязательств содержит, по меньшей мере, коэффициент r_y маскирования сдачи, при этом сдача y представляет собой один или более активов отправителя транзакции, которые являются отведенными для транзакции, меньшей суммы t транзакции; и шифрование другой комбинации коэффициента r_y маскирования сдачи и сдачи y с помощью общедоступного ключа PK_A отправителя. Например, узел А может использовать ключ PK_A, чтобы шифровать (r_y||y), что дает шифрование E(PK_A, r_y||y).

[108] В некоторых вариантах осуществления, способ дополнительно содержит: в ответ на прием подписи SIGB получателя, подтверждение транзакции посредством подписания транзакции с помощью секретного ключа SK_A отправителя, чтобы формировать подпись SIGA отправителя; и отправку транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков для верификации транзакции одним или более узлами. Больше подробностей описано выше со ссылкой на этапы 208-213.

[109] В некоторых вариантах осуществления, отправка транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков для верификации транзакции одним или более узлами содержит: отправку транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков, что предписывает одному или более узлов, в ответ на успешную верификацию транзакции, эмитировать сумму t транзакции получателю, исключать один или более активов, отведенных для транзакции, и эмитировать сдачу y отправителю. Больше подробностей описано выше со ссылкой на этап 214.

[110] Фиг. 3B иллюстрирует блок-схему последовательности операций примерного способа 400 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 400 может реализовываться посредством одного или более компонентов (например, узла B, узла 2, комбинации узла B и узла 2 и т.д.) системы 100 по фиг. 1. Способ 400 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), хранящий инструкции, которые при их исполнении процессором, предписывают системе или устройству (например, процессору) осуществлять способ 400. Операции способа 400, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 400 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.

[111] Этап 401 содержит: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью общедоступного ключа PK_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена узлом-отправителем, ассоциированным с отправителем транзакции, с помощью схемы обязательств для получения значения T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции.

[112] Этап 402 содержит: дешифрование полученной комбинации с помощью секретного ключа SK_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции. В некоторых вариантах осуществления, общедоступный ключ PK_B получателя и секретный ключ SK_B получателя представляют собой асимметричные ключи шифрования.

[113] Этап 403 содержит: верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.

[114] Альтернативно шифрованию комбинации (r_t, t), к примеру, (r_t||t) в узле A, узел A может передавать (r_t, t) в узел B, что предписывает узлу B шифровать комбинацию (r_t, t), как описано ниже со ссылкой на фиг. 4A и фиг. 4B. Другие этапы и описания фиг. 1-3B могут аналогично применяться к фиг. 4A и фиг. 4B.

[115] Фиг. 4A иллюстрирует блок-схему последовательности операций примерного способа 440 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 440 может реализовываться посредством одного или более компонентов (например, узла A, узла 1, комбинации узла A и узла 1) системы 100 по фиг. 1. Способ 440 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), хранящий инструкции, которые при их исполнении процессором, предписывают системе или устройству (например, процессору) осуществлять способ 440. Операции способа 440, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 440 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.

[116] Этап 441 содержит: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств для того, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции.

[117] Этап 442 содержит: отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя (т.е., предписывая узлу получателя верифицировать транзакцию и шифровать коэффициент r_t маскирования транзакции и сумму t транзакции с помощью общедоступного ключа PK_B получателя). Например, узел B может верифицировать то, удовлетворяется или нет T=PC(r_t, t), и узел B шифровать комбинацию с помощью общедоступного ключа PK_А, чтобы получать E(PK_B, r_t||t).

[118] Этап 443 содержит: получение зашифрованной комбинации (например, E(PK_B, r_t||t)) коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя.

[119] Этап 444 содержит: передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов (например, предписывая множеству узлов верифицировать транзакции).

[120] Фиг. 4B иллюстрирует блок-схему последовательности операций примерного способа 450 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 450 может реализовываться посредством одного или более компонентов (например, узла B, узла 2, комбинации узла B и узла 2 и т.д.) системы 100 по фиг. 1. Способ 450 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), хранящий инструкции, которые при их исполнении процессором, предписывают системе или устройству (например, процессору) осуществлять способ 450. Операции способа 450, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 450 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.

[121] Этап 451 содержит: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции.

[122] Этап 452 содержит: верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции.

[123] Этап 453 содержит: в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_B получателя транзакции, чтобы получать зашифрованную комбинацию (например, E(PK_B, r_t||t)).

[124] Этап 454 содержит: передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.

[125] Как показано, конфиденциальность для суммы транзакции может защищаться посредством различных улучшений вычислительных технологий. Например, структура счета содержит одно или более полей, к примеру, первое поле, ассоциированное с удостоверением Педерсена стоимости активов (например, первое поле представляет собой PC(r_{a_i}, a_i), при этом i составляет между 1 и m), и второе поле, ассоциированное со случайным числом для удостоверения Педерсена и стоимости активов (например, второе поле представляет собой E(...)). Первое поле и второе поле также используются на этапах проведения транзакции и хранятся в цепочке блоков.

[126] В другом примере, система общедоступного и секретного ключей (асимметричное шифрование) счета повторно используется для шифрования случайного числа каждого удостоверения Педерсена и соответствующего значения актива, а также для хранения транзакции, включая зашифрованные случайные числа и значения активов, в цепочке блоков. Этот способ устраняет локальное управление такими случайными числами и повышает безопасность на основе распределенного и согласованного хранилища цепочки блоков. Таким образом, случайное число для удостоверения может быть эффективно сохранено через цепочку блоков, не требуя дополнительной системы шифрования.

[127] В качестве еще одного другого примера, доказательство по диапазону используется для того, чтобы доказывать то, что уже существующие активы транзакции балансируются на предмет новых активов и транзакции, и то, что значение каждого нового актива находится в обоснованном диапазоне. Дополнительно, стороны транзакции могут передавать удостоверенное случайное число и значение нового актива получателю через защищенный канал вне цепочки блоков, чтобы верифицировать то, совпадает или нет удостоверенное значение со значением актива транзакции.

[128] В связи с этим, случайные числа удостоверений Педерсена могут легко управляться, без риска повреждения и без подвергания дополнительной нагрузке по управлению ключами. Таким образом, конфиденциальность транзакции может быть полностью защищена, и суммы транзакций могут храниться в качестве секретов.

[129] Технологии, описанные в данном документе, реализуются посредством одного или более вычислительных устройств специального назначения. Вычислительные устройства специального назначения могут представлять собой настольные компьютерные системы, серверные компьютерные системы, портативные компьютерные системы, карманные устройства, сетевые устройства или любое другое устройство либо комбинацию устройств, которые включают аппаратно-реализованную и/или программную логику для того, чтобы реализовывать технологии. Вычислительное устройство(а), в общем, управляются и координируются посредством программного обеспечения операционной системы. Традиционные операционные системы управляют и диспетчеризуют компьютерные процессы для выполнения, выполняют управление запоминающим устройством, предоставляют файловую систему, организацию сетей, услуги ввода-вывода и предоставляют функциональность пользовательского интерфейса, к примеру, графический пользовательский интерфейс (GUI), в числе прочего.

[130] Фиг. 5 является блок-схемой, которая иллюстрирует компьютерную систему 500, в которой может реализовываться любой из вариантов осуществления, описанных в данном документе. Система 500 может реализовываться в любом из узлов, описанных в данном документе и выполненных с возможностью выполнять соответствующие этапы для способов защиты информации. Компьютерная система 500 включает в себя шину 502 или другой механизм связи для передачи информации, один или более аппаратных процессоров 504, соединенных с шиной 502 для обработки информации. Аппаратный процессор(ы) 504, например, может представлять собой один или более микропроцессоров общего назначения.

[131] Компьютерная система 500 также включает в себя основное запоминающее устройство 506, к примеру, оперативное запоминающее устройство (RAM), кэш и/или другие устройства динамического хранения данных, соединенные с шиной 502 для хранения информации и инструкций, которые должны выполняться посредством процессора(ов) 504. Основное запоминающее устройство 506 также может использоваться для хранения временных переменных или другой промежуточной информации во время выполнения инструкций, которые должны выполняться посредством процессора(ов) 504. Такие инструкции, когда хранятся на носителях хранения данных, доступных для процессора(ов) 504, превращают компьютерную систему 500 в машину специального назначения, которая настраивается с возможностью выполнять операции, указываемые в инструкциях. Компьютерная система 500 дополнительно включает в себя постоянное запоминающее устройство 508 (ROM) или другое устройство статического хранения данных, соединенное с шиной 502 для хранения статической информации и инструкций для процессора(ов) 504. Устройство 510 хранения данных, такое как магнитный диск, оптический диск или карта USB-флэш-памяти (флэш-накопитель) и т.д., предоставляется и соединяется с шиной 502 для хранения информации и инструкций.

[132] Компьютерная система 500 может реализовывать технологии, описанные в данном документе, с использованием настраиваемой аппаратно-реализованной логики, одной или более ASIC или FPGA, микропрограммного обеспечения и/или программной логики, которая в комбинации с компьютерной системой предписывает или программирует компьютерную систему 500 таким образом, что она представляет собой машину специального назначения. Согласно одному варианту осуществления, операции, способы и процессы, описанные в данном документе, выполняются посредством компьютерной системы 500 в ответ на выполнение, посредством процессора(ов) 504, одной или более последовательностей из одной или более инструкций, содержащихся в основном запоминающем устройстве 506. Такие инструкции могут считываться в основное запоминающее устройство 506 из другого носителя хранения данных, к примеру, из устройства 510 хранения данных. Выполнение последовательностей инструкций, содержащихся в основном запоминающем устройстве 506, предписывает процессору(ам) 504 выполнять этапы процесса, описанные в данном документе. В альтернативных вариантах осуществления, аппаратно-реализованная схема может использоваться вместо или в комбинации с программными инструкциями.

[133] Основное запоминающее устройство 506, ROM 508 и/или хранилище 510 могут включать в себя долговременные носители хранения данных. Термин "долговременные носители" и подобные термины, при использовании в данном документе, означают носители, которые хранят данные и/или инструкции, которые предписывают машине работать конкретным способом, носители исключают энергозависимые сигналы. Такие долговременные носители может содержать долговременные носители и/или кратковременные носители. Долговременные носители включают в себя, например, оптические или магнитные диски, такие как устройство 510 хранения данных. Кратковременные носители включают в себя динамическое запоминающее устройство, такое как основное запоминающее устройство 506. Стандартные формы долговременных носителей включают в себя, например, гибкий диск, дискету, жесткий диск, полупроводниковый накопитель, магнитную ленту или любой другой магнитный носитель данных, CD-ROM, любой другой оптический носитель данных, любой физический носитель с шаблонами отверстий, RAM, PROM и EPROM, флэш-EPROM, NVRAM, любую другую микросхему или картридж запоминающего устройства и сетевые версии вышеозначенного.

[134] Компьютерная система 500 также включает в себя сетевой интерфейс 518, соединенный с шиной 502. Сетевой интерфейс 518 предоставляет двунаправленное соединение для обмена данными с одной или более сетевых линий связи, которые соединяются с одной или более локальных сетей. Например, сетевой интерфейс 518 может представлять собой карту по стандарту цифровой сети с интегрированными услугами (ISDN), кабельный модем, спутниковый модем либо модем для того, чтобы предоставлять соединение для передачи данных с соответствующим типом телефонной линии. В качестве другого примера, сетевой интерфейс 518 может представлять собой карту локальной вычислительной сети (LAN), чтобы предоставлять соединение для передачи данных с совместимой LAN (или WAN-компонент, который должен обмениваться данными с WAN). Также могут реализовываться линии беспроводной связи. В любой такой реализации, сетевой интерфейс 518 отправляет и принимает электрические, электромагнитные или оптические сигналы, которые переносят потоки цифровых данных, представляющие различные типы информации.

[135] Компьютерная система 500 может отправлять сообщения и принимать данные, включающие в себя программный код, через сеть(и), сетевую линию связи и сетевой интерфейс 518. В Интернет-примере, сервер может передавать запрашиваемый код для прикладной программы через Интернет, ISP, локальную сеть и сетевой интерфейс 518.

[136] Принимаемый код может выполняться посредством процессора(ов) 504 по мере того, как он принимается и/или хранится в устройстве 510 хранения данных или другом долговременном устройстве хранения данных для последующего выполнения.

[137] Каждый из процессов, способов и алгоритмов, описанных в предыдущих разделах, может быть осуществлен и полностью или частично автоматизирован посредством кодовых модулей, выполняемых посредством одной или более компьютерных систем или процессоров компьютера, содержащих компьютерные аппаратные средства. Процессы и алгоритмы могут реализовываться частично или полностью в специализированной схеме.

[138] Различные признаки и процессы, описанные выше, могут использоваться независимо друг от друга или могут комбинироваться различными способами. Все возможные комбинации и субкомбинации имеют намерение попадать в пределы объема этого раскрытия. Помимо этого, определенные этапы способа или процесса могут опускаться в некоторых реализациях. Способы и процессы, описанные в данном документе, также не ограничены конкретными последовательностями, и этапы или состояния, связанные с ними, могут выполняться в других последовательностях, которые являются подходящими. Например, описанные этапы или состояния могут выполняться в порядке, отличном от конкретно раскрытого порядка, либо несколько этапов или состояний могут комбинироваться в одном этапе или состоянии. Примерные этапы или состояния могут выполняться последовательно, параллельно или некоторым другим способом. Этапы или состояния могут добавляться или удаляться из раскрытых примерных вариантов осуществления. Примерные системы и компоненты, описанные в данном документе, могут быть сконфигурированы отлично от описанных конфигураций. Например, элементы могут добавляться, удаляться или перекомпоновываться по сравнению с раскрытыми примерными вариантами осуществления.

[139] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством алгоритма. Алгоритм может содержаться в программных кодах или инструкциях, хранящихся в запоминающем устройстве (например, на долговременном машиночитаемом носителе хранения данных, описанном выше). Такой алгоритм может содержать алгоритм машинного обучения. В некоторых вариантах осуществления, алгоритм машинного обучения может не программировать явно компьютеры с возможностью выполнять функцию, а может обучаться, из обучающих данных, возможности создавать модель прогнозирований, которая выполняет функцию.

[140] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством одного или более процессоров, которые временно выполнены с возможностью (например, посредством программного обеспечения) или постоянно выполнены с возможностью выполнять релевантные операции. Независимо от того, временно или постоянно выполнены с возможностью, такие процессоры могут составлять процессорнореализованные механизмы, которые работают с возможностью выполнять одну или более операций или функций, описанных в данном документе.

[141] Аналогично, способы, описанные в данном документе, могут быть, по меньшей мере, частично процессорнореализованными, при этом конкретный процессор или процессоры представляют собой пример аппаратных средств. Например, по меньшей мере, некоторые операции способа могут осуществляться посредством одного или более процессоров или процессорнореализованных механизмов. Кроме того, один или более процессоров также могут работать с возможностью поддерживать выполнение релевантных операций в окружении "облачных вычислений" или в качестве "программного обеспечения как услуга" (SaaS). Например, по меньшей мере, некоторые операции могут выполняться посредством группы компьютеров (в качестве примеров машин, включающих в себя процессоры), причем эти операции являются доступным через сеть (например, Интернет) и через один или более соответствующих интерфейсов (например, через интерфейс прикладного программирования (API)).

[142] Выполнение определенных операций может распределяться между процессорами, не только постоянно размещающимися в одной машине, но и развернутыми на определенном числе машин. В некоторых примерных вариантах осуществления, процессоры или процессорнореализованные механизмы могут быть расположены в одном географическом местоположении (например, в домашнем окружении, в офисном окружении или на ферме серверов). В других примерных вариантах осуществления, процессоры или процессорнореализованные механизмы могут быть распределены по ряду географических местоположений.

[143] В этом подробном описании, несколько экземпляров могут реализовывать компоненты, операции или структуры, описанные в качестве одного экземпляра. Хотя отдельные операции одного или более способов проиллюстрированы и описаны в качестве отдельных операций, одна или более отдельных операций могут выполняться параллельно, и ничего не требует выполнения операций в проиллюстрированном порядке. Структуры и функциональность, представленная в качестве отдельных компонентов в примерных конфигурациях, могут реализовываться как комбинированная структура или компонент. Аналогично, структуры и функциональность, представленные в качестве одного компонента, могут реализовываться как отдельные компоненты. Эти и другие варьирования, модификации, добавления и улучшения попадают в пределы объема изобретения в данном документе.

[144] Хотя общее представление изобретения описывается со ссылкой на конкретные примерные варианты осуществления, различные модификации и изменения могут вноситься в эти варианты осуществления без отступления от более широкого объема вариантов осуществления настоящего раскрытия. Такие варианты осуществления изобретения могут упоминаться в данном документе отдельно или совместно посредством термина "изобретение" просто для удобства и без намерения умышленно ограничивать объем этой заявки каким-либо одним раскрытием или идеей, если фактически раскрывается несколько из них. Подробное описание не должно рассматриваться в ограничивающем смысле, и объем различных вариантов осуществления задается только посредством прилагаемой формулы изобретения, наряду с полным диапазоном эквивалентов, на которые уполномочена такая формула изобретения.


СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
СИСТЕМА И СПОСОБ ЗАЩИТЫ ИНФОРМАЦИИ
Источник поступления информации: Роспатент

Всего документов: 65
Всего документов: 11

Похожие РИД в системе