[go: up one dir, main page]

RU2771928C2 - Secure data exchange ensuring direct secrecy - Google Patents

Secure data exchange ensuring direct secrecy Download PDF

Info

Publication number
RU2771928C2
RU2771928C2 RU2020102008A RU2020102008A RU2771928C2 RU 2771928 C2 RU2771928 C2 RU 2771928C2 RU 2020102008 A RU2020102008 A RU 2020102008A RU 2020102008 A RU2020102008 A RU 2020102008A RU 2771928 C2 RU2771928 C2 RU 2771928C2
Authority
RU
Russia
Prior art keywords
computer
public key
server
client
signature
Prior art date
Application number
RU2020102008A
Other languages
Russian (ru)
Other versions
RU2020102008A (en
RU2020102008A3 (en
Inventor
Эрик ЛЕ СЭН
Пэйман МОХАССЕЛ
Original Assignee
Виза Интернэшнл Сервис Ассосиэйшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/629,689 external-priority patent/US10313133B2/en
Application filed by Виза Интернэшнл Сервис Ассосиэйшн filed Critical Виза Интернэшнл Сервис Ассосиэйшн
Publication of RU2020102008A publication Critical patent/RU2020102008A/en
Publication of RU2020102008A3 publication Critical patent/RU2020102008A3/ru
Application granted granted Critical
Publication of RU2771928C2 publication Critical patent/RU2771928C2/en

Links

Images

Abstract

FIELD: communication.
SUBSTANCE: invention relates to the field of communication, namely to data exchange. A client masking coefficient and a client masked public key form a key pair based on an elliptic curve, so that the client masked public key can be used for decryption of data that is encrypted using the client masking coefficient, and the client masked public key can be used for confirmation the authenticity of a signature generated by signing data by means of the client masking coefficient.
EFFECT: increase in the security of data exchange.
21 cl, 11 dwg, 1 tbl

Description

УРОВЕНЬ ТЕХНИКИBACKGROUND OF THE INVENTION

[0001] Данная патентная заявка является международной заявкой заявки США № 15/629689, поданной 21 июня 2017 г., которая включена в настоящий документ с помощью ссылки во всей своей полноте для всех целей. [0001] This patent application is U.S. International Application No. 15/629689, filed June 21, 2017, which is incorporated herein by reference in its entirety for all purposes.

[0001] Обеспечение безопасного обмена данными между компьютерами продолжает представлять собой задачу, требующую особого внимания. Например, взломщик может перехватывать сообщения (например, путем проведения атаки через посредника) и логически выводить идентификатор клиентского компьютера или серверного компьютера на основе открытых ключей или других данных, обмен которыми происходит открыто. Перехваченные данные могут использоваться для отслеживания компьютеров или использоваться с противозаконными целями. Однако предотвращение отслеживания идентификатора компьютера одновременно с обеспечением компьютеру возможности аутентифицироваться может быть проблематичным, поскольку аутентификация может зависеть от компьютера, идентифицирующего себя. Дополнительно ключи шифрования на компьютерах, выполняющих обмен данными, позже могут быть рассекречены, предоставляя взломщику возможность расшифровывать ранее перехваченные сообщения. Проведение безопасного, неотслеживаемого и аутентифицированного обмена данными одновременно с обеспечением безопасности прошлого обмена данными может представлять собой сложную задачу. [0001] Ensuring the secure exchange of data between computers continues to be a task that requires special attention. For example, an attacker can intercept messages (eg, through a man-in-the-middle attack) and infer the identity of a client computer or a server computer based on public keys or other data that is exchanged openly. The intercepted data may be used to track computers or be used for illegal purposes. However, preventing the computer ID from being tracked while allowing the computer to authenticate can be problematic because authentication can depend on the computer identifying itself. Additionally, the encryption keys on the communicating computers can later be decrypted, giving an attacker the ability to decrypt previously intercepted messages. Conducting secure, untraceable, and authenticated communications while securing past communications can be challenging.

[0002] Варианты осуществления настоящего изобретения устраняют эти и другие проблемы по отдельности и вместе. [0002] Embodiments of the present invention address these and other problems individually and collectively.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[0003] Варианты осуществления настоящего изобретения относятся к системам и способам безопасного обмена данными. Согласно вариантам осуществления настоящего изобретения можно устанавливать безопасный обмен данными с использованием одного неотслеживаемого сообщения с запросом с первого компьютера и одного неотслеживаемого сообщения с ответом со второго компьютера. Невозможность отслеживания может быть обеспечена посредством использования маскирующих коэффициентов. Сообщения с запросом и ответом могут также содержать подписи, которые обеспечивают невозможность отказа. Дополнительно шифрование сообщения с запросом и ответом не основано на парах статических ключей, которые используются для подтверждения подлинности подписей. Таким образом, поддерживается идеальная прямая секретность. [0003] Embodiments of the present invention relate to systems and methods for securely exchanging data. According to embodiments of the present invention, secure communication can be established using one untraceable request message from a first computer and one untraceable response message from a second computer. Non-tracking can be provided by using masking factors. Request and response messages may also contain signatures that provide non-repudiation. Additionally, the encryption of the request and response message is not based on static key pairs that are used to authenticate signatures. Thus, perfect forward secrecy is maintained.

[0004] Другие варианты осуществления направлены на системы, портативные потребительские устройства и машиночитаемые носители, связанные со способами, описанными в настоящем документе. [0004] Other embodiments are directed to systems, portable consumer devices, and computer-readable media associated with the methods described herein.

[0005] Лучшее понимание сущности и преимуществ вариантов осуществления настоящего изобретения может быть достигнуто со ссылкой на следующее подробное описание и сопроводительные графические материалы. [0005] A better understanding of the essence and advantages of the embodiments of the present invention can be achieved with reference to the following detailed description and accompanying drawings.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

[0006] Фиг. 1 представляет собой упрощенную схему потока сообщений, иллюстрирующую безопасный обмен данными между клиентским компьютером и серверным компьютером в соответствии с некоторыми вариантами осуществления. [0006] FIG. 1 is a simplified message flow diagram illustrating secure communications between a client computer and a server computer, in accordance with some embodiments.

[0007] Фиг. 2 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера с установкой безопасного обмена данными с использованием неотслеживаемых сообщений в соответствии с некоторыми вариантами осуществления. [0007] FIG. 2 is a message flow diagram of a client computer and a server computer setting up secure communications using untraceable messages, in accordance with some embodiments.

[0008] Фиг. 3 представляет собой схему потока сообщений клиентского компьютера, безопасно получающего сертификат с серверного компьютера с использованием неотслеживаемых сообщений, в соответствии с некоторыми вариантами осуществления. [0008] FIG. 3 is a message flow diagram of a client computer securely obtaining a certificate from a server computer using untraceable messages, in accordance with some embodiments.

[0009] Фиг. 4 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью, в соответствии с некоторыми вариантами осуществления. [0009] FIG. 4 is a message flow diagram of a client computer and a server computer establishing a secure and untraceable communication with perfect forward secrecy, in accordance with some embodiments.

[0010] Фиг. 5 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью с использованием сообщений при невозможности отказа со стороны клиента и сервера, в соответствии с некоторыми вариантами осуществления. [0010] FIG. 5 is a message flow diagram of a client computer and a server computer establishing a secure and untraceable perfect forward secrecy communication using client and server non-repudiation messages, in accordance with some embodiments.

[0011] Фиг. 6 представляет собой схему потока сообщений клиентского компьютера и серверного компьютера, устанавливающих безопасный и неотслеживаемый обмен данными с использованием зашифрованной части подписи и незашифрованной части подписи для обеспечения невозможности отказа, в соответствии с некоторыми вариантами осуществления. [0011] FIG. 6 is a message flow diagram of a client computer and a server computer establishing a secure and untraceable communication using an encrypted signature part and an unencrypted signature part for non-repudiation, in accordance with some embodiments.

[0012] Фиг. 7 представляет собой блок-схему способа запрашивания и установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления. [0012] FIG. 7 is a flowchart of a method for requesting and establishing secure communications, in accordance with some embodiments.

[0013] Фиг. 8 представляет собой блок-схему способа ответа на запрос для установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления. [0013] FIG. 8 is a flow diagram of a method for responding to a request to establish secure communication, in accordance with some embodiments.

[0014] Фиг. 9 представляет собой таблицу этапов в реализуемом с помощью компьютера способе установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью в соответствии с некоторыми вариантами осуществления. [0014] FIG. 9 is a table of steps in a computer-assisted method for establishing secure and untraceable communications with perfect forward secrecy, in accordance with some embodiments.

[0015] Фиг. 10 представляет собой таблицу этапов в реализуемом с помощью компьютера способе установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью между клиентским компьютером и серверным компьютером, так что клиентский компьютер и серверный компьютер не могут отказываться от своих сообщений, в соответствии с некоторыми вариантами осуществления. [0015] FIG. 10 is a table of steps in a computer-assisted method for establishing secure and untraceable communications with perfect forward secrecy between a client computer and a server computer such that the client computer and server computer cannot relinquish their messages, in accordance with some embodiments.

[0016] Фиг. 11 представляет собой таблицу этапов для выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью и с использованием зашифрованной части подписи и незашифрованной части подписи в соответствии с некоторыми вариантами осуществления. [0016] FIG. 11 is a table of steps for performing a computer-implemented method for establishing secure and untraceable communication with perfect forward secrecy and using an encrypted signature part and an unencrypted signature part, in accordance with some embodiments.

[0017] На графических материалах пунктирные или штриховые линии могут быть использованы для указания организационной структуры, для указания того, что элемент является необязательным, или для указания того, что данные или информация передаются через элемент по существу неизменными. Стрелки могут использоваться для указания потока данных или информации между двумя или более элементами. Круги, содержащие ссылочные позиции, могут указывать на то, что определенные этапы выполняют смежным элементом. [0017] On graphics, dotted or dashed lines may be used to indicate an organizational structure, to indicate that an element is optional, or to indicate that data or information is passed through an element substantially unchanged. Arrows can be used to indicate the flow of data or information between two or more elements. Circles containing reference positions may indicate that certain steps are performed by an adjacent element.

ТЕРМИНЫTERMS

[0018] Перед обсуждением вариантов осуществления настоящего изобретения для понимания вариантов осуществления может быть полезным описание некоторых терминов. [0018] Before discussing the embodiments of the present invention, a description of some terms may be helpful in understanding the embodiments.

[0019] Термин «серверный компьютер» может включать компьютер или кластер вычислительных устройств. Например, серверный компьютер может представлять собой крупный универсальный компьютер, кластер мини-компьютеров или группу серверов, функционирующих как один элемент. В одном примере серверный компьютер может представлять собой сервер баз данных, соединенный с веб-сервером. Серверный компьютер может быть соединен с базой данных и может содержать любое аппаратное обеспечение, программное обеспечение, другую логическую часть или сочетание предыдущего для обслуживания запросов с одного или более клиентских компьютеров. Серверный компьютер может содержать одно или более вычислительных устройств и может использовать любую из множества вычислительных структур, компоновок и компиляций для обслуживания запросов с одного или более клиентских компьютеров. [0019] The term "server computer" may include a computer or a cluster of computing devices. For example, a server computer may be a large mainframe computer, a cluster of minicomputers, or a group of servers that function as one unit. In one example, the server computer may be a database server connected to a web server. The server computer may be connected to the database and may contain any hardware, software, other logic or combination of the previous to serve requests from one or more client computers. The server computer may include one or more computing devices and may use any of a variety of computing structures, arrangements, and compilations to serve requests from one or more client computers.

[0020] Термин «пара открытого (общедоступного)/закрытого ключей» может включать пару связанных криптографических ключей, сгенерированных субъектом (например, компьютером или электронным устройством). Открытый ключ может быть использован для открытых функций, таких как шифрование сообщения для отправки субъекту или для проверки цифровой подписи, которая предположительно была создана субъектом. Закрытый ключ, с другой стороны, может быть использован для закрытых функций, таких как расшифровывание принятого сообщения или наложение цифровой подписи. Открытый ключ обычно авторизует орган, известный как орган сертификации (ОC), который хранит открытый ключ в базе данных и распределяет его любому другому субъекту, который запрашивает его. Закрытый ключ, как правило, хранится на безопасном носителе данных и обычно известен только субъекту. Однако криптографические системы, описанные в настоящем документе, могут обладать механизмами восстановления ключа для восстановления потерянных ключей и избегания потери данных. Открытые и закрытые ключи могут иметь любой подходящий формат, включая формат, основанный на криптографическом алгоритме с открытым ключом (RSA) или криптографии на основе эллиптических кривых (ECC). [0020] The term "public (public)/private key pair" may include a pair of associated cryptographic keys generated by a subject (eg, computer or electronic device). The public key can be used for public functions, such as encrypting a message to be sent to the subject, or to verify a digital signature that is believed to have been created by the subject. The private key, on the other hand, can be used for private functions such as decrypting a received message or digitally signing it. The public key usually authorizes an authority, known as a Certification Authority (CA), which stores the public key in a database and distributes it to any other entity that requests it. The private key is usually stored on a secure storage medium and is usually only known to the subject. However, the cryptographic systems described herein may have key recovery mechanisms to recover lost keys and avoid data loss. The public and private keys may be in any suitable format, including those based on public key cryptographic algorithm (RSA) or elliptic curve cryptography (ECC).

[0021] «Цифровая подпись» может относиться к результату применения алгоритма на основе пары открытого/закрытого ключей, который позволяет подписывающей стороне заявлять, и проверяющей стороне подтверждать подлинность и сохранность документа. Подписывающая сторона действует с помощью закрытого ключа, а проверяющая сторона действует с помощью открытого ключа. Этот процесс удостоверяет подлинность отправителя, сохранность подписанного документа и так называемый принцип невозможности отказа, который не позволяет отклонить то, что было подписано. Сертификат или другие данные, которые содержат цифровую подпись подписывающей стороны, называют «подписанным» подписывающей стороной. [0021] "Digital signature" may refer to the result of applying an algorithm based on a public/private key pair that allows a signer to claim, and a verifier to verify, the authenticity and integrity of a document. The signer acts with the private key, and the verifier acts with the public key. This process certifies the authenticity of the sender, the integrity of the signed document, and the so-called non-repudiation principle, which does not allow rejection of what has been signed. A certificate or other data that contains the signer's digital signature is said to be "signed" by the signer.

[0022] «Сертификат» или «цифровой сертификат» может включать электронный документ или файл данных, который использует цифровую подпись для связывания открытого ключа с данными, связанными с идентификатором. Сертификат может содержать одно или более полей данных, таких как юридическое наименование субъекта, серийный номер сертификата, дату начала и завершения действия сертификата, связанные с сертификатом разрешения и т. д. Сертификат может содержать дату начала действия, указывающую первую дату, в которую действителен сертификат, и дату завершения действия, указывающую последнюю дату, в которую действителен сертификат. Сертификат также может содержать хеш данных в сертификате, включающем поля данных. Если не указано иное, каждый сертификат подписан органом сертификации. [0022] A "certificate" or "digital certificate" may include an electronic document or data file that uses a digital signature to associate a public key with data associated with an identifier. The certificate may contain one or more data fields, such as the legal name of the subject, the serial number of the certificate, the start and end date of the certificate, associated with the authorization certificate, etc. The certificate may contain a start date indicating the first date on which the certificate is valid , and an expiration date indicating the last date the certificate is valid. The certificate may also contain a hash of the data in the certificate, including the data fields. Unless otherwise noted, each certificate is signed by a certification authority.

[0023] «Орган сертификации» (ОС) может иметь один или более серверных компьютеров, функционально связанных для выдачи сертификатов субъектам. ОС может доказать свою подлинность с помощью сертификата ОС, который содержит открытый ключ ОС. Сертификат ОС может быть подписан закрытым ключом другого ОС или может быть подписан закрытым ключом того же ОС. Последний известен как самостоятельно подписанный сертификат. ОС может поддерживать базу данных всех сертификатов, изданных ОС, а также может поддерживать список отозванных сертификатов. [0023] A "certificate authority" (OS) may have one or more server computers operably linked to issue certificates to subjects. The OS can prove its identity with the OS certificate, which contains the public key of the OS. An OS certificate can be signed with the private key of another OS, or it can be signed with the private key of the same OS. The latter is known as a self-signed certificate. The OS may maintain a database of all certificates issued by the OS, and may also maintain a list of revoked certificates.

[0024] При обычном процессе орган сертификации принимает неподписанный сертификат от субъекта, подлинность которого известна. Неподписанный сертификат содержит открытый ключ, одно или более полей данных и хеш данных в сертификате. ОС подписывает сертификат закрытым ключом, соответствующим открытому ключу, включенному в сертификат ОС. Затем ОС может сохранить подписанный сертификат в базе данных и выдать подписанный сертификат субъекту. [0024] In the normal process, the certification authority accepts an unsigned certificate from a subject whose authenticity is known. An unsigned certificate contains a public key, one or more data fields, and a hash of the data in the certificate. The OS signs the certificate with the private key corresponding to the public key included in the OS certificate. The OS can then store the signed certificate in the database and issue the signed certificate to the subject.

[0025] «Криптографический объект nonce» может включать любое число, строку, последовательность битов или другое значение данных, предназначенное для использования совместно с одним сеансом обмена данными. В некоторых случаях криптографический объект nonce может быть сгенерирован случайным или псевдослучайным образом. Как правило, криптографический объект nonce имеет достаточную длину, чтобы сделать незначительной вероятность независимого генерирования одного и того же значения объекта nonce несколько раз. [0025] A "cryptographic nonce" may include any number, string, bit sequence, or other data value intended to be used in conjunction with a single communication session. In some cases, a cryptographic nonce may be generated randomly or pseudo-randomly. Typically, a cryptographic nonce is long enough to make it negligible that the same value of a nonce can be independently generated multiple times.

[0026] «Замаскированный ключ», такой как «замаскированный открытый ключ», может включать в себя ключ, который был искажен или иным образом изменен в сравнении с его изначальным значением путем сочетания с другим элементом данных, таким как криптографический объект nonce. Например, в криптографии на основе эллиптических кривых, для генерирования «замаскированного открытого ключа» открытый ключ может быть умножен на объект nonce. Подобным образом, для генерирования «замаскированного закрытого ключа» закрытый ключ может быть умножен на объект nonce. Объект nonce может иметь такую же битовую длину, что и открытый ключ, и закрытый ключ. [0026] A "masked key" such as a "masked public key" may include a key that has been mangled or otherwise altered from its original value by combination with another data element, such as a cryptographic nonce. For example, in elliptic curve cryptography, the public key can be multiplied by a nonce object to generate a "masked public key". Similarly, to generate a "masked private key", the private key can be multiplied by a nonce object. The nonce object can be the same bit length as the public key and private key.

[0027] «Пара кратковременных ключей» может включать открытый ключ (т.е. «кратковременный открытый ключ») и закрытый ключ (т.е. «кратковременный закрытый ключ»), сгенерированные для использования с одной транзакцией или другим сеансом обмена данными. Пара кратковременных ключей может иметь любой подходящий формат, такой как ECC или RSA. Как правило, пара кратковременных ключей может быть удалена сразу по завершении транзакции или сеанса связи. [0027] A "short-lived key pair" may include a public key (i.e., "short-lived public key") and a private key (i.e., "short-lived private key") generated for use with one transaction or another communication session. The short-lived key pair can be in any suitable format, such as ECC or RSA. As a rule, a pair of short-lived keys can be deleted immediately after the completion of a transaction or communication session.

[0028] «Пара статических ключей» может включать открытый ключ (т.е. «статический открытый ключ») и закрытый ключ (т.е. «статический закрытый ключ»), сохраняемые в течение периода времени. Как правило, хотя и не обязательно, статический закрытый ключ может быть сохранен безопасным образом, например, в аппаратном модуле безопасности (HSM) или элементе безопасности (SE). Как правило, хотя и необязательно, статический открытый ключ может быть связан с идентификатором с помощью цифрового сертификата. Пара статических ключей может иметь любой подходящий формат, такой как ECC или RSA. [0028] A "static key pair" may include a public key (ie, "static public key") and a private key (ie, "static private key") stored over a period of time. Typically, although not necessarily, a static private key may be stored in a secure manner, such as in a hardware security module (HSM) or security element (SE). Typically, though not necessarily, a static public key can be associated with an identity using a digital certificate. A static key pair can be in any suitable format such as ECC or RSA.

[0029] «Совместно используемый секрет» может включать любое значение данных или другую информацию, известную только уполномоченным сторонам в безопасном обмене данными. Совместно используемый секрет может быть сгенерирован любым подходящим способом, из любых подходящих данных. Например, алгоритм на основе метода Диффи-Хеллмана, такой как метод Диффи-Хеллмана на эллиптических кривых (ECDH), может быть использован для генерирования совместно используемого секрета из закрытого ключа и открытого ключа. Например, первый компьютер может генерировать первую пару ключей, включающую первый открытый ключ и первый закрытый ключ. Второй компьютер может генерировать вторую пару ключей, включающую второй открытый ключ и второй закрытый ключ. Первый компьютер может генерировать совместно используемый секрет с использованием второго открытого ключа второго компьютера и первого закрытого ключа первого компьютера. Второй компьютер может генерировать тот же совместно используемый секрет с использованием первого открытого ключа первого компьютера и второго закрытого ключа второго компьютера. Первый компьютер и второй компьютер могут оба использовать совместно используемый секрет для генерирования ключа сеанса. [0029] A "Shared Secret" may include any data value or other information known only to authorized parties in a secure data exchange. The shared secret may be generated in any suitable manner from any suitable data. For example, a Diffie-Hellman algorithm such as Elliptic Curve Diffie-Hellman (ECDH) can be used to generate a shared secret from a private key and a public key. For example, the first computer may generate a first key pair including a first public key and a first private key. The second computer may generate a second key pair including a second public key and a second private key. The first computer may generate a shared secret using the second public key of the second computer and the first private key of the first computer. The second computer may generate the same shared secret using the first public key of the first computer and the second private key of the second computer. The first computer and the second computer may both use the shared secret to generate the session key.

[0030] Термин «идентификационные данные» может включать любые данные или информацию, связанную с пользователем или устройством. Примеры идентификационных данных могут включать имя пользователя, связанного с устройством, организацию, связанную с устройством, платежную информацию, такую как основной учетный номер (PAN), связанный с устройством, дату завершения срока действия устройства, сертификат, связанный с устройством, международный идентификационный номер устройства (IMEI) или серийный номер устройства и т. п. [0030] The term "identity" may include any data or information associated with a user or device. Examples of identification data may include the username associated with the device, the organization associated with the device, billing information such as the Primary Account Number (PAN) associated with the device, the expiration date of the device, the certificate associated with the device, the International Device Identification Number (IMEI) or device serial number, etc.

[0031] Термин «аутентификация» обычно относится к процессу удостоверения подлинности пользователя или компьютера. Аутентификация может быть выполнена путем подтверждения подлинности устройства с использованием криптографии с открытым ключом (например, зашифрованных данных или цифровых подписей) для аутентификационной информации. [0031] The term "authentication" generally refers to the process of verifying the identity of a user or computer. Authentication may be performed by authenticating the device using public key cryptography (eg, encrypted data or digital signatures) for authentication information.

[0032] Термин «аутентификационные данные» или «аутентификационная информация» может включать любые данные или информацию, подходящие для аутентификации пользователя или устройства. Примеры аутентификационных данных могут включать пароль или фразу доступа, секретный ключ (например, закрытый ключ), цифровую подпись, указание на то, что устройство хранит определенную информацию, и т. п. [0032] The term "authentication data" or "authentication information" may include any data or information suitable for authenticating a user or device. Examples of authentication data may include a password or passphrase, a secret key (such as a private key), a digital signature, an indication that the device stores certain information, etc.

[0033] «Ключ шифрования» может включать любое значение данных или другую информацию, подходящую для криптографического шифрования данных. «Ключ расшифровки» может включать любое значение данных или другую информацию, подходящую для расшифровывания зашифрованных данных. В некоторых случаях тот же ключ, который используют для шифрования данных, может быть использован для расшифровывания данных. Такой ключ может быть известен как симметричный ключ шифрования. [0033] An "encryption key" may include any data value or other information suitable for cryptographically encrypting data. The "decryption key" may include any data value or other information suitable for decrypting the encrypted data. In some cases, the same key that is used to encrypt the data can be used to decrypt the data. Such a key may be known as a symmetric encryption key.

[0034] «Ключ сеанса» может включать любой ключ, используемый для шифрования или расшифровки данных для безопасного обмена. В некоторых случаях ключ сеанса может быть сгенерирован из совместно используемого секрета, известного как отправляющему субъекту, так и принимающему субъекту. Например, ключ сеанса может быть сформирован с помощью функции формирования ключа и совместно используемого секрета. [0034] A "session key" may include any key used to encrypt or decrypt data for secure exchange. In some cases, the session key may be generated from a shared secret known to both the sending entity and the receiving entity. For example, the session key may be generated using a key derivation function and a shared secret.

[0035] «Невозможность отслеживания» представляет собой характеристику безопасного обмена данными, которая относится к способности сообщения обмена данными не раскрывать информацию об идентификаторе отправителя, так что сообщение может быть прослежено до них. Например, в некотором безопасном обмене данными статический открытый ключ первого компьютера отправляется на второй компьютер открыто (например, незашифрованным) во время обмена ключами по методу Диффи-Хеллмана. Открытый ключ первого компьютера может быть статическим, поскольку он соответствует сертификату, сохраненному на нем, который подписан органом сертификации. Как таковой, первый компьютер может быть идентифицирован и отслежен путем перехватывания его сообщений на основе незашифрованного открытого ключа, отправленного во время обмена ключами по методу Диффи-Хеллмана. В другом сценарии подпись может быть отправлена незашифрованной, и третья сторона может перехватывать подпись и пытаться подтвердить подлинность подписи с использованием множества разных открытых ключей для идентификации и отслеживания подписанта подписи. Для предотвращения отслеживания компьютер может генерировать пару кратковременных ключей для использования во время обмена ключами, а затем удалять после установки совместно используемого секрета. Другим способом предотвращения отслеживания является «маскировка» открытого ключа с использованием криптографического объекта nonce (например, произвольно сгенерированного числа). [0035] "Untrackable" is a secure communication characteristic that refers to the ability of a communication message not to reveal sender identity information so that the message can be traced back to them. For example, in some secure communication, the static public key of the first computer is sent to the second computer in the clear (eg, unencrypted) during a Diffie-Hellman key exchange. The public key of the first computer can be static because it corresponds to a certificate stored on it that is signed by a certification authority. As such, the first computer can be identified and tracked by intercepting its communications based on the unencrypted public key sent during the Diffie-Hellman key exchange. In another scenario, the signature may be sent unencrypted and a third party may intercept the signature and attempt to authenticate the signature using many different public keys to identify and track the signer of the signature. To prevent snooping, a computer can generate a short-lived key pair for use during a key exchange and then delete it after the shared secret is established. Another way to prevent snooping is to "mask" the public key using a cryptographic nonce (for example, a randomly generated number).

[0036] «Невозможность отказа» представляет собой характеристику безопасного обмена данными, которая относится к сообщению обмена данными, которое предотвращает отрицание отправителем сообщения того, что он отправил это сообщение. Протокол безопасного обмена данными, который предусматривает «невозможность отказа», может предотвращать отрицание компьютером того, что сообщение было отправлено им с использованием криптографии открытого ключа. Дополнительно «невозможность отказа» обеспечивает «аутентификацию» отправителя, поскольку получатель может аутентифицировать, что только отправитель мог отправить сообщение. В одном примере зашифрованное сообщение может содержать подпись, созданную с использованием статического закрытого ключа первого компьютера. Статический закрытый ключ может соответствовать статическому открытому ключу, который включен в сертификат первого компьютера, который подписан органом сертификации. В данном примере закрытый ключ известен только первому компьютеру и для другого компьютера было бы вычислительно непрактичным определять данный закрытый ключ из-за характеристик криптографии с открытым ключом. Соответственно, первый компьютер может не отказываться от первого сообщения, если его открытый ключ может подтверждать подлинность подписи, поскольку для создания подписи к его закрытому ключу другое устройство не может иметь доступа. В отличие от подписи, шифрование сообщения само по себе может не обеспечивать невозможность отказа от этого сообщения, поскольку может отсутствовать установленный способ проверки того, какое устройство сгенерировало это сообщение. [0036] "Non-repudiation" is a secure communication characteristic that refers to a communication message that prevents a message sender from denying that it has sent the message. A secure communication protocol that provides "non-repudiation" can prevent a computer from denying that a message was sent by it using public key cryptography. Additionally, "non-repudiation" provides "authentication" of the sender, since the recipient can authenticate that only the sender could have sent the message. In one example, the encrypted message may contain a signature generated using the first computer's static private key. The static private key may correspond to the static public key that is included in the first computer's certificate that is signed by the certification authority. In this example, the private key is known only to the first computer and it would be computationally impractical for another computer to determine this private key due to the characteristics of public key cryptography. Accordingly, the first computer may not discard the first message if its public key can authenticate the signature, since no other device can access its private key to create a signature. Unlike a signature, encrypting a message by itself may not provide non-repudiation of the message, as there may be no established way to verify which device generated the message.

[0037] «Прямая секретность» является характеристикой безопасного обмена данными, которая относится к способности сообщений не расшифровываться, если закрытые ключи отправителя и/или получателя сообщений позже рассекречиваются. «Идеальная прямая секретность» представляет собой характеристику безопасного обмена данными, которая относится к способности сообщений не расшифровываться, если закрытые ключи обоих из отправителя и получателя сообщений позже рассекречиваются. В одном сценарии закрытые ключи могут быть получены третьей стороной, которая получает физический доступ к компьютерам. В другом сценарии третий компьютер может потратить достаточно много времени на взлом закрытого ключа, что будет непрактичным, но не невозможным. Однако безопасный обмен данными с «идеальной прямой секретностью» не может быть расшифрован, даже если оба статических закрытых ключа отправляющего и принимающего компьютеров рассекречены. Одним из способов достижения «идеальной прямой секретности» является отсутствие шифрования сообщений с использованием статических закрытых ключей. Соответственно, если статические закрытые ключи рассекречиваются, они не могут использоваться для расшифровывания сообщений. В одном примере пара ключей шифрования может быть случайно сгенерирована для обмена ключами, а затем чуть позже удалена (например, установлена в нуль). Соответственно, закрытый ключ не может быть получен, если третья сторона позже получает физический доступ к компьютеру. Поэтому сообщения, отправленные в прошлом, сохраняют свою секретность на будущее. Кроме того, даже если одно сообщение рассекречивается, другие сообщения не рассекречиваются, поскольку нет одного ключа, используемого для шифрования в разных сообщениях. [0037] "Forward secrecy" is a characteristic of secure communication that refers to the ability of messages not to be decrypted if the private keys of the sender and/or recipient of the messages are later decrypted. "Ideal forward secrecy" is a characteristic of secure communication that refers to the ability of messages not to be decrypted if the private keys of both the sender and recipient of the messages are later decrypted. In one scenario, the private keys may be obtained by a third party who gains physical access to the computers. In another scenario, a third computer might spend quite a lot of time cracking the private key, which would be impractical, but not impossible. However, secure communications with "perfect forward secrecy" cannot be decrypted even if both the static private keys of the sending and receiving computers are decrypted. One way to achieve "perfect forward secrecy" is to not encrypt messages using static private keys. Accordingly, if static private keys are decrypted, they cannot be used to decrypt messages. In one example, an encryption key pair may be randomly generated for a key exchange and then deleted a little later (eg, set to zero). Accordingly, the private key cannot be obtained if a third party later gains physical access to the computer. Therefore, messages sent in the past retain their secrecy for the future. Also, even if one message is declassified, other messages are not declassified because there is no single key used to encrypt different messages.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION

[0038] Способы и системы безопасного обмена данными описаны в настоящем документе. В одном варианте осуществления первый компьютер и второй компьютер могут обмениваться данными по небезопасной сети (например, Интернет). Для обмена сообщениями по безопасной связи первый компьютер и второй компьютер могут совместно использовать секретный симметричный ключ, применяемый для шифрования сообщений. Для предотвращения получения третьей стороной секретного симметричного ключа два компьютера могут обмениваться открытыми ключами, а затем отдельно генерировать один и тот же секретный симметричный ключ с использованием своих собственных закрытого ключа и открытого ключа, принятых от другого устройства. Однако, если статические открытые ключи отправляются по сети незашифрованными, это может позволять третьей стороне определять идентификатор одного из компьютеров или в результате определять совместно используемый симметричный ключ. [0038] Methods and systems for secure communication are described herein. In one embodiment, the first computer and the second computer may communicate over an insecure network (eg, the Internet). To exchange messages over a secure link, the first computer and the second computer may share a secret symmetric key used to encrypt messages. To prevent a third party from obtaining the secret symmetric key, two computers can exchange public keys and then separately generate the same secret symmetric key using their own private key and public key received from the other device. However, if static public keys are sent over the network unencrypted, this may allow a third party to determine the identity of one of the computers, or as a result determine the shared symmetric key.

[0039] Можно использовать пары кратковременных ключей или замаскированные открытые ключи для обеспечения невозможности отслеживания. Однако, поскольку идентификатор отправителя скрыт для обеспечения невозможности отслеживания, одним из последствий может быть то, что отправитель может отрицать отправку им сообщения. Для предотвращения отказа отправителем от того, что он отправляет сообщения, сообщение может содержать подпись, которая создана с использованием статического открытого ключа отправителя. Таким образом, неотслеживаемые ключи могут быть использованы для шифрования, тогда как отслеживаемые ключи могут быть использованы для генерирования подписи. Дополнительно новые и разные открытые ключи могут быть использованы при каждом обмене ключами и удалены сразу или вскоре после установки совместно используемого секрета. Дополнительно, хотя могут быть использованы отслеживаемые подписи, они могут быть включены в зашифрованную часть сообщения, таким образом они не могут быть использованы для отслеживания отправителя или получателя сообщения. Соответственно, может быть установлен безопасный обмен данными с «невозможностью отслеживания», «невозможностью отказа» и «идеальной прямой секретностью». Способы и системы для установки такого обмена данными описаны более подробно ниже. [0039] Transient key pairs or masked public keys may be used to provide non-traceability. However, since the sender ID is hidden to ensure untraceability, one consequence could be that the sender may deny that they sent the message. To prevent a sender from refusing to send messages, the message may contain a signature that is generated using the sender's static public key. Thus, untraceable keys can be used for encryption, while traceable keys can be used to generate a signature. Additionally, new and different public keys may be used in each key exchange and deleted immediately or shortly after the shared secret is established. Additionally, although traceable signatures may be used, they may be included in the encrypted portion of the message, so they cannot be used to track the sender or recipient of the message. Accordingly, secure communications with "non-traceable", "non-repudiation" and "perfect forward secrecy" can be established. Methods and systems for establishing such communications are described in more detail below.

I. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ ОБМЕНА ДАННЫМИ С ИСПОЛЬЗОВАНИЕМ КЛЮЧЕЙ ШИФРОВАНИЯI. ENSURING THE SECURITY OF DATA EXCHANGE WITH THE USE OF ENCRYPTION KEYS

[0040] Обмен ключами по методу Диффи-Хеллмана может позволять первому компьютеру и второму компьютеру установить секретный симметричный ключ по небезопасной сети без передачи самого секретного симметричного ключа. Обмен ключами по методу Диффи-Хеллмана не может быть основан на какой-либо информации, сохраненной ранее на первом или втором компьютере до обмена ключами. Например, алгоритм на основе метода Диффи-Хеллмана, такой как метод Диффи-Хеллмана на основе эллиптических кривых (ECDH), может быть использован для генерирования совместно используемого секрета из закрытого ключа первого компьютера и открытого ключа второго компьютера. Например, первый компьютер может генерировать первую пару ключей, включающую первый открытый ключ и первый закрытый ключ. Второй компьютер может генерировать вторую пару ключей, включающую второй открытый ключ и второй закрытый ключ. Первый компьютер может отправлять свой первый открытый ключ на второй компьютер, и второй компьютер может отправлять свой второй открытый ключ на первый компьютер. Первый компьютер может генерировать совместно используемый секрет с использованием второго открытого ключа второго компьютера и первого закрытого ключа первого компьютера. Второй компьютер может генерировать тот же совместно используемый секрет с использованием первого открытого ключа первого компьютера и второго закрытого ключа второго компьютера. Первый компьютер и второй компьютер могут оба использовать совместно используемый секрет для генерирования ключа сеанса для шифрования связи. По существу, первый компьютер и второй компьютер могут устанавливать безопасный обмен данными по небезопасной сети без использования какой-либо предварительно установленной информации. [0040] The Diffie-Hellman key exchange may allow the first computer and the second computer to establish a secret symmetric key over an insecure network without transmitting the secret symmetric key itself. The Diffie-Hellman key exchange cannot be based on any information previously stored on the first or second computer prior to the key exchange. For example, a Diffie-Hellman-based algorithm such as Elliptic Curve Diffie-Hellman (ECDH) can be used to generate a shared secret from a first computer's private key and a second computer's public key. For example, the first computer may generate a first key pair including a first public key and a first private key. The second computer may generate a second key pair including a second public key and a second private key. The first computer may send its first public key to the second computer, and the second computer may send its second public key to the first computer. The first computer may generate a shared secret using the second public key of the second computer and the first private key of the first computer. The second computer may generate the same shared secret using the first public key of the first computer and the second private key of the second computer. The first computer and the second computer may both use the shared secret to generate a session key to encrypt the communication. As such, the first computer and the second computer can establish secure communication over an insecure network without using any pre-established information.

[0041] Фиг. 1 представляет собой упрощенную схему 100 потока сообщений, иллюстрирующую безопасный обмен данными между клиентским компьютером 140 и серверным компьютером 180, в соответствии с некоторыми вариантами осуществления. Схема 100 потока сообщений может быть использована между любым первым компьютером и любым вторым компьютером. Разделение на клиент/сервер, используемое в настоящем документе, является лишь иллюстративным и сделано для улучшения понятности. В некоторых вариантах осуществления клиентский компьютер 140 может выполнять операции, описанные как выполняемые серверным компьютером 180. В некоторых вариантах осуществления серверный компьютер 180 может выполнять операции, описанные как выполняемые клиентским компьютером 140. [0041] FIG. 1 is a simplified message flow diagram 100 illustrating secure communications between client computer 140 and server computer 180, in accordance with some embodiments. The message flow scheme 100 may be used between any first computer and any second computer. The client/server division used in this document is illustrative only and is done to improve understanding. In some embodiments, client computer 140 may perform the operations described as being performed by server computer 180. In some embodiments, server computer 180 may perform operations described as being performed by client computer 140.

[0042] Обращаясь к фиг. 1, клиентский компьютер 140 может хранить пару ключей клиента, содержащую открытый ключ и закрытый ключ клиента, соответствующий открытому ключу клиента. Пара ключей клиента может быть статической. Серверный компьютер 180 может хранить пару ключей сервера, содержащую открытый ключ сервера и закрытый ключ сервера, соответствующий открытому ключу сервера. Пара ключей сервера может быть статической. Клиентский компьютер 140 и серверный компьютер 180 могут обмениваться данными по небезопасной сети 160 (например, Интернет или беспроводной локальной сети). Небезопасная сеть 160 может быть «небезопасной» в том смысле, что сама среда обмена данными физически не безопасна, или она может быть «небезопасной» в том смысле, что сообщения не передаются непосредственно между двумя сторонами, а также проходят через другие третьи стороны в сети. [0042] Referring to FIG. 1, client computer 140 may store a client key pair containing a public key and a client private key corresponding to the client's public key. The client key pair can be static. The server computer 180 may store a server key pair containing the server's public key and a server's private key corresponding to the server's public key. The server key pair can be static. Client computer 140 and server computer 180 may communicate over an insecure network 160 (eg, the Internet or a wireless LAN). An insecure network 160 may be "insecure" in the sense that the communication medium itself is not physically secure, or it may be "insecure" in the sense that messages are not transmitted directly between two parties but also pass through other third parties on the network. .

[0043] Клиентский компьютер 140 и серверный компьютер 180 могут выполнять обмен ключами для установки безопасного обмена данными по небезопасной сети 160. Например, клиентский компьютер 140 и серверный компьютер 180 могут выполнять обмен ключами по методу Диффи-Хеллмана, как описано выше, для установки совместно используемого секрета между клиентским компьютером 140 и серверным компьютером 180. Каждый из клиентского компьютера 140 и серверного компьютера 180 могут формировать ключ сеанса из совместно используемого секрета для шифрования и расшифровывания сообщений, которыми они обмениваются между собой. [0043] Client computer 140 and server computer 180 may perform a key exchange to establish secure communications over insecure network 160. For example, client computer 140 and server computer 180 may perform a Diffie-Hellman key exchange as described above to establish a joint a shared secret between client computer 140 and server computer 180. Client computer 140 and server computer 180 can each generate a session key from a shared secret to encrypt and decrypt messages they exchange with each other.

[0044] На этапе 101 клиентский компьютер 140 может передавать сообщение с запросом на серверный компьютер 180 для инициирования установки безопасного обмена данными. В некоторых вариантах осуществления сообщение с запросом может содержать идентификационные данные. Клиентский компьютер 140 может шифровать идентификационные данные сообщения с ответом с использованием совместно используемого секрета для получения зашифрованных идентификационных данных. Клиентский компьютер 140 может передавать сообщение с запросом, содержащее зашифрованные идентификационные данные, на серверный компьютер 180 по небезопасной сети 160. [0044]At the stage 101, the client computer 140 may send a request message to the server computer 180 to initiate the establishment of a secure communication. In some embodiments, the request message may contain identification data. The client computer 140 may encrypt the identity of the response message using the shared secret to obtain the encrypted identity. Client computer 140 may send a challenge message containing encrypted credentials to server computer 180 over insecure network 160.

[0045] Серверный компьютер 180 может принимать сообщение с запросом от клиентского компьютера 140 по небезопасной сети 160. Серверный компьютер 180 может расшифровывать зашифрованные идентификационные данные сообщения с запросом с использованием совместно используемого секрета (например, с использованием ключа сеанса, сформированного на основе совместно используемого секрета). Серверный компьютер 180 также может проверять идентификационные данные на основе данных, хранимых на серверном компьютере 180. Серверный компьютер 180 может затем шифровать полезные данные для клиентского компьютера 140 с использованием совместно используемого секрета для получения зашифрованных полезных данных. В некоторых вариантах осуществления серверный компьютер 180 может генерировать второй совместно используемый секрет для использования с целью шифрования полезных данных серверного компьютера. [0045] Server computer 180 may receive a challenge message from client computer 140 over insecure network 160. Server computer 180 may decrypt the encrypted challenge message credentials using the shared secret (e.g., using a session key generated from the shared secret ). Server computer 180 may also verify the identity against data stored on server computer 180. Server computer 180 may then encrypt the payload for client computer 140 using the shared secret to obtain the encrypted payload. In some embodiments, server computer 180 may generate a second shared secret for use in encrypting server computer payloads.

[0046] На этапе 102 серверный компьютер 180 может передавать сообщение с ответом, содержащее зашифрованные полезные данные, на клиентский компьютер 140. Серверный компьютер 180 может передавать данные ответа на клиентский компьютер 140 в ответ на проверку идентификационных данных, принятых от клиентского компьютера 140. Клиентский компьютер 140 может принимать сообщение с ответом и расшифровывать зашифрованные полезные данные с использованием ключа сеанса для получения полезных данных с серверного компьютера 180. Таким образом, клиентский компьютер 140 и серверный компьютер 180 могут установить безопасный обмен данными по небезопасной сети 160 путем выполнения обмена ключами по методу Диффи-Хеллмана. [0046] In step 102, server computer 180 may send a response message containing the encrypted payload to client computer 140. Server computer 180 may send response data to client computer 140 in response to an identity verification received from client computer 140. Client computer 140 may receive the response message and decrypt the encrypted payload using the session key to obtain payload data from server computer 180. Thus, client computer 140 and server computer 180 can establish secure communication over insecure network 160 by performing a key exchange using the method Diffie-Hellman.

[0047] Однако обмен ключами, описанный выше в отношении фиг. 1, может включать отправку первым компьютером (например, клиентским компьютером 140) его первого открытого ключа на второй компьютер (например, серверный компьютер 180) и отправку вторым компьютером его второго открытого ключа на первый компьютер. Таким образом, компьютер перехвата может перехватывать сообщения для отслеживания идентификатора первого компьютера на основе первого открытого ключа и для отслеживания идентификатора второго компьютера на основе второго открытого ключа. В дополнение компьютер перехвата может произвести атаку через посредника или сымитировать первый компьютер или второй компьютер. Некоторые из вариантов осуществления, описанных ниже, устраняют эти недостатки. [0047] However, the key exchange described above with respect to FIG. 1 may include the first computer (eg, client computer 140) sending its first public key to a second computer (eg, server computer 180) and the second computer sending its second public key to the first computer. Thus, the intercept computer can intercept messages to track the first computer's ID based on the first public key and to track the second computer's ID based on the second public key. In addition, the interception computer may perform a proxy attack or spoof the first computer or the second computer. Some of the embodiments described below overcome these shortcomings.

II. БЕЗОПАСНЫЙ И НЕОТСЛЕЖИВАЕМЫЙ ОБМЕН ДАННЫМИII. SECURE AND UNTRACKED DATA EXCHANGE

[0048] Как обсуждено выше, обмен открытыми ключами (например, обмен ключами по методу Диффи-Хеллмана) может включать открытую отправку статических открытых ключей (например, в незашифрованном виде). Если для безопасного обмена данными между двумя компьютерами нет больше других средств, то открытые ключи не могут быть сами по себе зашифрованы. Однако компьютер третьей стороны может перехватывать сообщения (например, поскольку они отправляются по небезопасной сети, такой как Интернет) и идентифицировать два компьютера на основе их статических открытых ключей. Это может позволить третьей стороне отслеживать компьютеры. [0048] As discussed above, public key exchange (eg, Diffie-Hellman key exchange) may involve sending static public keys publicly (eg, unencrypted). If there are no other means to securely exchange data between two computers, then the public keys themselves cannot be encrypted. However, a third party computer can intercept the messages (for example, because they are sent over an insecure network such as the Internet) and identify the two computers based on their static public keys. This may allow a third party to track computers.

A. Способ установки безопасного и неотслеживаемого обмена даннымиA. How to establish a secure and untraceable communication

[0049] Отслеживаемость сообщений является проблемой, поскольку это может позволить компьютеру третьей стороны отслеживать определенные компьютеры, нарушая тем самым конфиденциальность обмена данными и приватность компьютера и его пользователей. Для решения проблемы отслеживаемости клиентский компьютер может генерировать пару кратковременных ключей, которая отличается от его пары статических ключей, и использовать кратковременный открытый ключ при обмене ключами. Клиентский компьютер может удалять данную пару кратковременных ключей после установки совместно используемого секрета и генерировать новые пары кратковременных ключей при установке последующих каналов безопасного обмена данными. Таким образом, открытый обмен кратковременными открытыми ключами не позволяет отслеживать третьей стороне перехвата клиентский компьютер, поскольку данный конкретный кратковременный открытый ключ используется только клиентом в данном одном сеансе обмена данными. [0049] Message traceability is a problem because it can allow a third party computer to track certain computers, thereby violating the confidentiality of communications and the privacy of the computer and its users. To solve the traceability problem, the client computer can generate a short-lived key pair that is different from its static key pair and use the short-lived public key in the key exchange. The client computer MAY delete this short-lived key pair after the shared secret is established, and generate new short-lived key pairs when subsequent secure communication channels are established. Thus, the open exchange of short-lived public keys does not allow a third party to intercept the client computer, since this particular short-lived public key is used only by the client in this one communication session.

[0050] Фиг. 2 представляет собой схему 200 потока сообщений клиентского компьютера 240 и серверного компьютера 280 с установкой безопасного обмена данными с использованием неотслеживаемых сообщений в соответствии с некоторыми вариантами осуществления. Перед потоком сообщений по фиг. 2 клиентский компьютер 240 может сохранить полезные данные 252 клиента и сертификат 288 сервера серверного компьютера 280. Клиентский компьютер 240 может получить сертификат 288 серверного компьютера с использованием потока сообщений, например, описанного ниже в отношении фиг. 3. [0050] FIG. 2 is a message flow diagram 200 of a client computer 240 and a server computer 280 setting up secure communications using untraceable messages, in accordance with some embodiments. Before the message flow of FIG. 2, client computer 240 may store client payload 252 and server computer 280 server certificate 288. Client computer 240 may obtain server computer certificate 288 using a message flow such as that described below with respect to FIG. 3.

[0051] Серверный компьютер 280 может хранить пару 286 статических ключей сервера, содержащую статический закрытый ключ 282 сервера и статический открытый ключ 284 сервера. Серверный компьютер 280 может также хранить сертификат 288 сервера. Сертификат 288 сервера может содержать статический открытый ключ 284 сервера и подпись органа сертификации для аутентификации серверного компьютера 288. Статический закрытый ключ 282 сервера и статический открытый ключ 284 сервера могут быть «статическими» в том смысле, что они не изменяются с течением времени, позволяя осуществлять аутентификацию серверного компьютера 288 с использованием сертификата 288 сервера. Серверный компьютер 280 может также хранить полезные данные 292 сервера. Полезные данные 292 сервера могут быть обработаны как закрытые данные, так что они не передаются открыто без шифрования. [0051] The server computer 280 may store a pair of static server keys 286 containing a static private key 282 of the server and a static public key 284 of the server. The server computer 280 may also store the server certificate 288 . The server certificate 288 may contain a static server public key 284 and a certification authority signature to authenticate the server computer 288. The server static private key 282 and the server static public key 284 may be "static" in the sense that they do not change over time, allowing authentication of the server computer 288 using the certificate 288 of the server. Server computer 280 may also store payload data 292 of the server. The server payload 292 can be treated as private data so that it is not transmitted openly without encryption.

[0052] В данном потоке сообщений клиентский компьютер 240 может инициировать установку безопасного обмена данными. На этапе 201 клиентский компьютер 240 может генерировать кратковременный закрытый ключ клиента. Кратковременный закрытый ключ клиента может быть сгенерирован случайным образом. [0052] In this message flow, the client computer 240 may initiate the establishment of a secure communication. At block 201, client computer 240 may generate a client's short-lived private key. The client's short-term private key can be randomly generated.

[0053] На этапе 202 клиентский компьютер 240 может определить кратковременный открытый ключ клиента с использованием кратковременного закрытого ключа клиента. Кратковременный закрытый ключ клиента и кратковременный открытый ключ клиента могут образовывать пару ключей для использования в криптографии с открытым ключом. [0053] At step 202, the client computer 240 may determine the client's short-lived public key using the client's short-lived private key. The client's short-term private key and the client's short-term public key may form a key pair for use in public key cryptography.

[0054] На этапе 203 клиентский компьютер 240 может определить первый совместно используемый секрет с использованием кратковременного закрытого ключа клиента и статического открытого ключа 284 сервера, который может быть включен в сертификат 288 сервера. Клиентский компьютер 240 может определить первый ключ сеанса с использованием функции формирования ключа на основе совместно используемого секрета, идентификатора серверного компьютера 280 и идентификатора сеанса обмена данными. [0054] At step 203, the client computer 240 may determine the first shared secret using the client's short-lived private key and the server's static public key 284, which may be included in the server's certificate 288. The client computer 240 may determine the first session key using a key derivation function based on the shared secret, the server computer 280 ID, and the communication session ID.

[0055] На этапе 204 клиентский компьютер 240 может шифровать полезные данные 252 клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Полезные данные 252 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 280. После шифрования полезных данных 252 клиента клиентский компьютер 240 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0055] At 204, client computer 240 may encrypt client payload 252 using a first shared secret (eg, using a first session key) to determine encrypted client data. The client payload 252 may contain private client data and/or a request for certain data or information from the server computer 280. After the client payload 252 is encrypted, the client computer 240 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0056] На этапе 205 клиентский компьютер 240 может передавать «сообщение с запросом», содержащее кратковременный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 280. Кратковременный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 240 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 280 может принимать сообщение с запросом от клиентского компьютера 240. Поскольку кратковременный открытый ключ клиента используется только для данного сеанса обмена данными (кратковременный закрытый ключ клиента обнуляется на этапе 214), то он не может быть использован для отслеживания клиентского компьютера 240. Таким образом, сообщение с запросом, отправленное на этапе 205, является неотслеживаемым. [0056] At step 205, client computer 240 may send a "request message" containing the client's short-lived public key and encrypted client data to server computer 280. The client's short-term public key may be sent in the clear (eg, unencrypted). The request message may indicate that the client computer 240 is requesting the establishment of a secure communication using a shared secret based on the client's masked public key. The request message may be sent over an insecure network. Server computer 280 may receive a request message from client computer 240. Because the client's short-lived public key is only used for this communication session (client's short-lived private key is reset at step 214), it cannot be used to track client computer 240. Thus , the request message sent in step 205 is untraceable.

[0057] На этапе 206 серверный компьютер 280 может определить первый совместно используемый секрет с использованием статического закрытого ключа 282 сервера и замаскированного открытого ключа клиента. Первый совместно используемый секрет, определенный серверным компьютером на этапе 206 с использованием статического закрытого ключа 282 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 240 на этапе 203 с использованием кратковременного закрытого ключа клиента и статического открытого ключа 284 сервера. Серверный компьютер 280 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 240 с использованием функции формирования ключа на основе совместно используемого секрета, идентификатора серверного компьютера 280 и идентификатора сеанса обмена данными. [0057] At step 206, the server computer 280 may determine the first shared secret using the server's static private key 282 and the client's masked public key. The first shared secret determined by the server computer in step 206 using the server's static private key 282 and the client's masked public key may be the same as the first shared secret generated by the client computer 240 in step 203 using the client's short lived private key and static public key 284 server. The server computer 280 may also determine the same first session key determined by the client computer 240 using a key derivation function based on the shared secret, the server computer 280 ID, and the communication session ID.

[0058] На этапе 207 серверный компьютер 280 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 252 клиента. После расшифровывания полезных данных 252 клиента серверный компьютер 280 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. В этот момент серверный компьютер 280 может обрабатывать полезные данные 252 клиента и генерировать или идентифицировать какие-либо подходящие данные или информацию для включения в полезные данные 292 сервера, предоставляемые в ответ на запрос клиентского компьютера. [0058] At step 207, the server computer 280 may decrypt the encrypted client data using the first shared secret (eg, using the first session key) to obtain the client payload 252. After the client payload 252 is decrypted, the server computer 280 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key. At this point, the server computer 280 may process the client payload 252 and generate or identify any suitable data or information to include in the server payload 292 provided in response to the client computer's request.

[0059] На этапе 208 серверный компьютер 280 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 280 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано ниже. Например, серверный компьютер 280 может применять маскирующий коэффициент сервера к статическому открытому ключу 284 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 280 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 240 и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, серверный компьютер 280 может не отслеживаться третьими сторонами на основе замаскированного открытого ключа сервера. [0059] At 208, server computer 280 may generate a server masking factor. The server masking factor may be a randomly generated cryptographic nonce. The server computer 280 may use a server masking factor to prevent third parties from tracking it, as described below. For example, server computer 280 may apply a server masking factor to the server's static public key 284 (eg, using a multiplication) to determine the server's masked public key. Server computer 280 may use only this server mask factor and this masked server public key in this particular communication session with client computer 240, and may generate a different mask factor for subsequent communication sessions. Thus, server computer 280 may not be tracked by third parties based on the server's masked public key.

[0060] На этапе 209 серверный компьютер 280 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 282 сервера и кратковременного открытого ключа клиента. Серверный компьютер 280 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0060] At 209, the server computer 280 may determine a second shared secret using the server's masking factor, the server's static private key 282, and the client's short-lived public key. Server computer 280 may also determine a second session key using a key derivation function and a second shared secret.

