Область техники, к которой относится изобретение
[1] Данное раскрытие, в общем, относится к способам и устройствам для защиты информации.
Уровень техники
[2] Конфиденциальность является важной для связи и переводов данных между различными пользователями. Без защиты, пользователи подвержены риску кражи личных сведений, несанкционированного перевода или других возможных потерь. Риск становится еще больше, когда связь и переводы реализуются онлайн, вследствие свободного доступа онлайновой информации.
Сущность изобретения
[3] Различные варианты осуществления настоящего раскрытия включают в себя системы, способы и долговременные машиночитаемые носители для защиты информации.
[4] Согласно одному аспекту, машинореализуемый способ для защиты информации содержит: заверение суммы t транзакции для транзакции с помощью схемы обязательств (commitment scheme), чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования (‘ослепления’, blinding) транзакции; шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого (общедоступного) ключа PK_2_B получателя транзакции, при этом: получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы t транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем.
[5] В некоторых вариантах осуществления, второй открытый ключ PK_2_B представляет собой гомоморфный ключ шифрования.
[6] В некоторых вариантах осуществления, схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r_t маскирования транзакции, при этом сумма t транзакции является заверенным значением.
[7] В некоторых вариантах осуществления, комбинация коэффициента r_t маскирования транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t маскирования транзакции и суммы t транзакции.
[8] В некоторых вариантах осуществления, передача значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем содержит передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, что инструктирует узлу-получателю: дешифровать зашифрованную комбинацию с помощью второго закрытого ключа SK_2_B получателя, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.
[9] В некоторых вариантах осуществления, инструктирование узлу-получателю верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции содержит инструктирование узлу-получателю: в ответ на определение того, что значение T удостоверения транзакции не совпадает со схемой обязательств суммы t транзакции на основе коэффициента r_t маскирования транзакции, отклонять транзакцию; и в ответ на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции на основе коэффициента r_t маскирования транзакции, одобрять транзакцию посредством подписания транзакции с помощью первого закрытого ключа SK_1_B получателя, чтобы формировать подпись SIGB получателя.
[10] В некоторых вариантах осуществления, до передачи зашифрованной комбинации в узел-получатель, ассоциированный с получателем, способ дополнительно содержит: заверение сдачи y транзакции с помощью схемы обязательств, чтобы получить значение Y удостоверения сдачи, причем схема обязательств содержит, по меньшей мере, коэффициент r_y маскирования сдачи, при этом сдача y представляет собой один или более активов отправителя транзакции, которые являются отведенными для транзакции, меньшей суммы t транзакции; и шифрование другой комбинации коэффициента r_y маскирования сдачи и сдачи y с помощью второго открытого ключа PK_2_A отправителя.
[11] В некоторых вариантах осуществления, способ дополнительно содержит: в ответ на прием подписи SIGB получателя, одобрение транзакции посредством подписания транзакции с помощью первого закрытого ключа SK_1_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_2_B получателя транзакции, при этом: получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы t транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем.
[14] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных сохраняет инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие: заверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя транзакции, при этом: получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы t транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем.
[15] Согласно другому аспекту, машинореализуемый способ для защиты информации содержит: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго открытого ключа PK_2_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена с помощью схемы обязательств узлом-отправителем, ассоциированным с отправителем транзакции, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; дешифрование полученной комбинации с помощью второго закрытого ключа SK_2_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.
[16] В некоторых вариантах осуществления, второй открытый ключ PK_2_B получателя и второй закрытый ключ SK_2_B получателя представляют собой пару гомоморфных ключей шифрования.
[17] Согласно другому аспекту, долговременный машиночитаемый носитель данных сохраняет инструкции, которые при их исполнении процессором инструктируют процессору выполнять операции, содержащие: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго открытого ключа PK_2_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена с помощью схемы обязательств узлом-отправителем, ассоциированным с отправителем транзакции, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; дешифрование полученной комбинации с помощью второго закрытого ключа SK_2_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.
[18] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных сохраняет инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго открытого ключа PK_2_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена с помощью схемы обязательств узлом-отправителем, ассоциированным с отправителем транзакции, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; дешифрование полученной комбинации с помощью второго закрытого ключа SK_2_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.
[19] Согласно другому аспекту, машинореализуемый способ для защиты информации содержит: заверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя, при этом получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы транзакции; получение зашифрованной комбинации коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя; и передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.
[20] Согласно другому аспекту, долговременный машиночитаемый носитель данных хранит инструкции, которые при их исполнении процессором инструктируют процессору выполнять операции, содержащие: заверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя, при этом получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы транзакции; получение зашифрованной комбинации коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя; и передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.
[21] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных сохраняет инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие: заверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя, при этом получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы транзакции; получение зашифрованной комбинации коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя; и передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.
[22] Согласно другому аспекту, машинореализуемый способ для защиты информации содержит: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции; верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя транзакции, чтобы получать зашифрованную комбинацию; и передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.
[23] Согласно другому аспекту, долговременный машиночитаемый носитель данных сохраняет инструкции, которые при их исполнении процессором инструктируют процессору выполнять операции, содержащие: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции; верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя транзакции, чтобы получать зашифрованную комбинацию; и передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.
[24] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных сохраняет инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции; верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_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 являются публично согласованными генераторами/базисными точками эллиптической кривой и могут выбираться случайно, a является значением удостоверения, PC(a) является точкой кривой, используемой в качестве удостоверения и данной контрагенту, и 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 может быть заверяемым входным значением. Следовательно, если a заверяется, может получаться вышеописанная схема обязательств 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 могут выполнять следующие этапы, чтобы выполнять транзакцию через одно или более устройств, таких как переносной компьютер, мобильный телефон и т.д. На устройства может устанавливаться адаптированное программное обеспечение и аппаратные средства для того, чтобы выполнять различные этапы. Каждый счет может быть ассоциирован с одной или более пар криптографического закрытого ключа (секретного ключа) -открытого ключа. Например, каждый счет может быть ассоциирован с (1) первой парой ключей с первым закрытым ключом SK_1 и первым открытым ключом PK_1 и (2) второй парой ключей со вторым закрытым ключом SK_2 и вторым открытым ключом PK_2. Первая пара ключей может упоминаться как пара адресных ключей для адресации соответствующего счета. Вторая пара ключей может упоминаться как пара гомоморфных ключей. Вторая пара ключей может быть основана на гомоморфном шифровании, которое представляет собой форму шифрования, которое обеспечивает возможность вычисления для зашифрованных текстов (например, на шифровании в силу выполнения гомоморфного шифрования для двух или более наборов данных), формирующем зашифрованный результат, который, при дешифровании, совпадает с результатом операций, как если они выполнены для простого текста. Гомоморфное шифрование может содержать, например, гомоморфное шифрование Эль-Гамаля, гомоморфное шифрование Пэйе, гомоморфное шифрование Бенало, гомоморфное шифрование Окамото-Учиямы, гомоморфное шифрование Накаша-Штерна, гомоморфное шифрование Дамгарда-Юрика, гомоморфное шифрование Бонеха-Го-Ниссима и т.д. Гомоморфное шифрование может поддерживать дешифрование.
[72] Дополнительно, каждый счет может содержать различные активы, обозначенные как: (V=PC(r, v), HE(K, r, v)), где v представляет номинальную стоимость актива, V представляет удостоверение Педерсена номинальной стоимости v, r является коэффициентом маскирования (например, случайным числом), PC() является алгоритмом схемы обязательств Педерсена, HE() является алгоритмом шифрования (например, алгоритмом гомоморфного шифрования), и K является ключом шифрования, который может быть открытым ключом. В одном примере, каждый актив может обозначаться как (V=PC(r, v), HE(K, r ||v)), где || представляет конкатенацию. Каждый актив также может включать в себя информацию, отличную от перечисленной информации, такую как исходная информация актива.
[73] В одном примере, до того, как пользователь A успешно осуществляет транзакцию с суммой t пользователю B в верифицированной по цепочке блоков транзакции, счет пользователя A и счет пользователя B содержат следующую информацию:
[74] Для счета A (счета A):
Первая пара ключей A: (SK_1_A, PK_1_A)
Вторая пара ключей A: (SK_2_A, PK_2_A)
Активы A_1-A_m, соответственно, стоимостей a_1-a_m обозначаются следующим образом:
(A_1=PC(r_{a_1}, a_1), HE(PK_2_A, r_{a_1}||a_1)),
(A_2=PC(r_{a_2}, a_2), HE(PK_2_A, r_{a_2}||a_2)),
...
(A_m=PC(r_{a_m}, a_m), HE(PK_2_A, r_{a_m}||a_m))
[75] Для счета B (счета B):
Первая пара ключей B: (SK_1_B, PK_1_B)
Вторая пара ключей B: (SK_2_B, PK_2_B)
Активы B_1-B_n, соответственно, стоимостей b_1-b_n обозначаются следующим образом:
(B_1=PC(r_{b_1}, b_1), HE(PK_2_B, r_{b_1}||b_1)),
(B_2=PC(r_{b_2}, b_2), HE(PK_2_B, r_{b_2}||b_2)),
...
(B_n=PC(r_{b_n}, b_n), HE(PK_2_B, r_{b_n}||b_n)),
[76] В некоторых вариантах осуществления, формирование ключей может быть основано на эллиптической кривой ecp256k1 для каждого счета согласно модели на основе счетов/балансов. Например, для эфириума ecp256k1, любое число от 1 до 2256-1 может быть достоверным закрытым ключом SK. Хорошая библиотека формирует закрытый ключ с учетом достаточной случайности. Эфириум требует закрытого ключа SK длиной в 256 битов. Формирование открытых ключей выполняется с использованием групповой операции ECC-криптографии. Чтобы извлекать открытый ключ PK, закрытый ключ может умножаться на G. Умножение, используемое для того, чтобы извлекать открытый ключ PK, представляет собой ECC-умножение (умножение по точкам эллиптической кривой), которое отличается от нормального умножения. G является точкой генератора, которая представляет собой один из доменных параметров ECC-криптографии. G может иметь заверенное значение для ecp256k1. Адрес, например, может составлять последние 20 байтов хеша открытого ключа PK.
[77] В некоторых вариантах осуществления, на этапе 201, узел A может инициировать транзакцию с узлом B. Например, пользователь A и пользователь B могут согласовывать сумму t транзакции со счета A пользователя A на счет B пользователя B. Счет A и счет B могут соответствовать "кошелькам", описанным в данном документе. Счет A может иметь один или более активов. Актив может содержать, например, деньги, маркер, цифровую валюту, договор, купчую, медицинскую карту, сведения о клиентах, акции, долговое обязательство, долю в капитале или любой другой актив, который может описываться в цифровой форме. Счет B может иметь один или более активов или не иметь активов. Каждый актив может быть ассоциирован с различной информацией цепочек блоков, сохраненной в блоках цепочки блоков, причем информация цепочек блоков содержит, например, NoteType, представляющий тип активов, NoteID, представляющий уникальный идентификатор актива, значения удостоверения, представляющие значение удостоверения (например, удостоверения Педерсена) стоимости активов, шифрование случайного числа и стоимости активов и т.д.
[78] Как описано относительно счета 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(...), каждый актив также ассоциирован со вторым полем HE(...), как описано выше. Второе поле HE(...) может представлять шифрование соответствующего случайного числа и стоимости активов, зашифрованной с помощью ключа PK_2_A. Например, шифрование может представлять собой HE(PK_2_A, r_{a_i}||a_i)). PC(...) и HE(...) для каждого актива могут быть унаследованы из предыдущих транзакций. Идентичный механизм применяется к счету B и его активам.
[79] В некоторых вариантах осуществления, чтобы удовлетворять сумме t транзакции, пользователь A может использовать ключ PK_2_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 транзакции. Различными активами можно обмениваться на основе счетов с различными темпами.
[80] В некоторых вариантах осуществления, сумма выбранной стоимости активов сверх 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).
[81] Дополнительно, в некоторых вариантах осуществления, узел A может использовать открытый ключ PK_2_B пользователя B, чтобы шифровать (r_t||t), что обеспечивает шифрование HE(PK_2_B, r_t||t), и использовать открытый ключ PK_2_A, чтобы шифровать (r_y ||y), что обеспечивает шифрование HE(PK_2_A, r_y ||y). Фиг. 3A и фиг. 3B могут соответствовать этому примеру. Альтернативно получению шифрование HE(PK_2_B, r_t||t) посредством узла A, пользователь A может отправлять r_t и t в узел B наряду с информацией транзакций, что инструктирует узлу B формировать второй ключ, чтобы шифровать (r_t||t) с помощью PK_2_B. Узел B должен отправлять шифрование в узел A, чтобы обеспечивать возможность узлу A выполнять верификацию. Фиг. 4A и фиг. 4B могут соответствовать этому примеру. Хотя конкатенация используется в различных примерах этого раскрытия, альтернативные комбинации вводов, выводов или других параметров могут использоваться для функции шифрования или другой операции.
[82] Дополнительно, в некоторых вариантах осуществления, узел 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 в пределах достоверного диапазона, на основе доказательства по диапазону. Доказательство по диапазону может содержать, например, пуленепробиваемые доказательства, кольцевую подпись Борромена и т.д.
[83] На этапе 202, узел A может отправлять информацию транзакций в узел B (например, через защищенный канал вне цепочки блоков). Отправленная информация транзакций может содержать, например, значение удостоверения T=PC(r_t, t), значение удостоверения Y=PC(r_y, y), шифрование HE(PK_2_B, r_t||t), шифрование HE(PK_2_A, r_y ||y), доказательство RP по диапазону и т.д. Значение удостоверения Y=PC(r_y, y), шифрование HE(PK_2_A, r_y ||y) и доказательство RP по диапазону могут быть необязательными, поскольку узел B может не беспокоиться относительно сдачи, отправляемой обратно на счет A. В некоторых вариантах осуществления, передача через канал связи вне цепочки блоков может предотвращать запись информации транзакций в цепочку блоков и предотвращать получение информации транзакций посредством узлов, отличных от узла-отправителя A и узла-получателя B. HE(PK_2_A, r_y ||y), возможно, не должен отправляться в узел B, но может требоваться в будущем для пользователя A, чтобы тратить сдачу y, поскольку сдача должна возвращаться на счет A.
[84] На этапе 203, узел B может верифицировать случайное число r_t, сумму t транзакции и значение T удостоверения. В некоторых вариантах осуществления, узел B может использовать закрытый ключ SK_2_B, чтобы дешифровать шифрование HE(PK_2_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.
[85] На этапе 204, узел B может подписывать транзакцию с помощью закрытого ключа SK_1_B пользователя B, чтобы формировать подпись SIGB. Подписание может соответствовать алгоритму цифровой подписи (DSA), такому как алгоритм цифровой подписи в эллиптических кривых (ECDSA), за счет чего приемник подписи может верифицировать подпись с помощью открытого ключа подписавшей стороны (например, PK_1_B в этом случае), чтобы аутентифицировать подписанные данные. Подпись SIGB указывает то, что узел-получатель B согласуется с транзакцией.
[86] На этапе 205, узел B может передавать подписанную транзакцию обратно в узел A с подписью SIGB.
[87] На этапе 206, если SIGB не верифицируется успешно, узел A может отклонять транзакцию. Если SIGB успешно верифицируется, узел A может подписывать транзакцию с помощью закрытого ключа SK_A пользователя A, чтобы формировать подпись SIGA. Аналогично, подписание может соответствовать алгоритму цифровой подписи (DSA). В одном варианте осуществления, узел A может подписывать (HE(PK_2_B, r_t||t); HE(PK_2_A, r_y ||y); Y; T; RP) с помощью закрытого ключа пользователя A, чтобы формировать подпись SIGA.
[88] На этапе 207, узел A может отправлять транзакцию в цепочку блоков, что инструктирует узлам цепочки блоков верифицировать транзакцию и определять то, следует или нет добавлять транзакцию в цепочку блоков. В одном варианте осуществления, узел A может отправлять транзакцию (HE(PK_2_B, r_t||t); HE(PK_2_A, r_y ||y); Y; T; r'; RP; SIGA; SIGB) в цепочку блоков через узел 1, чтобы выполнять транзакцию: r'=r_1+...+r_k-r_t-r_y. Транзакция может содержать дополнительные параметры или может не содержать все перечисленные параметры. Транзакция может передаваться в широковещательном режиме в один или более узлов (например, консенсусных узлов) в цепочке блоков для верификации. Если верификация выполняется успешно, транзакция добавляется в цепочку блоков. Если верификация завершается неудачно, транзакция отклоняется на предмет добавления в цепочку блоков.
[89] На этапах 208-213, один или более узлов (например, консенсусных узлов) верифицируют подписи, доказательство по диапазону и другую информацию отправленной транзакции. Если верификация завершается неудачно, узлы отклоняют транзакцию. Если верификация выполняется успешно, узлы одобряют транзакцию, обновляют счет пользователя A и счет пользователя B отдельно.
[90] В некоторых вариантах осуществления, чтобы выполнять транзакцию, информация транзакций может верифицироваться посредством различных узлов цепочки блоков. Информация транзакций может содержать адрес TXID транзакции, подпись(и), ввод и вывод. TXID может содержать хеш контента транзакции. Подписи могут содержать криптоключи-подписи посредством отправителя и получателя. Ввод может содержать адрес счета отправителя в цепочке блоков, один или более активов, отведенных из счета цепочки блоков отправителя для транзакции, и т.д. Вывод может содержать адрес счета получателя в цепочке блоков, тип(ы) активов для актива(ов) получателя, значение(я) удостоверения актива(ов) получателя и т.д. Ввод и вывод могут содержать индексированную информацию в табличной форме. В некоторых вариантах осуществления, стоимость значения NoteID может представлять собой "TXID+индекс актива в выводе". Первый открытый ключ PK_1_A отправителя может служить в качестве адреса для счета A, и первый открытый ключ PK_1_B получателя может служить в качестве адреса для счета B.
[91] В некоторых вариантах осуществления, один или более узлов цепочки блоков могут верифицировать отправленную транзакцию (HE(abG, r_t||t); HE(aaG, r_y ||y); Y; T; RP; SIGA; SIGB).
[92] На этапе 208, узлы могут верифицировать то, выполнена либо нет транзакция, с использованием механизма защиты от двойной траты или механизма защиты от атак с повторением пакетов. Если транзакция выполнена, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 209.
[93] На этапе 209, узлы могут проверять подписи SIGA и SIGB (например, на основе открытого ключа A и открытого ключа B, соответственно). Если какая-либо из подписей является некорректной, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 210.
[94] На необязательном этапе 210, узлы могут верифицировать то, являются или нет типы активов согласованными. Например, узлы могут верифицировать то, являются или нет типы активов в NoteType для A_1 в A_k согласованными с типом(ами) активов суммы t транзакции. Если какие-либо из типов активов являются несогласованным, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 211. В некоторых вариантах осуществления, исходный тип активов в кошельке может преобразовываться в другой тип на основе обменного курса, и этот этап может пропускаться.
[95] На этапе 211, узлы могут проверять доказательство RP по диапазону, чтобы проверять достоверность значения PC(r_t, t) и значения PC(r_y, y). В одном варианте осуществления, узлы могут проверять доказательство RP по диапазону, чтобы верифицировать то, не меньше либо нет сумма t транзакции нуля, и то, не меньше либо нет сдача y нуля. Если верификация завершается неудачно, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 212.
[96] На этапе 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, узлы могут определять то, что вводы и выводы транзакции являются согласованными, и переходить к следующему этапу; в противном случае, узлы могут определять то, что вводы и выводы транзакции являются несогласованными, и отклонять транзакцию.
[97] На этапе 213, узлы могут верифицировать то, имеет или нет узел A актив(ы), отведенные для транзакции. В одном варианте осуществления, узлы могут выполнять эту верификацию на основе информации, сохраненной в цепочке блоков, к примеру, информации, соответствующей счету A. Информация может содержать информацию предыдущих транзакций всех активов. Узлы в силу этого могут определять то, имеет или нет счет A актив для проведения транзакции для транзакции. Если определение представляет собой "Нет", узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 214.
[98] На этапе 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.
[99] В одном примере, после обновления счета 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 являются следующими:
[100] Для счета A (счета A), обновленные активы обозначаются следующим образом:
(Y=PC(r_y, y), HE(PK_2_A, r_y ||y)),
(A_k+1=PC(r_{a_ k+1}, a_ k+1), HE(PK_2_A, r_{a_ k+1}||a_ k+1))
(A_k+2=PC(r_{a_ k+2}, a_ k+2), HE(PK_2_A, r_{a_ k+2}||a_ k+2))
...
(A_m=PC(r_{a_m}, a_m), HE(PK_2_A, r_{a_m}||a_m))
[101] Для счета B (счета B), обновленные активы обозначаются следующим образом:
(B_1=PC(r_{b_1}, b_1), HE(PK_2_B, r_{b_1}||b_1)),
(B_2=PC(r_{b_2}, b_2), HE(PK_2_B, r_{b_2}||b_2)),
...
(B_n=PC(r_{b_n}, b_n), HE(PK_2_B, r_{b_n}||b_n)),
(T=PC(r_t, t), HE(PK_2_B, r_t||t))
[102] Хотя это раскрытие использует узел A/пользователя A и узел B/пользователя B для того, чтобы иллюстрировать отправителя и получателя, соответственно, отправитель и получатель могут представлять собой идентичный узел/пользователя. Например, сдача y транзакции (общее число отведенных активов на счету A минус сумма транзакции) может отправляться обратно отправителю транзакции. Таким образом, различные этапы, выполняемые узлом B, как описано в данном документе, альтернативно могут выполняться узлом A.
[103] Фиг. 3A иллюстрирует блок-схему последовательности операций примерного способа 300 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 300 может реализовываться посредством одного или более компонентов (например, узла A, узла 1, комбинации узла A и узла 1) системы 100 по фиг. 1. Способ 300 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), сохраняющий инструкции. Инструкции, при выполнении посредством процессора, инструктируют системе или устройству (например, процессору) осуществлять способ 300. Операции способа 300, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 300 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
[104] Этап 301 содержит: заверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции. В некоторых вариантах осуществления, схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r_t маскирования транзакции, при этом сумма t транзакции является заверенным значением.
[105] Этап 302 содержит: шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя транзакции, при этом: получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы t транзакции. В некоторых вариантах осуществления, второй открытый ключ PK_2_B представляет собой гомоморфный ключ шифрования. В некоторых вариантах осуществления, комбинация коэффициента r_t маскирования транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t маскирования транзакции и суммы t транзакции. В некоторых вариантах осуществления, первый открытый ключ PK_1_B получателя служит в качестве адреса счета B для приема суммы t транзакции, и открытый ключ PK_1_A отправителя служит в качестве адреса счета A для отправки суммы t транзакции.
[106] Этап 303 содержит: передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем (например, инструктирование узлу-получателю верифицировать транзакцию). В некоторых вариантах осуществления, передача значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем содержит передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, что инструктирует узлу-получателю: дешифровать зашифрованную комбинацию с помощью второго закрытого ключа SK_2_B получателя, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции; и верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.
[107] В некоторых вариантах осуществления, инструктирование узлу-получателю верифицировать транзакцию, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции содержит инструктирование узлу-получателю: в ответ на определение того, что значение T удостоверения транзакции не совпадает со схемой обязательств суммы t транзакции на основе коэффициента r_t маскирования транзакции, отклонять транзакцию; и в ответ на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции на основе коэффициента r_t маскирования транзакции, одобрять транзакцию посредством подписания транзакции с помощью первого закрытого ключа SK_1_B получателя, чтобы формировать подпись SIGB получателя.
[108] В некоторых вариантах осуществления, до передачи зашифрованной комбинации в узел-получатель, ассоциированный с получателем, способ дополнительно содержит: заверение сдачи y транзакции с помощью схемы обязательств, чтобы получить значение Y удостоверения сдачи, причем схема обязательств содержит, по меньшей мере, коэффициент r_y маскирования сдачи, при этом сдача y представляет собой один или более активов отправителя транзакции, которые являются отведенными для транзакции, меньшей суммы t транзакции; и шифрование другой комбинации коэффициента r_y маскирования сдачи и сдачи y с помощью второго открытого ключа PK_2_A отправителя.
[109] В некоторых вариантах осуществления, способ дополнительно содержит: в ответ на прием подписи SIGB получателя, одобрение транзакции посредством подписания транзакции с помощью первого закрытого ключа SK_1_A отправителя, чтобы формировать подпись SIGA отправителя; и отправку транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков для верификации транзакции одним или более узлами.
[110] В некоторых вариантах осуществления, отправка транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков для верификации транзакции одним или более узлами содержит: отправку транзакции, содержащей зашифрованную комбинацию, другую зашифрованную комбинацию, значение T удостоверения транзакции, значение Y удостоверения сдачи, подпись SIGA отправителя и подпись SIGB получателя, в один или более узлов в сети цепочек блоков, что инструктирует одному или более узлов, в ответ на успешную верификацию транзакции, эмитировать сумму t транзакции получателю, исключать один или более активов, отведенных для транзакции, и эмитировать сдачу y отправителю.
[111] Фиг. 3B иллюстрирует блок-схему последовательности операций примерного способа 400 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 400 может реализовываться посредством одного или более компонентов (например, узла B, узла 2, комбинации узла B и узла 2 и т.д.) системы 100 по фиг. 1. Способ 400 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), сохраняющий инструкции. Инструкции, при выполнении посредством процессора, инструктируют системе или устройству (например, процессору) осуществлять способ 400. Операции способа 400, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 400 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
[112] Этап 401 содержит: получение комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго открытого ключа PK_2_B получателя транзакции, и получение значения T удостоверения транзакции, при этом: сумма t транзакции удостоверена с помощью схемы обязательств узлом-отправителем, ассоциированным с отправителем транзакции, чтобы получать значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции.
[113] Этап 402 содержит: дешифрование полученной комбинации с помощью второго закрытого ключа SK_2_B получателя транзакции, чтобы получать коэффициент r_t маскирования транзакции и сумму t транзакции. В некоторых вариантах осуществления, второй открытый ключ PK_2_B получателя и второй закрытый ключ SK_2_B получателя представляют собой пару гомоморфных ключей шифрования.
[114] Этап 403 содержит: верификацию транзакции, по меньшей мере, на основе значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции.
[115] Альтернативно шифрованию комбинации (r_t, t), к примеру, (r_t||t) в узле A, узел A может передавать (r_t, t) в узел B, что инструктирует узлу B шифровать комбинацию (r_t, t), как описано ниже со ссылкой на фиг. 4A и фиг. 4B. Другие этапы и описания фиг. 1-3B могут аналогично применяться к фиг. 4A и фиг. 4B.
[116] Фиг. 4A иллюстрирует блок-схему последовательности операций примерного способа 440 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 440 может реализовываться посредством одного или более компонентов (например, узла A, узла 1, комбинации узла A и узла 1) системы 100 по фиг. 1. Способ 440 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), сохраняющий инструкции. Инструкции, при выполнении посредством процессора, инструктируют системе или устройству (например, процессору) осуществлять способ 440. Операции способа 440, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 440 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
[117] Этап 441 содержит: заверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции.
[118] Этап 442 содержит: отправку суммы t транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для, посредством узла-получателя, верификации транзакции и шифрования коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя, при этом: получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы транзакции. Например, узел B может верифицировать то, удовлетворяется или нет T=PC(r_t, t), и узел B шифровать комбинацию с помощью ключа PK_2_B, чтобы получать HE(PK_2_B, r_t||t).
[119] Этап 443 содержит: получение зашифрованной комбинации (например, HE(PK_2_B, r_t||t)) коэффициента r_t маскирования транзакции и суммы t транзакции из узла-получателя.
[120] Этап 444 содержит: передачу зашифрованной комбинации и значения T удостоверения транзакции во множество узлов в цепочке блоков для верификации транзакции посредством множества узлов.
[121] Фиг. 4B иллюстрирует блок-схему последовательности операций примерного способа 450 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 450 может реализовываться посредством одного или более компонентов (например, узла B, узла 2, комбинации узла B и узла 2 и т.д.) системы 100 по фиг. 1. Способ 450 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), сохраняющий инструкции. Инструкции, при выполнении посредством процессора, инструктируют системе или устройству (например, процессору) осуществлять способ 450. Операции способа 450, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 450 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
[122] Этап 451 содержит: получение суммы t транзакции для транзакции, коэффициента r_t маскирования транзакции и значения T удостоверения транзакции.
[123] Этап 452 содержит: верификацию транзакции на основе полученной суммы t транзакции, полученного коэффициента r_t маскирования транзакции и полученного значения T удостоверения транзакции.
[124] Этап 453 содержит: в ответ на успешную верификацию транзакции, шифрование коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя транзакции, чтобы получать зашифрованную комбинацию (например, HE(PK_2_B, r_t||t)).
[125] Этап 454 содержит: передачу зашифрованной комбинации в узел-отправитель, ассоциированный с отправителем транзакции.
[126] Как показано, конфиденциальность для суммы транзакции может защищаться посредством различных улучшений вычислительных технологий. Например, структура счета содержит одно или более полей, к примеру, первое поле, ассоциированное с удостоверением Педерсена стоимости активов (например, первое поле представляет собой PC(r_{a_i}, a_i), при этом i составляет между 1 и m), и второе поле, ассоциированное со случайным числом для удостоверения Педерсена и стоимости активов (например, второе поле представляет собой HE(...)). Первое поле и второе поле также используются на этапах проведения транзакции и сохраняются в цепочке блоков.
[127] В качестве другого примера, использование гомоморфного шифрования является совместимым с моделью на основе счетов/балансов. Таким образом, зашифрованные случайные числа могут формироваться для суммы транзакции и изменяться и добавляться на соответствующие счета. Использование гомоморфного шифрования обеспечивает возможность хранения коэффициентов маскирования (например, случайных чисел) и стоимостей активов в цепочке блоков с повышенной безопасностью, исключая управление коэффициентами маскирования вне цепочки. Сохранение зашифрованных случайных чисел и стоимостей активов в цепочке блоков предоставляет удобство для управления случайными числами, минимизирует вероятность потерь и переделку случайных чисел и стоимостей активов и стимулирует безопасность на основе распределенного и согласованного хранения цепочек блоков.
[128] В качестве еще одного другого примера, доказательство по диапазону используется для того, чтобы доказывать то, что уже существующие активы транзакции балансируются на предмет новых активов и транзакции, и то, что значение каждого нового актива находится в обоснованном диапазоне. Дополнительно, стороны транзакции могут передавать заверенное случайное число и значение нового актива получателю через защищенный канал вне цепочки блоков, чтобы верифицировать то, совпадает или нет заверенное значение со значением актива транзакции.
[129] В связи с этим, случайные числа удостоверений Педерсена могут легко управляться, без риска повреждения и без подвергания дополнительной нагрузке по управлению ключами. Таким образом, конфиденциальность транзакции может быть полностью защищена, и суммы транзакций могут храниться в качестве секретов.
[130] Технологии, описанные в данном документе, реализуются посредством одного или более вычислительных устройств специального назначения. Вычислительные устройства специального назначения могут представлять собой настольные компьютерные системы, серверные компьютерные системы, портативные компьютерные системы, карманные устройства, сетевые устройства или любое другое устройство либо комбинацию устройств, которые включают аппаратно-реализованную и/или программную логику для того, чтобы реализовывать технологии. Вычислительное устройство(а), в общем, управляются и координируются посредством программного обеспечения операционной системы. Традиционные операционные системы управляют и диспетчеризуют компьютерные процессы для выполнения, выполняют управление запоминающим устройством, предоставляют файловую систему, организацию сетей, услуги ввода-вывода и предоставляют функциональность пользовательского интерфейса, к примеру, графический пользовательский интерфейс (GUI), в числе прочего.
[131] Фиг. 5 является блок-схемой, которая иллюстрирует компьютерную систему 500, в которой может реализовываться любой из вариантов осуществления, описанных в данном документе. Система 500 может реализовываться в любом из узлов, описанных в данном документе и выполненных с возможностью выполнять соответствующие этапы для способов защиты информации. Компьютерная система 500 включает в себя шину 502 или другой механизм связи для передачи информации, один или более аппаратных процессоров 504, соединенных с шиной 502 для обработки информации. Аппаратный процессор(ы) 504, например, может представлять собой один или более микропроцессоров общего назначения.
[132] Компьютерная система 500 также включает в себя основное запоминающее устройство 506, к примеру, оперативное запоминающее устройство (RAM), кэш и/или другие устройства динамического хранения данных, соединенные с шиной 502 для сохранения информации и инструкций, которые должны выполняться посредством процессора(ов) 504. Основное запоминающее устройство 506 также может использоваться для сохранения временных переменных или другой промежуточной информации во время выполнения инструкций, которые должны выполняться посредством процессора(ов) 504. Такие инструкции, когда сохраняются на носителях хранения данных, доступных для процессора(ов) 504, превращают компьютерную систему 500 в машину специального назначения, которая настраивается с возможностью выполнять операции, указываемые в инструкциях. Компьютерная система 500 дополнительно включает в себя постоянное запоминающее устройство 508 (ROM) или другое устройство статического хранения данных, соединенное с шиной 502 для сохранения статической информации и инструкций для процессора(ов) 504. Устройство 510 хранения данных, такое как магнитный диск, оптический диск или карта USB-флэш-памяти (флэш-накопитель) и т.д., предоставляется и соединяется с шиной 502 для сохранения информации и инструкций.
[133] Компьютерная система 500 может реализовывать технологии, описанные в данном документе, с использованием настраиваемой аппаратно-реализованной логики, одной или более ASIC или FPGA, микропрограммного обеспечения и/или программной логики, которая в комбинации с компьютерной системой инструктирует или программирует компьютерную систему 500 таким образом, что она представляет собой машину специального назначения. Согласно одному варианту осуществления, операции, способы и процессы, описанные в данном документе, выполняются посредством компьютерной системы 500 в ответ на выполнение, посредством процессора(ов) 504, одной или более последовательностей из одной или более инструкций, содержащихся в основном запоминающем устройстве 506. Такие инструкции могут считываться в основное запоминающее устройство 506 из другого носителя хранения данных, к примеру, из устройства 510 хранения данных. Выполнение последовательностей инструкций, содержащихся в основном запоминающем устройстве 506, инструктирует процессору(ам) 504 выполнять этапы процесса, описанные в данном документе. В альтернативных вариантах осуществления, аппаратно-реализованная схема может использоваться вместо или в комбинации с программными инструкциями.
[134] Основное запоминающее устройство 506, ROM 508 и/или хранилище 510 могут включать в себя долговременные носители хранения данных. Термин "долговременные носители" и подобные термины, при использовании в данном документе, означают носители, которые сохраняют данные и/или инструкции, которые инструктируют машине работать конкретным способом, носители исключают энергозависимые сигналы. Такие долговременные носители может содержать долговременные носители и/или кратковременные носители. Долговременные носители включают в себя, например, оптические или магнитные диски, такие как устройство 510 хранения данных. Кратковременные носители включают в себя динамическое запоминающее устройство, такое как основное запоминающее устройство 506. Стандартные формы долговременных носителей включают в себя, например, гибкий диск, дискету, жесткий диск, полупроводниковый накопитель, магнитную ленту или любой другой магнитный носитель данных, CD-ROM, любой другой оптический носитель данных, любой физический носитель с шаблонами отверстий, RAM, PROM и EPROM, флэш-EPROM, NVRAM, любую другую микросхему или картридж запоминающего устройства и сетевые версии вышеозначенного.
[135] Компьютерная система 500 также включает в себя сетевой интерфейс 518, соединенный с шиной 502. Сетевой интерфейс 518 предоставляет двунаправленное соединение для обмена данными с одной или более сетевых линий связи, которые соединяются с одной или более локальных сетей. Например, сетевой интерфейс 518 может представлять собой карту по стандарту цифровой сети с интегрированными услугами (ISDN), кабельный модем, спутниковый модем либо модем для того, чтобы предоставлять соединение для передачи данных с соответствующим типом телефонной линии. В качестве другого примера, сетевой интерфейс 518 может представлять собой карту локальной вычислительной сети (LAN), чтобы предоставлять соединение для передачи данных с совместимой LAN (или WAN-компонент, который должен обмениваться данными с WAN). Также могут реализовываться линии беспроводной связи. В любой такой реализации, сетевой интерфейс 518 отправляет и принимает электрические, электромагнитные или оптические сигналы, которые переносят потоки цифровых данных, представляющие различные типы информации.
[136] Компьютерная система 500 может отправлять сообщения и принимать данные, включающие в себя программный код, через сеть(и), сетевую линию связи и сетевой интерфейс 518. В Интернет-примере, сервер может передавать запрашиваемый код для прикладной программы через Интернет, ISP, локальную сеть и сетевой интерфейс 518.
[137] Принимаемый код может выполняться посредством процессора(ов) 504 по мере того, как он принимается и/или сохраняется в устройстве 510 хранения данных или другом долговременном устройстве хранения данных для последующего выполнения.
[138] Каждый из процессов, способов и алгоритмов, описанных в предыдущих разделах, может быть осуществлен и полностью или частично автоматизирован посредством кодовых модулей, выполняемых посредством одной или более компьютерных систем или процессоров компьютера, содержащих компьютерные аппаратные средства. Процессы и алгоритмы могут реализовываться частично или полностью в специализированной схеме.
[139] Различные признаки и процессы, описанные выше, могут использоваться независимо друг от друга или могут комбинироваться различными способами. Все возможные комбинации и субкомбинации имеют намерение попадать в пределы объема этого раскрытия. Помимо этого, определенные этапы способа или процесса могут опускаться в некоторых реализациях. Способы и процессы, описанные в данном документе, также не ограничены конкретными последовательностями, и этапы или состояния, связанные с ними, могут выполняться в других последовательностях, которые являются подходящими. Например, описанные этапы или состояния могут выполняться в порядке, отличном от конкретно раскрытого порядка, либо несколько этапов или состояний могут комбинироваться в одном этапе или состоянии. Примерные этапы или состояния могут выполняться последовательно, параллельно или некоторым другим способом. Этапы или состояния могут добавляться или удаляться из раскрытых примерных вариантов осуществления. Примерные системы и компоненты, описанные в данном документе, могут быть сконфигурированы отлично от описанных конфигураций. Например, элементы могут добавляться, удаляться или перекомпоновываться по сравнению с раскрытыми примерными вариантами осуществления.
[140] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством алгоритма. Алгоритм может содержаться в программных кодах или инструкциях, сохраненных в запоминающем устройстве (например, на долговременном машиночитаемом носителе хранения данных, описанном выше). Такой алгоритм может содержать алгоритм машинного обучения. В некоторых вариантах осуществления, алгоритм машинного обучения может не программировать явно компьютеры с возможностью выполнять функцию, а может обучаться, из обучающих данных, возможности создавать модель прогнозирований, которая выполняет функцию.
[141] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством одного или более процессоров, которые временно выполнены с возможностью (например, посредством программного обеспечения) или постоянно выполнены с возможностью выполнять релевантные операции. Независимо от того, временно или постоянно выполнены с возможностью, такие процессоры могут составлять процессорнореализуемые механизмы, которые работают с возможностью выполнять одну или более операций или функций, описанных в данном документе.
[142] Аналогично, способы, описанные в данном документе, могут быть, по меньшей мере, частично процессорнореализуемыми, при этом конкретный процессор или процессоры представляют собой пример аппаратных средств. Например, по меньшей мере, некоторые операции способа могут осуществляться посредством одного или более процессоров или процессорнореализуемых механизмов. Кроме того, один или более процессоров также могут работать с возможностью поддерживать выполнение релевантных операций в окружении "облачных вычислений" или в качестве "программного обеспечения как услуга" (SaaS). Например, по меньшей мере, некоторые операции могут выполняться посредством группы компьютеров (в качестве примеров машин, включающих в себя процессоры), причем эти операции являются доступным через сеть (например, Интернет) и через один или более соответствующих интерфейсов (например, через интерфейс прикладного программирования (API)).
[143] Выполнение определенных операций может распределяться между процессорами, не только постоянно размещающимися в одной машине, но и развернутыми на определенном числе машин. В некоторых примерных вариантах осуществления, процессоры или процессорнореализуемые механизмы могут быть расположены в одном географическом местоположении (например, в домашнем окружении, в офисном окружении или на ферме серверов). В других примерных вариантах осуществления, процессоры или процессорнореализуемые механизмы могут быть распределены по ряду географических местоположений.
[144] В этом подробном описании, несколько экземпляров могут реализовывать компоненты, операции или структуры, описанные в качестве одного экземпляра. Хотя отдельные операции одного или более способов проиллюстрированы и описаны в качестве отдельных операций, одна или более отдельных операций могут выполняться параллельно, и ничего не требует выполнения операций в проиллюстрированном порядке. Структуры и функциональность, представленная в качестве отдельных компонентов в примерных конфигурациях, могут реализовываться как комбинированная структура или компонент. Аналогично, структуры и функциональность, представленные в качестве одного компонента, могут реализовываться как отдельные компоненты. Эти и другие варьирования, модификации, добавления и улучшения попадают в пределы объема изобретения в данном документе.
[145] Хотя общее представление изобретения описывается со ссылкой на конкретные примерные варианты осуществления, различные модификации и изменения могут вноситься в эти варианты осуществления без отступления от более широкого объема вариантов осуществления настоящего раскрытия. Такие варианты осуществления изобретения могут упоминаться в данном документе отдельно или совместно посредством термина "изобретение" просто для удобства и без намерения умышленно ограничивать объем этой заявки каким-либо одним раскрытием или идеей, если фактически раскрывается несколько из них. Подробное описание не должно рассматриваться в ограничивающем смысле, и объем различных вариантов осуществления задается только посредством прилагаемой формулы изобретения, наряду с полным диапазоном эквивалентов, на которые уполномочена такая формула изобретения.
Изобретение относится к области защиты информации. Техническим результатом является обеспечение защиты данных транзакции. Машинореализуемый способ содержит: удостоверение суммы t транзакции для транзакции с помощью схемы обязательств, чтобы получить значение T удостоверения транзакции, причем схема обязательств содержит, по меньшей мере, коэффициент r_t маскирования транзакции; шифрование комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью второго открытого ключа PK_2_B получателя транзакции, при этом получатель дополнительно ассоциирован с первым открытым ключом PK_1_B в качестве адреса для приема суммы t транзакции; и передачу значения T удостоверения транзакции и зашифрованной комбинации в узел-получатель, ассоциированный с получателем, для верификации транзакции узлом-получателем. 6 н. и 17 з.п. ф-лы, 7 ил.
1. Машинореализуемый способ защиты информации, содержащий этапы, на которых:
формируют посредством узла-отправителя, ассоциированного с отправителем транзакции, значение T удостоверения транзакции путем заверения суммы t транзакции упомянутой транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_t маскирования транзакции, при этом транзакция содержит перевод суммы t транзакции с адреса, ассоциированного с общедоступным ключом PK_1_A отправителя, в адрес, ассоциированный с общедоступным ключом PK_1_B получателя транзакции, и суммы t транзакции - из одного или более активов отправителя, записанных в цепочке блоков;
зашифровывают посредством узла-отправителя первую комбинацию коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_2_B получателя транзакции, при этом общедоступный ключ PK_2_B отличается от общедоступного ключа PK_1_B;
передают посредством узла-отправителя через канал вне цепочки блоков значение T удостоверения транзакции и зашифрованную первую комбинацию в узел-получатель, ассоциированный с получателем;
принимают посредством узла-отправителя от узла-получателя подпись SIGB получателя, сформированную посредством подписания узлом-получателем транзакции с помощью секретного ключа SK_1_B получателя, причем общедоступный ключ PK_1_B и секретный ключ SK_1_B представляют собой пару общедоступного-секретного ключей получателя;
формируют посредством узла-отправителя подпись SIGA отправителя путем подписания транзакции с помощью секретного ключа SK_1_A отправителя, причем общедоступный ключ PK_1_A и секретный ключ SK_1_A представляют собой пару общедоступного-секретного ключей отправителя;
формируют посредством узла-отправителя обновленную версию транзакции, причем обновленная версия транзакции содержит зашифрованную первую комбинацию, значение T удостоверения транзакции, подпись SIGA отправителя и подпись SIGB получателя; и
отправляют посредством узла-отправителя обновленную версию транзакции в один или более узлов цепочки блоков упомянутой цепочки блоков.
2. Способ по п.1, в котором общедоступный ключ PK_2_B представляет собой гомоморфный ключ шифрования.
3. Способ по п.1, в котором схема обязательств содержит схему обязательств Педерсена на основе, по меньшей мере, коэффициента r_t маскирования транзакции, при этом сумма t транзакции является заверенным значением.
4. Способ по п.1, в котором первая комбинация коэффициента r_t маскирования транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t маскирования транзакции и суммы t транзакции.
5. Способ по п.1, в котором подписание транзакции с помощью секретного ключа SK_1_B получателя содержит этапы, на которых:
получают посредством узла-получателя сумму t транзакции и коэффициент r_t маскирования транзакции посредством расшифровывания зашифрованной первой комбинации с помощью секретного ключа SK_2_B получателя, причем общедоступный ключ PK_2_B и секретный ключ SK_2_B представляют собой другую пару общедоступного-секретного ключей получателя; и
верифицируют посредством узла-получателя транзакцию на основе значения T удостоверения транзакции, полученной суммы t транзакции и полученного коэффициента r_t маскирования транзакции.
6. Способ по п.5, в котором верификация транзакции на основе значения T удостоверения транзакции, полученной суммы t транзакции и полученного коэффициента r_t маскирования транзакции содержит этап, на котором, в качестве реакции на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции, на основе коэффициента r_t маскирования транзакции, одобряют посредством узла-получателя транзакцию путем подписания транзакции с помощью секретного ключа SK_1_B получателя.
7. Способ по п.1, который, до формирования обновленной версии транзакции, дополнительно содержит этапы, на которых:
формируют посредством узла-отправителя значение Y удостоверения сдачи путем заверения сдачи y транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_y маскирования сдачи, при этом сдача y представляет собой упомянутые один или более активов отправителя транзакции за вычетом суммы t транзакции; и
зашифровывают посредством узла-отправителя вторую комбинацию коэффициента r_y маскирования сдачи и сдачи y с помощью общедоступного ключа PK_2_A отправителя, при этом общедоступный ключ PK_2_A отправителя отличается от общедоступного ключа PK_1_A отправителя.
8. Способ по п.7, в котором обновленная версия транзакции дополнительно содержит зашифрованную вторую комбинацию и значение Y удостоверения сдачи.
9. Способ по п.8, дополнительно содержащий этап, на котором добавляют посредством множества узлов цепочки блоков упомянутой цепочки блоков обновленную версию транзакции в данную цепочку блоков посредством верификации обновленной версии транзакции с помощью консенсусной верификации.
10. Долговременный машиночитаемый носитель данных из состава узла-отправителя, ассоциированного с отправителем транзакции, хранящий инструкции, которые при их исполнении процессором узла-отправителя инструктируют узлу-отправителю выполнять операции, содержащие:
формирование значения T удостоверения транзакции посредством заверения суммы t транзакции упомянутой транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_t маскирования транзакции, при этом транзакция содержит перевод суммы t транзакции с адреса, ассоциированного с общедоступным ключом PK_1_A отправителя, в адрес, ассоциированный с общедоступным ключом PK_1_B получателя транзакции, и суммы t транзакции - из одного или более активов отправителя, записанных в цепочке блоков;
зашифровывание первой комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_2_B получателя транзакции, при этом общедоступный ключ PK_2_B отличается от общедоступного ключа PK_1_B;
передачу, через канал вне цепочки блоков, значения T удостоверения транзакции и зашифрованной первой комбинации в узел-получатель, ассоциированный с получателем;
прием от узла-получателя подписи SIGB получателя, сформированной посредством подписания узлом-получателем транзакции с помощью секретного ключа SK_1_B получателя, причем общедоступный ключ PK_1_B и секретный ключ SK_1_B представляют собой пару общедоступного-секретного ключей получателя;
формирование подписи SIGA отправителя посредством подписания транзакции с помощью секретного ключа SK_1_A отправителя, причем общедоступный ключ PK_1_A и секретный ключ SK_1_A представляют собой пару общедоступного-секретного ключей отправителя;
формирование обновленной версии транзакции, причем обновленная версия транзакции содержит зашифрованную первую комбинацию, значение T удостоверения транзакции, подпись SIGA отправителя и подпись SIGB получателя; и
отправление обновленной версии транзакции в один или более узлов цепочки блоков упомянутой цепочки блоков.
11. Носитель данных по п.10, при этом общедоступный ключ PK_2_B представляет собой гомоморфный ключ шифрования.
12. Носитель данных по п.10, при этом схема обязательств содержит схему обязательств Педерсена на основе, по меньшей мере, коэффициента r_t маскирования транзакции, при этом сумма t транзакции является заверенным значением.
13. Носитель данных по п.10, при этом первая комбинация коэффициента r_t маскирования транзакции и суммы t транзакции содержит конкатенацию коэффициента r_t маскирования транзакции и суммы t транзакции.
14. Носитель данных по п.10, при этом подписание транзакции с помощью секретного ключа SK_1_B получателя содержит:
получение узлом-получателем суммы t транзакции и коэффициента r_t маскирования транзакции посредством расшифровывания зашифрованной первой комбинации с помощью секретного ключа SK_2_B получателя, причем общедоступный ключ PK_2_B и секретный ключ SK_2_B представляют собой другую пару общедоступного-секретного ключей получателя; и
верификацию узлом-получателем транзакции на основе значения T удостоверения транзакции, полученной суммы t транзакции и полученного коэффициента r_t маскирования транзакции.
15. Носитель данных по п.14, при этом верификация транзакции на основе значения T удостоверения транзакции, полученной суммы t транзакции и полученного коэффициента r_t маскирования транзакции содержит, в качестве реакции на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции, на основе коэффициента r_t маскирования транзакции, одобрение узлом-получателем транзакции посредством подписания транзакции с помощью секретного ключа SK_1_B получателя.
16. Носитель данных по п.10, в котором, до формирования обновленной версии транзакции, операции дополнительно содержат:
формирование значения Y удостоверения сдачи посредством заверения сдачи y транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_y маскирования сдачи, при этом сдача y представляет собой упомянутые один или более активов отправителя транзакции за вычетом суммы t транзакции; и
зашифровывание второй комбинации коэффициента r_y маскирования сдачи и сдачи y с помощью общедоступного ключа PK_2_A отправителя, при этом общедоступный ключ PK_2_A отправителя отличается от общедоступного ключа PK_1_A отправителя.
17. Носитель данных по п.16, при этом обновленная версия транзакции дополнительно содержит зашифрованную вторую комбинацию и значение Y удостоверения сдачи.
18. Носитель данных по п.17, при этом обновленная версия транзакции добавляется посредством множества узлов цепочки блоков упомянутой цепочки блоков в данную цепочку блоков посредством верификации обновленной версии транзакции с помощью консенсусной верификации.
19. Система из состава узла-отправителя, ассоциированного с отправителем транзакции, предназначенная для защиты информации, при этом система содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие:
формирование значения T удостоверения транзакции посредством заверения суммы t транзакции упомянутой транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_t маскирования транзакции, при этом транзакция содержит перевод суммы t транзакции с адреса, ассоциированного с общедоступным ключом PK_1_A отправителя, в адрес, ассоциированный с общедоступным ключом PK_1_B получателя транзакции, и суммы t транзакции - из одного или более активов отправителя, записанных в цепочке блоков;
зашифровывание первой комбинации коэффициента r_t маскирования транзакции и суммы t транзакции с помощью общедоступного ключа PK_2_B получателя транзакции, при этом общедоступный ключ PK_2_B отличается от общедоступного ключа PK_1_B;
передачу, через канал вне цепочки блоков, значения T удостоверения транзакции и зашифрованной первой комбинации в узел-получатель, ассоциированный с получателем;
прием от узла-получателя подписи SIGB получателя, сформированной посредством подписания узлом-получателем транзакции с помощью секретного ключа SK_1_B получателя, причем общедоступный ключ PK_1_B и секретный ключ SK_1_B представляют собой пару общедоступного-секретного ключей получателя;
формирование подписи SIGA отправителя посредством подписания транзакции с помощью секретного ключа SK_1_A отправителя, причем общедоступный ключ PK_1_A и секретный ключ SK_1_A представляют собой пару общедоступного-секретного ключей отправителя;
формирование обновленной версии транзакции, причем обновленная версия транзакции содержит зашифрованную первую комбинацию, значение T удостоверения транзакции, подпись SIGA отправителя и подпись SIGB получателя; и
отправление обновленной версии транзакции в один или более узлов цепочки блоков упомянутой цепочки блоков.
20. Машинореализуемый способ защиты информации, содержащий этапы, на которых:
получают посредством узла-получателя, ассоциированного с получателем транзакции, от узла-отправителя, ассоциированного с отправителем транзакции, через канал вне цепочки блоков комбинацию коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованную с помощью общедоступного ключа PK_2_B получателя транзакции, и значение T удостоверения транзакции, сформированное посредством заверения узлом-отправителем суммы t транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_t маскирования транзакции;
расшифровывают посредством узла-получателя полученную комбинацию с помощью секретного ключа SK_2_B получателя транзакции, чтобы получить коэффициент r_t маскирования транзакции и сумму t транзакции, причем общедоступный ключ PK_2_B и секретный ключ SK_2_B представляют собой пару общедоступного-секретного ключей получателя;
верифицируют посредством узла-получателя транзакцию на основе, по меньшей мере, значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции; и
в качестве реакции на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции, на основе коэффициента r_t маскирования транзакции, одобряют посредством узла-получателя транзакцию путем подписания транзакции с помощью секретного ключа SK_1_B получателя.
21. Способ по п.20, в котором общедоступный ключ PK_2_B получателя и секретный ключ SK_2_B получателя представляют собой пару гомоморфных ключей шифрования.
22. Долговременный машиночитаемый носитель данных из состава узла-получателя, ассоциированного с получателем транзакции, хранящий инструкции, которые при их исполнении процессором узла-получателя инструктируют узлу-получателю выполнять операции, содержащие:
получение от узла-отправителя, ассоциированного с отправителем транзакции, через канал вне цепочки блоков, комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью общедоступного ключа PK_2_B получателя транзакции, и значения T удостоверения транзакции, сформированного посредством заверения узлом-отправителем суммы t транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_t маскирования транзакции;
расшифровывание полученной комбинации с помощью секретного ключа SK_2_B получателя транзакции, чтобы получить коэффициент r_t маскирования транзакции и сумму t транзакции, причем общедоступный ключ PK_2_B и секретный ключ SK_2_B представляют собой пару общедоступного-секретного ключей получателя;
верификацию транзакции на основе, по меньшей мере, значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции; и
в качестве реакции на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции, на основе коэффициента r_t маскирования транзакции, одобрение транзакции посредством подписания транзакции с помощью секретного ключа SK_1_B получателя.
23. Система из состава узла-получателя, ассоциированного с получателем транзакции, предназначенная для защиты информации, при этом система содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие:
получение от узла-отправителя, ассоциированного с отправителем транзакции, через канал вне цепочки блоков, комбинации коэффициента r_t маскирования транзакции и суммы t транзакции, зашифрованной с помощью общедоступного ключа PK_2_B получателя транзакции, и значения T удостоверения транзакции, сформированного посредством заверения узлом-отправителем суммы t транзакции с помощью схемы обязательств на основе, по меньшей мере, коэффициента r_t маскирования транзакции;
расшифровывание полученной комбинации с помощью секретного ключа SK_2_B получателя транзакции, чтобы получить коэффициент r_t маскирования транзакции и сумму t транзакции, причем общедоступный ключ PK_2_B и секретный ключ SK_2_B представляют собой пару общедоступного-секретного ключей получателя;
верификацию транзакции на основе, по меньшей мере, значения T удостоверения транзакции, коэффициента r_t маскирования транзакции и суммы t транзакции; и
в качестве реакции на определение того, что значение T удостоверения транзакции совпадает со схемой обязательств суммы t транзакции, на основе коэффициента r_t маскирования транзакции, одобрение транзакции посредством подписания транзакции с помощью секретного ключа SK_1_B получателя.
US 20160358165 A1, 08.12.2016 | |||
US 20170085555 A1, 23.03.2017 | |||
CN 108764874 A, 06.11.2018 | |||
СПОСОБ И СИСТЕМА БЕЗОПАСНОЙ ОБРАБОТКИ ТРАНЗАКЦИИ | 2009 |
|
RU2536666C2 |
Jadhav H., Chandre P., Association rule mining methods for applying encryption techniques in transaction dataset, 2016 International Conference on Computer Communication and Informatics (ICCCI), Jan | |||
Способ восстановления хромовой кислоты, в частности для получения хромовых квасцов | 1921 |
|
SU7A1 |
Авторы
Даты
2020-05-25—Публикация
2018-11-27—Подача