СИСТЕМА И СПОСОБ ДЛЯ ЗАЩИТЫ ИНФОРМАЦИИ
SYSTEM AND METHOD FOR PROTECTING INFORMATION

Область техники, к которой относится изобретение
[1] Данное раскрытие, в общем, относится к способам и устройствам для защиты информации.
Уровень техники
[2] Конфиденциальность является важной для связи и переносов данных между различными пользователями. Без защиты, пользователи подвержены риску кражи личных сведений, несанкционированного переноса или других возможных потерь. Риск становится еще больше, когда связь и переносы реализуются онлайн, вследствие свободного доступа онлайновой информации.
Сущность изобретения
[3] Различные варианты осуществления настоящего раскрытия включают в себя системы, способы и долговременные машиночитаемые носители для защиты информации.
t
y
y
t
t
[4] Согласно одному аспекту, машинореализуемый способ для защиты информации содержит: удостоверение (заверение) суммы t транзакции для транзакции с помощью первой схемы обязательств (commitment scheme), чтобы получить значение T удостоверения транзакции, и удостоверение сдачи y транзакции с помощью второй схемы обязательств, с тем чтобы получить значение Y удостоверения сдачи, причем первая схема обязательств содержит коэффициент r маскирования (‘ослепления’, blinding) транзакции, и вторая схема обязательств содержит коэффициент r маскирования сдачи; шифрование первой комбинации коэффициента r маскирования сдачи и сдачи y с помощью первого ключа KA; передачу коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для верификации транзакции узлом-получателем; в ответ на то, что узел-получатель успешно верифицирует транзакцию, получение зашифрованной второй комбинации коэффициента r маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго ключа KB; и передачу зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков для верификации транзакции узлами в цепочке блоков.
t
y
[5] В некоторых вариантах осуществления, первая схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r маскирования транзакции, при этом сумма t транзакции составляет соответствующее удостоверенное значение; и вторая схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r маскирования сдачи, при этом сдача y составляет соответствующее удостоверенное значение.
t
t
t
[6] В некоторых вариантах осуществления, передача коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для верификации транзакции узлом-получателем содержит: передачу коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, инструктирование узлу-получателю верифицировать то, равно или нет значение T удостоверения транзакции результату удостоверения, посредством первой схемы обязательств, суммы t транзакции с коэффициентом r маскирования транзакции.
[7] В некоторых вариантах осуществления, получение зашифрованной второй комбинации содержит прием из узла-получателя зашифрованной второй комбинации и подписи SIGB, ассоциированной со второй зашифрованной комбинацией и значением T удостоверения транзакции.
1
2
k
ak
ak
[8] В некоторых вариантах осуществления, сумма t транзакции является отведенной из одного или более активов A, A, ..., A отправителя транзакции; каждый из активов ассоциирован со (1) схемой обязательств Педерсена, по меньшей мере, на основе коэффициента r маскирования и стоимости каждого актива и (2) шифрованием, по меньшей мере, на основе коэффициента r маскирования и стоимости каждого актива; и сдача y является разностью между суммой t транзакции и отведенными активами.
1
2
k
1
2
k
t
y
[9] В некоторых вариантах осуществления, перед передачей зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков, способ дополнительно содержит: верификацию подписи SIGB; и в ответ на успешную верификацию подписи SIGB, формирование подписи SIGA, ассоциированной с активами A, A, ..., A, первой комбинацией, второй комбинацией, значением T удостоверения транзакции, значением Y удостоверения сдачи и разностью между суммой коэффициентов маскирования, соответствующих активам A, A, ..., A, и суммой коэффициента r маскирования транзакции и коэффициента r маскирования сдачи.
1
2
k
1
2
k
t
y
[10] В некоторых вариантах осуществления, передача зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков содержит: передачу активов A, A, ..., A, первой комбинации, второй комбинации, значения T удостоверения транзакции, значения Y удостоверения сдачи, разности между суммой коэффициентов маскирования, соответствующих активам A, A, ..., A, и суммой коэффициента r маскирования транзакции и коэффициента r маскирования сдачи, подписи SIGA и подписи SIGB во множество узлов в цепочке блоков.
1
2
k
[11] В некоторых вариантах осуществления, передача зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков для верификации транзакции узлами в цепочке блоков содержит: передачу зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков, инструктирование узлам в цепочке блоков, в ответ на успешную верификацию транзакции, эмитировать сумму t транзакции получателю, исключать активы A, A, ..., A и эмитировать сдачу y отправителю.
t
y
y
t
t
[12] Согласно другому аспекту, долговременный машиночитаемый носитель данных сохраняет инструкции, которые, при выполнении посредством процессора, инструктируют процессору выполнять операции, содержащие: удостоверение суммы t транзакции для транзакции с помощью первой схемы обязательств, с тем чтобы получать значение T удостоверения транзакции, и удостоверение сдачи y транзакции с помощью второй схемы обязательств, с тем чтобы получать значение Y удостоверения сдачи, причем первая схема обязательств содержит коэффициент r маскирования транзакции, и вторая схема обязательств содержит коэффициент r маскирования сдачи; шифрование первой комбинации коэффициента r маскирования сдачи и сдачи y с помощью первого ключа KA; передачу коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для верификации транзакции узлом-получателем; в ответ на то, что узел-получатель успешно верифицирует транзакцию, получение зашифрованной второй комбинации коэффициента r маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго ключа KB; и передачу зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков для верификации транзакции узлами в цепочке блоков.
t
y
y
t
t
[13] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие: удостоверение суммы t транзакции для транзакции с помощью первой схемы обязательств, чтобы получить значение T удостоверения транзакции, и удостоверение сдачи y транзакции с помощью второй схемы обязательств, с тем чтобы получать значение Y удостоверения сдачи, причем первая схема обязательств содержит коэффициент r маскирования транзакции, и вторая схема обязательств содержит коэффициент r маскирования сдачи; шифрование первой комбинации коэффициента r маскирования сдачи и сдачи y с помощью первого ключа KA; передачу коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для верификации транзакции узлом-получателем; в ответ на то, что узел-получатель успешно верифицирует транзакцию, получение зашифрованной второй комбинации коэффициента r маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго ключа KB; и передачу зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков для верификации транзакции узлами в цепочке блоков.
t
t
t
t
[14] Согласно другому аспекту, машинореализуемый способ для защиты информации содержит: получение коэффициента r маскирования транзакции, суммы t транзакции для транзакции и значения T удостоверения транзакции из узла-отправителя, ассоциированного с отправителем транзакции, при этом: сумма t транзакции удостоверяется с помощью первой схемы обязательств, чтобы получать значение T удостоверения транзакции, причем первая схема обязательств содержит коэффициент r маскирования транзакции; верификацию транзакции на основе полученного коэффициента r маскирования транзакции, полученной суммы t транзакции для транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование второй комбинации коэффициента r маскирования транзакции и суммы t транзакции с помощью второго ключа KB; и передачу зашифрованной второй комбинации в узел-отправитель.
t
t
[15] В некоторых вариантах осуществления, верификация транзакции на основе полученного коэффициента r маскирования транзакции, полученной суммы t транзакции для транзакции и полученного значения T удостоверения транзакции содержит верификацию того, равно или нет полученное значение T удостоверения транзакции первой схеме обязательств, удостоверяющей полученную сумму t транзакции с полученным коэффициентом r маскирования транзакции.
[16] В некоторых вариантах осуществления, перед передачей зашифрованной второй комбинации в узел-отправитель, дополнительно содержит формирование подписи SIGB, ассоциированный со второй зашифрованной комбинацией и значением T удостоверения транзакции; и передача зашифрованной второй комбинации в узел-отправитель содержит передачу зашифрованной второй комбинации и подписи SIGB в узел-отправитель.
t
t
t
t
[17] Согласно другому аспекту, долговременный машиночитаемый носитель данных хранит инструкции, которые при их исполнении процессором инструктируют процессору выполнять операции, содержащие: получение коэффициента r маскирования транзакции, суммы t транзакции для транзакции и значения T удостоверения транзакции из узла-отправителя, ассоциированного с отправителем транзакции, при этом: сумма t транзакции удостоверяется с помощью первой схемы обязательств, чтобы получать значение T удостоверения транзакции, причем первая схема обязательств содержит коэффициент r маскирования транзакции; верификацию транзакции на основе полученного коэффициента r маскирования транзакции, полученной суммы t транзакции для транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование второй комбинации коэффициента r маскирования транзакции и суммы t транзакции с помощью второго ключа KB; и передачу зашифрованной второй комбинации в узел-отправитель.
t
t
t
t
[18] Согласно другому аспекту, система для защиты информации содержит процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, причем носитель данных хранит инструкции, которые при их исполнении процессором инструктируют системе выполнять операции, содержащие: получение коэффициента r маскирования транзакции, суммы t транзакции для транзакции и значения T удостоверения транзакции из узла-отправителя, ассоциированного с отправителем транзакции, при этом: сумма t транзакции удостоверяется с помощью первой схемы обязательств, чтобы получать значение T удостоверения транзакции, причем первая схема обязательств содержит коэффициент r маскирования транзакции; верификацию транзакции на основе полученного коэффициента r маскирования транзакции, полученной суммы t транзакции для транзакции и полученного значения T удостоверения транзакции; в ответ на успешную верификацию транзакции, шифрование второй комбинации коэффициента r маскирования транзакции и суммы t транзакции с помощью второго ключа KB; и передачу зашифрованной второй комбинации в узел-отправитель.
[19] Эти и другие признаки систем, способ и долговременных машиночитаемых носителей, раскрытых в данном документе, а также способы работы и функции связанных элементов структуры и комбинации частей и изделий должны становиться более очевидными при рассмотрении последующего описания и прилагаемой формулы изобретения со ссылкой на прилагаемые чертежи, все из которых составляют часть этого подробного описания, при этом аналогичные ссылки с номерами обозначают соответствующие части на различных чертежах. Тем не менее, следует четко понимать, что чертежи служат только для целей иллюстрации и описания не предназначены в качестве задания ограничений изобретения.
Краткое описание чертежей
[20] Определенные признаки различных вариантов осуществления настоящей технологии подробно изложены в прилагаемой формуле изобретения. Лучшее понимание признаков и преимуществ технологии должно получаться со ссылкой на нижеприведенное подробное описание, которое излагает иллюстративные варианты осуществления, в которых используются принципы изобретения, и на прилагаемые чертежи, на которых:
[21] Фиг. 1 иллюстрирует примерную систему для защиты информации, в соответствии с различными вариантами осуществления.
[22] Фиг. 2 иллюстрирует примерные этапы для инициирования и верификации транзакций, в соответствии с различными вариантами осуществления.
[23] Фиг. 3 иллюстрирует блок-схему последовательности операций примерного способа для защиты информации, в соответствии с различными вариантами осуществления.
[24] Фиг. 4 иллюстрирует блок-схему последовательности операций примерного способа для защиты информации, в соответствии с различными вариантами осуществления.
[25] Фиг. 5 иллюстрирует блок-схему примерной компьютерной системы, в которой могут реализовываться любые из вариантов осуществления, описанных в данном документе.
Подробное описание изобретения
[26] Цепочка блоков (блокчейн) может рассматриваться как децентрализованная база данных, обычно называемая "распределенным реестром", поскольку операция выполняется посредством различных узлов (например, вычислительных устройств) в сети. Любая информация может записываться в цепочку блоков и сохраняться или считываться из нее. Любой может устанавливать сервер и присоединяться к сети цепочек блоков, чтобы становиться узлом. Любой узел может вносить вычислительную мощность, чтобы поддерживать цепочку блоков посредством выполнения сложных вычислений, таких как вычисление хеш-функции, чтобы добавлять блок в текущую цепочку блоков, и добавленный блок может содержать различные типы данных или информации. Узел, который вносит вычислительную мощность для добавленного блока, может вознаграждаться токеном (например, единицей цифровой валюты). Поскольку цепочка блоков не имеет центрального узла, каждый узел является одинаковым и хранит всю базу данных цепочек блоков.
[27] Узлы, например, представляют собой вычислительные устройства или крупные компьютерные системы, которые поддерживают сеть цепочек блоков и поддерживают ее работу без сбоев. Предусмотрено два типа узлов, полные узлы и облегченные узлы. Полные узлы сохраняют полную копию цепочки блоков. Полные узлы в сети цепочек блоков проверяют достоверность транзакций и блоков, которые они принимают, и ретранслируют их соединенным равноправным узлам для предоставления консенсусной верификации транзакций. С другой стороны, облегченные узлы загружают только часть цепочки блоков. Например, облегченные узлы используются для цифровых валютных транзакций. Облегченный узел должен обмениваться данными с полным узлом, когда он хочет осуществлять транзакции.
[28] Это свойство децентрализации может помогать предотвращать появление центра управления в управляемой позиции. Например, обслуживание цепочки блоков биткоина выполняется посредством сети узлов связи программного обеспечения для работы с биткоинами в рабочей области. Это раскрытие использует одну или более цепочек блоков или цифровых валют, таких как биткоин и эфириум, в качестве примеров. Специалисты в данной области техники должны принимать во внимание, что технические решения, раскрытые в этом раскрытии, могут использовать или применяться к другому типу цепочек блоков и цифровых валют. Таким образом, вместо банков, учреждений или администраторов в традиционном смысле, несколько посредников существуют в форме компьютеров-серверов, исполняющих программное обеспечение для работы с биткоинами. Эти компьютеры-серверы формируют сеть, соединенную через Интернет, при этом любой может потенциально присоединяться к сети. Транзакции, размещаемые посредством сети, могут иметь форму: "пользователь A хочет отправлять Z биткоинов пользователю B", при этом транзакции передаются в широковещательном режиме в сеть с использованием легкодоступных приложений. Компьютеры-серверы функционируют в качестве серверов биткоинов, которые выполнены с возможностью проверять достоверность этих финансовых транзакций, добавлять их запись в свою копию реестра и затем передавать в широковещательном режиме эти добавления реестра на другие серверы сети.
[29] Поддержание цепочки блоков упоминается как "майнинг", и те, кто осуществляет такое поддержание, вознаграждается новыми созданными биткоинами и комиссионными за транзакции, как упомянуто выше. Например, узлы могут определять то, являются или нет транзакции достоверными, на основе набора правил, с которыми согласована сеть цепочек блоков. Майнеры могут находиться на любом континенте и обрабатывать платежи посредством верификации каждой транзакции в качестве достоверной и ее добавления в цепочку блоков. Такая верификация достигается с помощью консенсуса, обеспечиваемого множеством майнеров, и допускает то, что отсутствует систематический тайный сговор. В конечном счете, все данные должны быть согласованными, поскольку вычисление должно удовлетворять определенным требованиям для того, чтобы быть достоверным, и все узлы синхронизируются, чтобы обеспечивать то, что цепочка блоков является согласованной. Таким образом, данные могут согласованно сохраняться в распределенной системе узлов цепочки блоков.
[30] Посредством процесса майнинга, транзакции, такие как переводы активов, верифицируются и добавляются в растущую цепочку блоков из цепочки блоков посредством сетевых узлов. Посредством прохождения по всей цепочке блоков, верификация может включать в себя, например, то, имеет или нет оплачивающая сторона доступ к переводимому активу, то, потрачен или нет актив ранее, то, является или нет переводимая сумма корректной, и т.д. Например, в гипотетической транзакции (например, в транзакции биткоинов согласно модели на основе UTXO (непотраченного вывода по транзакциям), в транзакции монет эфириума согласно модели на основе счетов/балансов), подписанной отправителем, предложенная транзакция может передаваться в широковещательном режиме в сеть цепочек блоков для майнинга. Майнер должен проверять то, является или нет транзакция соответствующей установленным критериям для выполнения, согласно предыстории цепочек блоков. Если баланс кошелька отправителя имеет достаточно денежных средств согласно существующей предыстории цепочек блоков, транзакция считается достоверной и может добавляться в блок. После верификации, переводы активов могут быть включены в следующий блок, который должен добавляться в цепочку блоков.
[31] Блок является во многом аналогичным записи в базе данных. Каждая запись данных создает блок. Эти блоки связываются и защищаются с использованием криптографии, так что они становятся взаимно соединенными сетями. Каждый блок соединяется с предыдущим блоком, что также представляет собой источник названия "цепочка блоков". Каждый блок обычно содержит криптографический хеш предыдущего блока, время формирования и фактические данные. Например, каждый блок содержит две части: заголовок блока, чтобы записывать значение признака текущего блока, и тело, чтобы записывать фактические данные (например, данные транзакции). Цепочка блоков связывается через заголовки блоков. Каждый заголовок блока может содержать несколько значений признаков, таких как версия, хеш предыдущего блока, корень Меркла, временная метка, целевой уровень сложности и одноразовый номер. Хеш предыдущего блока содержит не только адрес предыдущего блока, но также и хеш данных в предыдущем блоке, в силу этого делая цепочки блоков неизменными. Одноразовый номер является числом, которое, если включено, обеспечивает в результате хеш с заданным числом начальных нулевых битов.
[32] Для майнинга, хеш содержимого нового блока принимается узлом. Одноразовый номер (например, случайная строка) присоединяется к хешу для получения новой строки. Новая строка хешируется снова. Конечный хеш затем сравнивается с целевой сложностью (например, уровнем), и определяется то, конечный хеш фактически меньше целевого уровня сложности или нет. Если нет, то одноразовый номер изменяется и процесс повторяется снова. Если да, то блок добавляется в цепочку, и открытый реестр обновляется и предупреждается в отношении добавления. Узел, отвечающий за успешное добавление, вознаграждается биткоинами, например, посредством добавления транзакции вознаграждения себе в новый блок (известно как формирование коинбейса).
[33] Таким образом, для каждого вывода "Y", если k выбирается из распределения с высокой минимальной энтропией, невозможно находить ввод x таким образом, что H (k|x)=Y, где K является одноразовым номером, x является хешем блока, Y является целевым уровнем сложности, и "|" обозначает конкатенацию. Вследствие фактической случайности криптографических хешей, в том смысле, что их вывод не может прогнозироваться из их вводов, имеется только один известный способ находить одноразовый номер: пробовать целые числа одно за другим, например, 1, затем 2, затем 3 и т.д., что может представлять собой известный метод прямого опробования. Чем больше число начальных нулей, тем больше в среднем требуется для того, чтобы находить требуемый одноразовый номер Y. В одном примере, система работы с биткоинами постоянно регулирует число начальных нулей таким образом, что среднее время для нахождения одноразового номера составляет приблизительно десять минут. Таким образом, по мере того, как характеристики обработки вычислительных аппаратных средств улучшаются со временем, за эти годы, протокол биткоинов должен требовать просто большего числа начальных нулевых битов, чтобы майнинг всегда требовал длительности приблизительно в десять минут для реализации.
[34] Как описано выше, хеширование является важным краеугольным камнем для цепочки блоков. Хеш-алгоритм может пониматься как функция, которая сжимает сообщения любой длины в дайджест сообщения фиксированной длины. Чаще всего используются MD5 и SHA. В некоторых вариантах осуществления, длина хеша цепочки блоков составляет 256 битов, что означает то, что независимо от того, каким является исходное содержимое, в конечном счете вычисляется 256-битовое двоичное число. Кроме того, можно гарантировать то, что соответствующий хеш является уникальным при условии, что исходное содержимое отличается. Например, хеш строки "123" представляет собой a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0 (шестнадцатеричная форма), который имеет 256 битов при преобразовании в двоичную форму, и "только 123" имеет этот хеш. Хеш-алгоритм в цепочке блоков является необратимым, т.е. прямое вычисление является простым (из "123" в a8fdc205a9f19cc1c7507a60c4f01b1c7507a60c4f01b13d11d7fd0), и обратное вычисление не может выполняться, даже если все вычислительные ресурсы исчерпываются. Таким образом, хеш каждого блока из цепочки блоков является уникальным.
[35] Дополнительно, если содержимое блока изменяется, его хеш должен изменяться. Блок и хеш находятся в однозначном соответствии, и хеш каждого блока, в частности, вычисляется для заголовка блока. Таким образом, значения признаков заголовков блоков соединяются, чтобы формировать длинную строку, и затем хеш вычисляется для этой строки. Например, "Hash=SHA256 (заголовок блока)" представляет собой формулу вычисления хеш-функции блока, SHA256 представляет собой хеш-алгоритм цепочек блоков, применяемый к заголовку блока. Хеш уникально определяется посредством заголовка блока, а не тела блока. Как упомянуто выше, заголовок блока содержит большое количество контента, включающего в себя хеш текущего блока и хеш предыдущего блока. Это означает то, что если контент текущего блока изменяется, либо если хеш предыдущего блока изменяется, это вызывает изменение хеша текущего блока. Если хакер модифицирует блок, хеш этого блока изменяется. Для соединения последующего блока с модифицированным блоком, хакер должен модифицировать все последующие блоки по очереди, поскольку следующий блок должен содержать хеш предыдущего блока. В противном случае, модифицированный блок должен отсоединяться от цепочки блоков. Вследствие проектных причин, вычисления хеш-функции являются времязатратными, и практически невозможно модифицировать несколько блоков за короткий период времени, если хакер не приспосабливает более 51% вычислительной мощности всей сети. Таким образом, цепочка блоков гарантирует собственную надежность, и как только данные записываются, они не могут имитироваться.
[36] После того, как майнер находит хеш (т.е. соответствующую установленным критериям подпись или решение) для нового блока, майнер передает в широковещательном режиме эту подпись всем другим майнерам (в узлы цепочки блоков). Другие майнеры теперь верифицируют по очереди то, соответствует или нет это решение проблеме блока отправителя (т.е. определяют то, приводит или нет ввод хеша фактически к этой подписи). Если решение является достоверным, другие майнеры должны подтверждать решение и согласовывать то, что новый блок может добавляться в цепочку блоков. Таким образом, достигается консенсус для нового блока. Это также известно как "доказательство выполнения работы". Блок, для которого достигнут консенсус, теперь может добавляться в цепочку блоков и передается в широковещательном режиме во все узлы по сети наряду с подписью. Узлы должны подтверждать блок и сохранять его в своих данных транзакции при условии, что транзакции в блоке корректно соответствуют текущим балансам кошелька (предыстории транзакций) в этот момент времени. Каждый раз, когда новый блок добавляется поверх этого блока, добавление также подсчитывается в качестве другого "подтверждения" для блоков перед ним. Например, если транзакция включена в блок 502 и цепочка блоков имеет длину в 507 блоков, это означает то, что транзакция имеет пять подтверждений (соответствующих блокам от 507 до 502). Чем больше подтверждений имеет транзакция, тем тяжелее для взломщиков вносить переделки.
[37] В некоторых вариантах осуществления, примерная система управления активами на основе цепочек блоков использует криптографию с открытым (общедоступным) ключом, в которой формируются два криптографических ключа, один открытый ключ и один закрытый ключ. Открытый ключ может рассматриваться в качестве номера счета, и закрытый ключ может рассматриваться в качестве учетных данных владения. Например, кошелек биткоинов представляет собой совокупность открытых и закрытых ключей. Владение активом (например, цифровой валютой, денежным активом, акциями, долей в капитале, долговым обязательством), ассоциированным с определенным адресом актива, может быть продемонстрировано со знанием закрытого ключа, принадлежащего адресу. Например, программное обеспечение кошелька биткоинов, иногда называемое "клиентским программным обеспечением для работы с биткоинами", обеспечивает возможность данному пользователю осуществлять транзакции с биткоинами. Программа-кошелек формирует и сохраняет закрытые ключи и обменивается данными с равноправными узлами по сети биткоинов.
[38] В транзакциях с цепочками блоков, плательщики и получатели платежа идентифицируются в цепочке блоков посредством своих открытых криптографических ключей. Например, самые современные переводы биткоинов выполняются из одного открытого ключа в другой открытый ключ. На практике, хеши этих ключей используются в цепочке блоков и называются "адресами биткоинов". В принципе, если гипотетический человек-взломщик S может красть деньги человека A посредством простого добавления транзакций в реестр цепочек блоков, к примеру "человек S выплачивает человеку A 100 биткоинов", с использованием адресов биткоинов пользователей вместо их имен. Протокол биткоинов предотвращает этот вид кражи посредством требования для каждого перевода иметь цифровую подпись с закрытым ключом плательщика, и только подписанные переводы могут добавляться в реестр цепочек блоков. Поскольку человек S не может подделывать подпись человека A, человек S не может обманывать человека A посредством добавления записи в цепочку блоков, эквивалентной "человек S выплачивает человеку A 200 биткоинов". Одновременно, любой может верифицировать подпись человека A с использованием своего открытого ключа, и в силу того он авторизует любую транзакцию в цепочке блоков, в которой он представляет собой плательщика.
[39] В контексте транзакций с биткоинами, чтобы переводить некоторые биткоины пользователю B, пользователь A может конструировать запись, содержащую информацию относительно транзакции, через узел. Запись может подписываться ключом подписи (закрытым ключом) пользователя A и содержит открытый ключ верификации пользователя A и открытый ключ верификации пользователя B. Подпись используется для того, чтобы подтверждать, что транзакция исходит от пользователя, а также предотвращает переделку транзакции кем угодно после того, как она эмитирована. Запись, пакетированная с другой записью, которая осуществлена в идентичном временном окне в новом блоке, может передаваться в широковещательном режиме в полные узлы. После приема записей, полные узлы могут работать для включения записей в реестр всех транзакций, которые когда-либо осуществлялись в системе цепочек блоков, добавление нового блока в ранее подтвержденную цепочку блоков посредством вышеописанного процесса майнинга, и проверять достоверность добавленного блока на основе консенсусных правил сети.
[40] Модель на основе UTXO (непотраченного вывода по транзакциям) и модель на основе счетов/балансов представляют собой две примерные модели для реализации транзакций с цепочками блоков. UTXO представляет собой объектную модель цепочек блоков. Согласно UTXO, активы представляются посредством выводов транзакций с цепочками блоков, которые не потрачены, которые могут использоваться в качестве вводов в новых транзакциях. Например, актив пользователя A, который должен переводиться, может иметь форму UTXO. Чтобы тратить (осуществлять транзакции) актив, пользователь A должен подписывать с помощью закрытого ключа. Биткоин представляет собой пример цифровой валюты, которая использует UTXO-модель. В случае достоверной транзакции с цепочками блоков, непотраченные выводы могут использоваться для того, чтобы осуществлять дополнительные транзакции. В некоторых вариантах осуществления, только непотраченные выводы могут использоваться в дополнительных транзакциях, чтобы предотвращать двойную трату и мошенничество. По этой причине, вводы в цепочке блоков удаляются, когда транзакция возникает, при этом одновременно, выводы создаются в форме UTXO. Эти непотраченные выводы транзакции могут использоваться (посредством держателей закрытых ключей, например, людей с цифровыми валютными кошельками) в целях будущих транзакций.
[41] С другой стороны, модель на основе счетов/балансов (иначе называемая "моделью проведения транзакций на основе счетов") отслеживает баланс каждого счета в качестве глобального состояния. Баланс счета проверяется, чтобы установить то, что он превышает или равен потраченной сумме транзакции. Пример того, как модель на основе счетов/балансов работает в эфириуме, предоставляется:
[42] 1. Alice получает 5 эфиров посредством майнинга. В системе записывается то, что Alice имеет 5 эфиров.
[43] 2. Alice хочет предоставлять Bob 1 эфир, так что система сначала должна вычитать 1 эфир из счета Alice, в силу чего Alice теперь имеет 4 эфира.
[44] 3. Система затем увеличивает счет Bob на 1 эфир. Система знает, что Bob имеет 2 эфира для начала, в силу чего баланс Bob увеличивается до 3 эфиров.
[45] Ведение записей для эфириума может быть аналогичным ведению записей в банке. Аналогия представляет собой использование ATM/дебетовой карты. Банк отслеживает, сколько денег имеет каждая дебетовая карта, и когда Bob должен тратить деньги, банк проверяет его запись, чтобы установить то, что Bob имеет достаточный баланс, перед подтверждением транзакции.
[46] Поскольку цепочка блоков и другие аналогичные реестры являются полностью общедоступными, непосредственно цепочка блоков не имеет защиты конфиденциальности. Общедоступный характер P2P-сети означает то, что хотя те, кто используют ее, не идентифицируются по имени, связывание транзакций с людьми и компаниями является осуществимым. Например, в международном ремитировании или в системе поставок, сумма транзакции имеет чрезвычайно высокий уровень значения защиты конфиденциальности, поскольку с помощью информацией сумм транзакций, можно логически выводить конкретное местоположение и идентификационные данные сторон транзакции. Предмет транзакции может содержать, например, деньги, токен, цифровую валюту, договор, купчую, медицинскую карту, сведения о клиентах, акции, долговое обязательство, долю в капитале или любой другой актив, который может описываться в цифровой форме. Хотя UTXO-модель может предоставлять анонимность для сумм транзакций, например, через кольцевую подпись в Monero и криптографии Zcash с нулевым разглашением, суммы транзакций остаются незащищенными согласно модели на основе счетов/балансов. Таким образом, техническая проблема, решаемая посредством настоящего раскрытия, заключается в том, как защищать онлайновую информацию, такую как конфиденциальность сумм транзакций. Такие транзакции могут соответствовать модели на основе счетов/балансов.
[47] Некоторые существующие технологии предлагают использовать схему обязательств Педерсена, чтобы шифровать сумму транзакции и заменять модель на основе счетов/балансов. В соответствии с этой схемой, отправитель отправляет сумму транзакции и случайное число, соответствующее схеме обязательств Педерсена для суммы транзакции, получателю платежа через защищенный канал вне цепочки блоков. Получатель платежа верифицирует то, совпадает или нет случайное число с удостоверением транзакции, и выполняет локальное хранение данных. Например, согласно модели на основе счетов/балансов, счет может трактоваться в качестве кошелька (счета) для хранения активов, которые агрегируются, но не объединяются. Каждый актив может соответствовать типу активов (например, криптовалюта), и баланс счета является суммой стоимостей активов. Даже активы идентичного типа не объединяются. Во время транзакции, может указываться получатель переводимого актива, и соответствующий актив может удаляться из кошелька, чтобы финансировать транзакцию. Узлы цепочки блоков верифицируют то, что кошелек платежа имеет достаточный актив(ы) для того, чтобы покрывать транзакцию, и затем узлы удаляют переведенный актив из кошелька платежа и добавляют соответствующий актив в кошелек получателя.
[48] Тем не менее, по-прежнему существуют ограничения для такой схемы. Сумма транзакции и случайное число, сформированное посредством схемы обязательств Педерсена, являются высококонфиденциальными данными. Стороны, отличные от сторон, связанных с транзакцией, не должны иметь возможность знать значения. Таким образом, эта информация должна шифроваться и сохраняться и дешифроваться после использования. Удостоверенное значение и случайное число представляют собой необходимые элементы для траты актива транзакции в будущем, но их легко терять и сложно восстанавливать вследствие отсутствия безопасного, стабильного и эффективного способа надлежащим образом сохранять случайные числа. Например, схема современных технологий требует от пользователя поддерживать постоянное хранение данных локально, чтобы управлять случайными числами и балансами в виде простого текста, соответствующими зашифрованному балансу счета, и реализация управления усложняется. Дополнительно, хранение коэффициентов маскирования (например, случайных чисел) и балансов в виде простого текста, соответствующих "активу Педерсена", в одном локальном узле имеет предрасположенность к потерям или повреждению, тогда как многоузловое резервное хранение данных затруднительно реализовывать вследствие частого изменения баланса счета.
[49] Системы и способ, представленные в этом раскрытии, могут преодолевать вышеуказанные ограничения и достигать надежной защиты конфиденциальности для сумм транзакций, стоимостей активов и коэффициентов маскирования в схемах обязательств. С этой целью, различные протоколы обмена криптографической информацией могут использоваться для того, чтобы шифровать/дешифровать случайные числа и балансы в виде простого текста, за счет этого предоставляя удобное управление. Дополнительно, сохранение зашифрованной информации в цепочке блоков обеспечивает, что суммы транзакций, стоимости активов и коэффициенты маскирования в схемах обязательств легко не теряются или имитируются.
[50] В некоторых вариантах осуществления, схема обязательств (например, схема обязательств Педерсена) может шифровать определенное значение (например, сумму транзакции, стоимость активов, параметр ключа) следующим образом:
PC(a)=r*G+a*H,
[51] где r является случайным коэффициентом маскирования (альтернативно называемым "коэффициентом привязки"), который обеспечивает сокрытие, G и H являются публично согласованными генераторами/базисными точками эллиптической кривой и могут выбираться случайно, a является значением удостоверения, PC(a) является точкой кривой, используемой в качестве удостоверения и данной контрагенту, и H является другой точкой кривой. Таким образом, G и H могут быть известными параметрами для узлов. Формирование H по принципу "ничего не спрятано" может формироваться посредством хеширования базисной точки G с отображением посредством хеш-функции из одной точки в другую с помощью H = Hash(G). H и G являются общедоступными параметрами данной системы (например, случайно сформированными точками на эллиптической кривой). Хотя выше предоставляется пример схемы обязательств Педерсена в форме эллиптической кривой, альтернативно могут использоваться различные другие формы схемы обязательств Педерсена или другие схемы обязательств.
[52] Схема обязательств поддерживает секретность данных, но удостоверяет данные таким образом, что они не могут изменяться впоследствии отправителем данных. Если сторона знает только значение удостоверения (например, PC(a)), она не может определять то, какие базовые значения данных (например, a) удостоверяются. Как данные (например, a), так и коэффициент маскирования (например, r) могут быть раскрыты впоследствии (например, посредством узла-инициатора), и получатель (например, консенсусный узел) удостоверения может выполнять удостоверение и верифицировать то, что удостоверенные данные совпадают с раскрытыми данными. Коэффициент маскирования присутствует, поскольку без него, кто-нибудь может пытаться угадывать данные.
[53] Схемы обязательств представляют собой способ для отправителя (удостоверяющей стороны) удостоверять значение (например, a) таким образом, что удостоверенное значение остается закрытым, но может быть раскрыто впоследствии, когда удостоверяющая сторона обнародует необходимый параметр процесса удостоверения. Для строгих схем удостоверения могут быть характерны сокрытие информации и вычислительная привязка. Сокрытие означает такое понятие, что данное значение a и удостоверение этого значения PC(a) должны быть неузнаваемыми. Таким образом, PC(a) не должен раскрывать информацию относительно a. Когда PC(a), G и H известны, практически невозможно знать a вследствие случайного числа r. Схема обязательств представляет собой привязку, если отсутствует вероятный способ, которым два разных значения могут приводить к идентичной удостоверения. Для схемы обязательств Педерсена характерны идеальное сокрытие и вычислительная привязка при допущении дискретного логарифма. Дополнительно, когда r, G, H и PC(a) известны, можно верифицировать PC(a) посредством определения того, удовлетворяется или нет PC(a)=r*G+a*H.
1
1
2
2
1
2
1
2
1
1
1
1
[54] Схема обязательств Педерсена имеет дополнительное свойство: удостоверения могут добавляться, и сумма набора удостоверений является идентичной удостоверения суммы данных (с коэффициентом маскирования, заданным в качестве суммы коэффициентов маскирования): PC(r, data)+PC(r, data)==PC(r+r, data+data); PC(r, data)-PC(r, data)==0. Другими словами, удостоверение сохраняет суммирование, и применимо коммутативное свойство, т.е. схема обязательств Педерсена является аддитивно гомоморфной в том, что базовыми данными можно манипулировать математически так, как если бы они не были зашифрованы.
1
2
[55] В одном варианте осуществления, схема обязательств Педерсена, используемая для шифрования входного значения, может конструироваться с использованием точек эллиптической кривой. Традиционно, открытый ключ на основе криптографии на эллиптических кривых (ECC) создается посредством умножения генератора для группы (G) на секретный ключ (r): Pub=rG. Результат может преобразовываться в последовательную форму в качестве 33-байтового массива. Открытые ECC-ключи могут подчиняться аддитивно гомоморфному свойству, упомянутому выше относительно удостоверений Педерсена. Иными словами: Pub1+Pub2=(r+r(mod n))G.
[56] Удостоверение Педерсена для входного значения может создаваться посредством подбора дополнительного генератора для группы (H, в нижеприведенных уравнениях) таким образом, чтобы никто не знал дискретный логарифм для второго генератора H относительно первого генератора G (или наоборот), что означает то, что никто не знает x таким образом, что xG=H. Это может осуществляться, например, посредством использования криптографического хеша G для подбора H: H=to_point(SHA256(ENCODE(G))).
[57] С учетом двух генераторов G и H, примерная схема обязательств для шифрования входного значения может задаваться следующим образом: commitment=rG+aH. Здесь, r может быть секретным коэффициентом маскирования, и a может быть удостоверяемым входным значением. Следовательно, если a удостоверяется, может получаться вышеописанная схема обязательств PC(a)=r*G+a*H. Удостоверения Педерсена являются теоретически-информационно закрытыми: для любой удостоверения существует некоторый коэффициент маскирования, который должен приводить к тому, что любая сумма совпадает с удостоверением. Удостоверения Педерсена могут быть вычислительно защищенными от поддельной удостоверения в том, что произвольное отображение может не быть вычислено.
[58] Сторона (узел), которая удостоверяет значение, может открывать удостоверение посредством раскрытия исходного значения a и коэффициента r, который завершает уравнение удостоверения. Сторона, желающая открыть значение PC(a), тогда вычислит удостоверение снова, чтобы верифицировать то, что совместно используемое исходное значение фактически совпадает с первоначально принимаемым удостоверением PC(a). Таким образом, информация типов активов может защищаться посредством ее отображения в уникальный серийный номер и затем шифрования посредством схемы обязательств Педерсена. Случайное число r, выбранное при формировании удостоверения, делает почти невозможным для кого-либо логически выводить тип для типа активов, который удостоверяется согласно значению PC(a) удостоверения.
[59] В некоторых вариантах осуществления, могут использоваться различные протоколы обмена криптографической информации, такие как протокол с открытым ключом, протокол симметричного шифрования, обмен ключами Диффи-Хеллмана (DH) и т.д. Например, обмен DH-ключами может использоваться в качестве способа для защищенного обмена криптографическими ключами по открытому каналу. Обмен DH-ключами, также называемый "обменом экспоненциальными ключами", представляет собой способ цифрового шифрования, которое использует числа, возведенные в конкретные степени, для того чтобы формировать ключи дешифрования на основе компонентов, которые никогда не передаются непосредственно, делая задачу потенциального взломщика кодов математически нерешаемой.
[60] В примере реализации обмена ключами Диффи-Хеллмана (DH), два конечных пользователя Alice и Bob, при обмене данными по каналу, насчет которого они знают, что он является закрытым, взаимно согласуют положительные целые числа p и q таким образом, что p является простым числом, и q является генератором p. Генератор q является числом, которое при возведении в степени положительного целого числа, меньшие p, никогда не формирует идентичный результат для любых двух таких целых чисел. Значение p может быть большим, но значение q обычно является небольшим. Таким образом, q является модулем p первообразного корня.
[61] После того, как Alice и Bob конфиденциально согласуют p и q, они выбирают персональные ключи a и b в форме положительного целого числа, оба из которых меньше модуля p простого числа и оба могут случайно формироваться. Пользователи не обнародуют свой персональный ключ никому, и в идеале они запоминают эти числа и не записывают их или нигде не сохраняют их. Затем, Alice и Bob вычисляют открытые ключи a* и b* на основе своих персональных ключей согласно формулам:
a
a*=q mod p
и
b
b*=q mod p
[62] Два пользователя могут совместно использовать свои открытые ключи a* и b* по среде связи, предположительно незащищенной, к примеру, по Интернету либо по корпоративной глобальной вычислительной сети (WAN). Из этих открытых ключей, число k1 может формироваться любым из этих пользователей на основе собственных персональных ключей.
[63] Alice вычисляет k1 с использованием формулы:
a
k1=(b*) mod p
[64] Bob вычисляет k1 с использованием формулы:
b
k1=(a*) mod p
[65] Значение k1 оказывается идентичным согласно любой из вышеуказанных двух формул. Тем не менее, персональные ключи a и b, которые являются критическими в вычислении k1, не переданы по открытой среде передачи. Даже с помощью p, q, a* и b* по-прежнему очень трудно вычислять a и b. Поскольку они представляют собой большие и, по-видимому, случайные числа, потенциальный хакер фактически не имеет возможности корректного угадывания k1, даже с помощью мощного компьютера, чтобы проводить миллионы попыток. Два пользователя в силу этого могут, в теории, обмениваться данными конфиденциально по открытой среде передачи со способом шифрования по своему выбору с использованием ключа k1 дешифрования.
[66] В другом примере реализации обмена ключами Диффи-Хеллмана (DH), все вычисления происходят в дискретной группе достаточного размера, в которой проблема Диффи-Хеллмана считается сложной, обычно в мультипликативной группе по модулю большое простое число (например, для классического DH) или в группе эллиптических кривых (например, для эллиптической кривой Диффи-Хеллмана).
a
b
ab
ba
[67] Для двух сторон, каждая сторона выбирает закрытый ключ a или b. Каждая сторона вычисляет соответствующий открытый ключ aG или bG. Каждая сторона отправляет открытый ключ aG или bG другой стороне. Каждая сторона использует принимаемый открытый ключ вместе с собственным закрытым ключом, чтобы вычислять новый совместно используемый секрет a(bG)=b(aG), который затем может использоваться с функцией извлечения ключа для того, чтобы извлекать набор ключей для схемы симметричного шифрования. Альтернативно, могут использоваться различные другие способы вычисления, например, посредством формирования открытых ключей gи g и совместно используемого ключа g или g.
[68] Во время транзакций, защита информации является важной для того, чтобы защищать конфиденциальность пользователей, и сумма транзакции представляет собой один тип информации, для которой отсутствует защита. Фиг. 1 показывает примерную систему 100 для защиты информации, в соответствии с различными вариантами осуществления. Как показано, сеть цепочек блоков может содержать множество узлов (например, полных узлов, реализованных на серверах, в компьютерах и т.д.). Для некоторой платформы цепочек блоков (например, NEO), полные узлы с определенным правом голоса могут упоминаться как консенсусные узлы, которые принимают на себя ответственность за верификацию транзакций. В этом раскрытии, полные узлы, консенсусные узлы или другие эквивалентные узлы могут верифицировать транзакцию.
[69] Кроме того, как показано на фиг. 1, пользователь A и пользователь B могут использовать соответствующие устройства, такие как переносные компьютеры и мобильные телефоны, служащие в качестве облегченных узлов для того, чтобы выполнять транзакции. Например, пользователь A может хотеть осуществлять транзакции с пользователем B посредством перевода некоторого актива на счету пользователя A на счет пользователя B. Пользователь A и пользователь B могут использовать соответствующие устройства с установленным соответствующим программным обеспечением для цепочек блоков для транзакции. Устройство пользователя A может упоминаться как узел-инициатор, который инициирует транзакцию с устройством пользователя B, называемым "узлом-получателем B". Узел A может осуществлять доступ к цепочке блоков через связь с узлом 1, и узел B может осуществлять доступ к цепочке блоков через связь с узлом 2. Например, узел A и узел B могут отправлять транзакции в цепочку блоков через узел 1 и узел 2, чтобы запрашивать добавление транзакций в цепочку блоков. Вне цепочки блоков, узел A и узел B могут иметь другие каналы связи (например, регулярную Интернет-связь без прохождения через узлы 1 и 2).
[70] Каждый из узлов на фиг. 1 может содержать процессор и долговременный машиночитаемый носитель данных, соединенный с процессором, и носитель данных, сохраняющий инструкции, которые, при выполнении посредством процессора, инструктируют узлу (к примеру, процессору) выполнять различные этапы для защиты информации, описанные в данном документе. На каждый узел может устанавливаться программное обеспечение (например, программа для проведения транзакций) и/или аппаратные средства (например, проводные, беспроводные соединения) для того, чтобы обмениваться данными с другими узлами и/или другими устройствами. Ниже описывается более подробная информация аппаратных средств и программного обеспечения узла со ссылкой на фиг. 5.
[71] Фиг. 2 иллюстрирует примерные этапы для транзакции и верификации между узлом-отправителем A, узлом-получателем B и одним или более узлами верификации, в соответствии с различными вариантами осуществления. Операции, представленные ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерные этапы могут включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
K
K
[72] В различных вариантах осуществления, счета сторон транзакции (пользователя-отправителя A и пользователя-получателя B) сконфигурированы для модели на основе счетов/балансов. Пользователь A и пользователь B могут выполнять следующие этапы, чтобы выполнять транзакцию через одно или более устройств, к примеру, через свой переносной компьютер, мобильный телефон и т.д. В устройства может устанавливаться адаптированное программное обеспечение и аппаратные средства для того, чтобы выполнять различные этапы. Каждый счет может быть ассоциирован с парой криптографического закрытого ключа (секретного ключа) -открытого ключа. Закрытый ключ может обозначаться как SK, и открытый ключ может обозначаться как PK. Закрытый ключ может использоваться для того, чтобы подписывать передаваемую информацию (например, информацию транзакций). Открытый ключ может использоваться для того, чтобы верифицировать подписанную информацию и формировать адрес счета. Каждый счет может содержать различные активы, обозначенные как: (V=PC(r, v), E(r, v)), то, где v представляет номинальную стоимость актива, V представляет удостоверение Педерсена номинальной стоимости v, r является коэффициентом маскирования (например, случайным числом), PC() является алгоритмом схемы обязательств Педерсена, E() является алгоритмом шифрования (например, алгоритмом шифрования криптографическими ключами), и K является ключом шифрования, который является уникальным для каждого счета. Например, каждый актив может обозначаться как (V=PC(r, v), E(r||v)), где || представляет конкатенацию. Хотя конкатенация используется в нижеприведенных вариантах осуществления, могут использоваться другие альтернативные представления, которые заключают в себе r и v. Ключ K шифрования (например, KA, KB) может формироваться посредством различных способов, таких как протокол с закрытым ключом, функция извлечения ключа и т.д. Каждый актив также может включать в себя информацию, отличную от перечисленной информации, такую как исходная информация актива.
[73] В одном примере, до того, как пользователь A успешно осуществляет транзакцию с суммой t пользователю B в верифицированной по цепочке блоков транзакции, адреса и активы на счету A и на счету B являются следующими:
[74] Для счета A (счета A):
Адрес: AddrA
A
Открытый ключ: PK
A
Закрытый ключ: SK
Первый ключ: KA
1
m
1
m
Активы A-A, соответственно, стоимостей a-a обозначаются следующим образом:
1
a1
1
KA
a1
1
(A=PC(r, a), E(r, a)),
2
a2
2
KA
a2
2
(A=PC(r, a), E(r, a)),
...
m
am
m
KA
am
m
(A=PC(r, a), E(r, a))
[75] Для счета B (счета B):
Адрес: AddrB
B
Открытый ключ PK
B
Закрытый ключ: SK
Второй ключ: KB
1
n
1
n
Активы B-B, соответственно, значений b- b обозначаются следующим образом:
1
b1
1
KB
b1
1
(B=PC(r, b), E(r, b)),
2
b2
2
KB
b2
2
(B=PC(r, b), E(r, b)),
...
n
bn
n
KB
bn
n
(B=PC(r, b), E(r, b))
[76] В некоторых вариантах осуществления, на этапе 201, узел A может инициировать транзакцию с узлом B. Например, пользователь A и пользователь B могут согласовывать сумму t транзакции со счета A пользователя A на счет B пользователя B. Счет A и счет B могут соответствовать "кошелькам", описанным в данном документе. Счет A может иметь один или более активов. Актив может содержать, например, деньги, токен, цифровую валюту, договор, купчую, медицинскую карту, сведения о клиентах, акции, долговое обязательство, долю в капитале или любой другой актив, который может описываться в цифровой форме. Счет B может иметь один или более активов или не иметь активов. Каждый актив может быть ассоциирован с различной информацией цепочек блоков, сохраненной в блоках цепочки блоков, причем информация цепочек блоков содержит, например, NoteType, представляющий тип активов, NoteID, представляющий уникальный идентификатор актива, значения удостоверения, представляющие значение удостоверения (например, удостоверения Педерсена) стоимости активов, шифрование случайного числа и стоимости активов и т.д.
1
m
1
m
a1
am
a1
am
1
m
i
ai
i
ai
i
KA
ai
i
[77] Как описано относительно счета A, в некоторых вариантах осуществления, активы A-A надлежащим образом соответствуют стоимостям a-a активов и случайным числам r-r. На основе случайных чисел r-r, узел A может удостоверять стоимости активов на счету A в схему удостоверения (например, схему обязательств Педерсена), чтобы получать зашифрованные значения удостоверения. Например, для счета A, зашифрованные значения удостоверения могут составлять PC-PC, где PC=PC(r, a)=r*G+a*H, G и H являются известными, и i является переменной между 1 и m. В дополнение к первому полю PC(...), каждый актив также ассоциирован со вторым полем E(...), как описано выше. Второе поле E(...) может представлять шифрование соответствующего случайного числа и стоимости активов, зашифрованной с помощью ключа KA. Например, шифрование может представлять собой E(r, a). PC(...) и E(...) для каждого актива могут быть унаследованы из предыдущих транзакций. Идентичный механизм может применяться к счету B и его активам.
1
2
k
k+1
k+2
m
a1
1
a2
2
ak
k
a1
a2
ak
a1
1
a2
2
ak
k
1
2
k
1
2+
k
[78] В некоторых вариантах осуществления, чтобы удовлетворять сумме t транзакции, пользователь A может использовать первый ключ KA (например, симметричный ключ шифрования) для того, чтобы дешифровать один или более активов с агрегированной стоимостью, по меньшей мере, t из счета A. Например, узел A может отводить активы A, A, ..., A для этой транзакции, где k меньше или равно m. Оставшиеся активы A, A, ..., A счета A являются неотведенными. Соответственно, узел A может считывать активы PC(r, a), PC(r, a), ..., PC(r, a) из узла 1. Когда случайные числа r, r, ..., r известны узлу A, узел A может дешифровать считываемые активы PC(r, a), PC(r, a), ..., PC(r, a), чтобы получать стоимости a, a, ..., a активов, чтобы обеспечивать то, что сумма (a+a...+a) не меньше суммы t транзакции. Различными активами можно обмениваться в пределах счета с различными темпами.
[79] В некоторых вариантах осуществления, симметричный ключ шифрования может означать идентичные криптографические ключи, используемые в криптографическом алгоритме с симметричным ключом как для шифрования простого текста, так и для дешифрования зашифрованного текста. Ключи могут быть идентичными, либо может быть предусмотрено простое преобразование для того, чтобы проходить между двумя ключами. Ключи могут представлять совместно используемый секрет между двумя или более сторон, который может использоваться для того, чтобы поддерживать закрытую информационную линию связи.
1
2
k
t
y
t
y
t
y
t
t
y
y
1
2
k
t
y
[80] В некоторых вариантах осуществления, сумма выбранной стоимости активов сверх t, если имеется, задается равной y в качестве сдачи. Например, узел A может определять сдачу y=(a+a+...+a)-t. Узел A может выбирать случайные числа r и r в качестве коэффициентов маскирования, чтобы формировать удостоверения Педерсена для t и y: T=PC(r, t), Y=PC(r, y). Таким образом, узел A может формировать случайное число r для t и случайное число r для y. Узел A может удостоверять t и r в схему удостоверения (например, гомоморфное шифрование), чтобы получать значение удостоверения T=PC(r, t), и удостоверять y и r в схему удостоверения (например, гомоморфное шифрование), чтобы получать значение удостоверения Y=PC(r, y). Дополнительно, узел A может определять r'=(r+r...+r)-r-r.
y
KA
y
KA
y
[81] В некоторых вариантах осуществления, узел A может использовать первый ключ KA для того, чтобы шифровать (r, y), получая шифрование E(r, y). Узел A может сохранять E(r, y) локально.
t
[82] На этапе 202, узел A может отправлять информацию транзакций в узел B (например, через цепочку блоков, через защищенный канал вне цепочки блоков). Отправленная информация транзакций может содержать, например, случайное число r, сумму t транзакции и значение T удостоверения. Информация транзакций может отправляться в простом тексте.
t
t
[83] На этапе 203, узел B может верифицировать случайное число r, сумму t транзакции и значение T удостоверения. В некоторых вариантах осуществления, узел B может верифицировать то, является или нет сумма t, которую следует отправлять пользователю B, корректной, и то, удовлетворяется или нет T=PC(r, t). Для этапа 203, если сопоставление/верификация завершается неудачно, узел B может отклонять транзакцию. Если сопоставление/верификация выполняется успешно, узел B может отвечать узлу A на этапе 204.
t
KB
t
KB
t
B
[84] На этапе 204, узел B может шифровать (r, t) с помощью второго ключа KB (например, симметричного ключа шифрования), чтобы получать шифрование E(r, t), и подписывать транзакцию (E(r, t), T) с помощью закрытого ключа SK пользователя B, чтобы формировать подпись SIGB. Подписание может соответствовать алгоритму цифровой подписи (DSA), такому как алгоритм цифровой подписи в эллиптических кривых (ECDSA), за счет чего получатель подписи может верифицировать подпись с помощью открытого ключа подписавшей стороны, чтобы аутентифицировать подписанные данные. Подпись SIGB показывает согласие узла-получателя B с транзакцией.
KB
t
[85] На этапе 205, узел B может передавать подписанную транзакцию E(r, t) и подпись SIGB обратно в узел A.
t
y
t
y
t
y
n
n
[86] На этапе 206, если SIGB не верифицируется успешно, узел A может отклонять транзакцию. Если SIGB успешно верифицируется, узел A может формировать доказательство RP по диапазону, чтобы доказывать узлам цепочки блоков то, находятся или нет значение PC(r, t) и значение PC(r, y) в пределах достоверного диапазона. Например, чтобы иметь достоверные значения PC(r, t), сумма t транзакции может находиться в пределах достоверного диапазона [0, 2-1]; и иметь достоверные значения PC(r, y), сдача y может находиться в пределах достоверного диапазона [0, 2-1]. В одном варианте осуществления, узел A может использовать технологию на основе поблочного доказательства, чтобы формировать доказательство RP по диапазону, связанное с (T, r, t, Y, r, y) для узлов цепочки блоков (например, консенсусных узлов), чтобы верифицировать на следующем этапе то, находятся или нет сумма t транзакции и сдача y в пределах достоверного диапазона, на основе доказательства по диапазону. Доказательство по диапазону может содержать, например, пуленепробиваемые доказательства, кольцевую подпись Борромена и т.д.
A
a1
1
KA
a1
1
a2
2
KA
a2
ak
k
KA
ak
k
y
KA
y
t
KB
t
a1
1
KA
a1
1
a2
2
KA
a2
2
ak
k
KA
ak
k
1
2
k
y
KA
y
t
KB
t
[87] Дополнительно, узел A может подписывать транзакцию с помощью закрытого ключа SK пользователя A, чтобы формировать подпись SIGA. Аналогично, подписание может соответствовать алгоритму цифровой подписи (DSA). В одном варианте осуществления, узел A может подписывать ({PC(r, a), E(r, a); PC(r, a), E(r, a2р);... PC(r, a), E(r, a)}; {PC(r, y), E(r, y)}; {PC(r, t), E(r, t)}; Y; T; r'; RP) с помощью закрытого ключа пользователя A, чтобы формировать подпись SIGA, где {PC(r, a), E(r, a);... PC(r, a), E(r, a); PC(r, a), E(r, a)} представляет отведенные активы A, A, ..., A из счета A для транзакции. {PC(r, y), E(r, y)} представляет сдачу, которую счет A должен принимать из транзакции. {PC(r, t), E(r, t)} представляет переведенный актив, который счет B должен принимать из транзакции.
a1
1
KA
a1
1
a2
2
KA
a2
2
ak
k
KA
ak
k
y
KA
y
t
KB
t
[88] На этапе 207, узел A может отправлять транзакцию в цепочку блоков, что инструктирует узлам цепочки блоков верифицировать транзакцию и определять то, следует или нет добавлять транзакцию в цепочку блоков. В одном варианте осуществления, узел A может отправлять транзакцию ({PC(r, a), E(r, a); PC(r, a), E(r, a);... PC(r, a), E(r, a)}; {PC(r, y), E(r, y)}; {PC(r, t), E(r, t)}; Y; T; r'; RP; SIGA; SIGB) в цепочку блоков через узел 1, чтобы выполнять транзакцию. Транзакция может содержать дополнительные параметры или может не содержать все перечисленные параметры. Транзакция может передаваться в широковещательном режиме в один или более узлов (например, консенсусных узлов) в цепочке блоков для верификации. Если верификация выполняется успешно, транзакция добавляется в цепочку блоков. Если верификация завершается неудачно, транзакция отклоняется на предмет добавления в цепочку блоков.
[89] На этапах 208-213, один или более узлов (например, консенсусных узлов) верифицируют подписи, доказательство по диапазону и другую информацию отправленной транзакции. Если верификация завершается неудачно, узлы отклоняют транзакцию. Если верификация выполняется успешно, узлы подтверждают транзакцию, обновляют счет пользователя A и счет пользователя B отдельно.
[90] В некоторых вариантах осуществления, чтобы выполнять транзакцию, информация транзакций может верифицироваться посредством различных узлов цепочки блоков. Информация транзакций может содержать адрес TXID транзакции, подпись(и), ввод и вывод. TXID может содержать хеш контента транзакции. Подписи могут содержать криптоключи-подписи со стороны отправителя и получателя. Ввод может содержать адрес счета отправителя в цепочке блоков, один или более активов, отведенных из счета цепочки блоков отправителя для транзакции, и т.д. Вывод может содержать адрес счета получателя в цепочке блоков, тип(ы) активов для актива(ов) получателя, значение(я) удостоверения актива(ов) получателя и т.д. Ввод и вывод может содержать индексированную информацию в табличной форме. В некоторых вариантах осуществления, стоимость значения NoteID может представлять собой "TXID+индекс актива в выводе".
a1
1
KA
a1
1
a2
2
KA
a2
2
ak
k
KA
ak
k
y
KA
y
t
KB
t
[91] В некоторых вариантах осуществления, один или более узлов цепочки блоков могут верифицировать отправленную транзакцию ({PC(r, a), E(r, a); PC(r, a), E(r, a);... PC(r, a), E(r, a)}; {PC(r, y), E(r, y)}; {PC(r, t), E(r, t)}; Y; T; r'; RP; SIGA; SIGB).
[92] На этапе 208, узлы могут верифицировать то, выполнена либо нет транзакция, с использованием механизма защиты от двойной траты или механизма защиты от атак с повторением пакетов. Если транзакция выполнена, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 209.
[93] На этапе 209, узлы могут проверять подписи SIGA и SIGB (например, на основе открытого ключа A и открытого ключа B, соответственно). Если какая-либо из подписей является некорректной, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 210.
1
k
[94] На необязательном этапе 210, узлы могут верифицировать то, являются или нет типы активов согласованными. Например, узлы могут верифицировать то, являются или нет типы активов в NoteType для A-A согласованными с типом(ами) активов суммы t транзакции. Если какие-либо из типов активов являются несогласованными, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 211. В некоторых вариантах осуществления, исходный тип активов в кошельке может преобразовываться в другой тип на основе обменного курса, и этот этап может пропускаться.
t
[95] На этапе 211, узлы могут проверять доказательство RP по диапазону, чтобы проверять достоверность значения PC(r, t) и значения м. В одном варианте осуществления, узлы могут проверять доказательство RP по диапазону, чтобы верифицировать то, не меньше либо нет сумма t транзакции нуля, и то, не меньше либо нет сдача y нуля. Если верификация завершается неудачно, узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 212.
1
2
k
1
2
k
t
y
1
2
k
1
2
k
1
2
k
t
y
1
k
1
2
k
t
y
1
k
[96] На этапе 212, узлы могут проверять то, являются или нет вводы и выводы транзакции согласованными. В одном варианте осуществления, r' может соответствовать стоимости активов t'=a+a...+a-t-y на основе гомоморфного свойства, где r'=(r+r...+r)-r-r. Поскольку входные активы составляют a+a...+a, и вывод составляет t+y, t'=0, когда ввод и вывод является согласованным: a+a...+a =t+y. Таким образом, значение удостоверения, соответствующее r', составляет PC(r', t')=r '*G+t'*H=r'G. Поскольку r'=(r+r...+r)-r-r, узлы могут определять то, равны или нет вводы и выводы, посредством верификации того, равен r'G или нет PC+...+PC-T-Y согласно (r+r...+r)-r-r. Если r'G равен PC+...+PC-T-Y, узлы могут определять то, что вводы и выводы транзакции являются согласованными, и переходить к следующему этапу; в противном случае, узлы могут определять то, что вводы и выводы транзакции являются несогласованными, и отклонять транзакцию.
[97] На этапе 213, узлы могут верифицировать то, имеет или нет узел A актив(ы), отведенные для транзакции. В одном варианте осуществления, узлы могут выполнять эту верификацию на основе информации, сохраненной в цепочке блоков, к примеру, информации, соответствующей счету A. Информация может содержать информацию предыдущих транзакций всех активов. Узлы в силу этого могут определять то, имеет или нет счет A актив для проведения транзакции для транзакции. Если определение представляет собой "Нет", узлы могут отклонять транзакцию; в противном случае, способ может переходить к этапу 214.
y
y
t
[98] На этапе 214, узлы могут обновлять счет A и счет B. Например, узлы могут удалять актив для проведения транзакции с суммой t из счета A и добавлять его на счет B. На основе гомоморфного свойства, поскольку Y=PC(r, y) и узел 1 знает r и может осуществлять доступ к значению Y удостоверения из цепочки блоков, узел 1 может дешифровать Y, чтобы получать стоимость активов y, и возвращать ее на счет A. Узел 2 получает на этапе 202 случайное число r из узла 1 и может получать из цепочки блоков значение T удостоверения. Таким образом, узел 2 может дешифровать T, чтобы получать стоимость t активов, и добавлять ее на счет B.
1
2
k
ak+1
m
1
2
n
[99] В одном примере, после обновления счета A и счета B, счет A принимает сдачу y на отведенные активы A, A, ..., A и принимает свои неотведенные активы A, ..., A, и счет B принимает сумму t транзакции и принимает свои исходные активы B, B, ..., B. Активы на счету A и на счету B являются следующими:
[100] Для счета A (счета A), обновленные активы обозначаются следующим образом:
y
KA
y
(Y=PC(r, y), E(r, y)),
ak+1
ak+1
k+1
KA
ak+1
k+1
(A=PC(r, a), E(r, a))
ak+2
ak+2
k+2
KA
ak+2
k+2
(A=PC(r, a), E(r, a))
...
m
am
m
KA
am
m
(A=PC(r, a), E(r, a))
[101] Для счета B (счета B), обновленные активы обозначаются следующим образом:
1
b1
1
KB
b1
1
(B=PC(r, b), E(r, b)),
2
b2
2
KB
b2
2
(B=PC(r, b), E(r, b)),
...
n
bn
n
KB
bn
n
(B=PC(r, b), E(r, b)),
t
KB
t
(T=PC(r, t), E(r, t))
[102] Хотя это раскрытие использует узел A/пользователя A и узел B/пользователя B для того, чтобы иллюстрировать отправителя и получателя, соответственно, отправитель и получатель могут представлять собой идентичный узел/пользователя. Например, сдача y транзакции (общее число отведенных активов на счету A минус сумма транзакции) может отправляться обратно отправителю транзакции. Таким образом, различные этапы, выполняемые узлом B, как описано в данном документе, альтернативно могут выполняться узлом A.
[103] Фиг. 3 иллюстрирует блок-схему последовательности операций примерного способа 300 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 300 может реализовываться посредством одного или более компонентов (например, узла A, узла 1, комбинации узла A и узла 1) системы 100 по фиг. 1. Способ 300 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), сохраняющий инструкции. Инструкции, при выполнении посредством процессора, инструктируют системе или устройству (например, процессору) осуществлять способ 300. Операции способа 300, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 300 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
t
y
t
t
y
y
[104] Этап 301 содержит: удостоверение суммы t транзакции для транзакции с помощью первой схемы обязательств, с тем чтобы получать значение T удостоверения транзакции, и удостоверение сдачи y транзакции с помощью второй схемы обязательств, с тем чтобы получать значение Y удостоверения сдачи, причем первая схема обязательств содержит коэффициент r маскирования транзакции, и вторая схема обязательств содержит коэффициент r маскирования сдачи. В некоторых вариантах осуществления, первая схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r маскирования транзакции, при этом сумма t транзакции составляет соответствующее удостоверенное значение. См., например, T=PC(r, t). Вторая схема обязательств содержит схему обязательств Педерсена, по меньшей мере, на основе коэффициента r маскирования сдачи, при этом сдача y составляет соответствующее удостоверенное значение. См., например, Y=PC(r, y).
y
[105] Этап 302 содержит: шифрование первой комбинации коэффициента r маскирования сдачи и сдачи y с помощью первого ключа KA.
t
t
t
t
[106] Этап 303 содержит: передачу коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для верификации транзакции узлом-получателем. В некоторых вариантах осуществления, передача коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, для верификации транзакции узлом-получателем содержит: передачу коэффициента r маскирования транзакции, суммы t транзакции и значения T удостоверения транзакции в узел-получатель, ассоциированный с получателем транзакции, инструктирование узлу-получателю верифицировать то, равно или нет значение T удостоверения транзакции результату удостоверения первой схемой обязательств суммы t транзакции с коэффициентом r маскирования транзакции.
t
[107] Этап 304 содержит: в ответ на то, что узел-получатель успешно верифицирует транзакцию, получение зашифрованной второй комбинации коэффициента r маскирования транзакции и суммы t транзакции, зашифрованной с помощью второго ключа KB. В некоторых вариантах осуществления, получение зашифрованной второй комбинации содержит прием из узла-получателя зашифрованной второй комбинации и подписи SIGB, ассоциированной со второй зашифрованной комбинацией и значением T удостоверения транзакции.
[108] Этап 305 содержит: передачу зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков для верификации транзакции узлами в цепочке блоков.
1
2
k
ak
ak
[109] В некоторых вариантах осуществления, сумма t транзакции является отведенной из одного или более активов A, A, ..., A отправителя транзакции; каждый из активов ассоциирован со (1) схемой обязательств Педерсена, по меньшей мере, на основе коэффициента r маскирования и стоимости каждого актива и (2) шифрованием, по меньшей мере, на основе коэффициента r маскирования и стоимости каждого актива; и сдача y является разностью между суммой t транзакции и отведенными активами.
1
2
k
1
2
k
t
y
1
2
k
t
y
[110] В некоторых вариантах осуществления, перед передачей зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков, способ дополнительно содержит: верификацию подписи SIGB; и в ответ на успешную верификацию подписи SIGB, формирование подписи SIGA, ассоциированной с активами A, A, ..., A, первой комбинацией, второй комбинацией, значением T удостоверения транзакции, значением Y удостоверения сдачи и разностью между суммой коэффициентов маскирования, соответствующих активам A, A, ..., A, и суммой коэффициента r маскирования транзакции и коэффициента r маскирования сдачи. Таким образом, разность составляет r'=(r+r...+r)-(r+r).
1
2
k
1
2
k
t
y
[111] В некоторых вариантах осуществления, передача зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков содержит: передачу активов A, A, ..., A, первой комбинации, второй комбинации, значения T удостоверения транзакции, значения Y удостоверения сдачи, разности между суммой коэффициентов маскирования, соответствующих активам A, A, ..., A, и суммой коэффициента r маскирования транзакции и коэффициента r маскирования сдачи, подписи SIGA и подписи SIGB во множество узлов в цепочке блоков.
1
2
k
[112] В некоторых вариантах осуществления, передача зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков для верификации транзакции узлами в цепочке блоков содержит: передачу зашифрованной первой комбинации и зашифрованной второй комбинации во множество узлов в цепочке блоков, инструктирование узлам в цепочке блоков, в ответ на успешную верификацию транзакции, эмитировать сумму t транзакции получателю, исключать активы A, A, ..., A и эмитировать сдачу y отправителю.
[113] Фиг. 4 иллюстрирует блок-схему последовательности операций примерного способа 400 для защиты информации, согласно различным вариантам осуществления настоящего раскрытия. Способ 400 может реализовываться посредством одного или более компонентов (например, узла B, узла 2, комбинации узла B и узла 2 и т.д.) системы 100 по фиг. 1. Способ 400 может реализовываться посредством системы или устройства (например, компьютера, сервера), содержащего процессор и долговременный машиночитаемый носитель данных (например, запоминающее устройство), сохраняющий инструкции. Инструкции, при выполнении посредством процессора, инструктируют системе или устройству (например, процессору) осуществлять способ 400. Операции способа 400, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 400 может включать в себя большее число, меньшее число или альтернативные этапы, выполняемые в других порядках или параллельно.
t
t
[114] Этап 401 содержит: получение коэффициента r маскирования транзакции, суммы t транзакции для транзакции и значения T удостоверения транзакции из узла-отправителя, ассоциированного с отправителем транзакции, при этом: сумма t транзакции удостоверена с помощью первой схемы обязательств, чтобы получать значение T удостоверения транзакции, причем первая схема обязательств содержит коэффициент r маскирования транзакции.
t
t
t
[115] Этап 402 содержит: верификацию транзакции на основе полученного коэффициента r маскирования транзакции, полученной суммы t транзакции для транзакции и полученного значения T удостоверения транзакции. В некоторых вариантах осуществления, верификация транзакции на основе полученного коэффициента r маскирования транзакции, полученной суммы t транзакции для транзакции и полученного значения T удостоверения транзакции содержит верификацию того, равно или нет полученное значение T удостоверения транзакции первой схеме обязательств, удостоверяющей полученную сумму t транзакции с полученным коэффициентом r маскирования транзакции.
t
[116] Этап 403 содержит: в ответ на успешную верификацию транзакции, шифрование второй комбинации коэффициента r маскирования транзакции и суммы t транзакции с помощью второго ключа KB.
[117] Этап 404 содержит: передачу зашифрованной второй комбинации в узел-отправитель. В некоторых вариантах осуществления, перед передачей зашифрованной второй комбинации в узел-отправитель, дополнительно содержит формирование подписи SIGB, ассоциированный со второй зашифрованной комбинацией и значением T удостоверения транзакции; и передача зашифрованной второй комбинации в узел-отправитель содержит передачу зашифрованной второй комбинации и подписи SIGB в узел-отправитель.
ai
i
KA
ai
i
[118] Как показано, конфиденциальность для суммы транзакции может защищаться посредством различных улучшений вычислительных технологий. Например, структура счета содержит одно или более полей, к примеру, первое поле, ассоциированное с удостоверением Педерсена стоимости активов (например, первое поле представляет собой PC(r, a), при этом i составляет между 1 и m), и второе поле, ассоциированное со случайным числом для удостоверения Педерсена и стоимостью активов (например, второе поле представляет собой E(r, a), при этом i составляет между 1 и m). Первое поле и второе поле также используются на этапах проведения транзакции и сохраняются в цепочке блоков.
[119] В качестве другого примера, криптографический ключ используется для того, чтобы шифровать случайное число каждого удостоверения Педерсена и соответствующую стоимость активов. Криптографический ключ для шифрования/дешифрования хранится владельцем счета, в силу чего конфиденциальность стоимостей активов защищается от пользователей без криптографического ключа. Дополнительно, транзакция, включающая в себя зашифрованные случайные числа и стоимости активов, сохраняется в цепочке блоков. Этот способ предоставляет удобство для управления случайными числами, минимизирует вероятность потерь и переделки случайных чисел и стоимостей активов и стимулирует безопасность на основе распределенного и согласованного хранения цепочек блоков.
[120] Этапы до отправки транзакции в цепочку блоков могут трактоваться в качестве поведения "вне цепочки" или "перед транзакцией", поскольку процессы шифрования и дешифрования происходят на клиентских сторонах, в то время как цепочка блоков сохраняет зашифрованную "стоимость активов + соответствующее случайное число", представленное посредством функции E(). Удостоверение Педерсена может быть аналогичным сейфу с активами внутри, и "стоимость активов + соответствующее случайное число" является аналогичным ключу к сейфу. Зашифрованный ключ и его ассоциированный сейф могут сохраняться в цепочке блоков, которая является защищенной от несанкционированного использования и защищенной от потерь. Каждый раз, когда пользователь хочет расходовать актив(ы), пользователь может извлекать сейф и зашифрованный ключ из цепочки блоков и дешифровать ключ на клиентской стороне таким образом, что этапы "перед транзакцией" могут выполняться, чтобы ассемблировать новую транзакцию, которая расходует актив(ы).
[121] В связи с этим, случайные числа удостоверений Педерсена могут легко управляться, без риска повреждения и без подвергания дополнительной нагрузке по управлению ключами. Таким образом, конфиденциальность транзакции может быть полностью защищена, и суммы транзакций могут храниться в качестве секретов.
[122] Технологии, описанные в данном документе, реализуются посредством одного или более вычислительных устройств специального назначения. Вычислительные устройства специального назначения могут представлять собой настольные компьютерные системы, серверные компьютерные системы, портативные компьютерные системы, карманные устройства, сетевые устройства или любое другое устройство либо комбинацию устройств, которые включают аппаратно-реализованную и/или программную логику для того, чтобы реализовывать технологии. Вычислительное устройство(а), в общем, управляются и координируются посредством программного обеспечения операционной системы. Традиционные операционные системы управляют и диспетчеризуют компьютерные процессы для выполнения, выполняют управление запоминающим устройством, предоставляют файловую систему, организацию сетей, услуги ввода-вывода и предоставляют функциональность пользовательского интерфейса, к примеру, графический пользовательский интерфейс (GUI), в числе прочего.
[123] Фиг. 5 является блок-схемой, которая иллюстрирует компьютерную систему 500, в которой может реализовываться любой из вариантов осуществления, описанных в данном документе. Система 500 может реализовываться в любом из узлов, описанных в данном документе и выполненных с возможностью выполнять соответствующие этапы для способов защиты информации. Компьютерная система 500 включает в себя шину 502 или другой механизм связи для передачи информации, один или более аппаратных процессоров 504, соединенных с шиной 502 для обработки информации. Аппаратный процессор(ы) 504, например, может представлять собой один или более микропроцессоров общего назначения.
[124] Компьютерная система 500 также включает в себя основное запоминающее устройство 506, к примеру, оперативное запоминающее устройство (RAM), кэш и/или другие устройства динамического хранения данных, соединенные с шиной 502 для сохранения информации и инструкций, которые должны выполняться посредством процессора(ов) 504. Основное запоминающее устройство 506 также может использоваться для сохранения временных переменных или другой промежуточной информации во время выполнения инструкций, которые должны выполняться посредством процессора(ов) 504. Такие инструкции, когда сохраняются на носителях хранения данных, доступных для процессора(ов) 504, превращают компьютерную систему 500 в машину специального назначения, которая настраивается с возможностью выполнять операции, указываемые в инструкциях. Компьютерная система 500 дополнительно включает в себя постоянное запоминающее устройство 508 (ROM) или другое устройство статического хранения данных, соединенное с шиной 502 для сохранения статической информации и инструкций для процессора(ов) 504. Устройство 510 хранения данных, такое как магнитный диск, оптический диск или карта USB-флэш-памяти (флэш-накопитель) и т.д., предоставляется и соединяется с шиной 502 для сохранения информации и инструкций.
[125] Компьютерная система 500 может реализовывать технологии, описанные в данном документе, с использованием настраиваемой аппаратно-реализованной логики, одной или более ASIC или FPGA, микропрограммного обеспечения и/или программной логики, которая в комбинации с компьютерной системой инструктирует или программирует компьютерную систему 500 таким образом, что она представляет собой машину специального назначения. Согласно одному варианту осуществления, операции, способы и процессы, описанные в данном документе, выполняются посредством компьютерной системы 500 в ответ на выполнение, посредством процессора(ов) 504, одной или более последовательностей из одной или более инструкций, содержащихся в основном запоминающем устройстве 506. Такие инструкции могут считываться в основное запоминающее устройство 506 из другого носителя хранения данных, к примеру, из устройства 510 хранения данных. Выполнение последовательностей инструкций, содержащихся в основном запоминающем устройстве 506, инструктирует процессору(ам) 504 выполнять этапы процесса, описанные в данном документе. В альтернативных вариантах осуществления, аппаратно-реализованная схема может использоваться вместо или в комбинации с программными инструкциями.
[126] Основное запоминающее устройство 506, ROM 508 и/или хранилище 510 могут включать в себя долговременные носители хранения данных. Термин "долговременные носители" и подобные термины, при использовании в данном документе, означают носители, которые сохраняют данные и/или инструкции, которые инструктируют машине работать конкретным способом, носители исключают энергозависимые сигналы. Такие долговременные носители может содержать долговременные носители и/или кратковременные носители. Долговременные носители включают в себя, например, оптические или магнитные диски, такие как устройство 510 хранения данных. Кратковременные носители включают в себя динамическое запоминающее устройство, такое как основное запоминающее устройство 506. Стандартные формы долговременных носителей включают в себя, например, гибкий диск, дискету, жесткий диск, полупроводниковый накопитель, магнитную ленту или любой другой магнитный носитель данных, CD-ROM, любой другой оптический носитель данных, любой физический носитель с шаблонами отверстий, RAM, PROM и EPROM, флэш-EPROM, NVRAM, любую другую микросхему или картридж запоминающего устройства и сетевые версии вышеозначенного.
[127] Компьютерная система 500 также включает в себя сетевой интерфейс 518, соединенный с шиной 502. Сетевой интерфейс 518 предоставляет двунаправленное соединение для обмена данными с одной или более сетевых линий связи, которые соединяются с одной или более локальных сетей. Например, сетевой интерфейс 518 может представлять собой карту по стандарту цифровой сети с интегрированными услугами (ISDN), кабельный модем, спутниковый модем либо модем для того, чтобы предоставлять соединение для передачи данных с соответствующим типом телефонной линии. В качестве другого примера, сетевой интерфейс 518 может представлять собой карту локальной вычислительной сети (LAN), чтобы предоставлять соединение для передачи данных с совместимой LAN (или WAN-компонент, который должен обмениваться данными с WAN). Также могут реализовываться линии беспроводной связи. В любой такой реализации, сетевой интерфейс 518 отправляет и принимает электрические, электромагнитные или оптические сигналы, которые переносят потоки цифровых данных, представляющие различные типы информации.
[128] Компьютерная система 500 может отправлять сообщения и принимать данные, включающие в себя программный код, через сеть(и), сетевую линию связи и сетевой интерфейс 518. В Интернет-примере, сервер может передавать запрашиваемый код для прикладной программы через Интернет, ISP, локальную сеть и сетевой интерфейс 518.
[129] Принимаемый код может выполняться посредством процессора(ов) 504 по мере того, как он принимается и/или сохраняется в устройстве 510 хранения данных или другом долговременном устройстве хранения данных для последующего выполнения.
[130] Каждый из процессов, способов и алгоритмов, описанных в предыдущих разделах, может быть осуществлен и полностью или частично автоматизирован посредством кодовых модулей, выполняемых посредством одной или более компьютерных систем или процессоров компьютера, содержащих компьютерные аппаратные средства. Процессы и алгоритмы могут реализовываться частично или полностью в специализированной схеме.
[131] Различные признаки и процессы, описанные выше, могут использоваться независимо друг от друга или могут комбинироваться различными способами. Все возможные комбинации и субкомбинации имеют намерение попадать в пределы объема этого раскрытия. Помимо этого, определенные этапы способа или процесса могут опускаться в некоторых реализациях. Способы и процессы, описанные в данном документе, также не ограничены конкретными последовательностями, и этапы или состояния, связанные с ними, могут выполняться в других последовательностях, которые являются подходящими. Например, описанные этапы или состояния могут выполняться в порядке, отличном от конкретно раскрытого порядка, либо несколько этапов или состояний могут комбинироваться в одном этапе или состоянии. Примерные этапы или состояния могут выполняться последовательно, параллельно или некоторым другим способом. Этапы или состояния могут добавляться или удаляться из раскрытых примерных вариантов осуществления. Примерные системы и компоненты, описанные в данном документе, могут быть сконфигурированы отлично от описанных конфигураций. Например, элементы могут добавляться, удаляться или перекомпоновываться по сравнению с раскрытыми примерными вариантами осуществления.
[132] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством алгоритма. Алгоритм может содержаться в программных кодах или инструкциях, сохраненных в запоминающем устройстве (например, на долговременном машиночитаемом носителе хранения данных, описанном выше). Такой алгоритм может содержать алгоритм машинного обучения. В некоторых вариантах осуществления, алгоритм машинного обучения может не программировать явно компьютеры с возможностью выполнять функцию, а может обучаться, из обучающих данных, возможности создавать модель прогнозирований, которая выполняет функцию.
[133] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством одного или более процессоров, которые временно выполнены с возможностью (например, посредством программного обеспечения) или постоянно выполнены с возможностью выполнять релевантные операции. Независимо от того, временно или постоянно выполнены с возможностью, такие процессоры могут составлять процессорнореализуемые механизмы, которые работают с возможностью выполнять одну или более операций или функций, описанных в данном документе.
[134] Аналогично, способы, описанные в данном документе, могут быть, по меньшей мере, частично процессорнореализуемыми, при этом конкретный процессор или процессоры представляют собой пример аппаратных средств. Например, по меньшей мере, некоторые операции способа могут осуществляться посредством одного или более процессоров или процессорнореализуемых механизмов. Кроме того, один или более процессоров также могут работать с возможностью поддерживать выполнение релевантных операций в окружении "облачных вычислений" или в качестве "программного обеспечения как услуга" (SaaS). Например, по меньшей мере, некоторые операции могут выполняться посредством группы компьютеров (в качестве примеров машин, включающих в себя процессоры), причем эти операции являются доступным через сеть (например, Интернет) и через один или более соответствующих интерфейсов (например, через интерфейс прикладного программирования (API)).
[135] Выполнение определенных операций может распределяться между процессорами, не только постоянно размещающимися в одной машине, но и развернутыми на определенном числе машин. В некоторых примерных вариантах осуществления, процессоры или процессорнореализуемые механизмы могут быть расположены в одном географическом местоположении (например, в домашнем окружении, в офисном окружении или на ферме серверов). В других примерных вариантах осуществления, процессоры или процессорнореализуемые механизмы могут быть распределены по ряду географических местоположений.
[136] В этом подробном описании, несколько экземпляров могут реализовывать компоненты, операции или структуры, описанные в качестве одного экземпляра. Хотя отдельные операции одного или более способов проиллюстрированы и описаны в качестве отдельных операций, одна или более отдельных операций могут выполняться параллельно, и ничего не требует выполнения операций в проиллюстрированном порядке. Структуры и функциональность, представленная в качестве отдельных компонентов в примерных конфигурациях, могут реализовываться как комбинированная структура или компонент. Аналогично, структуры и функциональность, представленные в качестве одного компонента, могут реализовываться как отдельные компоненты. Эти и другие варьирования, модификации, добавления и улучшения попадают в пределы объема изобретения в данном документе.
[137] Хотя общее представление изобретения описывается со ссылкой на конкретные примерные варианты осуществления, различные модификации и изменения могут вноситься в эти варианты осуществления без отступления от более широкого объема вариантов осуществления настоящего раскрытия. Такие варианты осуществления изобретения могут упоминаться в данном документе отдельно или совместно посредством термина "изобретение" просто для удобства и без намерения умышленно ограничивать объем этой заявки каким-либо одним раскрытием или идеей, если фактически раскрывается несколько из них. Подробное описание не должно рассматриваться в ограничивающем смысле, и объем различных вариантов осуществления определяется только прилагаемой формулой изобретения, наряду с полным диапазоном эквивалентов, которые охватываются такой формулой изобретения.