[0061] На этапе 210 серверный компьютер 280 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 280 может применять маскирующий коэффициент сервера к статическому открытому ключу 284 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. [0061] At step 210, the server computer 280 may determine the server's masked public key using the server's masking factor and the server's static public key. For example, server computer 280 may apply a server masking factor to the server's static public key 284 (eg, using a multiplication) to determine the server's masked public key.

[0062] На этапе 211 серверный компьютер 280 может шифровать маскирующий коэффициент сервера, сертификат 288 сервера и полезные данные 292 сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. [0062] In step 211, server computer 280 may encrypt the server masking factor, server certificate 288, and server payload 292 using a second shared secret (eg, using a second session key) to obtain encrypted server data.

[0063] На этапе 212 серверный компьютер 280 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 240. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 280 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 280. Клиентский компьютер 240 может принимать сообщение с ответом. [0063] At 212, server computer 280 may send a response message containing the server's masked public key and encrypted server data to client computer 240. The response message may be sent over an insecure network. The server's disguised public key may be sent in the clear (eg, unencrypted). However, the server's masked public key is based on the server's masking factor, which can only be used in that particular communication session. Accordingly, server computer 280 cannot be tracked by a third party intercepting this message and other messages sent by server computer 280. Client computer 240 can receive a response message.

[0064] На этапе 213 клиентский компьютер 240 может определить второй совместно используемый секрет с использованием кратковременного закрытого ключа клиента и замаскированного открытого ключа сервера. Второй совместно используемый секрет, определенный клиентским компьютером 240 на этапе 213, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 280 на этапе 209 с использованием кратковременного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа 284 сервера. Клиентский компьютер 240 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 280) с использованием функции формирования ключа и второго совместно используемого секрета. [0064] At 213, the client computer 240 may determine a second shared secret using the client's short-lived private key and the server's masked public key. The second shared secret determined by the client computer 240 at step 213 may be the same as the second shared secret determined by the server computer 280 at step 209 using the client's short-lived public key, the server's masking factor, and the server's static private key 284. The client computer 240 may also determine the same second session key (which is also determined by the server computer 280) using a key derivation function and a second shared secret.

[0065] На этапе 214 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 240 может обнулить кратковременный закрытый ключ клиента. То есть клиентский компьютер 240 может удалить кратковременный закрытый ключ клиента, так что его нельзя будет позже восстановить. Кроме того, даже если кратковременный закрытый ключ клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием кратковременного закрытого ключа клиента, поскольку данный кратковременный закрытый ключ клиента был использован только для расшифровывания данного конкретного сообщения с ответом. [0065] At step 214, after determining the second shared secret and the second session key, the client computer 240 may reset the client's short-lived private key. That is, the client computer 240 can delete the client's transient private key so that it cannot be recovered later. In addition, even if the client's short-lived private key was decrypted and received by a third party shortly before it was reset to zero, the third party would not be able to decrypt any other communication using the client's short-lived private key, since this client's short-lived private key was only used to decrypt this particular response message.

[0066] На этапе 215 клиентский компьютер 240 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата 288 сервера и полезных данных 292 сервера. [0066] At step 215, the client computer 240 may decrypt the encrypted server data using the second shared secret (eg, using the second session key) to obtain the server masking factor, the server certificate 288, and the server payload 292.

[0067] На этапе 216 клиентский компьютер 240 может проверять замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера и статического открытого ключа 284 сервера, который включен в сертификат 288 сервера. Клиентский компьютер 240 может аутентифицировать, что серверный компьютер 280 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера. [0067] At step 216, the client computer 240 can verify the server's masked public key by regenerating it using the server's masking factor and the server's static public key 284 that is included in the server's certificate 288. The client computer 240 can authenticate that the server computer 280 sent the response message based on the server's verifiable masked public key.

[0068] На этапе 217 клиентский компьютер 240 и серверный компьютер 280 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0068] At 217, client computer 240 and server computer 280 may end the communication session, or they may continue secure communication using the second session key.

[0069] Поток сообщений по фиг. 2 позволяет клиентскому компьютеру 240 и серверному компьютеру 280 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 240, серверного компьютера 280 и их пользователей. Однако поток сообщений по фиг. 2 требует сохранения клиентским компьютером 240 сертификата 288 сервера серверного компьютера, который содержит статический открытый ключ 284 сервера, используемый при генерировании первого совместно используемого секрета. Соответственно, клиентский компьютер 240 должен раньше получить сертификат 288 сервера. [0069] The message flow of FIG. 2 allows the client computer 240 and the server computer 280 to establish a secure communication using untraceable messages, thereby ensuring the confidentiality of the communication and maintaining the privacy of the client computer 240, server computer 280 and their users. However, the message flow of FIG. 2 requires the client computer 240 to store the server computer's server certificate 288, which contains the server's static public key 284 used in generating the first shared secret. Accordingly, the client computer 240 must obtain the server certificate 288 earlier.

B. Способ получения сертификата с использованием неотслеживаемого обмена даннымиB. How to obtain a certificate using untraceable data exchange

[0070] Как обсуждено выше, отслеживаемость сообщений является проблемой, поскольку это может позволить компьютеру третьей стороны отслеживать определенные компьютеры, нарушая тем самым конфиденциальность обмена данными и приватность компьютера и его пользователей. Для решения проблемы отслеживаемости клиентский компьютер может генерировать пару кратковременных ключей, которая отличается от его пары статических ключей. Как описано выше со ссылкой на фиг. 2, клиентский компьютер может отправлять кратковременный открытый ключ на серверный компьютер без нарушения конфиденциальности или приватности. Однако, если клиентский компьютер еще не сохранил копию открытого ключа серверного компьютера (например, на основе сертификата серверного компьютера), то клиентский компьютер не может установить совместно используемый секрет с серверным компьютером с использованием криптографии с открытым ключом. Эта ситуация является проблематичной, поскольку клиентский компьютер должен иметь возможность проверить, что сертификат, принятый в сообщении с ответом от серверного компьютера, представляет собой в действительности тот сертификат серверного компьютера (не сертификат другого компьютера), при этом серверный компьютер не может предоставить свой статический открытый ключ на клиентский компьютер открыто вследствие проблемы отслеживаемости, описанной в настоящем документе. Соответственно, клиентский компьютер должен получить сертификат серверного компьютера с использованием безопасного и неотслеживаемого обмена сообщениями для сохранения конфиденциальности и приватности. [0070] As discussed above, message traceability is a problem because it can allow a third party computer to track certain computers, thereby violating the confidentiality of communications and the privacy of the computer and its users. To solve the traceability problem, the client computer can generate a short-lived key pair that is different from its static key pair. As described above with reference to FIG. 2, the client computer can send the short-lived public key to the server computer without violating confidentiality or privacy. However, if the client computer has not already stored a copy of the server computer's public key (for example, based on the server computer's certificate), then the client computer cannot establish a shared secret with the server computer using public key cryptography. This situation is problematic because the client computer must be able to verify that the certificate received in the response message from the server computer is in fact the server computer's certificate (not another computer's certificate), without the server computer being able to provide its static public key on the client computer is open due to the traceability issue described in this document. Accordingly, the client computer must obtain the server computer's certificate using secure and untraceable messaging to maintain confidentiality and privacy.

[0071] Фиг. 3 представляет собой схему 300 потока сообщений клиентского компьютера 340, безопасно получающего сертификат с серверного компьютера 380 с использованием неотслеживаемых сообщений, в соответствии с некоторыми вариантами осуществления. Перед потоком сообщений по фиг. 2 клиентский компьютер 340 может не сохранять сертификат 388 сервера серверного компьютера 380. [0071] FIG. 3 is a message flow diagram 300 of a client computer 340 securely obtaining a certificate from a server computer 380 using untraceable messages, in accordance with some embodiments. Before the message flow of FIG. 2, the client computer 340 may not store the server computer 380 server certificate 388.

[0072] Серверный компьютер 380 может хранить пару 386 статических ключей сервера, содержащую статический закрытый ключ 382 сервера и статический открытый ключ 384 сервера. Серверный компьютер 380 может также хранить сертификат 388 сервера. Сертификат 288 сервера может содержать статический открытый ключ 384 сервера и подпись органа сертификации для аутентификации серверного компьютера 388. Статический закрытый ключ 382 сервера и статический открытый ключ 284 сервера могут быть «статическими» в том смысле, что они не изменяются с течением времени, позволяя осуществлять аутентификацию серверного компьютера 388 с использованием сертификата 388 сервера. Серверный компьютер 380 может также хранить полезные данные 392 сервера. Полезные данные 392 сервера могут быть обработаны как закрытые данные, так что они не передаются открыто без шифрования. [0072] The server computer 380 may store a static server key pair 386 containing a server static private key 382 and a server static public key 384. The server computer 380 may also store the server certificate 388 . The server certificate 288 may contain a static server public key 384 and a certification authority signature to authenticate the server computer 388. The server static private key 382 and the server static public key 284 may be "static" in the sense that they do not change over time, allowing authentication of the server computer 388 using the certificate 388 of the server. Server computer 380 may also store server payload 392 . The server payload 392 can be treated as private data so that it is not transmitted openly without encryption.

[0073] В данном потоке сообщений клиентский компьютер 340 может инициировать установку безопасного обмена данными. На этапе 301 клиентский компьютер 340 может генерировать кратковременный закрытый ключ клиента. Кратковременный закрытый ключ клиента может быть сгенерирован случайным образом. [0073] In this message flow, the client computer 340 may initiate the establishment of a secure communication. At step 301, the client computer 340 can generate a client's short-lived private key. The client's short-term private key can be randomly generated.

[0074] На этапе 302 клиентский компьютер 340 может определить кратковременный открытый ключ клиента с использованием кратковременного закрытого ключа клиента. Кратковременный закрытый ключ клиента и кратковременный открытый ключ клиента могут образовывать пару ключей для использования в криптографии с открытым ключом. [0074] At 302, the client computer 340 may determine the client's short-lived public key using the client's short-lived private key. The client's short-term private key and the client's short-term public key may form a key pair for use in public key cryptography.

[0075] На этапе 303 клиентский компьютер 340 может передавать «сообщение с запросом», содержащее кратковременный открытый ключ клиента, на серверный компьютер 380. Кратковременный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 340 запрашивает прием сертификата 388 сервера. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 380 может принимать сообщение с запросом от клиентского компьютера 340. Поскольку кратковременный открытый ключ клиента используется только для данного сеанса обмена данными (кратковременный закрытый ключ клиента обнуляется на этапе 310), то он не может быть использован для отслеживания клиентского компьютера 340. Таким образом, сообщение с запросом, отправленное на этапе 303, является неотслеживаемым. [0075] At 303, client computer 340 may send a "request message" containing the client's short-lived public key to server computer 380. The client's short-term public key may be sent in the clear (eg, unencrypted). The request message may indicate that the client computer 340 is requesting the acceptance of a server certificate 388 . The request message may be sent over an insecure network. The server computer 380 may receive a request message from the client computer 340. Because the client's short-lived public key is only used for this communication session (the client's short-lived private key is reset at step 310), it cannot be used to track the client computer 340. Thus , the request message sent in step 303 is untraceable.

[0076] На этапе 304 серверный компьютер 380 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 380 может использовать маскирующий коэффициент сервера для предотвращения отслеживания третьими сторонами его обмена данными, как описано ниже. Например, серверный компьютер 380 может применять маскирующий коэффициент сервера к статическому открытому ключу 384 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 380 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 340 и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, серверный компьютер 380 может не отслеживаться третьими сторонами на основе замаскированного открытого ключа сервера. [0076] At 304, server computer 380 may generate a server masking factor. The server masking factor may be a randomly generated cryptographic nonce. The server computer 380 may use a server masking factor to prevent third parties from snooping on its communications, as described below. For example, server computer 380 may apply a server masking factor to the server's static public key 384 (eg, using a multiplication) to determine the server's masked public key. Server computer 380 may only use a given server mask factor and a given masked server public key in a given communication session with client computer 340, and may generate a different mask factor for subsequent communication sessions. Thus, the server computer 380 may not be tracked by third parties based on the server's masked public key.

[0077] На этапе 305 серверный компьютер 380 может определить первый совместно используемый секрет с использованием статического закрытого ключа сервера 382 и кратковременного открытого ключа клиента. Серверный компьютер 380 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. Серверный компьютер 380 может использовать первый ключ сеанса для шифрования сертификата 388 сервера и полезные данные 392 сервера для передачи на клиентский компьютер 340. [0077] At step 305, the server computer 380 may determine the first shared secret using the server 382's static private key and the client's short-lived public key. The server computer 380 may determine the first session key using a key derivation function based on the first shared secret. The server computer 380 may use the first session key to encrypt the server certificate 388 and the server payload 392 for transmission to the client computer 340.

[0078] На этапе 306 серверный компьютер 380 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа 384 сервера. Например, серверный компьютер 380 может применять маскирующий коэффициент сервера к статическому открытому ключу 384 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. [0078] At step 306, the server computer 380 may determine the server's masked public key using the server's masking factor and the server's static public key 384. For example, server computer 380 may apply a server masking factor to the server's static public key 384 (eg, using a multiplication) to determine the server's masked public key.

[0079] На этапе 307 серверный компьютер 380 может шифровать маскирующий коэффициент сервера, сертификат 388 сервера и полезные данные 392 сервера с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения зашифрованных данных сервера. После шифрования серверный компьютер 380 может обнулить первый совместно используемый секрет и первый ключ сеанса. [0079] At step 307, server computer 380 may encrypt the server masking factor, server certificate 388, and server payload 392 using a first shared secret (eg, using a first session key) to obtain encrypted server data. After encryption, the server computer 380 may reset the first shared secret and the first session key.

[0080] На этапе 308 серверный компьютер 380 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 340. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 380 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 380. Клиентский компьютер 340 может принимать сообщение с ответом. [0080] At 308, server computer 380 may send a response message containing the server's masked public key and encrypted server data to client computer 340. The response message may be sent over an insecure network. The server's disguised public key may be sent in the clear (eg, unencrypted). However, the server's masked public key is based on the server's masking factor, which can only be used in that particular communication session. Accordingly, server computer 380 cannot be tracked by a third party intercepting this message and other messages sent by server computer 380. Client computer 340 can receive a response message.

[0081] На этапе 309 клиентский компьютер 340 может определить первый совместно используемый секрет с использованием кратковременного закрытого ключа клиента и замаскированного открытого ключа сервера. Первый совместно используемый секрет, определенный клиентским компьютером 340 на этапе 309, может быть таким же, как и первый совместно используемый секрет, определенный серверным компьютером 380 на этапе 305 с использованием кратковременного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа 284 сервера. Клиентский компьютер 340 может также определить такой же первый ключ сеанса (который также определен серверным компьютером 380) с использованием функции формирования ключа и первого совместно используемого секрета. [0081] At 309, the client computer 340 may determine the first shared secret using the client's short-lived private key and the server's masked public key. The first shared secret determined by the client computer 340 at step 309 may be the same as the first shared secret determined by the server computer 380 at step 305 using the client's short-lived public key, the server's masking factor, and the server's static private key 284. The client computer 340 may also determine the same first session key (which is also determined by the server computer 380) using the key derivation function and the first shared secret.

