RU2771928C2 - Secure data exchange ensuring direct secrecy - Google Patents
Secure data exchange ensuring direct secrecy Download PDFInfo
- 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
Links
- 230000000873 masking effect Effects 0.000 claims abstract description 198
- 230000003068 static effect Effects 0.000 claims description 233
- 238000000034 method Methods 0.000 claims description 91
- 238000004891 communication Methods 0.000 abstract description 142
- 238000012790 confirmation Methods 0.000 abstract 1
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 230000004044 response Effects 0.000 description 108
- 230000006870 function Effects 0.000 description 39
- 238000009795 derivation Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 15
- 238000011084 recovery Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000001172 regenerating effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Images
Abstract
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
[0042] Обращаясь к фиг. 1, клиентский компьютер 140 может хранить пару ключей клиента, содержащую открытый ключ и закрытый ключ клиента, соответствующий открытому ключу клиента. Пара ключей клиента может быть статической. Серверный компьютер 180 может хранить пару ключей сервера, содержащую открытый ключ сервера и закрытый ключ сервера, соответствующий открытому ключу сервера. Пара ключей сервера может быть статической. Клиентский компьютер 140 и серверный компьютер 180 могут обмениваться данными по небезопасной сети 160 (например, Интернет или беспроводной локальной сети). Небезопасная сеть 160 может быть «небезопасной» в том смысле, что сама среда обмена данными физически не безопасна, или она может быть «небезопасной» в том смысле, что сообщения не передаются непосредственно между двумя сторонами, а также проходят через другие третьи стороны в сети. [0042] Referring to FIG. 1,
[0043] Клиентский компьютер 140 и серверный компьютер 180 могут выполнять обмен ключами для установки безопасного обмена данными по небезопасной сети 160. Например, клиентский компьютер 140 и серверный компьютер 180 могут выполнять обмен ключами по методу Диффи-Хеллмана, как описано выше, для установки совместно используемого секрета между клиентским компьютером 140 и серверным компьютером 180. Каждый из клиентского компьютера 140 и серверного компьютера 180 могут формировать ключ сеанса из совместно используемого секрета для шифрования и расшифровывания сообщений, которыми они обмениваются между собой. [0043]
[0044] На этапе 101 клиентский компьютер 140 может передавать сообщение с запросом на серверный компьютер 180 для инициирования установки безопасного обмена данными. В некоторых вариантах осуществления сообщение с запросом может содержать идентификационные данные. Клиентский компьютер 140 может шифровать идентификационные данные сообщения с ответом с использованием совместно используемого секрета для получения зашифрованных идентификационных данных. Клиентский компьютер 140 может передавать сообщение с запросом, содержащее зашифрованные идентификационные данные, на серверный компьютер 180 по небезопасной сети 160. [0044]At the
[0045] Серверный компьютер 180 может принимать сообщение с запросом от клиентского компьютера 140 по небезопасной сети 160. Серверный компьютер 180 может расшифровывать зашифрованные идентификационные данные сообщения с запросом с использованием совместно используемого секрета (например, с использованием ключа сеанса, сформированного на основе совместно используемого секрета). Серверный компьютер 180 также может проверять идентификационные данные на основе данных, хранимых на серверном компьютере 180. Серверный компьютер 180 может затем шифровать полезные данные для клиентского компьютера 140 с использованием совместно используемого секрета для получения зашифрованных полезных данных. В некоторых вариантах осуществления серверный компьютер 180 может генерировать второй совместно используемый секрет для использования с целью шифрования полезных данных серверного компьютера. [0045]
[0046] На этапе 102 серверный компьютер 180 может передавать сообщение с ответом, содержащее зашифрованные полезные данные, на клиентский компьютер 140. Серверный компьютер 180 может передавать данные ответа на клиентский компьютер 140 в ответ на проверку идентификационных данных, принятых от клиентского компьютера 140. Клиентский компьютер 140 может принимать сообщение с ответом и расшифровывать зашифрованные полезные данные с использованием ключа сеанса для получения полезных данных с серверного компьютера 180. Таким образом, клиентский компьютер 140 и серверный компьютер 180 могут установить безопасный обмен данными по небезопасной сети 160 путем выполнения обмена ключами по методу Диффи-Хеллмана. [0046] In
[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
[0051] Серверный компьютер 280 может хранить пару 286 статических ключей сервера, содержащую статический закрытый ключ 282 сервера и статический открытый ключ 284 сервера. Серверный компьютер 280 может также хранить сертификат 288 сервера. Сертификат 288 сервера может содержать статический открытый ключ 284 сервера и подпись органа сертификации для аутентификации серверного компьютера 288. Статический закрытый ключ 282 сервера и статический открытый ключ 284 сервера могут быть «статическими» в том смысле, что они не изменяются с течением времени, позволяя осуществлять аутентификацию серверного компьютера 288 с использованием сертификата 288 сервера. Серверный компьютер 280 может также хранить полезные данные 292 сервера. Полезные данные 292 сервера могут быть обработаны как закрытые данные, так что они не передаются открыто без шифрования. [0051] The
[0052] В данном потоке сообщений клиентский компьютер 240 может инициировать установку безопасного обмена данными. На этапе 201 клиентский компьютер 240 может генерировать кратковременный закрытый ключ клиента. Кратковременный закрытый ключ клиента может быть сгенерирован случайным образом. [0052] In this message flow, the
[0053] На этапе 202 клиентский компьютер 240 может определить кратковременный открытый ключ клиента с использованием кратковременного закрытого ключа клиента. Кратковременный закрытый ключ клиента и кратковременный открытый ключ клиента могут образовывать пару ключей для использования в криптографии с открытым ключом. [0053] At step 202, the
[0054] На этапе 203 клиентский компьютер 240 может определить первый совместно используемый секрет с использованием кратковременного закрытого ключа клиента и статического открытого ключа 284 сервера, который может быть включен в сертификат 288 сервера. Клиентский компьютер 240 может определить первый ключ сеанса с использованием функции формирования ключа на основе совместно используемого секрета, идентификатора серверного компьютера 280 и идентификатора сеанса обмена данными. [0054] At step 203, the
[0055] На этапе 204 клиентский компьютер 240 может шифровать полезные данные 252 клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Полезные данные 252 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 280. После шифрования полезных данных 252 клиента клиентский компьютер 240 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0055] At 204,
[0056] На этапе 205 клиентский компьютер 240 может передавать «сообщение с запросом», содержащее кратковременный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 280. Кратковременный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 240 запрашивает установку безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 280 может принимать сообщение с запросом от клиентского компьютера 240. Поскольку кратковременный открытый ключ клиента используется только для данного сеанса обмена данными (кратковременный закрытый ключ клиента обнуляется на этапе 214), то он не может быть использован для отслеживания клиентского компьютера 240. Таким образом, сообщение с запросом, отправленное на этапе 205, является неотслеживаемым. [0056] At
[0057] На этапе 206 серверный компьютер 280 может определить первый совместно используемый секрет с использованием статического закрытого ключа 282 сервера и замаскированного открытого ключа клиента. Первый совместно используемый секрет, определенный серверным компьютером на этапе 206 с использованием статического закрытого ключа 282 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 240 на этапе 203 с использованием кратковременного закрытого ключа клиента и статического открытого ключа 284 сервера. Серверный компьютер 280 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 240 с использованием функции формирования ключа на основе совместно используемого секрета, идентификатора серверного компьютера 280 и идентификатора сеанса обмена данными. [0057] At
[0058] На этапе 207 серверный компьютер 280 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 252 клиента. После расшифровывания полезных данных 252 клиента серверный компьютер 280 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. В этот момент серверный компьютер 280 может обрабатывать полезные данные 252 клиента и генерировать или идентифицировать какие-либо подходящие данные или информацию для включения в полезные данные 292 сервера, предоставляемые в ответ на запрос клиентского компьютера. [0058] At
[0059] На этапе 208 серверный компьютер 280 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 280 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано ниже. Например, серверный компьютер 280 может применять маскирующий коэффициент сервера к статическому открытому ключу 284 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 280 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 240 и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, серверный компьютер 280 может не отслеживаться третьими сторонами на основе замаскированного открытого ключа сервера. [0059] At 208,
[0060] На этапе 209 серверный компьютер 280 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 282 сервера и кратковременного открытого ключа клиента. Серверный компьютер 280 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0060] At 209, the
[0061] На этапе 210 серверный компьютер 280 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 280 может применять маскирующий коэффициент сервера к статическому открытому ключу 284 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. [0061] At
[0062] На этапе 211 серверный компьютер 280 может шифровать маскирующий коэффициент сервера, сертификат 288 сервера и полезные данные 292 сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. [0062] In
[0063] На этапе 212 серверный компьютер 280 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 240. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 280 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 280. Клиентский компьютер 240 может принимать сообщение с ответом. [0063] At 212,
[0064] На этапе 213 клиентский компьютер 240 может определить второй совместно используемый секрет с использованием кратковременного закрытого ключа клиента и замаскированного открытого ключа сервера. Второй совместно используемый секрет, определенный клиентским компьютером 240 на этапе 213, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 280 на этапе 209 с использованием кратковременного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа 284 сервера. Клиентский компьютер 240 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 280) с использованием функции формирования ключа и второго совместно используемого секрета. [0064] At 213, the
[0065] На этапе 214 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 240 может обнулить кратковременный закрытый ключ клиента. То есть клиентский компьютер 240 может удалить кратковременный закрытый ключ клиента, так что его нельзя будет позже восстановить. Кроме того, даже если кратковременный закрытый ключ клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием кратковременного закрытого ключа клиента, поскольку данный кратковременный закрытый ключ клиента был использован только для расшифровывания данного конкретного сообщения с ответом. [0065] At
[0066] На этапе 215 клиентский компьютер 240 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата 288 сервера и полезных данных 292 сервера. [0066] At step 215, the
[0067] На этапе 216 клиентский компьютер 240 может проверять замаскированный открытый ключ сервера путем его повторного создания с использованием маскирующего коэффициента сервера и статического открытого ключа 284 сервера, который включен в сертификат 288 сервера. Клиентский компьютер 240 может аутентифицировать, что серверный компьютер 280 отправил сообщение с ответом на основе проверяемого замаскированного открытого ключа сервера. [0067] At
[0068] На этапе 217 клиентский компьютер 240 и серверный компьютер 280 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0068] At 217,
[0069] Поток сообщений по фиг. 2 позволяет клиентскому компьютеру 240 и серверному компьютеру 280 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 240, серверного компьютера 280 и их пользователей. Однако поток сообщений по фиг. 2 требует сохранения клиентским компьютером 240 сертификата 288 сервера серверного компьютера, который содержит статический открытый ключ 284 сервера, используемый при генерировании первого совместно используемого секрета. Соответственно, клиентский компьютер 240 должен раньше получить сертификат 288 сервера. [0069] The message flow of FIG. 2 allows the
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
[0072] Серверный компьютер 380 может хранить пару 386 статических ключей сервера, содержащую статический закрытый ключ 382 сервера и статический открытый ключ 384 сервера. Серверный компьютер 380 может также хранить сертификат 388 сервера. Сертификат 288 сервера может содержать статический открытый ключ 384 сервера и подпись органа сертификации для аутентификации серверного компьютера 388. Статический закрытый ключ 382 сервера и статический открытый ключ 284 сервера могут быть «статическими» в том смысле, что они не изменяются с течением времени, позволяя осуществлять аутентификацию серверного компьютера 388 с использованием сертификата 388 сервера. Серверный компьютер 380 может также хранить полезные данные 392 сервера. Полезные данные 392 сервера могут быть обработаны как закрытые данные, так что они не передаются открыто без шифрования. [0072] The
[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
[0076] На этапе 304 серверный компьютер 380 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 380 может использовать маскирующий коэффициент сервера для предотвращения отслеживания третьими сторонами его обмена данными, как описано ниже. Например, серверный компьютер 380 может применять маскирующий коэффициент сервера к статическому открытому ключу 384 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 380 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 340 и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, серверный компьютер 380 может не отслеживаться третьими сторонами на основе замаскированного открытого ключа сервера. [0076] At 304,
[0077] На этапе 305 серверный компьютер 380 может определить первый совместно используемый секрет с использованием статического закрытого ключа сервера 382 и кратковременного открытого ключа клиента. Серверный компьютер 380 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. Серверный компьютер 380 может использовать первый ключ сеанса для шифрования сертификата 388 сервера и полезные данные 392 сервера для передачи на клиентский компьютер 340. [0077] At
[0078] На этапе 306 серверный компьютер 380 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа 384 сервера. Например, серверный компьютер 380 может применять маскирующий коэффициент сервера к статическому открытому ключу 384 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. [0078] At
[0079] На этапе 307 серверный компьютер 380 может шифровать маскирующий коэффициент сервера, сертификат 388 сервера и полезные данные 392 сервера с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения зашифрованных данных сервера. После шифрования серверный компьютер 380 может обнулить первый совместно используемый секрет и первый ключ сеанса. [0079] At
[0080] На этапе 308 серверный компьютер 380 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 340. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 380 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 380. Клиентский компьютер 340 может принимать сообщение с ответом. [0080] At 308,
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[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
[0105] На этапе 409 серверный компьютер 480 может проверить подпись клиента с использованием статического открытого ключа 444 клиента, который включен в сертификат 448 клиента, полезные данные 452 клиента, замаскированный открытый ключ клиента и статический открытый ключ 484 сервера. Серверный компьютер 480 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). [0105] At
[0106] Серверный компьютер 480 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 448 клиента. Дополнительно серверный компьютер 480 может обрабатывать полезные данные 452 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 492 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера. [0106] The server computer 480 may also authenticate the certificate chain associated with the
[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
[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
[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
[0113] На этапе 417 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 440 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 440 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность. [0113] At
[0114] На этапе 418 клиентский компьютер 440 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 492 сервера и замаскированного открытого ключа сервера. Клиентский компьютер 440 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). [0114] At
[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
[0120] В данном потоке сообщений клиентский компьютер 540 может инициировать установку безопасного обмена данными. Перед потоком сообщений клиентский компьютер 540 может сохранять пару 546 статических ключей клиента, содержащую статический закрытый ключ 542 клиента и статический открытый ключ 544 клиента. Клиентский компьютер может также сохранять сертификат 548 клиента, который подписан органом сертификации и который содержит статический открытый ключ 544 клиента. Клиентский компьютер 540 может также сохранять сертификат 588 сервера. Дополнительно клиентский компьютер 540 может сохранять полезные данные 552 клиента, которые могут быть закрытыми данными. Определенные этапы в схеме 500 потока сообщений по фиг. 5 могут быть выполнены подобно этапам в схеме 400 потока сообщений по фиг. 4. [0120] In this message flow, the
[0121] На этапе 501 клиентский компьютер 540 может генерировать маскирующий коэффициент клиента. Маскирующий коэффициент клиента может быть сгенерирован случайным образом. [0121] At block 501,
[0122] На этапе 502 клиентский компьютер 540 может определить замаскированный открытый ключ клиента с использованием маскирующего коэффициента клиента. Маскирующий коэффициент клиента и замаскированный открытый ключ клиента могут образовывать пару ключей на основе эллиптической кривой, так что замаскированный открытый ключ клиента может быть использован для расшифровывания данных, которые зашифрованы с использованием маскирующего коэффициента клиента, и замаскированный открытый ключ клиента может быть использован для подтверждения подлинности подписи, сгенерированной путем подписывания данных посредством маскирующего коэффициента клиента. [0122] At
[0123] На этапе 503 клиентский компьютер 540 может определить первый совместно используемый секрет с использованием маскирующего коэффициента клиента и статического открытого ключа 584 сервера, который может быть включен в сертификат 588 сервера. Клиентский компьютер 540 может определить первый ключ сеанса с использованием функции формирования ключа на основе первого совместно используемого секрета. [0123] At
[0124] На этапе 504 клиентский компьютер 540 может определить подпись клиента путем подписывания полезных данных 552 клиента, замаскированного открытого ключа клиента и статического открытого ключа 584 сервера. Клиентский компьютер 540 может определить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись клиента может быть включена в сообщение с запросом с клиентского компьютера 540 для обеспечения невозможности отказа клиентского компьютера 540. Дополнительно подпись клиента основана на маскирующем коэффициенте клиента, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись клиента основана на статическом открытом ключе 584 сервера. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом. [0124] At
[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
[0126] На этапе 505 клиентский компьютер 540 может шифровать полезные данные 552 клиента, сертификат 548 клиента, подпись клиента и замаскированный открытый ключ клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для определения зашифрованных данных клиента. Клиентский компьютер может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 552 клиента могут содержать закрытые данные клиента и/или запрос на определенные данные или информацию с серверного компьютера 580. После шифрования полезных данных 552 клиента клиентский компьютер 540 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0126] At
[0127] На этапе 506 клиентский компьютер 540 может передавать «сообщение с запросом», содержащее замаскированный открытый ключ клиента и зашифрованные данные клиента, на серверный компьютер 580. Замаскированный открытый ключ клиента может быть отправлен открыто (например, в незашифрованном виде). Сообщение с запросом может указывать на то, что клиентский компьютер 540 запрашивает установление безопасного обмена данными с использованием совместно используемого секрета на основе замаскированного открытого ключа клиента. Сообщение с запросом может быть передано по небезопасной сети. Серверный компьютер 580 может принимать сообщение с запросом от клиентского компьютера 540. Поскольку замаскированный открытый ключ клиента используется только для данного сеанса обмена данными (маскирующий коэффициент клиента обнуляется на этапе 517), то он не может быть использован для отслеживания клиентского компьютера 540. Таким образом, сообщение с запросом, отправленное на этапе 505, является неотслеживаемым. Дополнительно сообщение с запросом, отправленное на этапе 505, обеспечивает невозможность отказа клиентского компьютера 540, поскольку зашифрованные данные клиента содержат подпись клиента, которая была сгенерирована с использованием маскирующего коэффициента клиента. Дополнительно сообщение с запросом сохраняет идеальную прямую секретность, поскольку отсутствуют данные, включенные в сообщение с запросом, которое может быть использовано для расшифровывания каких-либо данных в других сообщениях, отправленных клиентским компьютером 540, в прошлом или будущем. Идеальная прямая секретность сохраняется, поскольку замаскированный коэффициент клиента не предоставлен в зашифрованных данных клиента. Например, подпись клиента используется для аутентификации клиентского компьютера 540 вместо использования маскирующего коэффициента. Однако подпись клиента не содержит информацию, которая может быть использована для расшифровывания сообщений с клиентского компьютера 540, даже если статический закрытый ключ 542 клиента и статический закрытый ключ 582 сервера рассекречены. [0127] At 506,
[0128] На этапе 507 серверный компьютер 580 может определить первый совместно используемый секрет с использованием статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 506 с использованием статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, сгенерированный клиентским компьютером 540 на этапе 503 с использованием маскирующего коэффициента клиента и статического открытого ключа 584 сервера. Серверный компьютер 580 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 540, с использованием функции формирования ключа на основе первого совместно используемого секрета. [0128] At step 507, the
[0129] На этапе 508 серверный компьютер 580 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения полезных данных 552 клиента, сертификата 548 клиента, подписи клиента и замаскированного открытого ключа клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 580 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0129] At 508, the
[0130] На этапе 509 серверный компьютер 580 может проверить подпись клиента с использованием статического открытого ключа 544 клиента, который включен в сертификат 548 клиента, полезные данные 552 клиента, замаскированный открытый ключ клиента и статический открытый ключ 584 сервера. Серверный компьютер 580 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). [0130] At step 509, the
[0131] Серверный компьютер 580 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 548 клиента. Дополнительно серверный компьютер 580 может обрабатывать полезные данные 552 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 592 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера. [0131] The
[0132] На этапе 510 серверный компьютер 580 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 580 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 580 может применять маскирующий коэффициент сервера к статическому открытому ключу 584 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 580 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 540 (например, в сообщении с запросом на этапе 506 и сообщении с ответом на этапе 516) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 580 может не отслеживаться на основе замаскированного открытого ключа сервера. [0132] At 510,
[0133] На этапе 511 серверный компьютер 580 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 582 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 580 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 580 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0133] At step 511, the
[0134] На этапе 512 серверный компьютер 580 может определить замаскированный открытый ключ сервера с использованием маскирующего коэффициента сервера и статического открытого ключа сервера. Например, серверный компьютер 580 может применять маскирующий коэффициент сервера к статическому открытому ключу сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Статический открытый ключ сервера, используемый для определения замаскированного открытого ключа сервера, может быть частью другой пары статических ключей, как обсуждено выше. [0134] At 512, the
[0135] На этапе 513 серверный компьютер 580 может определить подпись сервера путем подписывания сертификата сервера, полезных данных 592 сервера, замаскированного открытого ключа сервера и статического открытого ключа 544 клиента. Серверный компьютер 580 может определить подпись сервера, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Подпись сервера может быть включена в сообщение с ответом с серверного компьютера 580 для обеспечения невозможности отказа серверного компьютера 580. Дополнительно подпись сервера основана на замаскированном открытом ключе сервера, который используется только в данном сеансе обмена данными (например, в сообщении с одним запросом и одним ответом). Таким образом, подпись действительна только для данного конкретного сообщения с запросом. Кроме того, подпись сервера основана на статическом открытом ключе 544 клиента. Таким образом, другой компьютер может не выдавать себя за принимающую сторону данного конкретного сообщения с запросом. [0135] At step 513, the
[0136] На этапе 514 серверный компьютер 580 может шифровать сертификат сервера (соответствующий статическому открытому ключу пары статических ключей, используемой для шифрования), полезные данные 492 сервера, подпись сервера и замаскированный открытый ключ сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения зашифрованных данных сервера. Серверный компьютер 580 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). [0136] In step 514, the
[0137] На этапе 515 серверный компьютер 580 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен. [0137] At 515, the
[0138] На этапе 516 серверный компьютер 580 может передавать сообщение с ответом, содержащее замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 540. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера может быть отправлен открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Соответственно, серверный компьютер 580 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 580. Клиентский компьютер 540 может принимать сообщение с ответом. [0138] At 516,
[0139] На этапе 517 клиентский компьютер 540 может определить второй совместно используемый секрет с использованием маскирующего коэффициента клиента и замаскированного открытого ключа сервера, который был принят в сообщении с ответом. Второй совместно используемый секрет, определенный клиентским компьютером 540 на этапе 517, может быть таким же, как и второй совместно используемый секрет, определенный серверным компьютером 580 на этапе 511 с использованием замаскированного открытого ключа клиента, маскирующего коэффициента сервера и статического закрытого ключа сервера. Клиентский компьютер 540 может также определить такой же второй ключ сеанса (который также определен серверным компьютером 580) с использованием функции формирования ключа и второго совместно используемого секрета. [0139] At 517, the
[0140] На этапе 518 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 540 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 540 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность. [0140] At step 518, after determining the second shared secret and the second session key, the
[0141] На этапе 519 клиентский компьютер 540 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования), полезных данных 592 сервера и замаскированного открытого ключа сервера. Клиентский компьютер 540 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). [0141] At step 519, the
[0142] На этапе 519 клиентский компьютер 540 может проверить сервер с использованием статического открытого ключа сервера, который включен в сертификат сервера сообщения с ответом, полезные данные сервера 592, замаскированный открытый ключ сервера и статический открытый ключ сервера. Клиентский компьютер 540 может проверить подпись клиента, например, с использованием алгоритма создания цифровой подписи на основе эллиптической кривой (ECDSA). Клиентский компьютер 540 может также подтверждать подлинность цепочки сертификата сервера, включенного в сообщение с ответом. [0142] At step 519, the
[0143] На этапе 520 клиентский компьютер 540 и серверный компьютер 580 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0143] At 520,
[0144] Поток сообщений по фиг. 5 позволяет клиентскому компьютеру 540 и серверному компьютеру 580 установить безопасный обмен данными с использованием неотслеживаемых сообщений, тем самым обеспечивая конфиденциальность обмена данными и сохранение приватности клиентского компьютера 540, серверного компьютера 580 и их пользователей. Дополнительно клиентский компьютер 540 не может отказаться от сообщения с запросом, поскольку он содержит подпись клиента. Серверный компьютер 580 может также не отказываться от сообщения с ответом, поскольку оно содержит подпись сервера. Кроме того, сообщения с запросом и ответом сохраняют идеальную прямую секретность, поскольку их шифрование зависит от маскирующего коэффициента клиента и маскирующего коэффициента сервера, которые обнуляют сразу после того, как они становятся ненужными для процесса расшифровки. Дополнительно использование сети и вычислительных ресурсов уменьшается, поскольку данное решение достигается с использованием только одного сообщения с запросом и одного сообщения с ответом. [0144] The message flow of FIG. 5 allows the
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
[0146] Данный поток сообщений содержит сообщение с запросом, переданное клиентским компьютером 640 на этапе 607, от которого не может отказаться клиентский компьютер 640, и сообщение с ответом, переданное серверным компьютером 680 на этапе 618, от которого не может отказаться серверный компьютер 680. Сообщение с запросом на этапе 607 и сообщение с ответом на этапе 618 являются неотслеживаемыми, поскольку они содержат одноразовые замаскированные открытые ключи вместо статических открытых ключей. Кроме того, сообщение с запросом и ответом сохраняет идеальную прямую секретность. Генерирование и формат сообщений с запросом и ответом более подробно описаны ниже. [0146] This message flow contains a request message transmitted by the client computer 640 at
[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
[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
[0151] На этапе 604 клиентский компьютер 640 может определить L-подпись клиента и случайное значение L-подписи клиента с использованием алгоритма L-подписи. Алгоритм L-подписи может представлять собой, например, алгоритм подписи ECDSA или алгоритм подписи Шнорра. [0151] At
[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
[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
[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
[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.
[0156] На этапе 608 серверный компьютер 680 может определить первый совместно используемый секрет с использованием статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента, который был включен в сообщение с запросом. Первый совместно используемый секрет, определенный серверным компьютером на этапе 606 с использованием статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента, может быть таким же, как и первый совместно используемый секрет, определенный клиентским компьютером 640 на этапе 603 с использованием маскирующего коэффициента клиента и статического открытого ключа 684 сервера. Серверный компьютер 680 может также определить такой же первый ключ сеанса, определенный клиентским компьютером 640, с использованием функции формирования ключа на основе первого совместно используемого секрета. [0156] At 608, the
[0157] На этапе 609 серверный компьютер 680 может расшифровывать зашифрованные данные клиента с использованием первого совместно используемого секрета (например, с использованием первого ключа сеанса) для получения L-подписи клиента, полезных данных 652 клиента и сертификата 648 клиента. Серверный компьютер может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). После расшифровывания зашифрованных данных клиента серверный компьютер 680 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0157] At step 609, the
[0158] На этапе 610 серверный компьютер 680 может проверить подпись клиента, которая содержит как L-подпись клиента, так и R-подпись клиента, с использованием статического открытого ключа 644 клиента (который включен в сертификат 648 клиента), L-подписи клиента, R-подписи клиента и зашифрованных данных клиента. [0158] At
[0159] Серверный компьютер 680 может также подтверждать подлинность цепочки сертификатов, относящейся к сертификату 648 клиента. Дополнительно серверный компьютер 680 может обрабатывать полезные данные 652 клиента и генерировать или идентифицировать любые подходящие данные или информацию для включения в полезные данные 692 сервера, подлежащие предоставлению в ответ на запрос клиентского компьютера. [0159] The
[0160] На этапе 611 серверный компьютер 680 может генерировать маскирующий коэффициент сервера. Маскирующий коэффициент сервера может быть случайным образом сгенерированным криптографическим объектом nonce. Серверный компьютер 680 может использовать маскирующий коэффициент сервера для предотвращения отслеживания его третьими сторонами, как описано в настоящем документе. Например, серверный компьютер 680 может применять маскирующий коэффициент сервера к статическому открытому ключу 684 сервера (например, с использованием умножения) для определения замаскированного открытого ключа сервера. Серверный компьютер 680 может использовать только данный маскирующий коэффициент сервера и данный замаскированный открытый ключ сервера в данном конкретном сеансе обмена данными с клиентским компьютером 640 (например, в сообщении с запросом и сообщении с ответом) и может генерировать разный маскирующий коэффициент для последующих сеансов обмена данными. Таким образом, идентификатор серверного компьютера 680 может не отслеживаться на основе замаскированного открытого ключа сервера. [0160] At 611,
[0161] На этапе 612 серверный компьютер 680 может определить второй совместно используемый секрет с использованием маскирующего коэффициента сервера, статического закрытого ключа 682 сервера и замаскированного открытого ключа клиента. В некоторых вариантах осуществления серверный компьютер 680 может сохранять несколько пар статических ключей, и он может использовать другую пару статических ключей для шифрования сообщения с ответом. Серверный компьютер 680 может также определить второй ключ сеанса с использованием функции формирования ключа и второго совместно используемого секрета. [0161] At
[0162] На этапе 613 серверный компьютер 680 может определить L-подпись сервера и случайное значение L-подписи сервера с использованием алгоритма L-подписи. Алгоритм L-подписи может представлять собой, например, алгоритм подписи ECDSA или алгоритм подписи Шнорра. [0162] At
[0163] На этапе 615 серверный компьютер 680 может шифровать L-подпись сервера, полезные данные 692 сервера, сертификат сервера и замаскированный открытый ключ сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для определения зашифрованных данных сервера. Серверный компьютер 680 может выполнить шифрование, например, с использованием процесса аутентифицированного шифрования связанными данными (AEAD). Полезные данные 692 сервера могут содержать закрытые данные сервера и/или определенные данные или информацию в ответ на запрос с клиентского компьютера 640. После шифрования клиентский компьютер 680 может обнулить (например, полностью удалить для предотвращения какого-либо восстановления) первый совместно используемый секрет и первый ключ сеанса. [0163] In step 615,
[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
[0165] На этапе 617 серверный компьютер 680 может обнулить маскирующий коэффициент сервера, так что он не может быть восстановлен. [0165] At step 617, the
[0166] На этапе 618 серверный компьютер 680 может передавать сообщение с ответом, содержащее R-подпись сервера, замаскированный открытый ключ сервера и зашифрованные данные сервера, на клиентский компьютер 680. Сообщение с ответом может быть отправлено по небезопасной сети. Замаскированный открытый ключ сервера и R-подпись сервера могут быть отправлены открыто (например, в незашифрованном виде). Однако замаскированный открытый ключ сервера основан на маскирующем коэффициенте сервера, который может быть использован только в данном конкретном сеансе обмена данными. Дополнительно R-подпись сервера не содержит информацию, идентифицирующую серверный компьютер 680. Вместо этого любая информация, идентифицирующая серверный компьютер 680, включена в L-подпись сервера, которая включена в зашифрованные данные сервера. Соответственно, серверный компьютер 680 не может быть отслежен третьей стороной, перехватывающей данное сообщение и другие сообщения, отправленные серверным компьютером 680. Клиентский компьютер 640 может принимать сообщение с ответом. [0166] At 618, the
[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
[0168] На этапе 620 после определения второго совместно используемого секрета и второго ключа сеанса клиентский компьютер 640 может обнулить маскирующий коэффициент клиента. То есть клиентский компьютер 640 может удалять маскирующий коэффициент клиента, так что он не может быть восстановлен позже. Кроме того, даже если маскирующий коэффициент клиента был рассекречен и получен третьей стороной за короткий период времени перед его обнулением, третья сторона не сможет расшифровать какой-либо другой обмен данными с использованием маскирующего коэффициента клиента, он был использован только для расшифровывания данного конкретного сообщения с ответом. Дополнительно, даже если третья сторона получает доступ к обоим из статического закрытого ключа клиентского компьютера и статического закрытого ключа серверного компьютера, она не может расшифровать сообщение с ответом без получения маскирующего коэффициента клиента, который обнуляется сразу после принятия сообщения, представляющего собой сообщение с ответом. Таким образом, сохраняется идеальная прямая секретность. [0168] At
[0169] На этапе 621 клиентский компьютер 540 может расшифровывать зашифрованные данные сервера с использованием второго совместно используемого секрета (например, с использованием второго ключа сеанса) для получения L-подписи сервера, маскирующего коэффициента сервера, сертификата сервера (соответствующего статическому открытому ключу пары статических ключей, используемой для шифрования) и полезных данных 592 сервера. Клиентский компьютер 640 может выполнить расшифровку, например, с использованием процесса расшифровки на основе аутентифицированного шифрования связанными данными (AEAD). [0169] In
[0170] На этапе 622 клиентский компьютер 640 может проверить подпись сервера, которая содержит как L-подпись сервера, так и R-подпись сервера, с использованием статического открытого ключа сервера (который включен в сертификат клиента), L-подписи сервера, R-подписи сервера и зашифрованных данных сервера. Поскольку подлинность подписи сервера, которая основана на зашифрованных данных сервера, может быть подтверждена с использованием статического открытого ключа сервера, серверный компьютер 680 не может отказаться от сообщения с ответом. [0170] At
[0171] Затем клиентский компьютер 640 и серверный компьютер 680 могут завершить сеанс обмена данными, или они могут продолжить безопасный обмен данными с использованием второго ключа сеанса. [0171] The client computer 640 and
[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
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
[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
[0180] На этапе 706 первый компьютер может отправлять первое сообщение на второй компьютер, содержащее первый замаскированный открытый ключ и зашифрованные данные первого компьютера. Второй компьютер генерирует первый совместно используемый секрет, а затем проверяет подпись первого компьютера. [0180] At
[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
[0183] На этапе 801 второй компьютер может принимать от первого компьютера первое сообщение, содержащее первый замаскированный открытый ключ первого компьютера и зашифрованные данные первого компьютера. Первое сообщение может быть сгенерировано первым компьютером с использованием способа, описанного выше в отношении фиг. 7. [0183] At
[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.
PrivVerify(vk, sig_L, Sig_R, data)PrivSign(sk, data) = [sign_L(), sign_R(sk, random, data) ]
PrivVerify(vk, sig_L, Sig_R, data)
Как 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.
Таблица 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
[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
[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)
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)
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)
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 |