[0082] На этапе 310 после определения первого совместно используемого секрета и первого ключа сеанса клиентский компьютер 340 может обнулить кратковременный закрытый ключ клиента. То есть, клиентский компьютер 340 может удалить кратковременный закрытый ключ клиента, так что его нельзя будет позже восстановить. Кроме того, даже если кратковременный закрытый ключ клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием кратковременного закрытого ключа клиента, поскольку данный кратковременный закрытый ключ клиента был использован только для расшифровывания данного конкретного сообщения с ответом. [0082] At 310, after determining the first shared secret and the first session key, the client computer 340 may reset the client's short lived private key. That is, the client computer 340 can delete the client's transient private key so that it cannot be recovered later. In addition, even if the client's short-lived private key was decrypted and received by a third party shortly before it was reset to zero, the third party would not be able to decrypt any other communication using the client's short-lived private key, since this client's short-lived private key was only used to decrypt this particular response message.

[0083] На этапе 311 клиентский компьютер 340 может расшифровывать зашифрованные данные сервера с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения маскирующего коэффициента сервера, сертификата 388 сервера и полезных данных 392 сервера. [0083] At step 311, the client computer 340 may decrypt the encrypted server data using the first shared secret (eg, using the first session key) to obtain the server masking factor, the server certificate 388, and the server payload 392.

[0084] На этапе 312 клиентский компьютер 340 может проверять замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера и статического открытого ключа 384 сервера, который включен в сертификат 388 сервера. Клиентский компьютер 340 может аутентифицировать, что серверный компьютер 380 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера. [0084] At step 312, the client computer 340 can verify the server's masked public key by regenerating it using the server's masking factor and the server's static public key 384 that is included in the server's certificate 388. The client computer 340 can authenticate that the server computer 380 sent the response message based on the server's verifiable masked public key.

[0085] На этапе 313 клиентский компьютер 340 может сохранить сертификат 388 сервера, так что статический открытый ключ 384 сервера может быть использован для шифрования последующего обмена данными с серверным компьютером 380, такого как тот, что описан выше со ссылкой на фиг. 2. [0085] At step 313, the client computer 340 may store the server certificate 388 so that the server's static public key 384 may be used to encrypt subsequent communication with the server computer 380, such as that described above with reference to FIG. 2.

[0086] Потоки сообщений по фиг. 2 и фиг. 3 позволяют клиентскому компьютеру и серверному компьютеру устанавливать безопасный обмен данными с использованием неотслеживаемых сообщений, даже если клиентский компьютер ранее не сохранил открытый ключ серверного компьютера. Однако потоки сообщений по фиг. 2 и фиг. 3 не позволяют серверному компьютеру аутентифицировать клиентский компьютер без отправки дополнительных сообщений или включения дополнительных данных в сообщения с запросом и ответом. Таким образом, может возникнуть проблема отказа. Например, клиентский компьютер может отрицать отправку сообщения с запросом. Соответственно, было бы полезно, чтобы сообщения обладали свойством «невозможности отказа», так чтобы сообщения не могли быть отправлены компьютером в отличие от сообщения, сохраняющего конкретный закрытый ключ, соответствующий конкретному открытому ключу, включенному в указанное сообщение. Также было бы преимущественно, чтобы сообщения с серверного компьютера также имели аутентифицируемые данные, так чтобы от сообщения нельзя было отказаться. [0086] The message flows of FIG. 2 and FIG. 3 allow the client computer and the server computer to establish a secure communication using untraceable messages, even if the client computer has not previously stored the server computer's public key. However, the message flows of FIG. 2 and FIG. 3 do not allow the server computer to authenticate the client computer without sending additional messages or including additional data in the request and response messages. Thus, a failure problem may arise. For example, the client computer might deny sending the request message. Accordingly, it would be useful for messages to have a "non-repudiation" property such that messages cannot be sent by a computer, as opposed to a message storing a specific private key corresponding to a specific public key included in said message. It would also be advantageous if messages from the server computer also had authenticated data, so that the message could not be rejected.

[0087] Кроме того, усложнение данной проблемы необходимо для сообщений для сохранения «идеальной прямой секретности». То есть рассекречивание закрытого ключа компьютера или одного сообщения не должно затем рассекречивать какие-либо предыдущие сообщения, которые могут быть перехвачены. Дополнительно сообщения должны быть неотслеживаемыми. Кроме того, использование сети и вычислительных ресурсов может быть уменьшено путем ограничения потока сообщений для установки безопасного обмена данными только для одного сообщения с запросом с клиентского компьютера и одного сообщения с ответом с серверного компьютера. Способы и системы, которые решают эти проблемы при использовании только одного сообщения с запросом с клиентского компьютера и одного сообщения с ответом с серверного компьютера, описаны более подробно ниже. [0087] In addition, the complication of this problem is necessary for messages to maintain "perfect forward secrecy". That is, declassifying a computer's private key or a single message should not then declassify any previous messages that could be intercepted. Additionally, messages must be untraceable. In addition, network and computing resource usage can be reduced by limiting the message flow to establish secure communication for only one request message from the client computer and one response message from the server computer. Methods and systems that solve these problems by using only one request message from the client computer and one response message from the server computer are described in more detail below.

III. БЕЗОПАСНЫЙ И НЕОТСЛЕЖИВАЕМЫЙ ОБМЕН ДАННЫМИ, ОБЕСПЕЧИВАЮЩИЙ ИДЕАЛЬНУЮ ПРЯМУЮ СЕКРЕТНОСТЬ И НЕВОЗМОЖНОСТЬ ОТКАЗА III. SECURE AND NEUTRALIZED DATA EXCHANGE FOR PERFECT FORWARD SECRETY AND NON-REFUSAL

[0088] В других потоках сообщений невозможность отслеживания может быть достигнута путем маскирования открытых ключей, которыми обмениваются открыто с использованием маскирующих коэффициентов. Такие потоки сообщений могут также достигать взаимной аутентификации двух компьютеров путем включения маскирующих коэффициентов в зашифрованные части сообщения, позволяя получателю сообщения аутентифицировать отправляющий компьютер путем сравнения замаскированного открытого ключа, принятого открыто, с совпадающим замаскированным открытым ключом, определенным путем применения маскирующего коэффициента к статическому открытому ключу, включенному в сертификат отправителя. Однако в таких потоках сообщений маскирующий коэффициент используется как для шифрования, так и для аутентификации. Соответственно, если закрытые ключи обоих устройств получены третьей стороной, третья сторона может расшифровывать любые новые сообщения, а также любые ранее перехваченные сообщения. Например, третья сторона может использовать статический закрытый ключ сервера вместе с замаскированным открытым ключом клиента (принятые открыто в сообщении с запросом) для генерирования совместно используемого секрета, который может быть использован для расшифровывания маскирующего коэффициента клиента (в зашифрованных полезных данных перехваченного сообщения с запросом). Затем третья сторона может расшифровывать сообщение с ответом, отправленное с сервера с использованием статического закрытого ключа клиента и маскирующего коэффициента клиента (полученных с сообщения с запросом, отправленного на сервер). Таким образом, третья сторона может расшифровывать ранее перехваченные сообщения, если они могут получать закрытые ключи как клиента, так и сервера. То есть, сообщения в данном примерном потоке сообщений нарушают «идеальную прямую секретность». [0088] In other message flows, non-traceability can be achieved by masking public keys that are exchanged openly using masking factors. Such message flows can also achieve mutual authentication of two computers by including masking factors in the encrypted portions of the message, allowing the recipient of the message to authenticate the sending computer by comparing the masked public key received in the open with a matching masked public key determined by applying the masking factor to the static public key, included in the sender's certificate. However, in such message flows, the masking factor is used for both encryption and authentication. Accordingly, if the private keys of both devices are obtained by a third party, the third party can decrypt any new messages as well as any previously intercepted messages. For example, a third party may use the server's static private key together with the client's masked public key (received in the open in the request message) to generate a shared secret that can be used to decrypt the client's masking factor (in the encrypted payload of the intercepted request message). The third party can then decrypt the response message sent from the server using the client's static private key and the client's masking factor (obtained from the request message sent to the server). Thus, a third party can decrypt previously intercepted messages if they can obtain the private keys of both the client and the server. That is, the messages in this exemplary message stream violate "ideal forward secrecy."

[0089] Обращаясь снова к фиг. 2, этот поток сообщений позволяет клиентскому компьютеру и серверному компьютеру установить безопасный обмен данными с использованием неотслеживаемых сообщений, обеспечивая при этом конфиденциальность обмена данными и сохраняя приватность клиентского компьютера, серверного компьютера и их пользователей. Однако клиентский компьютер не может аутентифицировать серверный компьютер, и серверный компьютер не может аутентифицировать клиентский компьютер отдельно на основе запроса и ответа. То есть клиентский компьютер и серверный компьютер не могут аутентифицировать друг друга без обмена дополнительными данными либо в запросе, либо в ответе, либо в дополнительных сообщениях обмена данными. [0089] Referring again to FIG. 2, this message flow allows the client computer and the server computer to establish a secure communication using untraceable messages while maintaining the confidentiality of the communication and preserving the privacy of the client computer, server computer, and their users. However, the client computer cannot authenticate the server computer, and the server computer cannot authenticate the client computer separately on a challenge and response basis. That is, the client computer and the server computer cannot authenticate each other without exchanging additional data, either in the request or in the response, or in additional communication messages.

[0090] Было бы преимущественным устанавливать безопасный обмен данными с использованием только одного сообщения с запросом и одного сообщения с ответом, при этом чтобы сообщения обладали свойством «невозможности отслеживания» с обеспечением при этом «невозможности отказа» от сообщений и сохранением «идеальной прямой секретности». [0090] It would be advantageous to establish a secure exchange of data using only one request message and one response message, while the messages have the property of "non-traceability" while providing "non-repudiation" of messages and maintaining "perfect forward secrecy" .

A. Безопасный обмен данными, обеспечивающий идеальную прямую секретность и невозможность отказа клиентаA. Secure communication for perfect forward secrecy and customer non-repudiation

[0091] Фиг. 4 представляет собой схему 400 потока сообщений клиентского компьютера 440 и серверного компьютера 480, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью, в соответствии с некоторыми вариантами осуществления. Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 440 на этапе 406, от которого не может отказаться клиентский компьютер 440. Сообщение с запросом на этапе 406 и сообщение с ответом с серверного компьютера 480 на этапе 415 являются неотслеживаемыми, поскольку они содержат кратковременные замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже. [0091] FIG. 4 is a diagram 400 of a message flow of a client computer 440 and a server computer 480 establishing secure and untraceable perfect forward secrecy communication, in accordance with some embodiments. This message flow contains a request message transmitted by the client computer 440 at step 406 that cannot be rejected by the client computer 440. The request message at step 406 and the response message from the server computer 480 at step 415 are untraceable because they contain short-term masked public keys instead of static public keys. In addition, the request and response message maintains perfect forward secrecy. The generation and format of the request and response messages are described in more detail below.

[0092] В данном потоке сообщений клиентский компьютер 440 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 440 может сохранять пару 446 статических ключей клиента, содержащую статический закрытый ключ 442 клиента и статический открытый ключ 444 клиента. Клиентский компьютер может также сохранять сертификат 448 клиента, который подписан органом сертификации и который содержит статический открытый ключ 444 клиента. Клиентский компьютер 440 может также сохранять сертификат 488 сервера. Дополнительно клиентский компьютер 440 может сохранять полезные данные 452 клиента, которые могут быть закрытыми данными. [0092] In this message flow, the client computer 440 may initiate the establishment of a secure communication. Prior to message flow, the client computer 440 may store a client static key pair 446 containing a client static private key 442 and a client static public key 444 . The client computer may also store a client certificate 448 that is signed by a certification authority and that contains the client's static public key 444 . The client computer 440 may also store the server certificate 488 . Additionally, client computer 440 may store client payload data 452, which may be private data.

[0093] На этапе 401 клиентский компьютер 440 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом. [0093] At 401, client computer 440 may generate a client masking factor. The client masking factor can be randomly generated.

[0094] На этапе 402 клиентский компьютер 440 может определить замаскированный открытый ключ клиента с использованием маскирующего коэффициента клиента. Маскирующий коэффициент клиента и замаскированный открытый ключ клиента могут образовывать пару ключей на основе эллиптической кривой, так что замаскированный открытый ключ клиента может быть использован для расшифровывания данных, которые зашифрованы с использованием маскирующего коэффициента клиента, и замаскированный открытый ключ клиента может быть использован для подтверждения подлинности подписи, сгенерированной путем подписывания данных посредством маскирующего коэффициента клиента. Таким образом, маскирующий коэффициент клиента может быть использован как закрытый ключ на основе эллиптической кривой. [0094] At 402, the client computer 440 may determine the client's masked public key using the client's masking factor. The client masking factor and the client masked public key can form an elliptic curve key pair, so that the client masked public key can be used to decrypt data that is encrypted using the client masking factor, and the client masked public key can be used to authenticate a signature. generated by signing data with a client masking factor. Thus, the client's masking factor can be used as a private key based on the elliptic curve.

[0095] На этапе 403 клиентский компьютер 440 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 484 сервера, который может быть включен в сертификат 488 сервера. Клиентский компьютер 440 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. [0095] At step 403, the client computer 440 may determine the first shared secret using the client's masking factor and the server's static public key 484, which may be included in the server's certificate 488. The client computer 440 may determine the first session key using a key derivation function based on the first shared secret.

[0096] На этапе 404 клиентский компьютер 440 может определить подпись клиента путем подписывания (с использованием статического закрытого ключа 442 клиента) полезных данных 452 клиента, замаскированного открытого ключа клиента и статического открытого ключа 484 сервера. Клиентский компьютер 440 может определить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись клиента может быть включена в сообщение с запросом с клиентского компьютера 440 для обеспечения невозможности отказа клиентского компьютера 440. Дополнительно подпись клиента основана на маскирующем коэффициенте клиента, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись клиента основана на статическом открытом ключе 484 сервера. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом. [0096] At 404, the client computer 440 can determine the client's signature by signing (using the client's static private key 442) the client payload 452, the client's masked public key, and the server's static public key 484. The client computer 440 may determine the client's signature, for example, using the Elliptic Curve Digital Signature Algorithm (ECDSA). The client signature may be included in the request message from the client computer 440 to ensure that the client computer 440 cannot be denied. Additionally, the client signature is based on a client masking factor that is used only in a given communication session (e.g., in a single request, single response message) . Thus, the signature is only valid for this particular request message. In addition, the client's signature is based on the static public key 484 of the server. Thus, the other computer may not impersonate the recipient of that particular request message.

[0097] В некоторых вариантах осуществления подпись клиента может также быть основана на начальном значении, указывающем новизну (например, своевременность) сообщения с запросом. Начальное значение может также быть включено в зашифрованные данные клиента, так что получатель сообщения с запросом может проверять, что сообщение не старое, на основе значения начального значения. Начальное значение может представлять собой, например, доверенное время или счетчик. Серверный компьютер 480 может получать свое собственное доверенное время или значение счетчика для проверки начального значения в сообщении с запросом. [0097] In some embodiments, the client's signature may also be based on a seed indicating the novelty (eg, timeliness) of the request message. The seed may also be included in the encrypted client data so that the recipient of the request message can verify that the message is not old based on the value of the seed. The initial value may be, for example, a trusted time or a counter. The server computer 480 may receive its own trusted time or counter value to verify the seed in the request message.

[0098] На этапе 405 клиентский компьютер 440 может шифровать полезные данные 452 клиента, сертификат 448 клиента, подпись клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 452 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 480. После шифрования полезных данных 452 клиента клиентский компьютер 440 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0098] At step 405, the client computer 440 may encrypt the client payload 452, the client certificate 448, the client signature, and the client's masked public key using the first shared secret (eg, using the first session key) to determine the encrypted client data. The client computer may perform the encryption, for example, using the Authenticated Associated Data Encryption (AEAD) process. The client payload 452 may contain private client data and/or a request for specific data or information from the server computer 480. After the client payload 452 is encrypted, the client computer 440 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0099] На этапе 406 клиентский компьютер 440 может передавать «сообщение с запросом», содержащее замаскированный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 480. Замаскированный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 440 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 480 может принимать сообщение с запросом от клиентского компьютера 440. [0099] At 406, client computer 440 may send a "request message" containing the client's masked public key and encrypted client data to server computer 480. The client's masked public key may be sent in the clear (eg, unencrypted). The request message may indicate that the client computer 440 is requesting the establishment of a secure communication using a shared secret based on the client's masked public key. The request message may be sent over an insecure network. Server computer 480 may receive a request message from client computer 440.

[0100] Поскольку замаскированный открытый ключ клиента используется только для данного сеанса обмена данными (маскирующий коэффициент клиента обнуляется на этапе 417), то он не может быть использован для отслеживания клиентского компьютера 440. Таким образом, сообщение с запросом, отправленное на этапе 405, является неотслеживаемым. [0100] Since the client's masked public key is only used for this communication session (the client's masking factor is set to zero at step 417), it cannot be used to track the client computer 440. Thus, the request message sent at step 405 is untraceable.

[0101] Дополнительно сообщение с запросом, отправленное на этапе 405, обеспечивает невозможность отказа клиентского компьютера 440, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента. [0101] Additionally, the challenge message sent at step 405 ensures that the client computer 440 cannot be refused because the client's encrypted data contains the client's signature, which was generated using the client's masking factor.

[0102] Дополнительно сообщение с запросом сохраняет идеальную прямую секретность, поскольку отсутствуют данные, включенные в сообщение с запросом, которое может быть использовано для расшифровывания каких-либо данных в других сообщениях, отправленных клиентским компьютером 440, в прошлом или будущем. Идеальная прямая секретность сохраняется, поскольку маскирующий коэффициент клиента не предоставлен в зашифрованных данных клиента. Например, подпись клиента используется для аутентификации клиентского компьютера 440 вместо использования маскирующего коэффициента. Однако подпись клиента не содержит информацию, которая может быть использована для расшифровывания сообщений с клиентского компьютера 440, даже если статический закрытый ключ 442 клиента и статический закрытый ключ 482 сервера рассекречены. [0102] Additionally, the request message maintains perfect forward secrecy because there is no data included in the request message that can be used to decrypt any data in other messages sent by client computer 440, past or future. Perfect forward secrecy is maintained because the client masking factor is not provided in the encrypted client data. For example, a client signature is used to authenticate the client computer 440 instead of using a masking factor. However, the client's signature does not contain information that can be used to decrypt messages from the client computer 440, even if the client's static private key 442 and the server's static private key 482 are decrypted.

[0103] На этапе 407 серверный компьютер 480 может определить первый совместно используемый секрет с использованием статического закрытого ключа 482 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 406 с использованием статического закрытого ключа 482 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 440 на этапе 403 с использованием маскирующего коэффициента клиента и статического открытого ключа 484 сервера. Серверный компьютер 480 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 440, с использованием функции формирования ключа на основе первого совместно используемого секрета. [0103] At 407, the server computer 480 may determine the first shared secret using the server's static private key 482 and the client's masked public key that was included in the request message. The first shared secret determined by the server computer in step 406 using the server's static private key 482 and the client's masked public key may be the same as the first shared secret generated by the client computer 440 in step 403 using the client's masking factor and the static public key 484 server. The server computer 480 may also determine the same first session key determined by the client computer 440 using a key derivation function based on the first shared secret.

[0104] На этапе 408 серверный компьютер 480 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 452 клиента, сертификата 448 клиента, подписи клиента и замаскированного открытого ключа клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 480 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0104] At 408, the server computer 480 may decrypt the encrypted client data using the first shared secret (eg, using the first session key) to obtain the client payload 452, the client certificate 448, the client signature, and the client's masked public key. The server computer may perform the decryption, for example, using an Authenticated Associated Data Encryption (AEAD) based decryption process. After decrypting the encrypted client data, the server computer 480 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0105] На этапе 409 серверный компьютер 480 может проверить подпись клиента с использованием статического открытого ключа 444 клиента, который включен в сертификат 448 клиента, полезные данные 452 клиента, замаскированный открытый ключ клиента и статический открытый ключ 484 сервера. Серверный компьютер 480 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). [0105] At step 409, the server computer 480 can verify the client's signature using the client's static public key 444, which is included in the client's certificate 448, the client payload 452, the client's masked public key, and the server's static public key 484. The server computer 480 may verify the client's signature, for example, using the Elliptic Curve Digital Signature Algorithm (ECDSA).

[0106] Серверный компьютер 480 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 448 клиента. Дополнительно серверный компьютер 480 может обрабатывать полезные данные 452 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 492 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера. [0106] The server computer 480 may also authenticate the certificate chain associated with the client certificate 448. Additionally, the server computer 480 may process the client payload 452 and generate or identify any suitable data or information to include in the server payload 492 to be provided in response to the client computer's request.

[0107] На этапе 410 серверный компьютер 480 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 480 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 480 может применять маскирующий коэффициент сервера к статическому открытому ключу 484 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 480 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 440 (например, в сообщении с запросом на этапе 406 и сообщении с ответом на этапе 415) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 480 может не отслеживаться на основе замаскированного открытого ключа сервера. [0107] At 410, server computer 480 may generate a server masking factor. The server masking factor may be a randomly generated cryptographic nonce. Server computer 480 may use a server mask to prevent third parties from tracking it, as described herein. For example, server computer 480 may apply a server masking factor to the server's static public key 484 (eg, using a multiplication) to determine the server's masked public key. The server computer 480 may use only the given server mask factor and the given server masked public key in that particular communication session with the client computer 440 (eg, in the request message at 406 and the response message at 415) and may generate a different mask factor for subsequent communication sessions. Thus, the identity of the server computer 480 may not be tracked based on the server's masked public key.

[0108] На этапе 411 серверный компьютер 480 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 482 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 480 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 480 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0108] At 411, the server computer 480 may determine the second shared secret using the server's masking factor, the server's static private key 482, and the client's masked public key. In some embodiments, the server computer 480 may store multiple static key pairs and it may use a different static key pair to encrypt the response message. Server computer 480 may also determine a second session key using a key derivation function and a second shared secret.

[0109] На этапе 412 серверный компьютер 480 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 480 может применять маскирующий коэффициент сервера к статическому открытому ключу сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Статический открытый ключ сервера, используемый для определения замаскированного открытого ключа сервера, может быть частью другой пары статических ключей, как обсуждено выше. [0109] At 412, the server computer 480 may determine the server's masked public key using the server's mask factor and the server's static public key. For example, server computer 480 may apply a server masking factor to the server's static public key (eg, using a multiplication) to determine the server's masked public key. The server's static public key used to determine the server's masked public key may be part of another static key pair, as discussed above.

[0110] На этапе 413 серверный компьютер 480 может шифровать маскирующий коэффициент сервера, сертификат сервера (соответствующий статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 492 сервера и замаскированного открытого ключа сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. Серверный компьютер 480 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). [0110] In step 413, the server computer 480 may encrypt the server masking factor, the server certificate (corresponding to the static public key of the static key pair used for encryption), the server payload 492, and the server's masked public key using a second shared secret (e.g., with using the second session key) to obtain encrypted server data. Server computer 480 may perform encryption, for example, using an authenticated data encryption (AEAD) process.

[0111] На этапе 414 серверный компьютер 480 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 440. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 480 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 480. Клиентский компьютер 440 может принимать сообщение с ответом. [0111] At 414, server computer 480 may send a response message containing the server's masked public key and encrypted server data to client computer 440. The response message may be sent over an insecure network. The server's disguised public key may be sent in the clear (eg, unencrypted). However, the server's masked public key is based on the server's masking factor, which can only be used in that particular communication session. Accordingly, server computer 480 cannot be tracked by a third party intercepting this message and other messages sent by server computer 480. Client computer 440 can receive a response message.

[0112] На этапе 416 клиентский компьютер 440 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 440 на этапе 416, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 480 на этапе 411 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 440 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 480) с использованием функции формирования ключа и второго совместно используемого секрета. [0112] At 416, the client computer 440 may determine the second shared secret using the client's masking factor and the server's masked public key that was received in the response message. The second shared secret determined by the client computer 440 at step 416 may be the same as the second shared secret determined by the server computer 480 at step 411 using the client's masked public key, the server's masking factor, and the server's static private key. The client computer 440 may also determine the same second session key (which is also determined by the server computer 480) using the key derivation function and the second shared secret.

[0113] На этапе 417 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 440 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 440 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность. [0113] At step 417, after determining the second shared secret and the second session key, the client computer 440 may reset the client masking factor to zero. That is, the client computer 440 may remove the client masking factor so that it cannot be recovered later. In addition, even if the client masking factor was decrypted and received by a third party in a short period of time before it was reset, the third party would not be able to decrypt any other communication using the client masking factor, it was only used to decrypt this particular response message. . Additionally, even if a third party gains access to both of the client computer's static private key and the server computer's static private key, it cannot decrypt the response message without obtaining the client's masking factor, which is set to zero immediately upon receipt of the response message. Thus, perfect forward secrecy is maintained.

[0114] На этапе 418 клиентский компьютер 440 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 492 сервера и замаскированного открытого ключа сервера. Клиентский компьютер 440 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). [0114] At step 418, the client computer 440 may decrypt the encrypted server data using the second shared secret (e.g., using the second session key) to obtain the server masking factor, the server certificate (corresponding to the static public key of the static key pair used for encryption) , server payload 492, and the server's masked public key. The client computer 440 may perform the decryption, for example, using an Authenticated Encrypted Associated Data (AEAD) decryption process.

[0115] На этапе 419 клиентский компьютер 440 может проверить замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера, включенного в сообщение с ответом, и статического открытого ключа сервера сертификата сервера, который также включен в сообщение с ответом. Клиентский компьютер 440 может аутентифицировать, что серверный компьютер 480 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера. Клиентский компьютер 440 может также подтверждать подлинность цепочки сертификата сервера, включенного в сообщение с ответом. [0115] At step 419, the client computer 440 can verify the masked server public key by regenerating it using the server masking factor included in the response message and the server certificate static public key that is also included in the response message. The client computer 440 can authenticate that the server computer 480 sent the response message based on the server's verifiable masked public key. The client computer 440 may also authenticate the server certificate chain included in the response message.

[0116] На этапе 420 клиентский компьютер 440 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен позже. Таким образом, третья сторона не сможет расшифровать сообщение с ответом, даже если она получила доступ к статическим закрытым ключам клиентского компьютера 440 и серверного компьютера 480, поскольку либо маскирующий коэффициент сервера, либо маскирующий коэффициент клиента требуются для расшифровки, и все из них обнулены. [0116] At 420, the client computer 440 may reset the server's masking factor so that it cannot be recovered later. Thus, a third party will not be able to decrypt the response message, even if it has access to the static private keys of the client computer 440 and server computer 480, because either the server mask factor or the client mask factor are required for decryption, and all of them are set to zero.

[0117] На этапе 421 клиентский компьютер 440 и серверный компьютер 480 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0117] At 421, client computer 440 and server computer 480 may end the communication session, or they may continue secure communication using the second session key.

[0118] Поток сообщений по фиг. 4 позволяет клиентскому компьютеру 440 и серверному компьютеру 480 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 440, серверного компьютера 480 и их пользователей. Дополнительно клиентский компьютер 480 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом. [0118] The message flow of FIG. 4 allows the client computer 440 and the server computer 480 to establish a secure communication using untraceable messages, thereby ensuring the confidentiality of the communication and maintaining the privacy of the client computer 440, server computer 480 and their users. Additionally, the client computer 480 cannot discard the request message because it contains the client's signature. In addition, request and response messages retain perfect forward secrecy because their encryption depends on the client's mask factor and the server's mask factor, which are set to zero as soon as they are no longer needed for the decryption process. Additionally, network and computing resource usage is reduced because the solution is achieved using only one request message and one response message.

B. Безопасный обмен данными, обеспечивающий идеальную прямую секретность и невозможность отказа клиента и сервераB. Secure communication providing perfect forward secrecy and non-repudiation of client and server

[0119] Фиг. 5 представляет собой схему 500 потока сообщений клиентского компьютера 540 и серверного компьютера 580, устанавливающих безопасный и неотслеживаемый обмен данными с идеальной прямой секретностью с использованием сообщений при невозможности отказа со стороны клиента и сервера, в соответствии с некоторыми вариантами осуществления. Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 540 на этапе 506, от которого не может отказаться клиентский компьютер 540, и сообщение с ответом, переданное серверным компьютером 580 на этапе 516, от которого не может отказаться серверный компьютер 580. Сообщение с запросом на этапе 506 и сообщение с ответом на этапе 516 являются неотслеживаемыми, поскольку они содержат одноразовые замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже. [0119] FIG. 5 is a message flow diagram 500 of a client computer 540 and a server computer 580 establishing a secure and untraceable perfect forward secrecy communication using client and server non-repudiation messages, in accordance with some embodiments. This message flow contains a request message sent by the client computer 540 at block 506, which cannot be refused by the client computer 540, and a response message sent by the server computer 580 at block 516, which cannot be refused by the server computer 580. The request message at step 506 and the response message at step 516 are untraceable because they contain one-time masked public keys instead of static public keys. In addition, the request and response message maintains perfect forward secrecy. The generation and format of the request and response messages are described in more detail below.

[0120] В данном потоке сообщений клиентский компьютер 540 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 540 может сохранять пару 546 статических ключей клиента, содержащую статический закрытый ключ 542 клиента и статический открытый ключ 544 клиента. Клиентский компьютер может также сохранять сертификат 548 клиента, который подписан органом сертификации и который содержит статический открытый ключ 544 клиента. Клиентский компьютер 540 может также сохранять сертификат 588 сервера. Дополнительно клиентский компьютер 540 может сохранять полезные данные 552 клиента, которые могут быть закрытыми данными. Определенные этапы в схеме 500 потока сообщений по фиг. 5 могут быть выполнены подобно этапам в схеме 400 потока сообщений по фиг. 4. [0120] In this message flow, the client computer 540 may initiate the establishment of a secure communication. Prior to message flow, the client computer 540 may store a client static key pair 546 containing the client's static private key 542 and the client's static public key 544. The client computer may also store a client certificate 548 that is signed by a certification authority and that contains the client's static public key 544 . The client computer 540 may also store the server's certificate 588. Additionally, client computer 540 may store client payload 552, which may be private data. Certain steps in the message flow diagram 500 of FIG. 5 may be performed similarly to the steps in the message flow diagram 400 of FIG. 4.

[0121] На этапе 501 клиентский компьютер 540 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом. [0121] At block 501, client computer 540 may generate a client masking factor. The client masking factor can be randomly generated.

[0122] На этапе 502 клиентский компьютер 540 может определить замаскированный открытый ключ клиента с использованием маскирующего коэффициента клиента. Маскирующий коэффициент клиента и замаскированный открытый ключ клиента могут образовывать пару ключей на основе эллиптической кривой, так что замаскированный открытый ключ клиента может быть использован для расшифровывания данных, которые зашифрованы с использованием маскирующего коэффициента клиента, и замаскированный открытый ключ клиента может быть использован для подтверждения подлинности подписи, сгенерированной путем подписывания данных посредством маскирующего коэффициента клиента. [0122] At step 502, the client computer 540 may determine the client's masked public key using the client's masking factor. The client masking factor and the client masked public key can form an elliptic curve key pair, so that the client masked public key can be used to decrypt data that is encrypted using the client masking factor, and the client masked public key can be used to authenticate a signature. generated by signing data with a client masking factor.

[0123] На этапе 503 клиентский компьютер 540 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 584 сервера, который может быть включен в сертификат 588 сервера. Клиентский компьютер 540 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. [0123] At step 503, the client computer 540 may determine the first shared secret using the client's masking factor and the server's static public key 584, which may be included in the server's certificate 588. The client computer 540 may determine the first session key using a key derivation function based on the first shared secret.

[0124] На этапе 504 клиентский компьютер 540 может определить подпись клиента путем подписывания полезных данных 552 клиента, замаскированного открытого ключа клиента и статического открытого ключа 584 сервера. Клиентский компьютер 540 может определить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись клиента может быть включена в сообщение с запросом с клиентского компьютера 540 для обеспечения невозможности отказа клиентского компьютера 540. Дополнительно подпись клиента основана на маскирующем коэффициенте клиента, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись клиента основана на статическом открытом ключе 584 сервера. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом. [0124] At block 504, the client computer 540 can determine the client's signature by signing the client payload 552, the client's masked public key, and the server's static public key 584. The client computer 540 may determine the client's signature, for example, using the Elliptic Curve Digital Signature Algorithm (ECDSA). The client signature may be included in the request message from the client computer 540 to ensure that the client computer 540 cannot be denied. Additionally, the client signature is based on a client masking factor that is used only in a given communication session (e.g., in a single request, single response message) . Thus, the signature is only valid for this particular request message. In addition, the client's signature is based on the static public key 584 of the server. Thus, the other computer may not impersonate the recipient of that particular request message.

[0125] В некоторых вариантах осуществления подпись клиента может также быть основана на начальном значении, указывающем новизну (например, своевременность) сообщения с запросом. Начальное значение может также быть включено в зашифрованные данные клиента, так что получатель сообщения с запросом может проверять, что сообщение не старое, на основе значения начального значения. Начальное значение может представлять собой, например, доверенное время или счетчик. Серверный компьютер 580 может получать свое собственное доверенное время или значение счетчика для проверки начального значения в сообщении с запросом. [0125] In some embodiments, the client's signature may also be based on a seed indicating the novelty (eg, timeliness) of the request message. The seed may also be included in the encrypted client data so that the recipient of the request message can verify that the message is not old based on the value of the seed. The initial value may be, for example, a trusted time or a counter. The server computer 580 may receive its own trusted time or counter value to verify the seed in the request message.

[0126] На этапе 505 клиентский компьютер 540 может шифровать полезные данные 552 клиента, сертификат 548 клиента, подпись клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 552 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 580. После шифрования полезных данных 552 клиента клиентский компьютер 540 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0126] At step 505, the client computer 540 may encrypt the client payload 552, the client certificate 548, the client's signature, and the client's masked public key using the first shared secret (eg, using the first session key) to determine the client's encrypted data. The client computer may perform encryption, for example, using the Authenticated Associated Data Encryption (AEAD) process. The client payload 552 may contain private client data and/or a request for certain data or information from the server computer 580. After the client payload 552 is encrypted, the client computer 540 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0127] На этапе 506 клиентский компьютер 540 может передавать «сообщение с запросом», содержащее замаскированный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 580. Замаскированный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 540 запрашивает установление безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 580 может принимать сообщение с запросом от клиентского компьютера 540. Поскольку замаскированный открытый ключ клиента используется только для данного сеанса обмена данными (маскирующий коэффициент клиента обнуляется на этапе 517), то он не может быть использован для отслеживания клиентского компьютера 540. Таким образом, сообщение с запросом, отправленное на этапе 505, является неотслеживаемым. Дополнительно сообщение с запросом, отправленное на этапе 505, обеспечивает невозможность отказа клиентского компьютера 540, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента. Дополнительно сообщение с запросом сохраняет идеальную прямую секретность, поскольку отсутствуют данные, включенные в сообщение с запросом, которое может быть использовано для расшифровывания каких-либо данных в других сообщениях, отправленных клиентским компьютером 540, в прошлом или будущем. Идеальная прямая секретность сохраняется, поскольку замаскированный коэффициент клиента не предоставлен в зашифрованных данных клиента. Например, подпись клиента используется для аутентификации клиентского компьютера 540 вместо использования маскирующего коэффициента. Однако подпись клиента не содержит информацию, которая может быть использована для расшифровывания сообщений с клиентского компьютера 540, даже если статический закрытый ключ 542 клиента и статический закрытый ключ 582 сервера рассекречены. [0127] At 506, client computer 540 may send a "request message" containing the client's masked public key and encrypted client data to server computer 580. The client's masked public key may be sent in the clear (eg, unencrypted). The request message may indicate that the client computer 540 is requesting the establishment of a secure communication using a shared secret based on the client's masked public key. The request message may be sent over an insecure network. The server computer 580 may receive a request message from the client computer 540. Since the client's masked public key is used only for this communication session (the client's masking factor is set to zero in step 517), it cannot be used to track the client computer 540. Thus, the request message sent at step 505 is untraceable. Additionally, the challenge message sent at step 505 ensures that the client computer 540 cannot be denied because the client's encrypted data contains the client's signature, which was generated using the client's masking factor. Additionally, the challenge message maintains perfect forward secrecy because there is no data included in the challenge message that can be used to decrypt any data in other messages sent by the client computer 540, past or future. Perfect forward secrecy is maintained because the masked client factor is not provided in the encrypted client data. For example, a client signature is used to authenticate the client computer 540 instead of using a masking factor. However, the client's signature does not contain information that can be used to decrypt messages from the client computer 540, even if the client's static private key 542 and the server's static private key 582 are decrypted.

[0128] На этапе 507 серверный компьютер 580 может определить первый совместно используемый секрет с использованием статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 506 с использованием статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 540 на этапе 503 с использованием маскирующего коэффициента клиента и статического открытого ключа 584 сервера. Серверный компьютер 580 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 540, с использованием функции формирования ключа на основе первого совместно используемого секрета. [0128] At step 507, the server computer 580 may determine the first shared secret using the server's static private key 582 and the client's masked public key that was included in the request message. The first shared secret determined by the server computer in step 506 using the server's static private key 582 and the client's masked public key may be the same as the first shared secret generated by the client computer 540 in step 503 using the client's masking factor and the static public key 584 server. The server computer 580 may also determine the same first session key determined by the client computer 540 using a key derivation function based on the first shared secret.

[0129] На этапе 508 серверный компьютер 580 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 552 клиента, сертификата 548 клиента, подписи клиента и замаскированного открытого ключа клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 580 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0129] At 508, the server computer 580 may decrypt the encrypted client data using the first shared secret (eg, using the first session key) to obtain the client payload 552, the client certificate 548, the client signature, and the client's masked public key. The server computer may perform the decryption, for example, using an Authenticated Associated Data Encryption (AEAD) based decryption process. After decrypting the encrypted client data, the server computer 580 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0130] На этапе 509 серверный компьютер 580 может проверить подпись клиента с использованием статического открытого ключа 544 клиента, который включен в сертификат 548 клиента, полезные данные 552 клиента, замаскированный открытый ключ клиента и статический открытый ключ 584 сервера. Серверный компьютер 580 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). [0130] At step 509, the server computer 580 can verify the client's signature using the client's static public key 544, which is included in the client's certificate 548, client payload 552, the client's masked public key, and the server's static public key 584. The server computer 580 may verify the client's signature, for example, using the Elliptic Curve Digital Signature Algorithm (ECDSA).

[0131] Серверный компьютер 580 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 548 клиента. Дополнительно серверный компьютер 580 может обрабатывать полезные данные 552 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 592 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера. [0131] The server computer 580 may also authenticate the certificate chain related to the client certificate 548. Additionally, the server computer 580 may process the client payload 552 and generate or identify any suitable data or information to include in the server payload 592 to be provided in response to the client computer's request.

[0132] На этапе 510 серверный компьютер 580 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 580 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 580 может применять маскирующий коэффициент сервера к статическому открытому ключу 584 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 580 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 540 (например, в сообщении с запросом на этапе 506 и сообщении с ответом на этапе 516) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 580 может не отслеживаться на основе замаскированного открытого ключа сервера. [0132] At 510, server computer 580 may generate a server masking factor. The server masking factor may be a randomly generated cryptographic nonce. The server computer 580 may use a server mask to prevent third parties from tracking it, as described herein. For example, server computer 580 may apply a server masking factor to the server's static public key 584 (eg, using a multiplication) to determine the server's masked public key. The server computer 580 may use only the given server mask factor and the given server masked public key in that particular communication session with the client computer 540 (eg, in the request message at step 506 and the response message at step 516) and may generate a different mask factor for subsequent communication sessions. Thus, the identity of the server computer 580 may not be tracked based on the server's masked public key.

[0133] На этапе 511 серверный компьютер 580 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 580 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 580 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0133] At step 511, the server computer 580 may determine the second shared secret using the server masking factor, the server static private key 582, and the client's masked public key. In some embodiments, the server computer 580 may store multiple static key pairs and it may use a different static key pair to encrypt the response message. The server computer 580 may also determine the second session key using the key derivation function and the second shared secret.

[0134] На этапе 512 серверный компьютер 580 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 580 может применять маскирующий коэффициент сервера к статическому открытому ключу сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Статический открытый ключ сервера, используемый для определения замаскированного открытого ключа сервера, может быть частью другой пары статических ключей, как обсуждено выше. [0134] At 512, the server computer 580 may determine the server's masked public key using the server's mask factor and the server's static public key. For example, server computer 580 may apply a server masking factor to the server's static public key (eg, using a multiplication) to determine the server's masked public key. The server's static public key used to determine the server's masked public key may be part of another static key pair, as discussed above.

[0135] На этапе 513 серверный компьютер 580 может определить подпись сервера путем подписывания сертификата сервера, полезных данных 592 сервера, замаскированного открытого ключа сервера и статического открытого ключа 544 клиента. Серверный компьютер 580 может определить подпись сервера, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись сервера может быть включена в сообщение с ответом с серверного компьютера 580 для обеспечения невозможности отказа серверного компьютера 580. Дополнительно подпись сервера основана на замаскированном открытом ключе сервера, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись сервера основана на статическом открытом ключе 544 клиента. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом. [0135] At step 513, the server computer 580 can determine the server's signature by signing the server's certificate, the server's payload 592, the server's masked public key, and the client's static public key 544. The server computer 580 may determine the server's signature, for example, using the Elliptic Curve Digital Signature Algorithm (ECDSA). The server signature may be included in the response message from the server computer 580 to ensure that the server computer 580 cannot fail. Additionally, the server signature is based on a masked public key of the server that is used only in a given communication session (for example, in a message with one request and one response ). Thus, the signature is only valid for this particular request message. In addition, the server's signature is based on the static public key 544 of the client. Thus, the other computer may not impersonate the recipient of that particular request message.

[0136] На этапе 514 серверный компьютер 580 может шифровать сертификат сервера (соответствующий статическому открытому ключу пары статических ключей, используемой для шифрования), полезные данные 492 сервера, подпись сервера и замаскированный открытый ключ сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. Серверный компьютер 580 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). [0136] In step 514, the server computer 580 may encrypt the server certificate (corresponding to the static public key of the static key pair used for encryption), the server payload 492, the server signature, and the server's masked public key using a second shared secret (e.g., using second session key) to obtain encrypted server data. The server computer 580 may perform encryption, for example, using an authenticated data encryption (AEAD) process.

[0137] На этапе 515 серверный компьютер 580 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен. [0137] At 515, the server computer 580 may reset the server's masking factor so that it cannot be recovered.

[0138] На этапе 516 серверный компьютер 580 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 540. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 580 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 580. Клиентский компьютер 540 может принимать сообщение с ответом. [0138] At 516, server computer 580 may send a response message containing the server's masked public key and encrypted server data to client computer 540. The response message may be sent over an insecure network. The server's disguised public key may be sent in the clear (eg, unencrypted). However, the server's masked public key is based on the server's masking factor, which can only be used in that particular communication session. Accordingly, server computer 580 cannot be tracked by a third party intercepting this message and other messages sent by server computer 580. Client computer 540 can receive a response message.

[0139] На этапе 517 клиентский компьютер 540 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 540 на этапе 517, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 580 на этапе 511 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 540 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 580) с использованием функции формирования ключа и второго совместно используемого секрета. [0139] At 517, the client computer 540 may determine the second shared secret using the client's masking factor and the server's masked public key that was received in the response message. The second shared secret determined by the client computer 540 in step 517 may be the same as the second shared secret determined by the server computer 580 in step 511 using the client's masked public key, the server's masking factor, and the server's static private key. The client computer 540 may also determine the same second session key (which is also determined by the server computer 580) using a key derivation function and a second shared secret.

[0140] На этапе 518 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 540 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 540 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность. [0140] At step 518, after determining the second shared secret and the second session key, the client computer 540 may reset the client masking factor to zero. That is, the client computer 540 may remove the client masking factor so that it cannot be recovered later. In addition, even if the client masking factor was decrypted and received by a third party in a short period of time before it was reset, the third party would not be able to decrypt any other communication using the client masking factor, it was only used to decrypt this particular response message. . Additionally, even if a third party gains access to both of the client computer's static private key and the server computer's static private key, it cannot decrypt the response message without obtaining the client's masking factor, which is set to zero immediately upon receipt of the response message. Thus, perfect forward secrecy is maintained.

[0141] На этапе 519 клиентский компьютер 540 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 592 сервера и замаскированного открытого ключа сервера. Клиентский компьютер 540 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). [0141] At step 519, the client computer 540 may decrypt the encrypted server data using the second shared secret (e.g., using the second session key) to obtain the server masking factor, the server certificate (corresponding to the static public key of the static key pair used for encryption) , the server payload 592, and the server's masked public key. The client computer 540 may perform the decryption, for example, using an Authenticated Associated Data Encryption (AEAD) decryption process.

[0142] На этапе 519 клиентский компьютер 540 может проверить сервер с использованием статического открытого ключа сервера, который включен в сертификат сервера сообщения с ответом, полезные данные сервера 592, замаскированный открытый ключ сервера и статический открытый ключ сервера. Клиентский компьютер 540 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Клиентский компьютер 540 может также подтверждать подлинность цепочки сертификата сервера, включенного в сообщение с ответом. [0142] At step 519, the client computer 540 can verify the server using the server's static public key, which is included in the server certificate of the response message, the server payload 592, the server's masked public key, and the server's static public key. The client computer 540 may verify the client's signature, for example, using the Elliptic Curve Digital Signature Algorithm (ECDSA). The client computer 540 may also authenticate the server certificate chain included in the response message.

[0143] На этапе 520 клиентский компьютер 540 и серверный компьютер 580 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0143] At 520, client computer 540 and server computer 580 may end the communication session, or they may continue secure communication using the second session key.

[0144] Поток сообщений по фиг. 5 позволяет клиентскому компьютеру 540 и серверному компьютеру 580 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 540, серверного компьютера 580 и их пользователей. Дополнительно клиентский компьютер 540 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Серверный компьютер 580 может также не отказываться от сообщения с ответом, поскольку оно содержит подпись сервера. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом. [0144] The message flow of FIG. 5 allows the client computer 540 and the server computer 580 to establish a secure communication using untraceable messages, thereby ensuring confidentiality of the communication and maintaining the privacy of the client computer 540, server computer 580 and their users. Additionally, the client computer 540 cannot discard the request message because it contains the client's signature. The server computer 580 may also choose not to discard the response message because it contains the server's signature. In addition, request and response messages retain perfect forward secrecy because their encryption depends on the client's mask factor and the server's mask factor, which are set to zero as soon as they are no longer needed for the decryption process. Additionally, network and computing resource usage is reduced because the solution is achieved using only one request message and one response message.

C. Безопасный обмен данными, обеспечивающий идеальную прямую секретность и невозможность отказа клиента и сервера с использованием двухкомпонентных закрытых подписейC. Secure communication providing perfect forward secrecy and non-repudiation of client and server using two-part private signatures

[0145] Фиг. 6 представляет собой схему 600 потока сообщений клиентского компьютера 640 и серверного компьютера 680, устанавливающих безопасный и неотслеживаемый обмен данными с использованием зашифрованной части подписи и незашифрованной части подписи для обеспечения невозможности отказа, в соответствии с некоторыми вариантами осуществления. Зашифрованная часть подписи может содержать идентифицирующую информацию, тогда как незашифрованная часть подписи не содержит идентифицирующую информацию. Дополнительно незашифрованная часть подписи может быть основана на зашифрованных данных. Таким образом, подпись может быть основана на зашифрованных данных и одновременно с этим является «неотслеживаемой». [0145] FIG. 6 is a diagram 600 of a message flow of a client computer 640 and a server computer 680 establishing a secure and untraceable communication using an encrypted signature part and an unencrypted non-repudiation signature part, in accordance with some embodiments. The encrypted portion of the signature may contain identifying information, while the unencrypted portion of the signature does not contain identifying information. Additionally, the unencrypted portion of the signature may be based on encrypted data. Thus, the signature can be based on encrypted data and at the same time be "untraceable".

[0146] Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 640 на этапе 607, от которого не может отказаться клиентский компьютер 640, и сообщение с ответом, переданное серверным компьютером 680 на этапе 618, от которого не может отказаться серверный компьютер 680. Сообщение с запросом на этапе 607 и сообщение с ответом на этапе 618 являются неотслеживаемыми, поскольку они содержат одноразовые замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже. [0146] This message flow contains a request message transmitted by the client computer 640 at block 607, which cannot be refused by the client computer 640, and a response message transmitted by the server computer 680 at block 618, which cannot be refused by the server computer 680. The request message at step 607 and the response message at step 618 are untraceable because they contain one-time masked public keys instead of static public keys. In addition, the request and response message maintains perfect forward secrecy. The generation and format of the request and response messages are described in more detail below.

[0147] В данном потоке сообщений клиентский компьютер 640 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 640 может сохранять пару 646 статических ключей клиента, содержащую статический закрытый ключ 642 клиента и статический открытый ключ 644 клиента. Клиентский компьютер может также сохранять сертификат 648 клиента, который подписан органом сертификации и который содержит статический открытый ключ 644 клиента. Клиентский компьютер 640 может также сохранять сертификат 688 сервера. Дополнительно клиентский компьютер 640 может сохранять полезные данные 652 клиента, которые могут быть закрытыми данными. [0147] In this message flow, the client computer 640 may initiate the establishment of a secure communication. Prior to the message flow, the client computer 640 may store a client static key pair 646 containing a client static private key 642 and a client static public key 644. The client computer may also store a client certificate 648 that is signed by a certification authority and that contains the client's static public key 644 . The client computer 640 may also store the server's certificate 688. Additionally, client computer 640 may store client payload data 652, which may be private data.

[0148] На этапе 601 клиентский компьютер 640 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом. [0148] At 601, client computer 640 may generate a client masking factor. The client masking factor can be randomly generated.

[0149] На этапе 602 клиентский компьютер 640 может определить замаскированный открытый ключ клиента с использованием маскирующего коэффициента клиента. Маскирующий коэффициент клиента и замаскированный открытый ключ клиента могут образовывать пару ключей на основе эллиптической кривой, так что замаскированный открытый ключ клиента может быть использован для расшифровывания данных, которые зашифрованы с использованием маскирующего коэффициента клиента, и замаскированный открытый ключ клиента может быть использован для подтверждения подлинности подписи, сгенерированной путем подписывания данных посредством маскирующего коэффициента клиента. [0149] At 602, the client computer 640 may determine the client's masked public key using the client's masking factor. The client masking factor and the client masked public key can form an elliptic curve key pair, so that the client masked public key can be used to decrypt data that is encrypted using the client masking factor, and the client masked public key can be used to authenticate a signature. generated by signing data with a client masking factor.

[0150] На этапе 603 клиентский компьютер 640 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 684 сервера, который может быть включен в сертификат 688 сервера. Клиентский компьютер 640 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. [0150] At step 603, the client computer 640 may determine the first shared secret using the client's masking factor and the server's static public key 684, which may be included in the server's certificate 688. The client computer 640 may determine the first session key using a key derivation function based on the first shared secret.

[0151] На этапе 604 клиентский компьютер 640 может определить L-подпись клиента и случайное значение L-подписи клиента с использованием алгоритма L-подписи. Алгоритм L-подписи может представлять собой, например, алгоритм подписи ECDSA или алгоритм подписи Шнорра. [0151] At step 604, the client computer 640 may determine the L-signature of the client and a random value of the L-signature of the client using the L-signature algorithm. The L-signature algorithm may be, for example, the ECDSA signature algorithm or the Schnorr signature algorithm.

[0152] На этапе 605 клиентский компьютер 640 может шифровать L-подпись клиента, полезные данные 652 клиента, сертификат 648 клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 652 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 680. После шифрования полезных данных 652 клиента клиентский компьютер 640 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0152] At step 605, the client computer 640 may encrypt the client L-signature, the client payload 652, the client certificate 648, and the client's masked public key using the first shared secret (eg, using the first session key) to determine the encrypted client data. The client computer may perform the encryption, for example, using the Authenticated Associated Data Encryption (AEAD) process. Client payload 652 may contain private client data and/or a request for specific data or information from server computer 680. After client payload 652 is encrypted, client computer 640 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0153] На этапе 606 клиентский компьютер 640 может определить R-подпись клиента с использованием алгоритма R-подписи на основе статического закрытого ключа 642 клиента, случайного значения L-подписи клиента и зашифрованных данных клиента. Таким образом, L-подпись основана на незашифрованных полезных данных 652 клиента, тогда как R-подпись основана на зашифрованных данных клиента. L-подпись клиента и R-подпись клиента вместе образуют подпись клиента. Как L-подпись, так и R-подпись требуются для подтверждения подлинности сообщения с запросом. Вместе L-подпись клиента и R-подпись клиента обеспечивают невозможность отказа от сообщения с запросом с клиентского компьютера 640. Дополнительно R-подпись клиента основана на зашифрованных данных клиента, которые содержат замаскированный открытый ключ клиента, используемый только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись клиента действительна только для данного конкретного сообщения с запросом. [0153] At block 606, the client computer 640 may determine the client's R-signature using the R-signature algorithm based on the client's static private key 642, the client's L-signature random value, and the client's encrypted data. Thus, the L-signature is based on the unencrypted client payload 652, while the R-signature is based on the encrypted client data. L-signature of the client and R-signature of the client together form the signature of the client. Both the L-signature and the R-signature are required to authenticate the challenge message. Together, the client L-signature and the client R-signature provide non-repudiation of the request message from the client computer 640. Additionally, the client R-signature is based on encrypted client data that contains a masked client public key used only in a given communication session (for example, in a message with one request and one response). Thus, the client's signature is only valid for this particular request message.

[0154] На этапе 607 клиентский компьютер 640 может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента, зашифрованные данные клиента и R-подпись клиента, на серверный компьютер 680. Замаскированный открытый ключ клиента и R-подпись клиента могут быть отправлены открыто (например, в незашифрованном виде). Таким образом, R-подпись клиента, которая основана на зашифрованных данных клиента, отправляется незашифрованной, тогда как L-подпись клиента включена в зашифрованные данные клиента. L-подпись клиента может содержать части подписи клиента, которые могут быть использованы для идентификации клиента. Следовательно, подпись клиента может быть основана на зашифрованных данных клиента с обеспечением при этом невозможности отслеживания, поскольку часть R-подписи основана на зашифрованных данных, тогда как часть L-подписи, которая может быть использована для идентификации и отслеживания клиентского компьютера 640, включена в зашифрованные данные клиента. [0154] At 607, client computer 640 may send a request message containing the client's masqueraded public key, client's encrypted data, and client's R-signature to server computer 680. The client's masqueraded public key and client's R-signature may be sent in the clear (for example, , unencrypted). Thus, the R-signature of the client, which is based on the encrypted client data, is sent unencrypted, while the L-signature of the client is included in the encrypted client data. The L-signature of the client may contain portions of the client's signature that can be used to identify the client. Therefore, the client signature can be based on encrypted client data while providing untraceability because the R-signature part is based on the encrypted data, while the L-signature part, which can be used to identify and trace the client computer 640, is included in the encrypted client data.

[0155] Сообщение с запросом может также указывать на то, что клиентский компьютер 640 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 680 может принимать сообщение с запросом от клиентского компьютера 640. Поскольку замаскированный открытый ключ клиента используется только для данного сеанса обмена данными (маскирующий коэффициент клиента обнуляется на этапе 620), то он не может быть использован для отслеживания клиентского компьютера 640. Таким образом, сообщение с запросом, отправленное на этапе 605, является неотслеживаемым. Дополнительно сообщение с запросом, отправленное на этапе 605, обеспечивает невозможность отказа клиентского компьютера 640, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента. Дополнительно сообщение с запросом сохраняет идеальную прямую секретность, поскольку отсутствуют данные, включенные в сообщение с запросом, которое может быть использовано для расшифровывания каких-либо данных в других сообщениях, отправленных клиентским компьютером 640, в прошлом или будущем. Идеальная прямая секретность сохраняется, поскольку замаскированный коэффициент клиента не предоставлен в зашифрованных данных клиента. Например, подпись клиента используется для аутентификации клиентского компьютера 640 вместо использования маскирующего коэффициента. Однако подпись клиента не содержит информацию, которая может быть использована для расшифровывания сообщений с клиентского компьютера 640, даже если статический закрытый ключ 642 клиента и статический закрытый ключ 682 сервера рассекречены. [0155] The request message may also indicate that the client computer 640 is requesting the establishment of a secure communication using a shared secret based on the client's masked public key. The request message may be sent over an insecure network. Server computer 680 may receive a request message from client computer 640. Since the client's masked public key is used only for this communication session (client's masking factor is set to zero at step 620), it cannot be used to track client computer 640. Thus, the request message sent at step 605 is untraceable. Additionally, the challenge message sent at step 605 ensures that the client computer 640 cannot be denied because the client's encrypted data contains the client's signature, which was generated using the client's masking factor. Additionally, the challenge message maintains perfect forward secrecy because there is no data included in the challenge message that can be used to decrypt any data in other messages sent by the client computer 640, past or future. Perfect forward secrecy is maintained because the masked client factor is not provided in the encrypted client data. For example, a client signature is used to authenticate the client computer 640 instead of using a masking factor. However, the client's signature does not contain information that can be used to decrypt messages from the client computer 640, even if the client's static private key 642 and the server's static private key 682 are decrypted.

[0156] На этапе 608 серверный компьютер 680 может определить первый совместно используемый секрет с использованием статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 606 с использованием статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, определенный клиентским компьютером 640 на этапе 603 с использованием маскирующего коэффициента клиента и статического открытого ключа 684 сервера. Серверный компьютер 680 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 640, с использованием функции формирования ключа на основе первого совместно используемого секрета. [0156] At 608, the server computer 680 may determine the first shared secret using the server's static private key 682 and the client's masked public key that was included in the request message. The first shared secret determined by the server computer in step 606 using the server's static private key 682 and the client's masked public key may be the same as the first shared secret determined by the client computer 640 in step 603 using the client's masking factor and the static public key 684 server. The server computer 680 may also determine the same first session key determined by the client computer 640 using a key derivation function based on the first shared secret.

[0157] На этапе 609 серверный компьютер 680 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения L-подписи клиента, полезных данных 652 клиента и сертификата 648 клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 680 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0157] At step 609, the server computer 680 may decrypt the encrypted client data using the first shared secret (eg, using the first session key) to obtain the client L-signature, client payload 652, and client certificate 648. The server computer may perform the decryption, for example, using an Authenticated Associated Data Encryption (AEAD) based decryption process. After decrypting the encrypted client data, the server computer 680 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0158] На этапе 610 серверный компьютер 680 может проверить подпись клиента, которая содержит как L-подпись клиента, так и R-подпись клиента, с использованием статического открытого ключа 644 клиента (который включен в сертификат 648 клиента), L-подписи клиента, R-подписи клиента и зашифрованных данных клиента. [0158] At step 610, the server computer 680 can verify the client's signature, which contains both the client's L-signature and the client's R-signature, using the client's static public key 644 (which is included in the client's certificate 648), the client's L-signature, R-signature of the client and encrypted client data.

[0159] Серверный компьютер 680 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 648 клиента. Дополнительно серверный компьютер 680 может обрабатывать полезные данные 652 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 692 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера. [0159] The server computer 680 may also authenticate the certificate chain related to the client certificate 648. Additionally, the server computer 680 can process the client payload 652 and generate or identify any suitable data or information to include in the server payload 692 to be provided in response to the client computer's request.

[0160] На этапе 611 серверный компьютер 680 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 680 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 680 может применять маскирующий коэффициент сервера к статическому открытому ключу 684 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 680 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 640 (например, в сообщении с запросом и сообщении с ответом) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 680 может не отслеживаться на основе замаскированного открытого ключа сервера. [0160] At 611, server computer 680 may generate a server masking factor. The server masking factor may be a randomly generated cryptographic nonce. Server computer 680 may use a server mask to prevent third parties from tracking it, as described herein. For example, server computer 680 may apply a server masking factor to the server's static public key 684 (eg, using a multiplication) to determine the server's masked public key. Server computer 680 may use only this server mask factor and this masked server public key in a given communication session with client computer 640 (eg, in a request message and a response message) and may generate a different mask factor for subsequent communication sessions. Thus, the identity of the server computer 680 may not be tracked based on the server's masked public key.

[0161] На этапе 612 серверный компьютер 680 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 680 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 680 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0161] At step 612, the server computer 680 may determine the second shared secret using the server masking factor, the server static private key 682, and the client's masked public key. In some embodiments, the server computer 680 may store multiple static key pairs and it may use a different static key pair to encrypt the response message. The server computer 680 may also determine the second session key using the key derivation function and the second shared secret.

[0162] На этапе 613 серверный компьютер 680 может определить L-подпись сервера и случайное значение L-подписи сервера с использованием алгоритма L-подписи. Алгоритм L-подписи может представлять собой, например, алгоритм подписи ECDSA или алгоритм подписи Шнорра. [0162] At step 613, the server computer 680 may determine the L-signature of the server and a random value of the L-signature of the server using the L-signature algorithm. The L-signature algorithm may be, for example, the ECDSA signature algorithm or the Schnorr signature algorithm.

[0163] На этапе 615 серверный компьютер 680 может шифровать L-подпись сервера, полезные данные 692 сервера, сертификат сервера и замаскированный открытый ключ сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для определения зашифрованных данных сервера. Серверный компьютер 680 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 692 сервера могут содержать закрытые данные сервера и/или определенные данные или информацию в ответ на запрос с клиентского компьютера 640. После шифрования клиентский компьютер 680 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0163] In step 615, server computer 680 may encrypt the server L-signature, server payload 692, server certificate, and server public key masked using a second shared secret (eg, using a second session key) to determine encrypted server data. The server computer 680 may perform encryption, for example, using an authenticated data encryption (AEAD) process. The server payload 692 may contain private server data and/or certain data or information in response to a request from the client computer 640. After encryption, the client computer 680 may nullify (eg, completely delete to prevent any recovery) the first shared secret and the first session key.

[0164] На этапе 616 серверный компьютер 640 может определить R-подпись сервера с использованием алгоритма R-подписи на основе статического закрытого ключа 682 сервера, случайного значения L-подписи сервера и зашифрованных данных сервера. Таким образом, L-подпись сервера основана на незашифрованных полезных данных 692 сервера, тогда как R-подпись сервера основана на зашифрованных данных сервера. L-подпись сервера и R-подпись сервера вместе образуют подпись сервера. Как L-подпись сервера, так и R-подпись сервера требуются для подтверждения подлинности сообщения с ответом с серверного компьютера 680. Вместе L-подпись сервера и R-подпись сервера обеспечивают невозможность отказа от сообщения с ответом с серверного компьютера 680. Дополнительно R-подпись сервера основана на зашифрованных данных сервера, которые содержат замаскированный открытый ключ сервера, используемый только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись сервера действительная только для данного конкретного сообщения с запросом. [0164] At 616, the server computer 640 may determine the server's R-signature using the R-signature algorithm based on the server's static private key 682, the server's L-signature random value, and the server's encrypted data. Thus, the L-signature of the server is based on the unencrypted payload 692 of the server, while the R-signature of the server is based on the encrypted data of the server. The L-signature of the server and the R-signature of the server together form the signature of the server. Both the server L-signature and the server R-signature are required to authenticate the response message from the server computer 680. Together, the server L-signature and the server R-signature provide non-repudiation of the response message from the server computer 680. Additionally, the R-signature server is based on encrypted server data that contains a masked server public key that is used only in a given communication session (for example, in a message with one request and one response). Thus, the server's signature is only valid for this particular request message.

[0165] На этапе 617 серверный компьютер 680 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен. [0165] At step 617, the server computer 680 may reset the server's masking factor so that it cannot be recovered.

[0166] На этапе 618 серверный компьютер 680 может передавать сообщение с ответом, содержащее R-подпись сервера, замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 680. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера и R-подпись сервера могут быть отправлены открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Дополнительно R-подпись сервера не содержит информацию, идентифицирующую серверный компьютер 680. Вместо этого любая информация, идентифицирующая серверный компьютер 680, включена в L-подпись сервера, которая включена в зашифрованные данные сервера. Соответственно, серверный компьютер 680 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 680. Клиентский компьютер 640 может принимать сообщение с ответом. [0166] At 618, the server computer 680 may send a response message containing the server's R-signature, the server's masked public key, and the server's encrypted data to the client computer 680. The response message may be sent over an insecure network. The server's obfuscated public key and the server's R-signature may be sent in the clear (eg, unencrypted). However, the server's masked public key is based on the server's masking factor, which can only be used in that particular communication session. Additionally, the server R-signature does not contain information identifying the server computer 680. Instead, any information identifying the server computer 680 is included in the server L-signature, which is included in the encrypted server data. Accordingly, server computer 680 cannot be tracked by a third party intercepting this message and other messages sent by server computer 680. Client computer 640 can receive a response message.

[0167] На этапе 619 клиентский компьютер 640 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 640 на этапе 619, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 680 на этапе 612 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 640 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 680) с использованием функции формирования ключа и второго совместно используемого секрета. [0167] At 619, the client computer 640 may determine the second shared secret using the client's masking factor and the server's masked public key that was received in the response message. The second shared secret determined by the client computer 640 at block 619 may be the same as the second shared secret determined by the server computer 680 at block 612 using the client's masked public key, the server's masking factor, and the server's static private key. The client computer 640 may also determine the same second session key (which is also determined by the server computer 680) using the key derivation function and the second shared secret.

[0168] На этапе 620 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 640 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 640 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность. [0168] At step 620, after determining the second shared secret and the second session key, the client computer 640 may reset the client masking factor to zero. That is, the client computer 640 may remove the client masking factor so that it cannot be recovered later. In addition, even if the client masking factor was decrypted and received by a third party in a short period of time before it was reset, the third party would not be able to decrypt any other communication using the client masking factor, it was only used to decrypt this particular response message. . Additionally, even if a third party gains access to both of the client computer's static private key and the server computer's static private key, it cannot decrypt the response message without obtaining the client's masking factor, which is set to zero immediately upon receipt of the response message. Thus, perfect forward secrecy is maintained.

[0169] На этапе 621 клиентский компьютер 540 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения L-подписи сервера, маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования) и полезных данных 592 сервера. Клиентский компьютер 640 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). [0169] In step 621, the client computer 540 may decrypt the encrypted server data using the second shared secret (e.g., using the second session key) to obtain the L-signature of the server, the server masking factor, the server certificate (corresponding to the static public key of the static key pair used for encryption) and server payload 592. The client computer 640 may perform the decryption, for example, using an Authenticated Encrypted Associated Data (AEAD) decryption process.

[0170] На этапе 622 клиентский компьютер 640 может проверить подпись сервера, которая содержит как L-подпись сервера, так и R-подпись сервера, с использованием статического открытого ключа сервера (который включен в сертификат клиента), L-подписи сервера, R-подписи сервера и зашифрованных данных сервера. Поскольку подлинность подписи сервера, которая основана на зашифрованных данных сервера, может быть подтверждена с использованием статического открытого ключа сервера, серверный компьютер 680 не может отказаться от сообщения с ответом. [0170] At step 622, the client computer 640 can verify the server signature, which contains both the server L-signature and the server R-signature, using the server's static public key (which is included in the client's certificate), the server L-signature, R- server signature and encrypted server data. Because the server's signature, which is based on the server's encrypted data, can be authenticated using the server's static public key, the server computer 680 cannot discard the response message.

[0171] Затем клиентский компьютер 640 и серверный компьютер 680 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0171] The client computer 640 and server computer 680 may then end the communication session, or they may continue to communicate securely using the second session key.

[0172] Поток сообщений по фиг. 6 позволяет клиентскому компьютеру 640 и серверному компьютеру 680 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 640, серверного компьютера 680 и их пользователей. Дополнительно клиентский компьютер 640 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Серверный компьютер 680 может также не отказываться от сообщения с ответом, поскольку оно содержит подпись сервера. Дополнительно подпись клиента и подпись сервера основаны на своих соответственных зашифрованных данных, а не только на незашифрованных данных, которые обеспечивают улучшенную безопасность. Кроме того, подписи клиента и сервера не содержат распознаваемую информацию, поскольку часть L-подписи зашифрована. Таким образом, объединенные L-подпись и R-подпись представляют собой закрытую и анонимную подпись. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом. [0172] The message flow of FIG. 6 allows the client computer 640 and the server computer 680 to establish a secure communication using untraceable messages, thereby ensuring confidentiality of the communication and maintaining the privacy of the client computer 640, server computer 680 and their users. Additionally, the client computer 640 cannot discard the request message because it contains the client's signature. The server computer 680 may also choose not to discard the response message because it contains the server's signature. Additionally, the client's signature and the server's signature are based on their respective encrypted data, not just plaintext, which provides improved security. In addition, the client and server signatures do not contain recognizable information because the L-signature part is encrypted. Thus, the combined L-signature and R-signature constitute a private and anonymous signature. In addition, request and response messages retain perfect forward secrecy because their encryption depends on the client's mask factor and the server's mask factor, which are set to zero as soon as they are no longer needed for the decryption process. Additionally, network and computing resource usage is reduced because the solution is achieved using only one request message and one response message.

VI. СПОСОБЫ БЕЗОПАСНОГО ОБМЕНА ДАННЫМИ VI. METHODS FOR SECURE DATA EXCHANGE

[0173] Способы установки безопасного обмена данными описаны ниже со ссылкой на фиг. 7 и фиг. 8. Схемы потока сообщений, описанные в настоящем документе, могут включать эти способы или их часть. [0173] Methods for establishing secure communication are described below with reference to FIG. 7 and FIG. 8. The message flow patterns described herein may include these methods or part of them.

A. Способ запрашивания и установки безопасного обмена даннымиA. How to Request and Establish Secure Communication

[0174] Фиг. 7 представляет собой блок-схему 700 выполняемого первым компьютером способа запрашивания и установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления. Способ может быть выполнен, например, клиентским компьютером 440, клиентским компьютером 540 или клиентским компьютером 640, обсужденным выше. Перед началом способа первый компьютер может сохранить первый статический закрытый ключ первого компьютера, первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и второй статический открытый ключ второго компьютера. [0174] FIG. 7 is a flowchart 700 of a method performed by a first computer for requesting and establishing secure communications, in accordance with some embodiments. The method may be performed, for example, by client computer 440, client computer 540, or client computer 640 discussed above. Before starting the method, the first computer may store the first static private key of the first computer, the first static public key of the first computer corresponding to the first static private key, and the second static public key of the second computer.

[0175] На этапе 701 первый компьютер может генерировать первый маскирующий коэффициент. Первый маскирующий коэффициент может быть сгенерирован с использованием генератора псевдослучайных чисел. Первый маскирующий коэффициент может быть использован как закрытый ключ на основе эллиптической кривой. [0175] At 701, the first computer may generate a first masking factor. The first masking coefficient may be generated using a pseudo-random number generator. The first masking factor can be used as a private key based on the elliptic curve.

[0176] На этапе 702 первый компьютер может определить первый замаскированный открытый ключ с использованием первого маскирующего коэффициента. Первый замаскированный открытый ключ и первый маскирующий коэффициент могут образовывать пару ключей на основе эллиптической кривой. [0176] At 702, the first computer may determine the first masked public key using the first masking factor. The first masked public key and the first masking factor may form an elliptic curve key pair.

[0177] На этапе 703 первый компьютер может генерировать подпись первого компьютера путем подписывания первого замаскированного открытого ключа с использованием первого статического закрытого ключа. Первый компьютер может также подписывать закрытые данные клиента и открытый ключ аутентификации второго компьютера с использованием первого статического закрытого ключа. Первый компьютер может генерировать подпись с использованием алгоритма цифровой подписи (например, ECDSA). [0177] At 703, the first computer may generate a signature of the first computer by signing the first masked public key using the first static private key. The first computer may also sign the client's private data and the second computer's authentication public key using the first static private key. The first computer may generate a signature using a digital signature algorithm (eg, ECDSA).

[0178] На этапе 704 первый компьютер может определить первый совместно используемый секрет с использованием первого маскирующего коэффициента и второго статического открытого ключа второго компьютера. Первый совместно используемый секрет может быть использован для шифрования закрытых данных клиента. Первый компьютер может также определить ключ сеанса с использованием первого совместно используемого секрета. [0178] At 704, the first computer may determine the first shared secret using the first masking factor and the second static public key of the second computer. The first shared secret can be used to encrypt the client's private data. The first computer may also determine the session key using the first shared secret.

[0179] На этапе 705 первый компьютер может шифровать данные первого компьютера с использованием первого совместно используемого секрета. Данные первого компьютера могут содержать первый статический открытый ключ и подпись первого компьютера для получения зашифрованных данных первого компьютера. [0179] At block 705, the first computer may encrypt data of the first computer using the first shared secret. The first computer data may contain the first static public key and the signature of the first computer to obtain encrypted first computer data.

[0180] На этапе 706 первый компьютер может отправлять первое сообщение на второй компьютер, содержащее первый замаскированный открытый ключ и зашифрованные данные первого компьютера. Второй компьютер генерирует первый совместно используемый секрет, а затем проверяет подпись первого компьютера. [0180] At block 706, the first computer may send a first message to the second computer containing the first masked public key and encrypted data of the first computer. The second computer generates the first shared secret and then verifies the first computer's signature.

[0181] С использованием способа по фиг. 7 первый компьютер может отправлять сообщение на второй компьютер, так что второй компьютер может подтверждать подлинность подписи первого компьютера с подтверждением при этом того, что первый компьютер сгенерировал сообщение. [0181] Using the method of FIG. 7, the first computer may send a message to the second computer, such that the second computer may authenticate the first computer's signature while confirming that the first computer generated the message.

B. Способ обеспечения ответа на запрос для установки безопасного обмена даннымиB. How to provide a response to a request to establish a secure communication

[0182] Фиг. 8 представляет собой блок-схему 800 способа обеспечения ответа на запрос для установки безопасного обмена данными в соответствии с некоторыми вариантами осуществления. Способ может быть выполнен, например, серверным компьютером 480, серверным компьютером 580 или серверным компьютером 680, обсужденным выше. Перед началом способа второй компьютер может сохранять второй статический закрытый ключ второго компьютера и второй статический открытый ключ второго компьютера, соответствующий второму статическому закрытому ключу. [0182] FIG. 8 is a flowchart 800 of a method for providing a response to a request to establish a secure communication, in accordance with some embodiments. The method may be performed, for example, by server computer 480, server computer 580, or server computer 680 discussed above. Before starting the method, the second computer may store the second static private key of the second computer and the second static public key of the second computer corresponding to the second static private key.

[0183] На этапе 801 второй компьютер может принимать от первого компьютера первое сообщение, содержащее первый замаскированный открытый ключ первого компьютера и зашифрованные данные первого компьютера. Первое сообщение может быть сгенерировано первым компьютером с использованием способа, описанного выше в отношении фиг. 7. [0183] At step 801, the second computer may receive from the first computer a first message containing the first masked public key of the first computer and encrypted data of the first computer. The first message may be generated by the first computer using the method described above with respect to FIG. 7.

[0184] На этапе 802 второй компьютер может определить первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа. Второй компьютер может определить такой же первый совместно используемый секрет, который был определен первым компьютером. [0184] At 802, the second computer may determine the first shared secret using the first masked public key and the second static private key. The second computer may determine the same first shared secret that was determined by the first computer.

[0185] На этапе 803 второй компьютер может расшифровывать с использованием первого совместно используемого секрета зашифрованные данные первого компьютера для получения данных первого компьютера, при этом данные первого компьютера содержат первый статический открытый ключ и подпись первого компьютера. Подпись первого компьютера может быть сгенерирована первым компьютером, подписывающим первый замаскированный открытый ключ с использованием первого статического закрытого ключа первого компьютера. Первый статический закрытый ключ может соответствовать первому статическому открытому ключу. [0185] At 803, the second computer may decrypt, using the first shared secret, the encrypted data of the first computer to obtain the first computer data, the first computer data containing the first static public key and the signature of the first computer. The signature of the first computer may be generated by the first computer signing the first masked public key using the first static private key of the first computer. The first static private key may correspond to the first static public key.

[0186] На этапе 804 второй компьютер может подтверждать подлинность подписи первого компьютера с использованием первого статического открытого ключа первого компьютера и первого замаскированного открытого ключа. Второй компьютер может подтверждать подлинность подписи первого компьютера с использованием алгоритма цифровой подписи (например, ECDSA). [0186] At 804, the second computer may authenticate the signature of the first computer using the first static public key of the first computer and the first masked public key. The second computer may authenticate the first computer's signature using a digital signature algorithm (eg, ECDSA).

[0187] На этапе 805 второй компьютер может отправлять второе сообщение, содержащее второй замаскированный открытый ключ второго компьютера и зашифрованные данные второго компьютера. Данные второго компьютера второго сообщения могут быть предоставлены в ответ на первое сообщение. [0187] At 805, the second computer may send a second message containing the second computer's second masked public key and the second computer's encrypted data. The second computer data of the second message may be provided in response to the first message.

[0188] С использованием способа по фиг. 8 второй компьютер может аутентифицировать первый компьютер путем подтверждения подлинности подписи первого компьютера. [0188] Using the method of FIG. 8, the second computer can authenticate the first computer by authenticating the signature of the first computer.

V. ПОДРОБНЫЕ СПОСОБЫ БЕЗОПАСНОГО ОБМЕНА ДАННЫМИV. DETAILED METHODS FOR SAFE DATA EXCHANGE

[0189] Первый компьютер и второй компьютер могут установить безопасный обмен данными с использованием неотслеживаемых сообщений, которые обеспечивают невозможность отказа и идеальную прямую секретность, как описано в настоящем документе. Такой безопасный обмен данными может быть установлен первым и вторым компьютерами, выполняющими способы путем реализации набора инструкций, которые описаны ниже в отношении фиг. 9, 10 и 11. Таблица 1, приведенная ниже, содержит некоторые определения терминов и функций, используемых на фиг. 9, 10 и 11. Часть всех инструкций, терминов и функций, описанных со ссылкой на фиг. 9, 10 и 11, может быть реализована в потоках сообщений, описанных в настоящем документе при необходимости. Инструкции, термины и функции, описанные со ссылкой на фиг. 9, 10 и 11, являются иллюстративными, но не исчерпывающими. [0189] The first computer and the second computer can establish secure communications using untraceable messages that provide non-repudiation and perfect forward secrecy as described herein. Such secure communication may be established by the first and second computers executing the methods by implementing a set of instructions as described below with respect to FIG. 9, 10 and 11. Table 1 below contains some definitions of terms and functions used in FIG. 9, 10, and 11. A portion of all instructions, terms, and functions described with reference to FIG. 9, 10, and 11 may be implemented in the message flows described herein as needed. The instructions, terms, and functions described with reference to FIG. 9, 10 and 11 are illustrative but not exhaustive.

AEAD, AEAD-1 (sk, data, associated data)AEAD, AEAD-1 (sk, data, associated data) Алгоритм для аутентифицированного шифрования посредством связанных данных (associated data) (AES ключа сеанса SK, данных (data) для зашифровки или расшифровки, связанных данных). Связанные данные могут оставаться в исходном виде, но могут быть проверены на сохранность.Algorithm for authenticated encryption by means of associated data (session key SK AES, data (data) to encrypt or decrypt associated data). Linked data may remain as is, but may be checked for integrity. Sign(sk, data), verify(vk, sig, data)Sign(sk, data), verify(vk, sig, data) Алгоритмы для подписывания (sign) и проверки (verify) с использованием схемы цифровой подписи (signature) (например, ECDSA). sk представляет собой ключ подписи. vk представляет собой ключ проверки. Схема подписи может также включать хеширование и проверку хеша.Algorithms for signing (sign) and verifying (verify) using a digital signature scheme (signature) (for example, ECDSA). sk is the signing key. vk is the verification key. The signature scheme may also include hashing and hash verification. PrivSign(sk, data) = [sign_L(), sign_R(sk, random, data) ]
PrivVerify(vk, sig_L, Sig_R, data)
PrivSign(sk, data) = [sign_L(), sign_R(sk, random, data) ]
PrivVerify(vk, sig_L, Sig_R, data)
Алгоритмы для создания и подтверждения подлинности «закрытых» подписей. Алгоритм подписывания состоит из двух разных алгоритмов: sign_L() и sing_R(). Sign_L() выводит случайное значение (random) и sig_L. sign_R() учитывает ключ подписи sk, случайное значение, сгенерированное посредством sig_L, и данные для подписывания и создает sig_R.
Как sig_L, так и sig_R нужны для проверки подписи. Знание только Sig_R не выдает информации об идентификации подписанта. Как подпись ECDSA, так и подпись Шнорра, например, могут быть использованы в данной форме и обладать этими свойствами.
Algorithms for creating and authenticating "closed" signatures. The signing algorithm consists of two different algorithms: sign_L() and sing_R(). Sign_L() outputs a random value (random) and sig_L. sign_R() takes into account the signing key sk, the random value generated by sig_L, and the signing data, and generates sig_R.
Both sig_L and sig_R are needed for signature verification. Knowing only Sig_R does not provide information about the identity of the signer. Both an ECDSA signature and a Schnorr signature, for example, can be used in this form and have these properties.
enc_cenc_c Зашифрованные данные, сгенерированные на клиенте (IFD/мобильном устройстве)Encrypted data generated on the client (IFD/mobile device) enc_senc_s Зашифрованные данные, сгенерированные на сервере (ICC)Encrypted data generated on the server (ICC) C_sC_s Цепочка сертификатов, аутентифицирующая сервер (ICC)Certificate chain that authenticates the server (ICC) C_s_{n}C_s_{n} Цепочка сертификатов, аутентифицирующая сервер (ICC) - n-я версияServer Authenticating Certificate Chain (ICC) - nth version C_cC_c Цепочка сертификатов, аутентифицирующая клиента (ICC)Certificate chain that authenticates the client (ICC) d_bcd_bc Маскирующий коэффициент клиентаClient masking factor d_bsd_bs Маскирующий коэффициент сервераServer masking factor d_c, Q_c = [d_c]Pd_c, Q_c = [d_c]P Открытый ключ аутентификации клиента, совпадающий с соответствующим закрытым ключом: d_cClient authentication public key matching the corresponding private key: d_c d_ec, Q_ec = [d_ec]Pd_ec, Q_ec = [d_ec]P Кратковременный открытый ключ клиента, совпадающий с кратковременным закрытым ключом: d_ecThe client's short-term public key, which is the same as the short-term private key: d_ec d_s, Q_s = [d_s]Pd_s, Q_s = [d_s]P Открытый ключ аутентификации сервера (ICC), совпадающий с соответствующим закрытым ключом: d_sServer Authentication Public Key (ICC) that matches the corresponding private key: d_s d_s_{n}, Q_s_{n}d_s_{n}, Q_s_{n} Открытый и закрытый ключи аутентификации сервера (ICC), n-я версия.Server Authentication Public and Private Key (ICC), version n. ICCICC Мобильный телефон, чип с интегральными схемами или серверMobile phone, integrated circuit chip or server ID_sID_s Идентификатор сервераServer ID IFDIFD Интерфейсное устройство или клиентInterface device or client IVIV Вектор инициализации (принадлежит к [0..q-1])Initialization vector (belongs to [0..q-1]) KDFKDF Функция 800-56C формирования ключа на основе AES C_MAC. Применяется на соединенных входных данныхAES C_MAC based key derivation function 800-56C. Applied on connected inputs PRNGPRNG Генератор псевдослучайных чиселPseudo-random number generator PubK (C)PubK (C) Извлечение открытого ключа из Cert CExtract public key from Cert C qq Порядок кривойCurve Order Q_bcQ_bc Замаскированный открытый ключ клиентаDisguised client public key Q_bsQ_bs Замаскированный открытый ключ сервераDisguised server public key SD_cSD_c Закрытые данные клиента (полезные данные)Private customer data (payload) SD_sSD_s Закрытые данные сервера (полезные данные)Private server data (payload) seedseed Счетчик или время и т. д., доступные для проверки на ICC или сервере и обеспечивающие новизну маскирующего коэффициента. A counter or time, etc., available for checking on the ICC or the server and ensuring the novelty of the masking factor. sID_ssID_s Идентификатор сервера (ICC) для сеанса. Основан на х-координате Q_bs (x_coord (Q_bs))The server identifier (ICC) for the session. Based on x-coordinate Q_bs(x_coord(Q_bs)) sID_csID_c Идентификатор клиента (IFD или мобильного устройства). Усеченное значение х-координаты Q_ecClient identifier (IFD or mobile device). Truncated x-coordinate Q_ec sk_1_c, sk_c, sk_1_s, sk_s, sk_2_csk_1_c, sk_c, sk_1_s, sk_s, sk_2_c AES ключи сеанса безопасного обмена сообщениямиAES secure messaging session keys Z, Z_1,Z_2Z, Z_1, Z_2 Промежуточные совместно используемые секретные ключи (x-координата совместной результирующей точки EC-DH)Intermediate shared secrets (x-coordinate of the joint EC-DH result point) Zeroizezeroize Сброс всех входных параметров - значения, установленные на все двоичные нули.Reset all inputs - values set to all binary zeros.

Таблица 1Table 1

A. Способы безопасного обмена данными, обеспечивающие идеальную прямую секретность и невозможность отказа клиентаA. Methods of secure communication providing perfect forward secrecy and non-repudiation of the client

[0190] Фиг. 9 представляет собой таблицу 900 этапов для выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью между клиентским компьютером и серверным компьютером, так что клиентский компьютер не может отказываться от своих сообщений, в соответствии с некоторыми вариантами осуществления. Клиентский компьютер может представлять собой, например, интерфейсное устройство (IFD). Серверный компьютер может представлять собой, например, чип с интегральными микросхемами (ICC) или мобильное устройство. Некоторые из всех этапов в таблице 900 могут быть выполнены в потоках сообщений, описанных в настоящем документе, например, таких как поток сообщений по фиг. 4. Дополнительно этапы в таблице 900 могут быть выполнены в другом порядке. [0190] FIG. 9 is a table 900 of steps for performing a computer-implemented method of establishing secure and untraceable communications with perfect forward secrecy between a client computer and a server computer such that the client computer cannot retract its messages, in accordance with some embodiments. The client computer may be, for example, an interface device (IFD). The server computer may be, for example, an integrated circuit chip (ICC) or a mobile device. Some of all the steps in table 900 may be performed in the message flows described herein, such as the message flow of FIG. 4. Additionally, the steps in table 900 may be performed in a different order.

[0191] На этапе 901 клиентский компьютер может сохранить n-ую версию открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Клиентский компьютер мог ранее принять данную конкретную версию открытого ключа серверного компьютера от серверного компьютера. Клиентский компьютер может также сохранить n-ую версию сертификата серверного компьютера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Клиентский компьютер может также сохранить закрытые данные клиента («SD_c»). Закрытые данные клиента могут быть частью полезных данных, отправляемых в сообщении с запросом на серверный компьютер. Клиентский компьютер может также сохранить идентификатор сервера («ID_s»), идентифицирующий серверный компьютер. Клиентский компьютер может также сохранить сертификат клиента («C_c») для аутентификации цепочки сертификатов клиентского компьютера. Клиентский компьютер может также сохранить закрытый ключ аутентификации клиента («d_c»), который совпадает с соответствующим открытым ключом аутентификации клиента («Q_c»), образуя пару ключей на основе эллиптической кривой. Открытый ключ аутентификации клиента («Q_c») может быть определен с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации клиента (Q_c = [d_c] P). Клиентский компьютер может также сохранить начальное значение («seed»). Начальное значение может быть значением доверенного времени или значением счетчика, которое может быть включено в сообщение для указания новизны или своевременности данного сообщения. [0191]At the stage 901 client computer can saven-th version of the server computer's public key ("Q_s_{n}"). The client computer may have previously received this particular version of the server computer's public key from the server computer. The client computer can also saven-th version of the server computer certificate ("C_s_{n}") to authenticate the server computer certificate chain. The client computer may also store private client data ("SD_c"). Private client data can be part of the payload sent in the request message to the server computer. The client computer may also store a server identifier ("ID_s") that identifies the server computer. The client computer may also store a client certificate ("C_c") to authenticate the client computer's certificate chain. The client computer may also store a client authentication private key ("d_c") that matches the corresponding client authentication public key ("Q_c") to form an elliptic curve key pair. The client authentication public key ("Q_c") may be determined using a public key ("P") algorithm based on the client's private authentication key (Q_c = [d_c] P). The client computer may also store the seed ("seed"). The initial value may be a trusted time value or a counter value that may be included in the message to indicate the newness or timeliness of the message.

[0192] Серверный компьютер может сохранить n-ую версию открытого ключа аутентификации сервера («Q_s_{n}») и соответствующего закрытого ключа аутентификации сервера («d_s_{n}»), которые образуют пару ключей на основе эллиптической кривой. Серверный компьютер может определить открытый ключ аутентификации сервера с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации сервера (Q_s_{n} = [d_s_{n}] P). Серверный компьютер может также сохранить n-ую версию сертификата сервера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Серверный компьютер может также сохранить закрытые данные сервера («SD_s»), которые могут быть включены в зашифрованные полезные данные для клиентского компьютера. Серверный компьютер может также сохранить следующие версии открытого ключа аутентификации сервера («Q_s_{n+1}»), закрытый ключ аутентификации сервера («d_s_{n+1}») и соответствующий сертификат («C_s_{n+1}»). Следующая версия открытого ключа аутентификации сервера («Q_s_{n+1}») может быть другим открытым ключом, но он может быть подписан с использованием закрытого ключа аутентификации сервера («d_s_{n}»), соответствующего открытому ключу аутентификации сервера («Q_s_{n}»), для продолжения цепочки сертификатов. [0192] The server computer may store the nth version of the server authentication public key ("Q_s_{n}") and the corresponding server authentication private key ("d_s_{n}"), which form an elliptic curve key pair. The server computer may determine the server authentication public key using a public key ("P") algorithm based on the server's private authentication key (Q_s_{n} = [d_s_{n}] P). The server computer may also store the nth version of the server certificate ("C_s_{n}") to authenticate the server computer's certificate chain. The server computer may also store private server data ("SD_s") that may be included in the encrypted payload for the client computer. The server computer may also store the following versions of the server authentication public key ("Q_s_{n+1}"), the server authentication private key ("d_s_{n+1}"), and the corresponding certificate ("C_s_{n+1}"). The next version of the server authentication public key ("Q_s_{n+1}") may be a different public key, but it may be signed using the server authentication private key ("d_s_{n}") corresponding to the server authentication public key ("Q_s_ {n}") to continue the chain of certificates.

[0193] На этапе 902 клиентский компьютер может генерировать маскирующий коэффициент клиента («d_bc») с использованием генератора псевдослучайных чисел («PRNG () # [0..q-1]»). [0193]At the stage 902, the client computer may generate a client masking factor ("d_bc") using a pseudo-random number generator ("PRNG()#[0..q-1]").

[0194] На этапе 903 клиентский компьютер может определить замаскированный открытый ключ клиента («Q_bc») с использованием алгоритма с открытым ключом («P») и маскирующего коэффициента клиента («Q_bc = [d_bc] . P»). [0194]At the stage 903, the client computer can determine the client's masked public key ("Q_bc") using a public key algorithm ("P") and a client masking factor ("Q_bc = [d_bc]. P").

[0195] На этапе 904 клиентский компьютер может определить первый промежуточный совместно используемый секрет («Z_1»). Первый промежуточный совместно используемый секрет может быть основан на x-координате совместно используемой результирующей точки эллиптической кривой по методу Диффи-Хеллмана на основе маскирующего коэффициента клиента и открытого ключа аутентификации сервера (Z_1 = [d_bc] . Q_s_{n}). [0195]At the stage 904, the client computer may determine the first intermediate shared secret ("Z_1"). The first intermediate shared secret may be based on the x-coordinate of the shared Diffie-Hellman elliptic curve result point based on the client masking factor and the server authentication public key (Z_1 = [d_bc] . Q_s_{n}).

[0196] На этапе 905 клиентский компьютер может определить идентификатор клиента («sID_c») для данного сеанса на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента. [0196]At the stage 905, the client computer can determine the client identifier ("sID_c") for a given session based on the x-coordinate of the elliptic curve of the client's masked public key (sID_c=x-coord ( Q_bc )). The client identifier ("sID_c") may be a truncated x-coordinate of the client's public encryption key.

[0197] На этапе 906 клиентский компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c)). [0197]At the stage 906, the client computer may determine the first session key ("sk_1_c") using a key derivation function ("KDF") based on the first intermediate shared secret ("Z_1"), the server identifier ("ID_s"), and the client identifier ("sID_c" ) (sk_1_c=KDF (Z_1 , ID_s, sID_c)).

[0198] На этапе 907 клиентский компьютер может определить подпись клиента («sig_c») путем подписывания сохраненного начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») с использованием алгоритма цифровой подписи (например, ECDSA) закрытым ключом аутентификации клиента («d_c») (sig_c=sign(d_c, seed | SD_c | Q_bc | Q_s_{n})). [0198]At the stage 907, the client computer can determine the client's signature ("sig_c") by signing the stored seed, the client's private data ("SD_c"), the client's masked public key ("Q_bc"), andn-th version of the server computer's public key authentication ("Q_s_{n}") using a digital signature algorithm (e.g. ECDSA) with the client's private authentication key ("d_c") (sig_c=sign(d_c, seed | SD_c | Q_bc | Q_s_{ n})).

[0199] На этапе 908 клиентский компьютер может генерировать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc _c=AEAD (sk_1_c , seed | SD_c | C_c | sig_c | PAD_c, Q_bc). Данные, зашифрованные клиентским компьютером, могут содержать начальное значение, закрытые данные клиента («SD_c»), подпись клиента («sig_c») и заполняющие данные шифрования клиента («PAD_c»). Заполняющие данные шифрования клиента («PAD_c») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать замаскированный открытый ключ клиента («Q_bc»). [0199]At the stage 908, the client computer may generate encrypted client data ("enc_c") using the first session key ("sk_1_c"). Encryption can be done using Authenticated Encryption Associated Data (AEAD) (enc _c=AEAD (sk_1_c , seed | SD_c | C_c | sig_c | PAD_c, Q_bc). The data encrypted by the client computer may contain the seed value, client private data (" SD_c"), client signature ("sig_c"), and client encryption padding data ("PAD_c"). Client encryption padding data ("PAD_c") may add an appropriate length to the encrypted data based on the encryption algorithm used. Encryption may also be based on associated data that remains in its original form (for example, it is not encrypted), but is checked for integrity.The associated data may contain a masked public key of the client ("Q_bc").

[0200] На этапе 909 клиентский компьютер может обнулить первый промежуточный совместно используемый секрет («Z_1») и первый ключ сеанса («sk_1_c»). [0200]At the stage 909, the client computer may reset the first intermediate shared secret ("Z_1") and the first session key ("sk_1_c").

[0201] На этапе 910 клиентский компьютер может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента («Q_bc») и зашифрованные данные клиента («enc_c»), на серверный компьютер. Таким образом, сообщение с запросом является «неотслеживаемым», поскольку ни замаскированный открытый ключ клиента («Q_bc»), ни зашифрованные данные клиента («enc_c») не могут быть использованы для идентификации или отслеживания клиентского компьютера. Например, открытый ключ аутентификации клиента («Q_c»), который может быть использован для идентификации клиентского компьютера (поскольку его цепочка сертификатов может использоваться для аутентификации клиентского компьютера), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ клиента («Q_bc»), который основан на случайным образом сгенерированном маскирующем коэффициенте клиента («d_bc»), отправляется открыто. [0201]At the stage 910, the client computer may send a challenge message containing the client's masked public key ("Q_bc") and encrypted client data ("enc_c") to the server computer. Thus, the challenge message is "untraceable" because neither the client's masked public key ("Q_bc") nor the client's encrypted data ("enc_c") can be used to identify or track the client computer. For example, the client authentication public key ("Q_c"), which can be used to identify the client computer (because its certificate chain can be used to authenticate the client computer), is not sent in the clear, but instead in encrypted form. Only the client's masked public key ("Q_bc"), which is based on a randomly generated client masking factor ("d_bc"), is sent in the clear.

[0202] На этапе 911 серверный компьютер может подтверждать, что замаскированный открытый ключ клиента («Q_bc») принадлежит области эллиптической кривой. [0202]At the stage 911, the server computer can confirm that the client's masked public key ("Q_bc") belongs to the elliptic curve region.

[0203] На этапе 912 серверный компьютер может определить такой же первый промежуточный совместно используемый секрет («Z_1»), который был определен клиентским компьютером. Серверный компьютер может определить первый промежуточный совместно используемый секрет («Z_1») с использованием n-ой версии закрытого ключа аутентификации сервера («d_s_{n}») и замаскированного открытого ключа клиента («Q_bc») (Z_1 = [d_s_{n}] . Q_bc). [0203]At the stage 912, the server computer may determine the same first intermediate shared secret ("Z_1") that was determined by the client computer. The server computer can determine the first intermediate shared secret ("Z_1") usingn-th version of the server's private authentication key ("d_s_{n}") and the client's masked public key ("Q_bc") (Z_1 = [d_s_{n}] . Q_bc).

[0204] На этапе 913 серверный компьютер может определить идентификатор клиента («sID_c») на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента. [0204]At the stage 913, the server computer can determine the client identifier ("sID_c") based on the x-coordinate of the elliptic curve of the client's masked public key (sID_c=x-coord ( Q_bc )). The client identifier ("sID_c") may be a truncated x-coordinate of the client's public encryption key.

[0205] На этапе 914 серверный компьютер может определить первый ключ сеанса («sk_1_s») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c )). [0205]At the stage 914, the server computer may determine the first session key ("sk_1_s") using a key derivation function ("KDF") based on the first intermediate shared secret ("Z_1"), the server identifier ("ID_s"), and the client identifier ("sID_c" ) (sk_1_c=KDF (Z_1 , ID_s, sID_c )).

[0206] На этапе 915 серверный компьютер может расшифровывать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c») и алгоритма расшифровки (AEAD-1) для определения начального значения, закрытых данных клиента («SD_c»), подписи клиента («sig_c») и заполняющих данных шифрования клиента («PAD_c») (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 ( sk_1_c , enc_c, Q_bc)). [0206]At the stage 915, the server computer can decrypt the client's encrypted data ("enc_c") using the first session key ("sk_1_c") and the decryption algorithm (AEAD-one) to define the seed, client private data ("SD_c"), client signature ("sig_c"), and client encryption padding data ("PAD_c") (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 ( sk_1_c , enc_c , Q_bc)).

[0207] На этапе 916 серверный компьютер может подтверждать подлинность начального значения (например, счетчик или время) для подтверждения того, что маскирующий коэффициент клиента является новым (например, количество времени, с тех пор как маскирующий коэффициент клиента был сгенерирован, не превышает определенное пороговое значение). [0207]At the stage 916, the server computer may authenticate the initial value (eg, counter or time) to confirm that the client masking factor is new (eg, the amount of time since the client masking factor was generated does not exceed a certain threshold).

[0208] На этапе 917 серверный компьютер может обнулить первый ключ сеанса («sk_1_c») и первый промежуточный совместно используемый секрет («Z_1»). [0208]At the stage 917, the server computer may reset the first session key ("sk_1_c") and the first intermediate shared secret ("Z_1").

[0209] На этапе 918 серверный компьютер может определить открытый ключ аутентификации клиента («Q_c») путем извлечения его из сертификата клиента («C_c») (Q_c=PubK(C_c)). [0209]At the stage 918, the server computer can determine the client's authentication public key ("Q_c") by extracting it from the client's certificate ("C_c") (Q_c=PubK(C_c)).

[0210] На этапе 919 серверный компьютер может подтверждать подлинность подписи сертификата клиента («C_c») и проверять принадлежность открытого ключа аутентификации клиента («Q_c») области эллиптической кривой. [0210]At the stage 919, the server computer can authenticate the client certificate signature ("C_c") and verify that the client's authentication public key ("Q_c") belongs to the elliptic curve region.

[0211] На этапе 920 серверный компьютер может подтверждать подлинность подписи клиента («sig_c») с помощью открытого ключа аутентификации клиента («Q_c») с использованием алгоритма цифровой подписи (например, ECDSA), и начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc»), а также n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») (verify(Q_c, sig_c, seed | SD_c |Q_bc | Q_s_{n})). Подпись клиента («sig_c») обеспечивает невозможность отказа клиентского компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации клиента («Q_c») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации клиента («d_c») (например, клиентскому компьютеру и при сохранении безопасности только клиентскому компьютеру). Дополнительно подпись клиента («sig_c») генерируется путем подписывания закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Следовательно, подпись клиента («sig_c») не только обеспечивает невозможность отказа клиентского компьютера, но и ограничивает данную подпись в отношении данного конкретного сеанса с данным серверным компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения. [0211]At the stage 920, the server computer can authenticate the client's signature ("sig_c") with the client's authentication public key ("Q_c") using a digital signature algorithm (e.g., ECDSA), and a seed, the client's private data ("SD_c"), masked client key ("Q_bc"), as well asn-th version of the server computer authentication public key ("Q_s_{n}") (verify(Q_c, sig_c, seed | SD_c |Q_bc | Q_s_{n})). The client signature ("sig_c") provides non-repudiation of the client computer because it can be authenticated using the client's public authentication key ("Q_c"), while providing the computer with access to the client's private authentication key ("d_c") (for example, the client computer and while maintaining security only to the client computer). Additionally, the client's signature ("sig_c") is generated by signing the client's private data ("SD_c"), the client's masked public key ("Q_bc"), andn-th version of the server computer's public key ("Q_s_{n}"). Therefore, the client signature ("sig_c") not only ensures that the client computer cannot fail, but also restricts the signature to that particular session with that server computer. Accordingly, another computer cannot pretend to be the recipient of this message.

[0212] На этапе 921 серверный компьютер может генерировать маскирующий коэффициент сервера («d_bs») с использованием генератора псевдослучайных чисел (d_bs=PRNG () # [0..q-1]). [0212]At the stage 921 The server computer can generate a server masking factor ("d_bs") using a pseudo-random number generator (d_bs=PRNG () # [0..q-1]).

[0213] На этапе 922 серверный компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента сервера («d_bs»), следующей версии закрытого ключа аутентификации сервера («d_s_{n+1}») и замаскированного открытого ключа клиента («Q_bc») (Z = [d_bs . d_s_{n+1}] Q_bc). [0213]At the stage 922, the server computer may determine a second intermediate shared secret ("Z") using the server's masking factor ("d_bs"), the next version of the server's private authentication key ("d_s_{n+1}"), and the client's masked public key ("Q_bc ”) (Z = [d_bs . d_s_{n+1}] Q_bc).

[0214] На этапе 923 серверный компьютер может определить замаскированный открытый ключ сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и следующей версии (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}») (Q_bs = [d_bs] . Q_s_{n+1}). [0214]At the stage 923, the server computer can determine the server's masked public key ("Q_bs") using the server's masking factor ("d_bs") and the next version (n+1) server computer authentication public key ("Q_s_{n+1}") (Q_bs = [d_bs] . Q_s_{n+1}).

[0215] На этапе 924 серверный компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)). [0215]At the stage 924, the server computer can determine the server identifier for a given communication session ("sID_s") using the server's masked public key ("Q_bs"). The server identifier ("sID_s") may be based on the x-coordinate of the elliptic curve of the server's masked public key ("Q_bs") (sID_s=x-coord (Q_bs)).

[0216] На этапе 925 серверный компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). Вторые ключи сеанса («sk_s | sk_c») могут быть использованы для шифрования будущих сообщений, отправляемых между клиентом и сервером для использования разных ключей шифрования в каждом направлении (например, от клиента к серверу и от сервера к клиенту). [0216]At the stage 925, the server computer can determine the second session key ("sk_s | sk_c") using a key derivation function based on the second intermediate shared secret ("Z"), the server identifier ("sID_s") for the given communication session, and the client identifier (" sID_c") for this session (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). Second session keys ("sk_s | sk_c") can be used to encrypt future messages sent between client and server to use different encryption keys in each direction (eg, client to server and server to client).

[0217] На этапе 926 серверный компьютер может генерировать зашифрованные данные сервера («enc_s») с использованием второго ключа сеанса («sk_s»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_s=AEAD ( sk_s , d_bs | C_s_{n+1} | SD_s | PAD_s, Q_bs)). Данные, зашифрованные серверным компьютером, могут содержать маскирующий коэффициент сервера («d_bs»), следующую версию (n+1) сертификата сервера («C_s_{n+1}»), которая связана со следующей версией (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}»), закрытые данные сервера («SD_s») (например, полезные данные сервера в ответ на запрос клиента) и заполняющие данные шифрования сервера («PAD_s»). Заполняющие данные шифрования сервера («PAD_s») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать заблокированный открытый ключ сервера («Q_bs»). [0217]At the stage 926, the server computer may generate encrypted server data ("enc_s") using a second session key ("sk_s"). Encryption can be performed using Authenticated Encryption Associated Data (AEAD) (enc_s=AEAD ( sk_s , d_bs | C_s_{n+1} | SD_s | PAD_s, Q_bs)). Data encrypted by the server computer may contain a server masking factor ("d_bs"), the following version (n+1) server certificate ("C_s_{n+1}"), which is associated with the next version (n+1) server computer authentication public key ("Q_s_{n+1}"), server private data ("SD_s") (eg, server payload in response to a client request), and server encryption padding data ("PAD_s"). Server encryption padding data ("PAD_s") may add an appropriate length to the encrypted data based on the encryption algorithm used. Encryption can also be based on associated data that remains intact (for example, it is not encrypted) but is checked for integrity. The associated data may contain a locked server public key ("Q_bs").

[0218] На этапе 927 серверный компьютер может обнулить второй ключ сеанса («sk_s»), второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент сервера («d_bs»). С помощью обнуления первого ключа сеанса («sk_1_c») и первого промежуточного совместно используемого секрета («Z_1») на этапе 917 и затем обнуления второго ключа сеанса («sk_s»), второго промежуточного совместно используемого секрета («Z») и маскирующего коэффициента сервера («d_bs») на этапе 928 серверный компьютер сохраняет идеальную прямую секретность. Идеальная прямая секретность сохраняется, поскольку любые данные, которые могут потенциально использоваться для взлома шифрования сообщения с ответом (например, sk_s, Z, d_bs, sk_1_c, и Z_1), удалены. Например, данные, остающиеся на серверном компьютере, такие как статический закрытый ключ аутентификации сервера (d_s) и статический открытый ключ аутентификации сервера (Q_s), не были использованы при шифровании зашифрованных данных сервера (enc_s). [0218]At the stage 927, the server computer may reset the second session key ("sk_s"), the second intermediate shared secret ("Z"), and the server masking factor ("d_bs"). By zeroing out the first session key ("sk_1_c") and the first intermediate shared secret ("Z_1") in step 917 and then zeroing out the second session key ("sk_s"), the second intermediate shared secret ("Z") and the masking factor server ("d_bs") at step 928, the server computer maintains perfect forward secrecy. Perfect forward secrecy is maintained because any data that could potentially be used to break the encryption of the response message (eg, sk_s, Z, d_bs, sk_1_c, and Z_1) is removed. For example, the data remaining on the server computer, such as the server's static private authentication key (d_s) and the server's static public authentication key (Q_s), were not used in encrypting the server's encrypted data (enc_s).

[0219] На этапе 928 серверный компьютер может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера («Q_bs») и зашифрованные данные сервера («enc_s»), на клиентский компьютер. Таким образом, сообщение с ответом является «неотслеживаемым», поскольку ни замаскированный открытый ключ сервера («Q_bs»), ни зашифрованные данные сервера («enc_s») не могут быть использованы для идентификации или отслеживания серверного компьютера. Например, статический открытый ключ аутентификации сервера («Q_s»), который может быть использован для идентификации серверного компьютера (поскольку его цепочка сертификатов может использоваться для аутентификации серверного компьютера), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ сервера («Q_bs»), который основан на случайным образом сгенерированном маскирующем коэффициенте сервера («d_bs»), отправляется открыто. [0219]At the stage 928, the server computer may send a response message containing the server's masked public key ("Q_bs") and encrypted server data ("enc_s") to the client computer. Thus, the response message is "untraceable" because neither the server's masked public key ("Q_bs") nor the server's encrypted data ("enc_s") can be used to identify or track the server computer. For example, the static server authentication public key ("Q_s"), which can be used to identify the server computer (because its certificate chain can be used to authenticate the server computer), is not sent in the clear, but instead in encrypted form. Only the server's masked public key ("Q_bs"), which is based on a randomly generated server masking factor ("d_bs"), is sent in the clear.

[0220] На этапе 929 клиентский компьютер может подтверждать, что замаскированный открытый ключ сервера («Q_bs») принадлежит области эллиптической кривой. [0220]At the stage 929, the client computer can confirm that the server's masked public key ("Q_bs") belongs to the elliptic curve region.

[0221] На этапе 930 клиентский компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента клиента («d_bc») и замаскированного открытого ключа сервера («Q_bs») (Z = [d_bc] . Q_bs). [0221]At the stage 930, the client computer may determine a second intermediate shared secret ("Z") using the client's masking factor ("d_bc") and the server's masked public key ("Q_bs") (Z = [d_bc]. Q_bs).

[0222] На этапе 931 клиентский компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)). [0222]At the stage 931, the client computer can determine the server identifier for a given communication session ("sID_s") using the server's masked public key ("Q_bs"). The server identifier ("sID_s") may be based on the x-coordinate of the elliptic curve of the server's masked public key ("Q_bs") (sID_s=x-coord (Q_bs)).

[0223] На этапе 932 клиентский компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF (Z, sID_s, sID_c)). [0223]At the stage 932, the client computer can determine the second session key ("sk_s | sk_c") using a key derivation function based on the second intermediate shared secret ("Z"), the server identifier ("sID_s") for the given communication session, and the client identifier (" sID_c") for this session (sk_s | sk_c=KDF (Z, sID_s, sID_c)).

[0224] На этапе 933 клиентский компьютер может обнулить второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент клиента («d_bc»). [0224]At the stage 933, the client computer may reset the second intermediate shared secret ("Z") and the client masking factor ("d_bc") to zero.

[0225] На этапе 934 клиентский компьютер может расшифровывать зашифрованные данные сервера («enc_s») с использованием первого ключа сеанса («sk_s») и алгоритма расшифровки (AEAD-1) для определения маскирующего коэффициента сервера («d_bs»), следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s») и заполняющих данных шифрования сервера («PAD_s»). Замаскированный открытый ключ сервера («Q_bs») может быть использован как дополнительные данные в алгоритме расшифровки. [0225]At the stage 934, the client computer can decrypt the server's encrypted data ("enc_s") using the first session key ("sk_s") and the decryption algorithm (AEAD-one) to determine the server masking factor ("d_bs"), the next version of the server certificate ("C_s_{n+1}"), server private data ("SD_s"), and server encryption padding data ("PAD_s"). The server's masked public key ("Q_bs") can be used as additional data in the decryption algorithm.

[0226] На этапе 935 клиентский компьютер может определить следующую версию открытого ключа сервера («Q_s_{n+1}») путем извлечения его из следующей версии сертификата сервера («C_s_{n+1}») (Q_s_{n+1} = PubK(C_s_{n+1}). [0226]At the stage 935, the client computer can determine the next version of the server's public key ("Q_s_{n+1}") by extracting it from the next version of the server's certificate ("C_s_{n+1}") (Q_s_{n+1} = PubK(C_s_{ n+1}).

[0227] На этапе 936 клиентский компьютер может подтверждать подлинность подписи сертификата сервера («C_s_{n+1}») и может проверять принадлежность открытого ключа сервера («Q_s_{n+1}») области эллиптической кривой. [0227]At the stage 936, the client computer may authenticate the server's certificate signature ("C_s_{n+1}") and may verify that the server's public key ("Q_s_{n+1}") belongs to the elliptic curve region.

[0228] На этапе 937 клиентский компьютер может подтверждать подлинность замаскированного открытого ключа сервера («Q_bs»), принятого в сообщении с ответом, путем определения замаскированного открытого ключа сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и открытого ключа сервера («Q_s_{n+1}»). Подтверждение подлинности замаскированного открытого ключа сервера («Q_bs») само по себе может не обеспечивать невозможность отказа. Невозможность отказа может быть обеспечена с использованием подписей, как обсуждено выше. [0228]At the stage 937, the client computer may authenticate the masqueraded server public key ("Q_bs") received in the response message by determining the masqueraded server public key ("Q_bs") using the server masking factor ("d_bs") and the server public key ("Q_s_ {n+1}"). Authentication of the server's masked public key ("Q_bs") may not, by itself, provide non-repudiation. Non-repudiation can be provided using signatures as discussed above.

[0229] На этапе 938 клиентский компьютер может обнулить маскирующий коэффициент сервера («d_bs»). [0229]At the stage 938, the client computer can reset the server masking factor ("d_bs") to zero.

[0230] С помощью способа, показанного в таблице 900, клиентский компьютер и серверный компьютер могут установить безопасный обмен данными с использованием только двух неотслеживаемых сообщений, что может обеспечить невозможность отказа клиентского компьютера и сохранить идеальную прямую секретность. [0230] Using the method shown in Table 900, the client computer and the server computer can establish a secure communication using only two untraceable messages, which can make the client computer fail-safe and maintain perfect forward secrecy.

B. Способ безопасного обмена данными, обеспечивающий идеальную прямую секретность и невозможность отказа клиента и сервераB. A method of secure communication that provides perfect forward secrecy and non-repudiation of the client and server

[0231] Фиг. 10 представляет собой таблицу 1000 этапов выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с идеальной прямой секретностью между клиентским компьютером и серверным компьютером, так что клиентский компьютер и серверный компьютер не могут отказываться от своих сообщений, в соответствии с некоторыми вариантами осуществления. Клиентский компьютер может представлять собой, например, интерфейсное устройство (IFD). Серверный компьютер может представлять собой, например, чип с интегральными микросхемами (ICC) или мобильное устройство. Некоторые из всех этапов в таблице 1000 могут быть выполнены в потоках сообщений, описанных в настоящем документе, например, таких как поток сообщений по фиг. 5. Дополнительно этапы в таблице 1000 могут быть выполнены в другом порядке. [0231] FIG. 10 is a table 1000 of the execution steps of a computer-implemented method for establishing secure and untraceable communications with perfect forward secrecy between a client computer and a server computer such that the client computer and server computer cannot relinquish their messages, in accordance with some embodiments. The client computer may be, for example, an interface device (IFD). The server computer may be, for example, an integrated circuit chip (ICC) or a mobile device. Some of all the steps in table 1000 may be performed in the message flows described herein, such as the message flow of FIG. 5. Additionally, the steps in table 1000 may be performed in a different order.

[0232] На этапе 1001 клиентский компьютер может сохранить n-ую версию открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Клиентский компьютер мог ранее принять данную конкретную версию открытого ключа серверного компьютера от серверного компьютера. Клиентский компьютер может также сохранить n-ую версию сертификата серверного компьютера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Клиентский компьютер может также сохранить закрытые данные клиента («SD_c»). Закрытые данные клиента могут быть частью полезных данных, отправляемых в сообщении с запросом на серверный компьютер. Клиентский компьютер может также сохранить идентификатор сервера («ID_s»), идентифицирующий серверный компьютер. Клиентский компьютер может также сохранить сертификат клиента («C_c») для аутентификации цепочки сертификатов клиентского компьютера. Клиентский компьютер может также сохранить закрытый ключ аутентификации клиента («d_c»), который совпадает с соответствующим открытым ключом аутентификации клиента («Q_c»), образуя пару ключей на основе эллиптической кривой. Открытый ключ аутентификации клиента («Q_c») может быть определен с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации клиента (Q_c = [d_c] P). Клиентский компьютер может также сохранить начальное значение («seed»). Начальное значение может быть значением доверенного времени или значением счетчика, которое может быть включено в сообщение для указания новизны или своевременности данного сообщения. [0232] In step 1001, the client computer may store the nth version of the server computer's authentication public key ("Q_s_{n}"). The client computer may have previously received this particular version of the server computer's public key from the server computer. The client computer may also store the nth version of the server computer's certificate ("C_s_{n}") to authenticate the server computer's certificate chain. The client computer may also store private client data ("SD_c"). Private client data can be part of the payload sent in the request message to the server computer. The client computer may also store a server identifier ("ID_s") that identifies the server computer. The client computer may also store a client certificate ("C_c") to authenticate the client computer's certificate chain. The client computer may also store a client authentication private key ("d_c") that matches the corresponding client authentication public key ("Q_c") to form an elliptic curve key pair. The client authentication public key ("Q_c") may be determined using a public key ("P") algorithm based on the client's private authentication key (Q_c = [d_c] P). The client computer may also store the seed ("seed"). The initial value may be a trusted time value or a counter value that may be included in the message to indicate the newness or timeliness of the message.

[0233] Серверный компьютер может сохранить n-ую версию открытого ключа аутентификации сервера («Q_s_{n}») и соответствующего закрытого ключа аутентификации сервера («d_s_{n}»), которые образуют пару ключей на основе эллиптической кривой. Серверный компьютер может определить открытый ключ аутентификации сервера с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации сервера (Q_s_{n} = [d_s_{n}] P). Серверный компьютер может также сохранить n-ую версию сертификата сервера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Серверный компьютер может также сохранить закрытые данные сервера («SD_s»), которые могут быть включены в зашифрованные полезные данные для клиентского компьютера. Серверный компьютер может также сохранить следующие версии открытого ключа аутентификации сервера («Q_s_{n+1}»), закрытый ключ аутентификации сервера («d_s_{n+1}») и соответствующий сертификат («C_s_{n+1}»). [0233] The server computer may store the nth version of the server authentication public key ("Q_s_{n}") and the corresponding server authentication private key ("d_s_{n}"), which form an elliptic curve key pair. The server computer may determine the server authentication public key using a public key ("P") algorithm based on the server's private authentication key (Q_s_{n} = [d_s_{n}] P). The server computer may also store the nth version of the server certificate ("C_s_{n}") to authenticate the server computer's certificate chain. The server computer may also store private server data ("SD_s") that may be included in the encrypted payload for the client computer. The server computer may also store the following versions of the server authentication public key ("Q_s_{n+1}"), the server authentication private key ("d_s_{n+1}"), and the corresponding certificate ("C_s_{n+1}").

[0234] На этапе 1002 клиентский компьютер может генерировать маскирующий коэффициент клиента («d_bc») с использованием генератора псевдослучайных чисел («PRNG () # [0..q-1]»). [0234] At 1002, the client computer may generate a client masking factor ("d_bc") using a pseudo-random number generator ("PRNG () # [0..q-1]").

[0235] На этапе 1003 клиентский компьютер может определить замаскированный открытый ключ клиента («Q_bc») с использованием алгоритма с открытым ключом («P») и маскирующего коэффициента клиента («Q_bc = [d_bc] . P»). [0235] At 1003, the client computer may determine the client's masked public key ("Q_bc") using a public key algorithm ("P") and a client masking factor ("Q_bc = [d_bc]. P").

[0236] На этапе 1004 клиентский компьютер может определить первый промежуточный совместно используемый секрет («Z_1»). Первый промежуточный совместно используемый секрет может быть основан на x-координате совместно используемой результирующей точки эллиптической кривой по методу Диффи-Хеллмана на основе маскирующего коэффициента клиента и открытого ключа аутентификации сервера (Z_1 = [d_bc] . Q_s_{n}). [0236] At 1004, the client computer may determine a first intermediate shared secret ("Z_1"). The first intermediate shared secret may be based on the x-coordinate of the shared Diffie-Hellman elliptic curve result point based on the client masking factor and the server authentication public key (Z_1 = [d_bc] . Q_s_{n}).

[0237] На этапе 1005 клиентский компьютер может определить идентификатор клиента («sID_c») для данного сеанса на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента. [0237] At 1005, the client computer may determine a client identifier ("sID_c") for a given session based on the x-coordinate of the elliptic curve of the client's masked public key (sID_c=x-coord ( Q_bc )). The client identifier ("sID_c") may be a truncated x-coordinate of the client's public encryption key.

[0238] На этапе 1006 клиентский компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c)). [0238] In step 1006, the client computer may determine the first session key ("sk_1_c") using a key derivation function ("KDF") based on the first intermediate shared secret ("Z_1"), the server identifier ("ID_s"), and the identifier client ("sID_c") (sk_1_c=KDF (Z_1 , ID_s, sID_c)).

[0239] На этапе 1007 клиентский компьютер может определить подпись клиента («sig_c») путем подписывания сохраненного начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») с использованием алгоритма цифровой подписи (например, ECDSA) и посредством закрытого ключа аутентификации клиента («d_c») (sig_c=sign(d_c, seed | SD_c | Q_bc | Q_s_{n})). [0239] In step 1007, the client computer may determine the client's signature ("sig_c") by signing the stored seed, the client's private data ("SD_c"), the client's masked public key ("Q_bc"), and the nth version of the server's authentication public key. computer ("Q_s_{n}") using a digital signature algorithm (for example, ECDSA) and through the client's private authentication key ("d_c") (sig_c=sign(d_c, seed | SD_c | Q_bc | Q_s_{n})).

[0240] На этапе 1008 клиентский компьютер может генерировать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_c=AEAD (sk_1_c , seed | SD_c | C_c | sig_c | PAD_c, Q_bc)). Данные, зашифрованные клиентским компьютером, могут содержать начальное значение, закрытые данные клиента («SD_c»), подпись клиента («sig_c») и заполняющие данные шифрования клиента («PAD_c»). Заполняющие данные шифрования клиента («PAD_c») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать замаскированный открытый ключ клиента («Q_bc»). [0240] At 1008, the client computer may generate encrypted client data ("enc_c") using the first session key ("sk_1_c"). Encryption can be performed using Authenticated Encryption Associated Data (AEAD) (enc_c=AEAD(sk_1_c , seed | SD_c | C_c | sig_c | PAD_c, Q_bc)). The data encrypted by the client computer may include a seed, client private data ("SD_c"), client signature ("sig_c"), and client encryption padding data ("PAD_c"). The padding client encryption data ("PAD_c") may add an appropriate length to the encrypted data based on the encryption algorithm used. Encryption can also be based on associated data that remains intact (for example, it is not encrypted) but is checked for integrity. The associated data may contain a masked public key of the client ("Q_bc").

[0241] На этапе 1009 клиентский компьютер может обнулить первый промежуточный совместно используемый секрет («Z_1») и первый ключ сеанса («sk_1_c»). [0241] At 1009, the client computer may reset the first intermediate shared secret ("Z_1") and the first session key ("sk_1_c").

[0242] На этапе 1010 клиентский компьютер может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента («Q_bc») и зашифрованные данные клиента («enc_c»), на серверный компьютер. Таким образом, сообщение с запросом является «неотслеживаемым», поскольку ни замаскированный открытый ключ клиента («Q_bc»), ни зашифрованные данные клиента («enc_c») не могут быть использованы для идентификации или отслеживания клиентского компьютера. Например, открытый ключ аутентификации клиента («Q_c»), который может быть использован для идентификации клиентского компьютера (поскольку его цепочка сертификатов может использоваться для его аутентификации), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ клиента («Q_bc»), который основан на случайным образом сгенерированном маскирующем коэффициенте клиента («d_c»), отправляется открыто. [0242] At 1010, the client computer may send a challenge message containing the client's masked public key ("Q_bc") and encrypted client data ("enc_c") to the server computer. Thus, the challenge message is "untraceable" because neither the client's masked public key ("Q_bc") nor the client's encrypted data ("enc_c") can be used to identify or track the client computer. For example, the client authentication public key ("Q_c"), which can be used to identify the client computer (because its certificate chain can be used to authenticate it), is not sent in the clear, but instead in encrypted form. Only the client's masked public key ("Q_bc"), which is based on a randomly generated client masking factor ("d_c"), is sent in the clear.

[0243] На этапе 1011 серверный компьютер может подтверждать, что замаскированный открытый ключ клиента («Q_bc») принадлежит области эллиптической кривой. [0243] At 1011, the server computer may confirm that the client's masked public key ("Q_bc") belongs to the elliptic curve region.

[0244] На этапе 1012 серверный компьютер может определить такой же первый промежуточный совместно используемый секрет («Z_1»), который был определен клиентским компьютером. Серверный компьютер может определить первый промежуточный совместно используемый секрет («Z_1») с использованием n-ой версии закрытого ключа аутентификации сервера («d_s_{n}») и замаскированного открытого ключа клиента («Q_bc») (Z_1 = [d_s_{n}] . Q_bc). [0244] At 1012, the server computer may determine the same first intermediate shared secret ("Z_1") that was determined by the client computer. The server computer can determine the first intermediate shared secret ("Z_1") using the nth version of the server's private authentication key ("d_s_{n}") and the client's masked public key ("Q_bc") (Z_1 = [d_s_{n} ] .Q_bc).

[0245] На этапе 1013 серверный компьютер может определить идентификатор клиента («sID_c») на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента. [0245] In step 1013, the server computer may determine the client identifier ("sID_c") based on the x-coordinate of the elliptic curve of the masked client public key (sID_c=x-coord ( Q_bc )). The client identifier ("sID_c") may be a truncated x-coordinate of the client's public encryption key.

[0246] На этапе 1014 серверный компьютер может определить первый ключ сеанса («sk_1_s») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c )). [0246] In step 1014, the server computer may determine the first session key ("sk_1_s") using a key derivation function ("KDF") based on the first intermediate shared secret ("Z_1"), the server identifier ("ID_s"), and the identifier client ("sID_c") (sk_1_c=KDF (Z_1 , ID_s, sID_c )).

[0247] На этапе 1015 серверный компьютер может расшифровывать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c») и алгоритма расшифровки (AEAD-1) для определения начального значения, закрытых данных клиента («SD_c»), подписи клиента («sig_c») и заполняющих данных шифрования клиента («PAD_c») (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 (sk_1_c , enc_c, Q_bc)). [0247] In step 1015, the server computer may decrypt the encrypted client data ("enc_c") using the first session key ("sk_1_c") and the decryption algorithm (AEAD -1 ) to determine the initial value, the private client data ("SD_c"), client signature ("sig_c") and client encryption padding data ("PAD_c") (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 (sk_1_c , enc_c, Q_bc)).

[0248] На этапе 1016 серверный компьютер может подтверждать подлинность начального значения (например, счетчик или время) для подтверждения того, что маскирующий коэффициент клиента является новым (например, количество времени, с тех пор как маскирующий коэффициент клиента был сгенерирован, не превышает определенное пороговое значение). [0248] At 1016, the server computer may authenticate the seed value (e.g., counter or time) to confirm that the client masking factor is new (e.g., the amount of time since the client masking factor was generated does not exceed a certain threshold meaning).

[0249] На этапе 1017 серверный компьютер может обнулить первый ключ сеанса («sk_1_c») и первый промежуточный совместно используемый секрет («Z_1»). [0249] At 1017, the server computer may reset the first session key ("sk_1_c") and the first intermediate shared secret ("Z_1").

[0250] На этапе 1018 серверный компьютер может определить открытый ключ аутентификации клиента («Q_c») путем извлечения его из сертификата клиента («C_c») (Q_c=PubK(C_c)). [0250] At 1018, the server computer may determine the client authentication public key ("Q_c") by extracting it from the client certificate ("C_c") (Q_c=PubK(C_c)).

[0251] На этапе 1019 серверный компьютер может подтверждать подлинность подписи сертификата клиента («C_c») и проверять принадлежность открытого ключа аутентификации клиента («Q_c») области эллиптической кривой. [0251] In step 1019, the server computer may authenticate the client certificate signature ("C_c") and verify that the client authentication public key ("Q_c") belongs to the elliptic curve region.

[0252] На этапе 1020 серверный компьютер может подтверждать подлинность подписи клиента («sig_c») с помощью открытого ключа аутентификации клиента («Q_c») с использованием алгоритма цифровой подписи (например, ECDSA), и начального значения, закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc»), а также n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}») (verify(Q_c, sig_c, seed | SD_c |Q_bc | Q_s_{n})). Подпись клиента («sig_c») обеспечивает невозможность отказа клиентского компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации клиента («Q_c») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации клиента («d_c») (например, клиентскому компьютеру и при сохранении безопасности только клиентскому компьютеру). Дополнительно подпись клиента («sig_c») генерируется путем подписывания закрытых данных клиента («SD_c»), замаскированного открытого ключа клиента («Q_bc») и n-ой версии открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Следовательно, подпись клиента («sig_c») не только обеспечивает невозможность отказа клиентского компьютера, но и ограничивает данную подпись в отношении данного конкретного сеанса с данным серверным компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения. [0252] At 1020, the server computer may authenticate the client's signature ("sig_c") with the client's public authentication key ("Q_c") using a digital signature algorithm (eg, ECDSA), and an initial value, the client's private data ("SD_c ”), a masked client public key (“Q_bc”), and the nth version of the server computer’s public authentication key (“Q_s_{n}”) (verify(Q_c, sig_c, seed | SD_c |Q_bc | Q_s_{n}) ). The client signature ("sig_c") provides non-repudiation of the client computer because it can be authenticated using the client's public authentication key ("Q_c"), while providing the computer with access to the client's private authentication key ("d_c") (for example, the client computer and while maintaining security only to the client computer). Additionally, the client's signature ("sig_c") is generated by signing the client's private data ("SD_c"), the client's masked public key ("Q_bc"), and the nth version of the server computer's authentication public key ("Q_s_{n}"). Therefore, the client signature ("sig_c") not only ensures that the client computer cannot fail, but also restricts the signature to that particular session with that server computer. Accordingly, another computer cannot pretend to be the recipient of this message.

[0253] На этапе 1021 серверный компьютер может генерировать маскирующий коэффициент сервера («d_bs») с использованием генератора псевдослучайных чисел (d_bs=PRNG () # [0..q-1]). [0253] In step 1021, the server computer may generate a server masking factor ("d_bs") using a pseudo-random number generator (d_bs=PRNG () # [0..q-1]).

[0254] На этапе 1022 серверный компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента сервера («d_bs»), следующей версии закрытого ключа аутентификации сервера («d_s_{n+1}») и замаскированного открытого ключа клиента («Q_bc») (Z = [d_bs . d_s_{n+1}] Q_bc). [0254] At 1022, the server computer may determine a second intermediate shared secret ("Z") using a server masking factor ("d_bs"), a next version of the server's private authentication key ("d_s_{n+1}"), and a masked public client key ("Q_bc") (Z = [d_bs . d_s_{n+1}] Q_bc).

[0255] На этапе 1023 серверный компьютер может определить замаскированный открытый ключ сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и следующей версии (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}») (Q_bs = [d_bs] . Q_s_{n+1}). [0255] In step 1023, the server computer may determine the server computer's masked public key ("Q_bs") using the server's masking factor ("d_bs") and the next version ( n +1) of the server computer's authentication public key ("Q_s_{n+1} ”) (Q_bs = [d_bs] . Q_s_{n+1}).

[0256] На этапе 1024 серверный компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)). [0256] At 1024, the server computer may determine a server identifier for a given communication session ("sID_s") using the server's masked public key ("Q_bs"). The server identifier ("sID_s") may be based on the x-coordinate of the elliptic curve of the server's masked public key ("Q_bs") (sID_s=x-coord (Q_bs)).

[0257] На этапе 1025 серверный компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). [0257] In step 1025, the server computer may determine the second session key ("sk_s | sk_c") using a key derivation function based on the second intermediate shared secret ("Z"), the server identifier ("sID_s") for the given communication session and the client identifier ("sID_c") for this session (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0258] На этапе 1026 серверный компьютер может определить подпись сервера («sig_s») путем подписывания следующей версии (n+1) сертификата серверного компьютера («C_s_{n+1}»), закрытых данных сервера («SD_s») (например, полезных данных), замаскированного открытого ключа сервера («Q_bs») и открытого ключа аутентификации клиента («Q_c») с использованием алгоритма цифровой подписи (например, ECDSA) посредством закрытого ключа аутентификации сервера («d_s») (sig_s=sign (d_s, C_s_{n+1} | SD_s | Q_bs | Q_c)). [0258] In step 1026, the server computer may determine the server's signature ("sig_s") by signing the next version ( n +1) of the server computer's certificate ("C_s_{n+1}"), server private data ("SD_s") (e.g. , payload), a masked server public key ("Q_bs"), and a client authentication public key ("Q_c") using a digital signature algorithm (e.g., ECDSA) via the server's private authentication key ("d_s") (sig_s=sign (d_s , C_s_{n+1} | SD_s | Q_bs | Q_c)).

[0259] На этапе 1027 серверный компьютер может генерировать зашифрованные данные сервера («enc_s») с использованием второго ключа сеанса («sk_s»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_s=AEAD (sk_s , d_bs | C_s_{n+1} | SD_s | PAD_s, Q_bs)). Данные, зашифрованные серверным компьютером, могут содержать следующую версию (n+1) сертификата сервера («C_s_{n+1}»), которая связана со следующей версией (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}»), закрытые данные сервера («SD_s») (например, полезные данные сервера в ответ на запрос клиента), подпись сервера («sig_s») и заполняющие данные шифрования сервера («PAD_s»). Заполняющие данные шифрования сервера («PAD_s») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать заблокированный открытый ключ сервера («Q_bs»). [0259] At 1027, the server computer may generate encrypted server data ("enc_s") using a second session key ("sk_s"). Encryption can be performed using Authenticated Encryption Associated Data (AEAD) (enc_s=AEAD (sk_s , d_bs | C_s_{n+1} | SD_s | PAD_s, Q_bs)). Data encrypted by the server computer may contain the next version ( n +1) of the server certificate ("C_s_{n+1}"), which is associated with the next version ( n +1) of the server computer's public authentication key ("Q_s_{n+1 }"), server private data ("SD_s") (eg, server payload in response to a client request), server signature ("sig_s"), and server encryption padding data ("PAD_s"). The padding server encryption data ("PAD_s") may add an appropriate length to the encrypted data based on the encryption algorithm used. Encryption can also be based on associated data that remains intact (for example, it is not encrypted) but is checked for integrity. The associated data may contain a locked server public key ("Q_bs").

[0260] На этапе 1028 серверный компьютер может обнулить второй ключ сеанса («sk_s»), второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент сервера («d_bs»). С помощью обнуления первого ключа сеанса («sk_1_c») и первого промежуточного совместно используемого секрета («Z_1») на этапе 1017 и затем обнуления второго ключа сеанса («sk_s»), второго промежуточного совместно используемого секрета («Z») и маскирующего коэффициента сервера («d_bs») на этапе 1028 серверный компьютер сохраняет идеальную прямую секретность. Идеальная прямая секретность сохраняется, поскольку любые данные, которые могут потенциально использоваться для взлома шифрования сообщения с ответом (например, sk_s, Z, d_bs, sk_1_c, и Z_1), удалены. Например, данные, остающиеся на серверном компьютере, такие как статический закрытый ключ аутентификации сервера (d_s) и статический открытый ключ аутентификации сервера (Q_s), не были использованы при шифровании зашифрованных данных сервера (enc_s). [0260] At 1028, the server computer may reset the second session key ("sk_s"), the second intermediate shared secret ("Z"), and the server masking factor ("d_bs"). By zeroing out the first session key ("sk_1_c") and the first intermediate shared secret ("Z_1") in step 1017 and then zeroing out the second session key ("sk_s"), the second intermediate shared secret ("Z") and the masking factor server ("d_bs") at 1028, the server computer maintains perfect forward secrecy. Perfect forward secrecy is maintained because any data that could potentially be used to break the encryption of the response message (eg, sk_s, Z, d_bs, sk_1_c, and Z_1) is removed. For example, the data remaining on the server computer, such as the server's static private authentication key (d_s) and the server's static public authentication key (Q_s), were not used in encrypting the server's encrypted data (enc_s).

[0261] На этапе 1029 серверный компьютер может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера («Q_bs») и зашифрованные данные сервера («enc_s»), на клиентский компьютер. Таким образом, сообщение с ответом является «неотслеживаемым», поскольку ни замаскированный открытый ключ сервера («Q_bs»), ни зашифрованные данные сервера («enc_s») не могут быть использованы для идентификации или отслеживания серверного компьютера. Например, статический открытый ключ аутентификации сервера («Q_s»), который может быть использован для идентификации серверного компьютера (поскольку его цепочка сертификатов может использоваться для аутентификации серверного компьютера), отправляется не открыто, а вместо этого в зашифрованном виде. Только замаскированный открытый ключ сервера («Q_bs»), который основан на случайным образом сгенерированном маскирующем коэффициенте сервера («d_bs»), отправляется открыто. [0261] At 1029, the server computer may send a response message containing the server's masked public key ("Q_bs") and encrypted server data ("enc_s") to the client computer. Thus, the response message is "untraceable" because neither the server's masked public key ("Q_bs") nor the server's encrypted data ("enc_s") can be used to identify or track the server computer. For example, the static server authentication public key ("Q_s"), which can be used to identify the server computer (because its certificate chain can be used to authenticate the server computer), is not sent in the clear, but instead in encrypted form. Only the server's masked public key ("Q_bs"), which is based on a randomly generated server masking factor ("d_bs"), is sent in the clear.

[0262] На этапе 1030 клиентский компьютер может подтверждать, что замаскированный открытый ключ сервера («Q_bs») принадлежит области эллиптической кривой. [0262] At 1030, the client computer may confirm that the server's masked public key ("Q_bs") belongs to the elliptic curve region.

[0263] На этапе 1031 клиентский компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента клиента («d_bc») и замаскированного открытого ключа сервера («Q_bs») (Z = [d_bc] . Q_bs). [0263] At 1031, the client computer may determine a second intermediate shared secret ("Z") using the client's masking factor ("d_bc") and the server's masked public key ("Q_bs") (Z = [d_bc]. Q_bs).

[0264] На этапе 1032 клиентский компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)). [0264] At 1032, the client computer may determine the server identifier for a given communication session ("sID_s") using the server's masked public key ("Q_bs"). The server identifier ("sID_s") may be based on the x-coordinate of the elliptic curve of the server's masked public key ("Q_bs") (sID_s=x-coord (Q_bs)).

[0265] На этапе 1033 клиентский компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). [0265] In step 1033, the client computer may determine the second session key ("sk_s | sk_c") using a key derivation function based on the second intermediate shared secret ("Z"), the server identifier ("sID_s") for the given communication session and the client identifier ("sID_c") for this session (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0266] На этапе 1034 клиентский компьютер может обнулить второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент клиента («d_bc»). [0266] At 1034, the client computer may reset the second intermediate shared secret ("Z") and the client masking factor ("d_bc") to zero.

[0267] На этапе 1035 клиентский компьютер может расшифровывать зашифрованные данные сервера («enc_s») с использованием первого ключа сеанса («sk_s») и алгоритма расшифровки (AEAD-1) для определения следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s»), подписи сервера («sig_s») и заполняющих данных шифрования сервера («PAD_s»). Замаскированный открытый ключ сервера («Q_bs») может быть использован как дополнительные данные в алгоритме расшифровки. [0267] In step 1035, the client computer may decrypt the encrypted server data ("enc_s") using the first session key ("sk_s") and the decryption algorithm (AEAD -1 ) to determine the next server certificate version ("C_s_{n+1} ”), server private data (“SD_s”), server signature (“sig_s”), and server encryption padding data (“PAD_s”). The server's masked public key ("Q_bs") can be used as additional data in the decryption algorithm.

[0268] На этапе 1036 клиентский компьютер может определить следующую версию открытого ключа сервера («Q_s_{n+1}») путем извлечения его из следующей версии сертификата сервера («C_s_{n+1}») (Q_s_{n+1} = PubK(C_s_{n+1}). [0268] At 1036, the client computer may determine the next version of the server's public key ("Q_s_{n+1}") by extracting it from the next version of the server's certificate ("C_s_{n+1}") (Q_s_{n+1} = PubK(C_s_{n+1}).

[0269] На этапе 1037 клиентский компьютер может подтверждать подлинность подписи сертификата сервера («C_s_{n+1}») и может проверять принадлежность открытого ключа сервера («Q_s_{n+1}») области эллиптической кривой. [0269] At 1037, the client computer may authenticate the server's certificate signature ("C_s_{n+1}") and may verify that the server's public key ("Q_s_{n+1}") belongs to the elliptic curve region.

[0270] На этапе 1038 клиентский компьютер может подтверждать подлинность подписи сервера («sig_s») с помощью открытого ключа аутентификации сервера («Q_s») с использованием алгоритма цифровой подписи (например, ECDSA), и следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s»), замаскированного открытого ключа сервера («Q_bs»), а также открытого ключа клиента («Q_c») (verify(Q_s, sig_s, C_s_{n+1} | SD_s | Q_bs | Q_c)). Подпись сервера («sig_s») обеспечивает невозможность отказа серверного компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации сервера («Q_s») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации сервера («d_s») (например, серверному компьютеру и при сохранении безопасности только серверному компьютеру). Дополнительно подпись сервера («sig_s») генерируется путем подписывания закрытых данных сервера («SD_s»), замаскированного открытого ключа сервера («Q_bs») и открытого ключа аутентификации клиента («Q_c»). Следовательно, подпись сервера («sig_s») не только обеспечивает невозможность отказа серверного компьютера, но и ограничивает данную подпись в отношении данного конкретного сеанса с данным клиентским компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения. [0270] At 1038, the client computer may authenticate the server's signature ("sig_s") with the server's public authentication key ("Q_s") using a digital signature algorithm (eg, ECDSA), and the next version of the server's certificate ("C_s_{n +1}"), server private data ("SD_s"), server public key masked ("Q_bs"), and client public key ("Q_c") (verify(Q_s, sig_s, C_s_{n+1} | SD_s | Q_bs | Q_c)). The server signature ("sig_s") ensures that the server computer cannot be denied because it can be authenticated using the server's public authentication key ("Q_s") while providing the computer with access to the server's private authentication key ("d_s") (for example, the server computer and while maintaining security only to the server computer). Additionally, the server signature ("sig_s") is generated by signing the server's private data ("SD_s"), the server's masked public key ("Q_bs"), and the client's authentication public key ("Q_c"). Therefore, the server signature ("sig_s") not only ensures that the server computer cannot fail, but also restricts the signature to that particular session with that client computer. Accordingly, another computer cannot pretend to be the recipient of this message.

[0271] С помощью способа, показанного в таблице 1000, клиентский компьютер и серверный компьютер могут установить безопасный обмен данными с использованием только двух неотслеживаемых сообщений, что может обеспечить невозможность отказа клиентского компьютера и серверного компьютера одновременно с сохранением идеальной прямой секретности. [0271] Using the method shown in Table 1000, the client computer and the server computer can establish a secure communication using only two untraceable messages, which can ensure that the client computer and server computer cannot fail at the same time while maintaining perfect forward secrecy.

C. Способ безопасного обмена данными, обеспечивающий идеальную прямую секретность и невозможность отказа клиента и сервера с использованием двухкомпонентных закрытых подписейC. A method of secure communication that provides perfect forward secrecy and non-repudiation of client and server using two-part private signatures

[0272] Фиг. 11 представляет собой таблицу 1100 этапов выполнения реализуемого с помощью компьютера способа установки безопасного и неотслеживаемого обмена данными с использованием зашифрованной части подписи и незашифрованной части подписи в соответствии с некоторыми вариантами осуществления. Клиентский компьютер может представлять собой, например, интерфейсное устройство (IFD). Серверный компьютер может представлять собой, например, чип с интегральными микросхемами (ICC) или мобильное устройство. Некоторые из всех этапов в таблице 1100 могут быть выполнены в потоках сообщений, описанных в настоящем документе, например, таких как поток сообщений по фиг. 6. Дополнительно этапы в таблице 1100 могут быть выполнены в другом порядке. [0272] FIG. 11 is a table 1100 of steps in a computer-implemented method for establishing a secure and untraceable communication using an encrypted signature portion and an unencrypted signature portion, in accordance with some embodiments. The client computer may be, for example, an interface device (IFD). The server computer may be, for example, an integrated circuit chip (ICC) or a mobile device. Some of all the steps in table 1100 may be performed in the message flows described herein, such as the message flow of FIG. 6. Additionally, the steps in table 1100 may be performed in a different order.

[0273] На этапе 1101 клиентский компьютер может сохранить n-ую версию открытого ключа аутентификации серверного компьютера («Q_s_{n}»). Клиентский компьютер мог ранее принять данную конкретную версию открытого ключа серверного компьютера от серверного компьютера. Клиентский компьютер может также сохранить n-ую версию сертификата серверного компьютера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Клиентский компьютер может также сохранить закрытые данные клиента («SD_c»). Закрытые данные клиента могут быть частью полезных данных, отправляемых в сообщении с запросом на серверный компьютер. Клиентский компьютер может также сохранить идентификатор сервера («ID_s»), идентифицирующий серверный компьютер. Клиентский компьютер может также сохранить сертификат клиента («C_c») для аутентификации цепочки сертификатов клиентского компьютера. Клиентский компьютер может также сохранить закрытый ключ аутентификации клиента («d_c»), который совпадает с соответствующим открытым ключом аутентификации клиента («Q_c»), образуя пару ключей на основе эллиптической кривой. Открытый ключ аутентификации клиента («Q_c») может быть определен с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации клиента (Q_c = [d_c] P). Клиентский компьютер может также сохранить начальное значение («seed»). Начальное значение может быть значением доверенного времени или значением счетчика, которое может быть включено в сообщение для указания новизны или своевременности данного сообщения. [0273]At the stage 1101 client computer can saven-th version of the server computer's public key ("Q_s_{n}"). The client computer may have previously received this particular version of the server computer's public key from the server computer. The client computer can also saven-th version of the server computer certificate ("C_s_{n}") to authenticate the server computer certificate chain. The client computer may also store private client data ("SD_c"). Private client data can be part of the payload sent in the request message to the server computer. The client computer may also store a server identifier ("ID_s") that identifies the server computer. The client computer may also store a client certificate ("C_c") to authenticate the client computer's certificate chain. The client computer may also store a private client authentication key ("d_c") that matches a corresponding client authentication public key ("Q_c") to form an elliptic curve key pair. The client authentication public key ("Q_c") may be determined using a public key ("P") algorithm based on the client's private authentication key (Q_c = [d_c] P). The client computer may also store the seed ("seed"). The initial value may be a trusted time value or a counter value that may be included in the message to indicate the newness or timeliness of the message.

[0274] Серверный компьютер может сохранить n-ую версию открытого ключа аутентификации сервера («Q_s_{n}») и соответствующего закрытого ключа аутентификации сервера («d_s_{n}»), которые образуют пару ключей на основе эллиптической кривой. Серверный компьютер может определить открытый ключ аутентификации сервера с использованием алгоритма с открытым ключом («P») на основе закрытого ключа аутентификации сервера (Q_s_{n} = [d_s_{n}] P). Серверный компьютер может также сохранить n-ую версию сертификата сервера («C_s_{n}») для аутентификации цепочки сертификатов серверного компьютера. Серверный компьютер может также сохранить закрытые данные сервера («SD_s»), которые могут быть включены в зашифрованные полезные данные для клиентского компьютера. Серверный компьютер может также сохранить следующие версии открытого ключа аутентификации сервера («Q_s_{n+1}»), закрытый ключ аутентификации сервера («d_s_{n+1}») и соответствующий сертификат («C_s_{n+1}»). [0274] The server computer may store the nth version of the server authentication public key ("Q_s_{n}") and the corresponding server authentication private key ("d_s_{n}"), which form an elliptic curve key pair. The server computer may determine the server authentication public key using a public key ("P") algorithm based on the server's private authentication key (Q_s_{n} = [d_s_{n}] P). The server computer may also store the nth version of the server certificate ("C_s_{n}") to authenticate the server computer's certificate chain. The server computer may also store private server data ("SD_s") that may be included in the encrypted payload for the client computer. The server computer may also store the following versions of the server authentication public key ("Q_s_{n+1}"), the server authentication private key ("d_s_{n+1}"), and the corresponding certificate ("C_s_{n+1}").

[0275] На этапе 1102 клиентский компьютер может генерировать маскирующий коэффициент клиента («d_bc») с использованием генератора псевдослучайных чисел («PRNG () # [0..q-1]»). [0275]At the stage 1102, the client computer may generate a client masking factor ("d_bc") using a pseudo-random number generator ("PRNG()#[0..q-1]").

[0276] На этапе 1103 клиентский компьютер может определить замаскированный открытый ключ клиента («Q_bc») с использованием алгоритма с открытым ключом («P») и маскирующего коэффициента клиента («Q_bc = [d_bc] . P»). [0276]At the stage 1103, the client computer may determine the client's masked public key ("Q_bc") using a public key algorithm ("P") and a client masking factor ("Q_bc = [d_bc]. P").

[0277] На этапе 1104 клиентский компьютер может определить первый промежуточный совместно используемый секрет («Z_1»). Первый промежуточный совместно используемый секрет может быть основан на x-координате совместно используемой результирующей точки эллиптической кривой по методу Диффи-Хеллмана на основе маскирующего коэффициента клиента и открытого ключа аутентификации сервера ( Z_1 = [d_bc] . Q_s_{n}). [0277]At the stage 1104, the client computer may determine a first intermediate shared secret ("Z_1"). The first intermediate shared secret may be based on the x-coordinate of the shared Diffie-Hellman elliptic curve result point based on the client masking factor and the server authentication public key ( Z_1 = [d_bc] . Q_s_{n}).

[0278] На этапе 1105 клиентский компьютер может определить идентификатор клиента («sID_c») для данного сеанса на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента. [0278]At the stage 1105, the client computer may determine the client identifier ("sID_c") for a given session based on the x-coordinate of the elliptic curve of the client's masked public key (sID_c=x-coord ( Q_bc )). The client identifier ("sID_c") may be a truncated x-coordinate of the client's public encryption key.

[0279] На этапе 1106 клиентский компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c)). [0279]At the stage 1106 the client computer may determine the first session key ("sk_1_c") using a key derivation function ("KDF") based on the first intermediate shared secret ("Z_1"), the server identifier ("ID_s"), and the client identifier ("sID_c" ) (sk_1_c=KDF (Z_1 , ID_s, sID_c)).

[0280] Клиентский компьютер может определить подпись клиента с использованием алгоритма анонимного подписывания, который включает алгоритм L-подписи («Sign_L()») и алгоритм R-подписи («Sign_R()»). На этапе 1107 клиентский компьютер может определить L-подпись («sigc_L») и случайное значение подписи клиента («rand_c») с использованием алгоритма L-подписи («Sign_L()»). [0280]The client computer can determine the client's signature using an anonymous signing algorithm that includes an L-signature ("Sign_L()") algorithm and an R-signature ("Sign_R()") algorithm. At the stage 1107, the client computer may determine the L-signature ("sigc_L") and the client's signature random value ("rand_c") using the L-signature algorithm ("Sign_L()").

[0281] На этапе 1108 клиентский компьютер может генерировать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc _c=AEAD (sk_1_c , seed | SD_c | C_c | sigc_L | PAD_c, Q_bc)). Данные, зашифрованные клиентским компьютером, могут содержать начальное значение, закрытые данные клиента («SD_c»), сертификат клиента («C_c»), L-подпись клиента («sigc_L») и заполняющие данные шифрования клиента («PAD_c»). Заполняющие данные шифрования клиента («PAD_c») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать замаскированный открытый ключ клиента («Q_bc»). [0281]At the stage 1108, the client computer may generate encrypted client data ("enc_c") using the first session key ("sk_1_c"). Encryption can be performed using Authenticated Encryption Associated Data (AEAD) (enc _c=AEAD (sk_1_c , seed | SD_c | C_c | sigc_L | PAD_c, Q_bc)). The data encrypted by the client computer may include a seed, client private data ("SD_c"), client certificate ("C_c"), client L-signature ("sigc_L"), and client encryption padding data ("PAD_c"). The padding client encryption data ("PAD_c") may add an appropriate length to the encrypted data based on the encryption algorithm used. Encryption can also be based on associated data that remains intact (for example, it is not encrypted) but is checked for integrity. The associated data may contain a masked public key of the client ("Q_bc").

[0282] На этапе 1109 клиентский компьютер может определить R-подпись клиента («sigc_R») с использованием алгоритма R-подписи («Sign_R()»), а также закрытого ключа аутентификации клиента («d_c»), случайного значения подписи клиента («rand_c») (на основе алгоритма L-подписи) и зашифрованных данных клиента («enc_c»). Таким образом, R-подпись клиента основана на зашифрованных данных клиента, тогда как L-подпись клиента включена в зашифрованные данные клиента. [0282]At the stage 1109, the client computer can determine the client's R-signature ("sigc_R") using the R-signature algorithm ("Sign_R()"), as well as the client's private authentication key ("d_c"), the client's signature random value ("rand_c") ( based on the L-signature algorithm) and encrypted client data ("enc_c"). Thus, the R-signature of the client is based on the encrypted client data, while the L-signature of the client is included in the encrypted client data.

[0283] На этапе 1110 клиентский компьютер может обнулить первый промежуточный совместно используемый секрет («Z_1») и первый ключ сеанса («sk_1_c»). [0283]At the stage 1110, the client computer may reset the first intermediate shared secret ("Z_1") and the first session key ("sk_1_c").

[0284] На этапе 1111 клиентский компьютер может передавать сообщение с запросом, содержащее замаскированный открытый ключ клиента («Q_bc»), R-подпись клиента («sigc_r») и зашифрованные данные клиента («enc_c»), на серверный компьютер. Таким образом, сообщение с запросом является «неотслеживаемым», поскольку ни замаскированный открытый ключ клиента («Q_bc»), ни R-подпись клиента, ни зашифрованные данные клиента («enc_c») не могут быть использованы для идентификации или отслеживания клиентского компьютера. Например, открытый ключ аутентификации клиента («Q_c») и L-подпись клиента («sigc_L»), которые могут быть использованы для идентификации клиентского компьютера, отправляются не открыто, а вместо этого в зашифрованном виде. [0284]At the stage 1111, the client computer may send a challenge message containing the client's masked public key ("Q_bc"), the client's R-signature ("sigc_r"), and the client's encrypted data ("enc_c") to the server computer. Thus, the challenge message is "untraceable" because neither the client's masked public key ("Q_bc"), nor the client's R-signature, nor the client's encrypted data ("enc_c") can be used to identify or track the client computer. For example, the client authentication public key ("Q_c") and the client's L-signature ("sigc_L"), which can be used to identify the client computer, are not sent in the clear, but instead in encrypted form.

[0285] На этапе 1112 серверный компьютер может подтверждать, что замаскированный открытый ключ клиента («Q_bc») принадлежит области эллиптической кривой. [0285]At the stage 1112, the server computer can confirm that the client's masked public key ("Q_bc") belongs to the elliptic curve region.

[0286] На этапе 1113 серверный компьютер может определить такой же первый промежуточный совместно используемый секрет («Z_1»), который был определен клиентским компьютером. Серверный компьютер может определить первый промежуточный совместно используемый секрет («Z_1») с использованием n-ой версии закрытого ключа аутентификации сервера («d_s_{n}») и замаскированного открытого ключа клиента («Q_bc») (Z_1 = [d_s_{n}] . Q_bc). [0286]At the stage 1113, the server computer may determine the same first intermediate shared secret ("Z_1") that was determined by the client computer. The server computer can determine the first intermediate shared secret ("Z_1") usingn-th version of the server's private authentication key ("d_s_{n}") and the client's masked public key ("Q_bc") (Z_1 = [d_s_{n}] . Q_bc).

[0287] На этапе 1114 серверный компьютер может определить идентификатор клиента («sID_c») на основе x-координаты эллиптической кривой замаскированного открытого ключа клиента (sID_c=x-coord ( Q_bc )). Идентификатор клиента («sID_c») может представлять собой усеченное значение x-координаты открытого ключа шифрования клиента. [0287]At the stage 1114, the server computer may determine the client identifier ("sID_c") based on the x-coordinate of the elliptic curve of the client's masked public key (sID_c=x-coord ( Q_bc )). The client identifier ("sID_c") may be a truncated x-coordinate of the client's public encryption key.

[0288] На этапе 1115 серверный компьютер может определить первый ключ сеанса («sk_1_c») с использованием функции формирования ключа («KDF») на основе первого промежуточного совместно используемого секрета («Z_1»), идентификатора сервера («ID_s») и идентификатора клиента («sID_c») (sk_1_c=KDF (Z_1 , ID_s, sID_c )). [0288]At the stage 1115 The server computer may determine the first session key ("sk_1_c") using a key derivation function ("KDF") based on the first intermediate shared secret ("Z_1"), the server identifier ("ID_s"), and the client identifier ("sID_c" ) (sk_1_c=KDF (Z_1 , ID_s, sID_c )).

[0289] На этапе 1116 серверный компьютер может расшифровывать зашифрованные данные клиента («enc_c») с использованием первого ключа сеанса («sk_1_c») и алгоритма расшифровки (AEAD-1) для определения начального значения, закрытых данных клиента («SD_c»), подписи клиента («sig_c») и заполняющих данных шифрования клиента («PAD_c») (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 ( sk_1_c , enc_c, Q_bc)). [0289]At the stage 1116 The server computer can decrypt encrypted client data ("enc_c") using the first session key ("sk_1_c") and the decryption algorithm (AEAD-one) to define the seed, client private data ("SD_c"), client signature ("sig_c"), and client encryption padding data ("PAD_c") (seed | SD_c | C_c | sig_c| PAD_c=AEAD-1 ( sk_1_c , enc_c , Q_bc)).

[0290] На этапе 1117 серверный компьютер может подтверждать подлинность начального значения (например, счетчик или время) для подтверждения того, что маскирующий коэффициент клиента является новым (например, количество времени, с тех пор как маскирующий коэффициент клиента был сгенерирован, не превышает определенное пороговое значение). [0290]At the stage 1117, the server computer may authenticate the initial value (eg, counter or time) to confirm that the client masking factor is new (eg, the amount of time since the client masking factor was generated does not exceed a certain threshold).

[0291] На этапе 1118 серверный компьютер может обнулить первый ключ сеанса («sk_1_c») и первый промежуточный совместно используемый секрет («Z_1»). [0291]At the stage 1118, the server computer may reset the first session key ("sk_1_c") and the first intermediate shared secret ("Z_1").

[0292] На этапе 1119 серверный компьютер может определить открытый ключ аутентификации клиента («Q_c») путем извлечения его из сертификата клиента («C_c») (Q_c=PubK(C_c)). [0292]At the stage 1119, the server computer can determine the client authentication public key ("Q_c") by extracting it from the client certificate ("C_c") (Q_c=PubK(C_c)).

[0293] На этапе 1120 серверный компьютер может подтверждать подлинность подписи сертификата клиента («C_c») и проверять принадлежность открытого ключа аутентификации клиента («Q_c») области эллиптической кривой. [0293]At the stage 1120, the server computer can authenticate the client certificate signature ("C_c") and verify that the client's authentication public key ("Q_c") belongs to the elliptic curve region.

[0294] На этапе 1121 серверный компьютер может подтверждать подлинность подписи клиента, которая содержит как L-подпись клиента («sigc_L»), так и R-подпись клиента («sigc_R»), посредством открытого ключа аутентификации клиента («Q_c») с использованием «закрытого» алгоритма цифровой подписи на основе зашифрованных данных клиента («enc_c»). «Закрытый» алгоритм цифровой подписи может быть закрытым в том смысле, что этот алгоритм содержит два разных алгоритма, где один алгоритм создает R-подпись на основе зашифрованных данных, которая не содержит идентифицирующую информацию, а другой алгоритм создает L-подпись, содержащую идентифицирующую информацию, которая может быть зашифрована. Подпись клиента («sigc_L» и «sigc_R» вместе) обеспечивает невозможность отказа клиентского компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации клиента («Q_c») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации клиента («d_c») (например, клиентскому компьютеру и при сохранении безопасности только клиентскому компьютеру). Дополнительно R-подпись клиента генерируют путем подписывания самих зашифрованных данных клиента («enc_c»). Дополнительно R-подпись клиента не содержит идентифицирующую информацию. Следовательно, подпись клиента не только обеспечивает невозможность отказа клиентского компьютера, но и является «неотслеживаемой», одновременно с этим данная подпись ограничивается данным конкретным сеансом с данным серверным компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения. [0294]At the stage 1121 The server computer can authenticate a client signature that contains both the L-signature of the client ("sigc_L") and the R-signature of the client ("sigc_R") with the client's public authentication key ("Q_c") using a "private" algorithm digital signature based on encrypted client data ("enc_c"). A "closed" digital signature algorithm can be closed in the sense that this algorithm contains two different algorithms, where one algorithm creates an R-signature based on encrypted data that does not contain identifying information, and the other algorithm creates an L-signature that contains identifying information. , which can be encrypted. The client signature ("sigc_L" and "sigc_R" together) provides non-repudiation of the client computer because it can be authenticated using the client's public authentication key ("Q_c") while still providing the computer with access to the client's private authentication key ("d_c" ) (for example, the client computer, and while maintaining security, only the client computer). Additionally, the R-signature of the client is generated by signing the encrypted client data itself ("enc_c"). Additionally, the R-signature of the client does not contain identifying information. Therefore, the client signature not only ensures that the client computer cannot fail, but is "untraceable", while at the same time this signature is limited to this particular session with this server computer. Accordingly, another computer cannot pretend to be the recipient of this message.

[0295] На этапе 1122 серверный компьютер может генерировать маскирующий коэффициент сервера («d_bs») с использованием генератора псевдослучайных чисел (d_bs=PRNG () # [0..q-1]). [0295]At the stage 1122, the server computer may generate a server masking factor ("d_bs") using a pseudo-random number generator (d_bs=PRNG () # [0..q-1]).

[0296] На этапе 1123 серверный компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента сервера («d_bs»), следующей версии закрытого ключа аутентификации сервера («d_s_{n+1}») и замаскированного открытого ключа клиента («Q_bc») (Z = [d_bs . d_s_{n+1}] Q_bc). [0296]At the stage 1123, the server computer may determine a second intermediate shared secret ("Z") using the server's masking factor ("d_bs"), the next version of the server's private authentication key ("d_s_{n+1}"), and the client's masked public key ("Q_bc ”) (Z = [d_bs . d_s_{n+1}] Q_bc).

[0297] На этапе 1124 серверный компьютер может определить замаскированный открытый ключ сервера («Q_bs») с использованием маскирующего коэффициента сервера («d_bs») и следующей версии (n+1) открытого ключа аутентификации серверного компьютера («Q_s_{n+1}») (Q_bs = [d_bs] . Q_s_{n+1}). [0297]At the stage 1124 The server computer can determine the server's masked public key ("Q_bs") using the server's masking factor ("d_bs") and the next version (n+1) server computer authentication public key ("Q_s_{n+1}") (Q_bs = [d_bs] . Q_s_{n+1}).

[0298] На этапе 1125 серверный компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)). [0298]At the stage 1125, the server computer can determine the server identifier for a given communication session ("sID_s") using the server's masked public key ("Q_bs"). The server identifier ("sID_s") may be based on the x-coordinate of the elliptic curve of the server's masked public key ("Q_bs") (sID_s=x-coord (Q_bs)).

[0299] На этапе 1126 серверный компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). [0299]At the stage 1126, the server computer may determine the second session key ("sk_s | sk_c") using a key derivation function based on the second intermediate shared secret ("Z"), the server identifier ("sID_s") for the given communication session, and the client identifier (" sID_c") for this session (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0300] Серверный компьютер может определить подпись сервера с использованием алгоритма анонимного подписывания, который содержит алгоритм L-подписи («Sign_L()») и алгоритм R-подписи («Sign_R()»). На этапе 1127 серверный компьютер может определить L-подпись («sigc_L») и случайное значение подписи сервера («rand_s») с использованием алгоритма L-подписи («Sign_L()»). [0300]The server computer can determine the signature of the server using an anonymous signing algorithm that contains an L-signature algorithm ("Sign_L()") and an R-signature algorithm ("Sign_R()"). At the stage 1127, the server computer can determine the L-signature ("sigc_L") and the random value of the server's signature ("rand_s") using the L-signature algorithm ("Sign_L()").

[0301] На этапе 1128 серверный компьютер может генерировать зашифрованные данные сервера («enc_s») с использованием второго ключа сеанса («sk_s»). Шифрование может быть выполнено с использованием аутентифицированного шифрования связанными данными (AEAD) (enc_s=AEAD ( sk_s, C_s_{n+1} | SD_s | sigs_L | PAD_s, Q_bs)). Данные, зашифрованные серверным компьютером, могут содержать сертификат сервера («C_s_{n+1}»), закрытые данные сервера («SD_s»), L-подпись сервера («sigs_L») и заполняющие данные шифрования сервера («PAD_s»). Заполняющие данные шифрования сервера («PAD_s») могут добавить подходящую длину зашифрованным данным на основе используемого алгоритма шифрования. Шифрование может также быть основано на связанных данных, которые остаются в исходном виде (например, они не зашифрованы), но проверяются на сохранность. Связанные данные могут содержать заблокированный открытый ключ сервера («Q_bs»). [0301]At the stage 1128, the server computer may generate encrypted server data ("enc_s") using a second session key ("sk_s"). Encryption can be performed using Authenticated Encryption Associated Data (AEAD) (enc_s=AEAD ( sk_s, C_s_{n+1} | SD_s | sigs_L | PAD_s, Q_bs)). Data encrypted by the server computer may include a server certificate ("C_s_{n+1}"), server private data ("SD_s"), server L-signature ("sigs_L"), and server encryption padding data ("PAD_s"). Server encryption padding data ("PAD_s") may add an appropriate length to the encrypted data based on the encryption algorithm used. Encryption can also be based on associated data that remains intact (for example, it is not encrypted) but is checked for integrity. The associated data may contain a locked server public key ("Q_bs").

[0302] На этапе 1129 серверный компьютер может определить R-подпись сервера («sigs_R») с использованием алгоритма R-подписи («Sign_R()»), а также закрытого ключа аутентификации сервера («d_s»), случайного значения подписи сервера («rand_s») (на основе алгоритма L-подписи) и зашифрованных данных сервера («enc_s»). Таким образом, R-подпись сервера основана на зашифрованных данных сервера, тогда как L-подпись сервера включена в зашифрованные данные сервера. [0302]At the stage 1129, the server computer can determine the server's R-signature ("sigs_R") using the R-signature algorithm ("Sign_R()"), as well as the server's private authentication key ("d_s"), the server's signature random value ("rand_s") ( based on the L-signature algorithm) and encrypted server data ("enc_s"). Thus, the server's R-signature is based on the server's encrypted data, while the server's L-signature is included in the server's encrypted data.

[0303] На этапе 1130 серверный компьютер может обнулить второй ключ сеанса («sk_s»), второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент сервера («d_bs»). С помощью обнуления первого ключа сеанса («sk_1_c») и первого промежуточного совместно используемого секрета («Z_1») на этапе 1017 и затем обнуления второго ключа сеанса («sk_s»), второго промежуточного совместно используемого секрета («Z») и маскирующего коэффициента сервера («d_bs») на этапе 1028 серверный компьютер сохраняет идеальную прямую секретность. Идеальная прямая секретность сохраняется, поскольку любые данные, которые могут потенциально использоваться для взлома шифрования сообщения с ответом (например, sk_s, Z, d_bs, sk_1_c, и Z_1), удалены. Например, данные, остающиеся на серверном компьютере, такие как статический закрытый ключ аутентификации сервера (d_s) и статический открытый ключ аутентификации сервера (Q_s), не были использованы при шифровании зашифрованных данных сервера (enc_s). [0303]At the stage 1130, the server computer may reset the second session key ("sk_s"), the second intermediate shared secret ("Z"), and the server masking factor ("d_bs"). By zeroing out the first session key ("sk_1_c") and the first intermediate shared secret ("Z_1") in step 1017 and then zeroing out the second session key ("sk_s"), the second intermediate shared secret ("Z") and the masking factor server ("d_bs") at step 1028, the server computer maintains perfect forward secrecy. Perfect forward secrecy is maintained because any data that could potentially be used to break the encryption of the response message (eg, sk_s, Z, d_bs, sk_1_c, and Z_1) is removed. For example, the data remaining on the server computer, such as the server's static private authentication key (d_s) and the server's static public authentication key (Q_s), were not used in encrypting the server's encrypted data (enc_s).

[0304] На этапе 1131 серверный компьютер может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера («Q_bs»), R-подпись сервера («sigc_R») и зашифрованные данные сервера («enc_s»), на клиентский компьютер. Таким образом, сообщение с ответом является «неотслеживаемым», поскольку ни замаскированный открытый ключ сервера («Q_bs»), ни R-подпись сервера («sigc_R»), ни зашифрованные данные сервера («enc_s») не могут быть использованы для идентификации или отслеживания серверного компьютера. Например, статический открытый ключ аутентификации сервера («Q_s»), который может быть использован для идентификации серверного компьютера, отправляется не открыто, а вместо этого в зашифрованном виде. [0304]At the stage 1131, the server computer may send a response message containing the server's masked public key ("Q_bs"), the server's R signature ("sigc_R"), and the server's encrypted data ("enc_s") to the client computer. Thus, the response message is "untraceable" because neither the server's masked public key ("Q_bs") nor the server's R-signature ("sigc_R") nor the server's encrypted data ("enc_s") can be used to identify or server computer tracking. For example, a static server authentication public key ("Q_s") that can be used to identify a server computer is not sent in the clear, but instead in encrypted form.

[0305] На этапе 1132 клиентский компьютер может подтверждать, что замаскированный открытый ключ сервера («Q_bs») принадлежит области эллиптической кривой. [0305]At the stage 1132, the client computer can confirm that the server's masked public key ("Q_bs") belongs to the elliptic curve region.

[0306] На этапе 1133 клиентский компьютер может определить второй промежуточный совместно используемый секрет («Z») с использованием маскирующего коэффициента клиента («d_bc») и замаскированного открытого ключа сервера («Q_bs») (Z = [d_bc] . Q_bs). [0306]At the stage 1133, the client computer may determine a second intermediate shared secret ("Z") using the client's masking factor ("d_bc") and the server's masked public key ("Q_bs") (Z = [d_bc]. Q_bs).

[0307] На этапе 1134 клиентский компьютер может определить идентификатор сервера для данного сеанса обмена данными («sID_s») с использованием замаскированного открытого ключа сервера («Q_bs»). Идентификатор сервера («sID_s») может быть основан на x-координате эллиптической кривой замаскированного открытого ключа сервера («Q_bs») (sID_s=x-coord (Q_bs)). [0307]At the stage 1134, the client computer can determine the server identifier for a given communication session ("sID_s") using the server's masked public key ("Q_bs"). The server identifier ("sID_s") may be based on the x-coordinate of the elliptic curve of the server's masked public key ("Q_bs") (sID_s=x-coord (Q_bs)).

[0308] На этапе 1135 клиентский компьютер может определить второй ключ сеанса («sk_s | sk_c») с использованием функции формирования ключа на основе второго промежуточного совместно используемого секрета («Z»), идентификатора сервера («sID_s») для данного сеанса обмена данными и идентификатора клиента («sID_c») для данного сеанса (sk_s | sk_c=KDF ( Z, sID_s, sID_c)). [0308]At the stage 1135, the client computer can determine the second session key ("sk_s | sk_c") using a key derivation function based on the second intermediate shared secret ("Z"), the server identifier ("sID_s") for the given communication session, and the client identifier (" sID_c") for this session (sk_s | sk_c=KDF ( Z, sID_s, sID_c)).

[0309] На этапе 1136 клиентский компьютер может обнулить второй промежуточный совместно используемый секрет («Z») и маскирующий коэффициент клиента («d_bc»). [0309]At the stage 1136, the client computer may reset the second intermediate shared secret ("Z") and client masking factor ("d_bc") to zero.

[0310] На этапе 1137 клиентский компьютер может расшифровывать зашифрованные данные сервера («enc_s») с использованием первого ключа сеанса («sk_s») и алгоритма расшифровки (AEAD-1) для определения следующей версии сертификата сервера («C_s_{n+1}»), закрытых данных сервера («SD_s»), L-подписи сервера («sigs_L») и заполняющих данных шифрования сервера («PAD_s»). Замаскированный открытый ключ сервера («Q_bs») может быть использован как дополнительные данные в алгоритме расшифровки. [0310]At the stage 1137 The client computer can decrypt the server's encrypted data ("enc_s") using the first session key ("sk_s") and the decryption algorithm (AEAD-one) to determine the next version of the server certificate ("C_s_{n+1}"), server private data ("SD_s"), server L-signature ("sigs_L"), and server encryption padding data ("PAD_s"). The server's masked public key ("Q_bs") can be used as additional data in the decryption algorithm.

[0311] На этапе 1138 клиентский компьютер может определить следующую версию открытого ключа сервера («Q_s_{n+1}») путем извлечения его из следующей версии сертификата сервера («C_s_{n+1}») (Q_s_{n+1} = PubK(C_s_{n+1}). [0311]At the stage 1138 the client computer can determine the next version of the server's public key ("Q_s_{n+1}") by extracting it from the next version of the server's certificate ("C_s_{n+1}") (Q_s_{n+1} = PubK(C_s_{ n+1}).

[0312] На этапе 1139 клиентский компьютер может подтверждать подлинность подписи сертификата сервера («C_s_{n+1}») и может проверять принадлежность открытого ключа сервера («Q_s_{n+1}») области эллиптической кривой. [0312]At the stage 1139, the client computer may authenticate the server certificate signature ("C_s_{n+1}") and may verify that the server's public key ("Q_s_{n+1}") belongs to the elliptic curve region.

[0313] На этапе 1140 клиентский компьютер может подтверждать подлинность подписи сервера, которая содержит как L-подпись сервера («sigs_L»), так и R-подпись сервера («sigs_R»), посредством открытого ключа аутентификации сервера («Q_s») с использованием «закрытого» алгоритма цифровой подписи на основе зашифрованных данных сервера («enc_s»). «Закрытый» алгоритм цифровой подписи может быть закрытым в том смысле, что этот алгоритм содержит два разных алгоритма, где один алгоритм создает R-подпись на основе зашифрованных данных, которая не содержит идентифицирующую информацию, а другой алгоритм создает L-подпись, содержащую идентифицирующую информацию, которая может быть зашифрована. Подпись сервера («sigc_L» и «sigc_R» вместе) обеспечивает невозможность отказа серверного компьютера, поскольку ее подлинность может быть проверена с использованием открытого ключа аутентификации сервера («Q_s») с обеспечением при этом компьютеру доступа к закрытому ключу аутентификации сервера («d_s») (например, серверному компьютеру и при сохранении безопасности только серверному компьютеру). Дополнительно R-подпись сервера генерируют путем подписывания самих зашифрованных данных сервера («enc_s»). Дополнительно R-подпись сервера не содержит идентифицирующую информацию серверного компьютера. Следовательно, подпись сервера не только обеспечивает невозможность отказа серверного компьютера, но и является «неотслеживаемой», одновременно с этим данная подпись ограничивается данным конкретным сеансом с данным клиентским компьютером. Соответственно, другой компьютер не может выдавать себя за принимающую сторону данного сообщения. [0313]At the stage 1140, a client computer can authenticate a server signature that contains both a server L-signature ("sigs_L") and a server R-signature ("sigs_R") with a server authentication public key ("Q_s") using a "private" algorithm. digital signature based on encrypted server data ("enc_s"). A "closed" digital signature algorithm can be closed in the sense that this algorithm contains two different algorithms, where one algorithm creates an R-signature based on encrypted data that does not contain identifying information, and the other algorithm creates an L-signature that contains identifying information. , which can be encrypted. The server signature ("sigc_L" and "sigc_R" together) ensures that the server computer cannot fail because it can be authenticated using the server's public authentication key ("Q_s") while providing the computer with access to the server's private authentication key ("d_s" ) (for example, the server computer, and while maintaining security only the server computer). Additionally, the R-signature of the server is generated by signing the encrypted server data itself ("enc_s"). Additionally, the R-signature of the server does not contain identifying information about the server computer. Therefore, the server signature not only ensures that the server computer cannot fail, but is also “untraceable”, while this signature is limited to this particular session with this client computer. Accordingly, another computer cannot pretend to be the recipient of this message.

[0314] С помощью способа, показанного в таблице 1100, клиентский компьютер и серверный компьютер могут установить безопасный обмен данными с использованием только двух неотслеживаемых сообщений, что может обеспечить невозможность отказа клиентского компьютера и серверного компьютера одновременно с сохранением идеальной прямой секретности. [0314] Using the method shown in Table 1100, the client computer and the server computer can establish a secure communication using only two untraceable messages, which can ensure that the client computer and the server computer cannot fail at the same time while maintaining perfect forward secrecy.

[0315] Вышеприведенное описание является иллюстративным и не является ограничительным. Многие варианты настоящего изобретения могут стать очевидными специалистам в данной области техники по прочтении данного описания. Следовательно, объем настоящего изобретения можно определять не со ссылкой на вышеприведенное описание, а вместо этого следует определять со ссылкой на рассматриваемые пункты формулы изобретения, наряду с их полным объемом или эквивалентами. [0315] The above description is illustrative and is not restrictive. Many variations of the present invention may become apparent to those skilled in the art upon reading this specification. Therefore, the scope of the present invention may not be determined with reference to the foregoing description, but should instead be determined with reference to the contemplated claims, along with their full scope or equivalents.

[0316] Следует понимать, что любые из вариантов осуществления настоящего изобретения могут быть реализованы в форме управляющей логики с использованием аппаратного обеспечения (например, интегральной схемы специального назначения или программируемой пользователем вентильной матрицы) и/или с использованием компьютерного программного обеспечения с традиционно программируемым процессором в модульном или целостном режиме. В контексте настоящего документа процессор включает процессор с одним ядром, процессор с несколькими ядрами на одной и той же интегральной микросхеме или ряд процессорных устройств на одной печатной плате или сетевых. На основе раскрытия и указаний, предоставленных в настоящем документе, специалисту в данной области техники будут понятны и очевидны другие пути и/или способы реализации вариантов осуществления настоящего изобретения с использованием аппаратного обеспечения и комбинации аппаратного обеспечения и программного обеспечения. [0316] It should be understood that any of the embodiments of the present invention can be implemented in the form of control logic using hardware (for example, an application-specific integrated circuit or a field programmable gate array) and/or using computer software with a conventionally programmable processor in modular or holistic mode. As used herein, a processor includes a processor with a single core, a processor with multiple cores on the same integrated circuit, or a number of processor devices on a single circuit board or network. Based on the disclosure and guidance provided herein, those skilled in the art will recognize and appreciate other ways and/or methods for implementing embodiments of the present invention using hardware and combinations of hardware and software.

[0317] Любые из программных компонентов или функций, описанных в этой заявке, могут быть реализованы в виде программного кода, который должен быть исполнен процессором, с использованием любого подходящего компьютерного языка, такого как, например, Java, C, C++, C#, Objective-C, Swift, или языка сценариев, такого как Perl или Python, с использованием, например, традиционных или объектно-ориентированных подходов. Программный код может быть сохранен в виде последовательности инструкций или команд на машиночитаемом носителе для хранения и/или передачи. Подходящий постоянный машиночитаемый носитель может включать оперативное запоминающее устройство (RAM), постоянное запоминающее устройство (ROM), магнитный носитель, такой как жесткий диск или гибкий диск, или оптический носитель, такой как компакт-диск (CD) или DVD (цифровой универсальный диск), флеш-память и т. п. Машиночитаемый носитель может представлять собой любую комбинацию таких устройств хранения или передачи. [0317] Any of the software components or functions described in this application may be implemented as program code to be executed by a processor using any suitable computer language such as, for example, Java, C, C++, C#, Objective -C, Swift, or a scripting language such as Perl or Python using, for example, traditional or object-oriented approaches. The program code may be stored as a series of instructions or instructions on a computer-readable medium for storage and/or transmission. Suitable read only media may include random access memory (RAM), read only memory (ROM), magnetic media such as a hard disk or floppy disk, or optical media such as a compact disc (CD) or DVD (digital versatile disk) , flash memory, and the like. The computer-readable medium may be any combination of such storage or transmission devices.

[0318] Запоминающие носители и машиночитаемые носители для хранения кода или частей кода могут включать любые надлежащие носители, известные или используемые в данной области техники, включая запоминающие носители и среды связи, такие как, но без ограничения, энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения и/или передачи информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные, включая RAM, ROM, EEPROM, флэш-память или другую запоминающую технологию, CD-ROM, цифровой универсальный диск (DVD) или другой оптический носитель, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, сигналы данных, передачи данных или любой другой носитель, который может быть использован для хранения или передачи желаемой информации и к которому может осуществить доступ компьютер. На основе описания и указаний, представленных в данном документе, для специалиста в данной области техники будут очевидны другие пути и/или способы осуществления разных вариантов осуществления. [0318] Storage media and computer-readable media for storing code or portions of code may include any suitable media known or used in the art, including storage media and communication media such as, but not limited to, volatile and non-volatile, removable and non-removable media. implemented in any method or technology for storing and/or transmitting information such as computer readable instructions, data structures, program modules or other data, including RAM, ROM, EEPROM, flash memory or other storage technology, CD-ROM, digital versatile disk (DVD) or other optical media, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, data signals, data transmissions, or any other medium that can be used to store or transmit the desired information and to which computer access. Based on the description and guidance provided herein, other ways and/or methods for carrying out various embodiments will be apparent to those skilled in the art.

[0319] Такие программы могут также быть закодированы и переданы с использованием несущих сигналов, предназначенных для передачи по проводным, оптическим и/или беспроводным сетям согласно разнообразным протоколам, включая Интернет. Таким образом, машиночитаемый носитель согласно варианту осуществления настоящего изобретения может быть создан с использованием сигнала данных, закодированного с помощью таких программ. Машиночитаемые носители, закодированные с помощью программного кода, могут быть представлены с совместимым устройством или предоставлены отдельно от других устройств (например, посредством скачивания через Интернет). Любой такой машиночитаемый носитель может располагаться на или в одном компьютерном продукте (например, жестком диске, CD или целой компьютерной системе) и может быть представлен на или в разных компьютерных продуктах в системе или сети. Компьютерная система может содержать монитор, принтер или другое подходящее устройство отображения для предоставления пользователю любых результатов, упомянутых в настоящем документе. [0319] Such programs may also be encoded and transmitted using carrier signals designed for transmission over wired, optical, and/or wireless networks according to a variety of protocols, including the Internet. Thus, a computer-readable medium according to an embodiment of the present invention can be created using a data signal encoded with such programs. Computer-readable media encoded with program code may be provided with a compatible device or provided separately from other devices (eg, via Internet download). Any such computer-readable medium may reside on or in a single computer product (eg, a hard drive, CD, or an entire computer system) and may be present on or in different computer products on a system or network. The computer system may include a monitor, printer, or other suitable display device to provide the user with any of the results mentioned herein.

[0320] Любые из способов, описанных в настоящем документе, могут быть полностью или частично выполнены компьютерной системой, содержащей один или более процессоров, которые могут быть приспособлены для выполнения этапов. Таким образом, варианты осуществления могут относиться к компьютерным системам, приспособленным для выполнения этапов любого из способов, описанных в настоящем документе, потенциально с разными компонентами, выполняющими соответствующие этапы или соответствующую группу этапов. Хотя этапы представлены пронумерованными, этапы способов в настоящем документе могут быть выполнены одновременно или в другом порядке. Кроме того, части этих этапов могут быть использованы с частями других этапов из других способов. Также весь этап или его части могут быть необязательными. Кроме того, любой из этапов любого из способов может быть выполнен модулями, блоками, схемами или другими средствами для выполнения этих этапов. [0320] Any of the methods described herein may be wholly or partially performed by a computer system containing one or more processors that can be adapted to perform the steps. Thus, embodiments may relate to computer systems adapted to perform the steps of any of the methods described herein, potentially with different components performing the respective steps or the respective group of steps. Although the steps are presented numbered, the steps of the methods herein may be performed simultaneously or in a different order. In addition, portions of these steps may be used with portions of other steps from other methods. Also, the entire step or parts of it may be optional. In addition, any of the steps of any of the methods may be performed by modules, blocks, circuits, or other means to perform these steps.

[0321] Характерные детали конкретных вариантов осуществления могут сочетаться любым подходящим образом, не отходя от идеи и объема вариантов осуществления настоящего изобретения. Однако другие варианты осуществления настоящего изобретения могут относиться к особым вариантам осуществления, относящимся к каждому отдельному аспекту или особым сочетаниям этих отдельных аспектов. [0321] The specific details of specific embodiments may be combined in any suitable manner without departing from the spirit and scope of the embodiments of the present invention. However, other embodiments of the present invention may refer to specific embodiments relating to each individual aspect or specific combinations of these individual aspects.

[0322] Представленное выше описание примерных вариантов осуществления настоящего изобретения было представлено в целях иллюстрации и описания. Оно не предназначено быть исчерпывающим или ограничивать настоящее изобретение точной описанной формой, и в свете представленных выше указаний возможны многие модификации и варианты. [0322] The above description of exemplary embodiments of the present invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the present invention to the exact form described, and many modifications and variations are possible in light of the above teachings.

[0323] Формы единственного числа подразумевают «один или более», если иное не указано отдельно. Использование «или» предназначено для обозначения «включающего или», а не «исключающего или», если иное не указано отдельно. Использование терминов «первый», «второй», «третий», «четвертый», «пятый», «шестой», «седьмой», «восьмой», «девятый», «десятый» и т. д. не обязательно указывает на порядок или нумерацию различных элементов, и они могут быть просто использованы в целях определения названия для уточнения разных элементов. Использование «клиентского» компьютера и «серверного» компьютера не обязательно указывает на целевое предназначение компьютеров, но может быть просто использовано в целях названия. [0323] Singular forms mean "one or more" unless otherwise specified. The use of "or" is intended to mean "inclusive or" and not "exclusive or" unless otherwise noted. The use of the terms "first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth", etc., does not necessarily indicate the order or numbering of the various elements, and these can simply be used for naming purposes to qualify the various elements. The use of a "client" computer and a "server" computer does not necessarily indicate the purpose of the computers, but may simply be used for naming purposes.

[0324] Все патенты, патентные заявки, публикации и описания, упомянутые в настоящем документе, включены посредством ссылки во всей своей полноте для всех целей. Ни один из указанных документов не принимается в качестве прототипа. [0324] All patents, patent applications, publications and descriptions mentioned herein are incorporated by reference in their entirety for all purposes. None of these documents is accepted as a prototype.

Claims (72)

1. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:1. A computer-implemented method for performing data exchange between a first computer and a second computer, the method comprising the steps of: сохраняют посредством первого компьютера первый статический закрытый ключ первого компьютера, первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и второй статический открытый ключ второго компьютера;storing by the first computer the first static private key of the first computer, the first static public key of the first computer corresponding to the first static private key, and the second static public key of the second computer; генерируют посредством первого компьютера первый маскирующий коэффициент;generating by means of the first computer a first masking coefficient; определяют посредством первого компьютера первый замаскированный открытый ключ с использованием первого маскирующего коэффициента, при этом первый маскирующий коэффициент генерируют с использованием генератора псевдослучайных чисел, причем первый замаскированный открытый ключ определяют на основе первого маскирующего коэффициента с использованием основывающегося на эллиптических кривых алгоритма открытых ключей;determining by the first computer a first masked public key using a first masking factor, wherein the first masking factor is generated using a pseudo-random number generator, the first masked public key being determined based on the first masking factor using an elliptic curve-based public key algorithm; генерируют посредством первого компьютера подпись первого компьютера путем подписывания первого замаскированного открытого ключа с использованием первого статического закрытого ключа;generating by the first computer a signature of the first computer by signing the first masked public key using the first static private key; определяют посредством первого компьютера первый совместно используемый секрет с использованием первого маскирующего коэффициента и второго статического открытого ключа;determining by the first computer a first shared secret using the first masking factor and the second static public key; зашифровывают посредством первого компьютера с использованием первого совместно используемого секрета данные первого компьютера, включающие в себя первый статический открытый ключ и подпись первого компьютера, для получения зашифрованных данных первого компьютера; иencrypting, by the first computer, using the first shared secret, the first computer data including the first static public key and the signature of the first computer to obtain encrypted data of the first computer; and отправляют посредством первого компьютера на второй компьютер первое сообщение, включающее в себя первый замаскированный открытый ключ и зашифрованные данные первого компьютера.sending by means of the first computer to the second computer the first message including the first masked public key and the encrypted data of the first computer. 2. Способ по п.1, в котором данные первого компьютера дополнительно включают в себя сертификат первого компьютера, при этом сертификат первого компьютера включает в себя первый статический открытый ключ.2. The method of claim 1, wherein the first computer data further includes a first computer certificate, wherein the first computer certificate includes a first static public key. 3. Способ по п.1, дополнительно содержащий этапы, на которых:3. The method according to claim 1, further comprising the steps of: принимают посредством первого компьютера от второго компьютера второе сообщение, включающее в себя второй замаскированный открытый ключ второго компьютера и зашифрованные данные второго компьютера;receiving by means of the first computer from the second computer a second message including a second masked public key of the second computer and encrypted data of the second computer; определяют посредством первого компьютера второй совместно используемый секрет с использованием первого маскирующего коэффициента и второго замаскированного открытого ключа; иdetermining by the first computer a second shared secret using the first masking factor and the second masked public key; and расшифровывают посредством первого компьютера зашифрованные данные второго компьютера с использованием второго совместно используемого секрета.decrypting by the first computer the encrypted data of the second computer using the second shared secret. 4. Способ по п.3, дополнительно содержащий этап, на котором удаляют первый маскирующий коэффициент после определения второго совместно используемого секрета.4. The method of claim 3, further comprising removing the first masking factor after determining the second shared secret. 5. Способ по п.3, в котором второй компьютер определяет первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа второго компьютера, соответствующего второму статическому открытому ключу, расшифровывает зашифрованные данные первого компьютера с использованием первого совместно используемого секрета, подтверждает подлинность подписи первого компьютера с использованием первого статического открытого ключа и отправляет на первый компьютер второе сообщение, включающее в себя второй замаскированный открытый ключ второго компьютера и зашифрованные данные второго компьютера.5. The method of claim 3, wherein the second computer determines the first shared secret using the first masked public key and the second static private key of the second computer corresponding to the second static public key, decrypts the encrypted data of the first computer using the first shared secret, confirms authenticates the signature of the first computer using the first static public key and sends to the first computer a second message including the second masked public key of the second computer and the encrypted data of the second computer. 6. Способ по п.3, в котором зашифрованные данные второго компьютера включают в себя подпись второго компьютера, при этом способ дополнительно содержит этап, на котором подтверждают посредством первого компьютера подлинность подписи второго компьютера с использованием второго статического открытого ключа.6. The method of claim 3, wherein the encrypted data of the second computer includes a signature of the second computer, the method further comprising verifying, by means of the first computer, the signature of the second computer using the second static public key. 7. Способ по п.3, дополнительно содержащий этап, на котором подтверждают подлинность второго замаскированного открытого ключа с использованием второго статического открытого ключа и маскирующего коэффициента второго компьютера, при этом зашифрованные данные второго компьютера включают в себя маскирующий коэффициент второго компьютера.7. The method of claim 3, further comprising authenticating the second masked public key using the second static public key and the second computer's mask factor, wherein the second computer's encrypted data includes the second computer's mask factor. 8. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:8. A computer-implemented method for performing data exchange between a first computer and a second computer, the method comprising the steps of: сохраняют посредством второго компьютера второй статический закрытый ключ второго компьютера и второй статический открытый ключ второго компьютера, соответствующий второму статическому закрытому ключу;storing by the second computer a second static private key of the second computer and a second static public key of the second computer corresponding to the second static private key; принимают от первого компьютера посредством второго компьютера первое сообщение, включающее в себя первый замаскированный открытый ключ первого компьютера и зашифрованные данные первого компьютера, при этом первый замаскированный открытый ключ определен на основе первого маскирующего коэффициента с использованием основывающегося на эллиптических кривых алгоритма открытых ключей, причем первый маскирующий коэффициент сгенерирован с использованием генератора псевдослучайных чисел;a first message is received from the first computer via the second computer, including the first masked public key of the first computer and encrypted data of the first computer, wherein the first masked public key is determined based on the first masking coefficient using an elliptic curve-based public key algorithm, the first masking coefficient generated using a pseudo-random number generator; определяют посредством второго компьютера первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа;determining by the second computer a first shared secret using the first masked public key and the second static private key; расшифровывают посредством второго компьютера с использованием первого совместно используемого секрета зашифрованные данные первого компьютера для получения данных первого компьютера, при этом данные первого компьютера включают в себя первый статический открытый ключ и подпись первого компьютера, причем подпись первого компьютера генерируется посредством подписания первым компьютером первого замаскированного открытого ключа с использованием первого статического закрытого ключа первого компьютера, при этом первый статический закрытый ключ соответствует первому статическому открытому ключу; иdecrypting by the second computer using the first shared secret the encrypted data of the first computer to obtain the data of the first computer, wherein the first computer data includes the first static public key and the signature of the first computer, the signature of the first computer is generated by the first computer signing the first masked public key using the first static private key of the first computer, the first static private key corresponding to the first static public key; and подтверждают посредством второго компьютера подлинность подписи первого компьютера с использованием первого статического открытого ключа первого компьютера и первого замаскированного открытого ключа.confirming by the second computer the authenticity of the signature of the first computer using the first static public key of the first computer and the first masked public key. 9. Способ по п.8, дополнительно содержащий этапы, на которых:9. The method of claim 8, further comprising the steps of: генерируют посредством второго компьютера второй маскирующий коэффициент;generating by means of the second computer a second masking coefficient; определяют посредством второго компьютера второй замаскированный открытый ключ второго компьютера с использованием второго маскирующего коэффициента и второго статического открытого ключа;determining, by means of the second computer, a second masked public key of the second computer using the second masking factor and the second static public key; определяют посредством второго компьютера второй совместно используемый секрет с использованием первого замаскированного открытого ключа, второго маскирующего коэффициента и второго статического закрытого ключа;determining, by means of the second computer, a second shared secret using the first masked public key, the second masking factor, and the second static private key; зашифровывают посредством второго компьютера с использованием второго совместно используемого секрета данные второго компьютера, включающие в себя второй статический открытый ключ и второй маскирующий коэффициент, для получения зашифрованных данных второго компьютера; иencrypting by the second computer using the second shared secret the data of the second computer, including the second static public key and the second masking coefficient, to obtain encrypted data of the second computer; and отправляют посредством второго компьютера на первый компьютер второе сообщение, включающее в себя второй замаскированный открытый ключ и зашифрованные данные второго компьютера.sending by means of the second computer to the first computer a second message, including the second masked public key and the encrypted data of the second computer. 10. Способ по п.8, дополнительно содержащий этапы, на которых:10. The method of claim 8, further comprising the steps of: генерируют посредством второго компьютера второй маскирующий коэффициент;generating by means of the second computer a second masking factor; определяют посредством второго компьютера второй замаскированный открытый ключ второго компьютера с использованием второго маскирующего коэффициента и второго статического открытого ключа;determining, by means of the second computer, a second masked public key of the second computer using the second masking factor and the second static public key; определяют посредством второго компьютера второй совместно используемый секрет с использованием первого замаскированного открытого ключа, второго маскирующего коэффициента и второго статического закрытого ключа;determining, by means of the second computer, a second shared secret using the first masked public key, the second masking factor, and the second static private key; генерируют посредством второго компьютера подпись второго компьютера путем подписывания второго замаскированного открытого ключа с использованием второго статического закрытого ключа;generating, by means of the second computer, a signature of the second computer by signing the second masked public key using the second static private key; зашифровывают посредством второго компьютера с использованием второго совместно используемого секрета данные второго компьютера, содержащие второй статический открытый ключ и подпись второго компьютера, для получения зашифрованных данных второго компьютера; иencrypting by the second computer using the second shared secret the data of the second computer containing the second static public key and the signature of the second computer to obtain encrypted data of the second computer; and отправляют посредством второго компьютера на первый компьютер второе сообщение, включающее в себя второй замаскированный открытый ключ и зашифрованные данные второго компьютера.sending by means of the second computer to the first computer a second message, including the second masked public key and the encrypted data of the second computer. 11. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:11. A computer-implemented method for performing data exchange between a first computer and a second computer, the method comprising the steps of: сохраняют посредством первого компьютера первый статический закрытый ключ первого компьютера, первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и второй статический открытый ключ второго компьютера;storing by the first computer the first static private key of the first computer, the first static public key of the first computer corresponding to the first static private key, and the second static public key of the second computer; генерируют посредством первого компьютера первый маскирующий коэффициент;generating by means of the first computer a first masking factor; определяют посредством первого компьютера первый замаскированный открытый ключ с использованием первого маскирующего коэффициента;determining by the first computer a first masked public key using the first masking factor; определяют посредством первого компьютера первый совместно используемый секрет с использованием первого маскирующего коэффициента и второго статического открытого ключа;determining by the first computer a first shared secret using the first masking factor and the second static public key; генерируют посредством первого компьютера с использованием алгоритма первой подписи первую подпись первого компьютера и случайное значение подписи первого компьютера;generating, by means of the first computer, using the first signature algorithm, a first signature of the first computer and a random signature value of the first computer; зашифровывают посредством первого компьютера с использованием первого совместно используемого секрета данные первого компьютера, включающие в себя первый статический открытый ключ и первую подпись первого компьютера, для получения зашифрованных данных первого компьютера;encrypting by the first computer, using the first shared secret, the first computer data, including the first static public key and the first signature of the first computer, to obtain encrypted data of the first computer; генерируют посредством первого компьютера вторую подпись первого компьютера путем подписывания зашифрованных данных первого компьютера и случайного значения подписи первого компьютера посредством первого статического закрытого ключа с использованием алгоритма второй подписи; иgenerating, by means of the first computer, a second signature of the first computer by signing the encrypted data of the first computer and the random value of the signature of the first computer with the first static private key using the second signature algorithm; and отправляют посредством первого компьютера на второй компьютер первое сообщение, включающее в себя первый замаскированный открытый ключ, вторую подпись первого компьютера и зашифрованные данные первого компьютера.sending by means of the first computer to the second computer the first message including the first masked public key, the second signature of the first computer and the encrypted data of the first computer. 12. Способ по п.11, в котором первый маскирующий коэффициент генерируют с использованием генератора псевдослучайных чисел, при этом первый замаскированный открытый ключ определяют на основе первого маскирующего коэффициента с использованием основывающегося на эллиптических кривых алгоритма открытых ключей, причем данные первого компьютера дополнительно включают в себя сертификат первого компьютера, при этом сертификат первого компьютера включает в себя первый статический открытый ключ.12. The method of claim 11, wherein the first masking factor is generated using a pseudo-random number generator, wherein the first masked public key is determined based on the first masking factor using an elliptic curve-based public key algorithm, wherein the first computer data further includes a first computer certificate, wherein the first computer certificate includes a first static public key. 13. Способ по п.11, дополнительно содержащий этапы, на которых:13. The method of claim 11, further comprising the steps of: принимают посредством первого компьютера от второго компьютера второе сообщение, включающее в себя второй замаскированный открытый ключ второго компьютера и зашифрованные данные второго компьютера;receiving by means of the first computer from the second computer a second message including a second masked public key of the second computer and encrypted data of the second computer; определяют посредством первого компьютера второй совместно используемый секрет с использованием первого маскирующего коэффициента и второго замаскированного открытого ключа; иdetermining by the first computer a second shared secret using the first masking factor and the second masked public key; and расшифровывают посредством первого компьютера зашифрованные данные второго компьютера с использованием второго совместно используемого секрета.decrypting by the first computer the encrypted data of the second computer using the second shared secret. 14. Способ по п.13, в котором второй компьютер определяет первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа второго компьютера, соответствующего второму статическому открытому ключу, расшифровывает зашифрованные данные первого компьютера с использованием первого совместно используемого секрета, подтверждает подлинность подписи первого компьютера с использованием первого статического открытого ключа и отправляет на первый компьютер второе сообщение, включающее в себя второй замаскированный открытый ключ второго компьютера и зашифрованные данные второго компьютера.14. The method of claim 13, wherein the second computer determines the first shared secret using the first masked public key and the second static private key of the second computer corresponding to the second static public key, decrypts the encrypted data of the first computer using the first shared secret, confirms authenticates the signature of the first computer using the first static public key and sends to the first computer a second message including the second masked public key of the second computer and the encrypted data of the second computer. 15. Способ по п.13, в котором зашифрованные данные второго компьютера включают в себя подпись второго компьютера, при этом способ дополнительно содержит этап, на котором подтверждают посредством первого компьютера подлинность подписи второго компьютера с использованием второго статического открытого ключа.15. The method of claim 13, wherein the encrypted data of the second computer includes a signature of the second computer, the method further comprising verifying, by means of the first computer, the signature of the second computer using the second static public key. 16. Способ по п.13, дополнительно содержащий этап, на котором подтверждают подлинность второго замаскированного открытого ключа с использованием второго статического открытого ключа и маскирующего коэффициента второго компьютера, при этом зашифрованные данные второго компьютера включают в себя маскирующий коэффициент второго компьютера.16. The method of claim 13, further comprising authenticating the second masked public key using the second static public key and the second computer's mask factor, wherein the second computer's encrypted data includes the second computer's mask factor. 17. Компьютерно-реализуемый способ выполнения обмена данными между первым компьютером и вторым компьютером, при этом способ содержит этапы, на которых:17. A computer-implemented method for performing data exchange between a first computer and a second computer, the method comprising the steps of: сохраняют посредством второго компьютера второй статический закрытый ключ второго компьютера и второй статический открытый ключ второго компьютера, соответствующий второму статическому закрытому ключу;storing by the second computer a second static private key of the second computer and a second static public key of the second computer corresponding to the second static private key; принимают от первого компьютера посредством второго компьютера первое сообщение, содержащее первый замаскированный открытый ключ первого компьютера, вторую подпись первого компьютера и зашифрованные данные первого компьютера, при этом вторая подпись первого компьютера генерируется первым компьютером путем подписывания зашифрованных данных первого компьютера и случайного значения подписи первого компьютера посредством первого статического закрытого ключа первого компьютера с использованием алгоритма второй подписи, причем случайное значение подписи первого компьютера генерируется первым компьютером с использованием алгоритма первой подписи;a first message is received from the first computer by means of the second computer, containing the first masked public key of the first computer, the second signature of the first computer and the encrypted data of the first computer, wherein the second signature of the first computer is generated by the first computer by signing the encrypted data of the first computer and the random value of the signature of the first computer by a first static private key of the first computer using the second signature algorithm, wherein the first computer's random signature value is generated by the first computer using the first signature algorithm; определяют посредством второго компьютера первый совместно используемый секрет с использованием первого замаскированного открытого ключа и второго статического закрытого ключа;determining by the second computer a first shared secret using the first masked public key and the second static private key; расшифровывают посредством второго компьютера с использованием первого совместно используемого секрета зашифрованные данные первого компьютера для получения данных первого компьютера, при этом данные первого компьютера включают в себя первый статический открытый ключ первого компьютера, соответствующий первому статическому закрытому ключу, и первую подпись первого компьютера, причем первая подпись первого компьютера генерируется первым компьютером с использованием алгоритма первой подписи; иdecrypting by the second computer using the first shared secret the encrypted data of the first computer to obtain the data of the first computer, wherein the data of the first computer includes the first static public key of the first computer corresponding to the first static private key, and the first signature of the first computer, and the first signature the first computer is generated by the first computer using the first signature algorithm; and подтверждают посредством второго компьютера подлинность первой подписи первого компьютера и второй подписи первого компьютера с использованием первого статического открытого ключа и зашифрованных данных первого компьютера.confirming by the second computer the authenticity of the first signature of the first computer and the second signature of the first computer using the first static public key and the encrypted data of the first computer. 18. Способ по п.17, в котором первый компьютер генерирует первый маскирующий коэффициент, определяет первый замаскированный открытый ключ с использованием первого маскирующего коэффициента, определяет первый совместно используемый секрет с использованием первого маскирующего коэффициента и второго статического открытого ключа и зашифровывает данные первого компьютера с использованием первого совместно используемого секрета.18. The method of claim 17, wherein the first computer generates the first masking factor, determines the first masked public key using the first masking factor, determines the first shared secret using the first masking factor and the second static public key, and encrypts the first computer data using the first shared secret. 19. Способ по п.17, дополнительно содержащий этапы, на которых:19. The method of claim 17, further comprising the steps of: генерируют посредством второго компьютера второй маскирующий коэффициент;generating by means of the second computer a second masking factor; определяют посредством второго компьютера второй замаскированный открытый ключ второго компьютера с использованием второго маскирующего коэффициента и второго статического открытого ключа;determining, by means of the second computer, a second masked public key of the second computer using the second masking factor and the second static public key; определяют посредством второго компьютера второй совместно используемый секрет с использованием первого замаскированного открытого ключа, второго маскирующего коэффициента и второго статического закрытого ключа;determining, by means of the second computer, a second shared secret using the first masked public key, the second masking factor, and the second static private key; генерируют посредством второго компьютера с использованием алгоритма первой подписи первую подпись второго компьютера и случайное значение подписи второго компьютера;generating, by means of the second computer, using the first signature algorithm, a first signature of the second computer and a random signature value of the second computer; зашифровывают посредством второго компьютера с использованием второго совместно используемого секрета данные второго компьютера, включающие в себя второй статический открытый ключ и первую подпись второго компьютера, для получения зашифрованных данных второго компьютера;encrypting by the second computer using the second shared secret the data of the second computer, including the second static public key and the first signature of the second computer, to obtain encrypted data of the second computer; генерируют посредством второго компьютера вторую подпись второго компьютера путем подписывания зашифрованных данных второго компьютера и случайного значения подписи первого компьютера посредством первого статического закрытого ключа с использованием алгоритма второй подписи; иgenerating, by means of the second computer, a second signature of the second computer by signing the encrypted data of the second computer and the random value of the signature of the first computer with the first static private key using the second signature algorithm; and отправляют посредством второго компьютера на первый компьютер второе сообщение, включающее в себя второй замаскированный открытый ключ, вторую подпись второго компьютера и зашифрованные данные второго компьютера.sending by means of the second computer to the first computer a second message including the second masked public key, the second signature of the second computer and the encrypted data of the second computer. 20. Способ по п.19, в котором первый компьютер определяет второй совместно используемый секрет с использованием второго замаскированного открытого ключа, расшифровывает зашифрованные данные второго компьютера с использованием второго совместно используемого секрета для получения первой подписи второго компьютера и проверяет вторую подпись второго компьютера и первую подпись второго компьютера с использованием второго статического открытого ключа.20. The method of claim 19, wherein the first computer determines the second shared secret using the second masked public key, decrypts the second computer's encrypted data using the second shared secret to obtain the second computer's first signature, and verifies the second computer's second signature and the first signature second computer using a second static public key. 21. Система для выполнения безопасного обмена данными между первым компьютером и вторым компьютером, содержащая:21. A system for performing secure data exchange between a first computer and a second computer, comprising: машиночитаемый носитель, хранящий множество инструкций для выполнения операций согласно любому из представленных выше способов; иa computer-readable medium storing a plurality of instructions for performing operations according to any of the above methods; and один или более процессоров для исполнения инструкций, хранимых на машиночитаемом носителе.one or more processors for executing instructions stored on a computer-readable medium.
RU2020102008A 2017-06-21 2018-06-19 Secure data exchange ensuring direct secrecy RU2771928C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/629,689 2017-06-21
US15/629,689 US10313133B2 (en) 2017-06-21 2017-06-21 Secure communications providing forward secrecy
PCT/US2018/038339 WO2018236908A1 (en) 2017-06-21 2018-06-19 Secure communications providing forward secrecy

Publications (3)

Publication Number Publication Date
RU2020102008A RU2020102008A (en) 2021-07-21
RU2020102008A3 RU2020102008A3 (en) 2021-10-07
RU2771928C2 true RU2771928C2 (en) 2022-05-13

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2223540C2 (en) * 2001-04-26 2004-02-10 Курилов Андрей Борисович Method and system for sending and receiving protected electronic messages
US20130212391A1 (en) * 2012-02-09 2013-08-15 Liqun Chen Elliptic curve cryptographic signature
US20150200774A1 (en) * 2014-01-13 2015-07-16 Eric Le Saint Efficient methods for protecting identity in authenticated transmissions
US20160065370A1 (en) * 2014-08-29 2016-03-03 Eric Le Saint Methods for secure cryptogram generation
WO2017004470A1 (en) * 2015-06-30 2017-01-05 Visa International Service Association Mutual authentication of confidential communication
US20170019380A1 (en) * 2014-10-06 2017-01-19 Micron Technology, Inc. Secure shared key sharing systems and methods

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2223540C2 (en) * 2001-04-26 2004-02-10 Курилов Андрей Борисович Method and system for sending and receiving protected electronic messages
US20130212391A1 (en) * 2012-02-09 2013-08-15 Liqun Chen Elliptic curve cryptographic signature
US20150200774A1 (en) * 2014-01-13 2015-07-16 Eric Le Saint Efficient methods for protecting identity in authenticated transmissions
US20160065370A1 (en) * 2014-08-29 2016-03-03 Eric Le Saint Methods for secure cryptogram generation
US20170019380A1 (en) * 2014-10-06 2017-01-19 Micron Technology, Inc. Secure shared key sharing systems and methods
WO2017004470A1 (en) * 2015-06-30 2017-01-05 Visa International Service Association Mutual authentication of confidential communication

Similar Documents

Publication Publication Date Title
US12244739B2 (en) Confidential authentication and provisioning
US11108565B2 (en) Secure communications providing forward secrecy
US8130961B2 (en) Method and system for client-server mutual authentication using event-based OTP
JP2019533384A (en) Data transmission method, apparatus and system
CN116566660A (en) Identity authentication method based on medical blockchain
CN101296083A (en) An encrypted data transmission method and system
CN113886781B (en) Multi-authentication encryption method, system, electronic equipment and medium based on block chain
EP3185504A1 (en) Security management system for securing a communication between a remote server and an electronic device
RU2771928C2 (en) Secure data exchange ensuring direct secrecy
Surya et al. Single sign on mechanism using attribute based encryption in distributed computer networks
Chauhan et al. Enhancing Mobile Cloud Computing Security with SHA-256 and RSA for User Authentication and Data Sharing
CN114692128B (en) A quantum attack-resistant electronic contract signing method and system
Roopa SSO-key distribution center based implementation using serpent encryption algorithm for distributed network (securing SSO in distributed network)
Serb et al. A certificate–based signature scheme for secure mobile communications