RU2787692C2 - Key encapsulation protocols - Google Patents

Key encapsulation protocols Download PDF

Info

Publication number
RU2787692C2
RU2787692C2 RU2021103795A RU2021103795A RU2787692C2 RU 2787692 C2 RU2787692 C2 RU 2787692C2 RU 2021103795 A RU2021103795 A RU 2021103795A RU 2021103795 A RU2021103795 A RU 2021103795A RU 2787692 C2 RU2787692 C2 RU 2787692C2
Authority
RU
Russia
Prior art keywords
key
public key
data
bits
raw
Prior art date
Application number
RU2021103795A
Other languages
Russian (ru)
Other versions
RU2787692C9 (en
RU2021103795A (en
Inventor
Оскар ГАРСИЯ МОРХОН
Саувик БХАТТАЧАРЬЯ
Людовикус Маринус Герардус Мария ТОЛХЁЙЗЕН
Original Assignee
Конинклейке Филипс Н.В.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Конинклейке Филипс Н.В. filed Critical Конинклейке Филипс Н.В.
Publication of RU2021103795A publication Critical patent/RU2021103795A/en
Publication of RU2787692C2 publication Critical patent/RU2787692C2/en
Application granted granted Critical
Publication of RU2787692C9 publication Critical patent/RU2787692C9/en

Links

Images

Abstract

FIELD: cryptographic devices.
SUBSTANCE: reliable bit function can be applied to the second unprocessed shared key to obtain reliable indices indicating coefficients of the unprocessed shared key and reliable bits derived from the specified coefficients. Coherence data can be formed for the specified coefficients of the unprocessed shared key. A code word can be encapsulated using reliable bits by use of an encapsulation function to obtain encapsulated data, which can be transmitted.
EFFECT: increase in security of data transmission.
14 cl, 16 dwg

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

Изобретение относится к криптографическому устройству, криптографическому способу и компьютерочитаемому носителю.The invention relates to a cryptographic device, a cryptographic method and a computer-readable medium.

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

В криптографии протокол выработки общего ключа представляет собой протокол, посредством которого две или более сторон, которые, возможно, еще не используют совместно общий ключ, могут согласовывать такой ключ. Предпочтительно обе стороны могут влиять на результат, чтобы ни одна из сторон не могла принуждать к выбору ключа. Злоумышленник, который перехватывает обмен данными между двумя сторонами, не должен ничего узнать о ключе. Тем не менее, хотя злоумышленник, который видит тот же обмен данными, узнает немного или ничего, сами стороны могут получать совместно используемый ключ.In cryptography, a pre-shared key protocol is a protocol by which two or more parties that may not yet share a pre-shared key can agree on such a key. Preferably, both parties can influence the result so that neither party can force the choice of a key. An attacker who intercepts the communication between two parties need not know anything about the key. However, while an attacker who sees the same communication learns little or nothing, the parties themselves can obtain the shared key.

Протоколы выработки общего ключа полезны, например, для защиты обмена данными, например, для шифрования и/или проверки подлинности сообщений между сторонами.Pre-shared key protocols are useful, for example, for securing communications, such as for encrypting and/or authenticating messages between parties.

Практические протоколы выработки общего ключа были введены в 1976 г., когда Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) ввели понятие криптографии с открытым ключом. Они предложили систему для выработки общего ключа между двумя сторонами, в которой используют кажущуюся сложность вычисления логарифмов над конечным полем GF(q) из q элементов. С использованием этой системы два пользователя могут вырабатывать общий симметричный ключ. После этого симметричный ключ используют, скажем, для шифрованного обмена данными между двумя сторонами.Practical protocols for deriving a public key were introduced in 1976 when Whitfield Diffie and Martin Hellman introduced the concept of public key cryptography. They proposed a system for deriving a shared key between two parties that exploits the apparent complexity of computing logarithms over a finite field GF(q) of q elements. Using this system, two users can generate a common symmetric key. The symmetric key is then used, say, for encrypted communication between two parties.

Современные способы выработки общего ключа, когда у стороны еще нет общего секрета, такие как способ выработки общего ключа Диффи-Хеллмана, требуют ресурсоемких математических операций. Например, алгоритм Диффи-Хеллмана требует выполнения операций возведения в степень над конечным полем. Как величина степени, так и размер поля могут быть большими. Из-за этого протоколы выработки общего ключа менее пригодны для устройств с низкими ресурсами. С другой стороны, протоколы выработки общего ключа будут очень полезны в устройствах с ограниченными ресурсами. Например, в областях применения, таких как Интернет вещей (Internet of Things, IoT), самоорганизующиеся беспроводные сети и т. п., выработка общего ключа была бы полезна для защиты линий связи между устройствами. Другим примером является обмен данными между считывающим устройством и электронной меткой, скажем, между устройством чтения карт и смарт-картой, или устройством считывания меток и меткой, например RFID-меткой или NFC-меткой. Было бы полезно иметь протокол выработки общего ключа, который ложился бы меньшим бременем по меньшей мере на одну из двух сторон, например на электронную метку.Modern methods of deriving a shared key when a party does not yet have a shared secret, such as deriving a shared Diffie-Hellman method, require resource-intensive mathematical operations. For example, the Diffie-Hellman algorithm requires exponentiation operations to be performed on a finite field. Both the exponent value and the field size can be large. Because of this, pre-shared key derivation protocols are less suitable for devices with low resources. On the other hand, pre-shared key derivation protocols will be very useful in devices with limited resources. For example, in applications such as the Internet of Things (IoT), self-organizing wireless networks, etc., the generation of a shared key would be useful for securing communication lines between devices. Another example is communication between a reader and an electronic tag, say a card reader and a smart card, or a tag reader and a tag, such as an RFID tag or an NFC tag. It would be useful to have a protocol for deriving a shared key that places less of a burden on at least one of the two parties, such as an electronic tag.

Для облегчения защищенной связи между сторонами протоколы выработки общего ключа иногда дополнительно подразделяют на схемы обмена криптографическими ключами (KEX) и инкапсуляции криптографического ключа (KEM). Схемы инкапсуляции криптографического ключа (KEM) используют асимметричную криптографию для установления общего секрета между двумя сторонами с использованием общеизвестного значения (например, открытого ключа) и сохраняемого в секрете значения (например, секретного ключа) для каждой стороны.To facilitate secure communication between parties, pre-shared key derivation protocols are sometimes further subdivided into cryptographic key exchange (KEX) and cryptographic key encapsulation (KEM) schemes. Cryptographic key encapsulation (KEM) schemes use asymmetric cryptography to establish a shared secret between two parties using a commonly known value (eg, public key) and a value kept secret (eg, secret key) for each party.

Схемы KEX включают обмен открытыми ключами каждой стороной, которые затем независимо используются другой стороной наряду с ее собственными секретным ключом для вычисления общего совместного ключа. Хорошо известным примером схемы KEX является обмен ключами Диффи-Хеллмана, упомянутый выше, защита которого основана на решении задачи дискретного логарифмирования. Интересной особенностью некоторых схем KEX является то, что стороны никогда не обмениваются фактическим конечным общим секретом, даже в зашифрованном виде, а две стороны вычисляют его независимо на каждом конце. В результате достигают требуемого свойства, известного как прямая секретность, которое гарантирует, что даже вскрытие злоумышленником долгосрочного секретного ключа какой-либо стороны в будущем не поставит под угрозу секретность зашифрованных сообщений, которыми обменивались в прошлом.KEX schemes involve the exchange of public keys by each party, which are then independently used by the other party, along with its own private key, to calculate a common shared key. A well-known example of a KEX scheme is the Diffie-Hellman key exchange mentioned above, whose security is based on solving the discrete logarithm problem. An interesting feature of some KEX schemes is that the parties never exchange the actual final shared secret, even in encrypted form, and the two parties compute it independently at each end. As a result, a desired property, known as forward secrecy, is achieved, which ensures that even an attacker's discovery of a party's long-term secret key in the future does not compromise the secrecy of encrypted messages exchanged in the past.

Схемы KEM устанавливают общий секрет между двумя объектами или сторонами за счет использования одной стороной, обычно инициатором обмена данными, асимметричной криптографии для шифрования (с помощью открытого ключа другой стороны) и передачи общего ключа другой стороне, называемой ответчиком, которая может после этого расшифровывать его (с помощью своего секретного ключа) и затем использовать для защищенного обмена данными со стороной-инициатором. Схемы KEM не могут достичь прямой секретности, поскольку любой злоумышленник, который вскрывает секретной ключ какой-либо стороны для прошлого сеанса и записал все сообщения, которыми обменивались стороны в этом сеансе, может восстановить общий секрет для данного конкретного сеанса.KEM schemes establish a shared secret between two entities or parties by using one party, usually the initiator of the exchange, to use asymmetric cryptography to encrypt (using the other party's public key) and transmit the shared key to another party, called the responder, who can then decrypt it ( using your private key) and then used for secure data exchange with the initiating party. KEM schemes cannot achieve forward secrecy because any attacker who breaks a party's secret key for a past session and records all the messages exchanged by the parties in that session can recover the shared secret for that particular session.

Ввиду растущего спроса на обеспечение защиты в Интернете вещей схемы обмена ключами должны также достигать высокой эффективности (например, требований к минимальному объему обмена данными или пропускной способности), оставаясь при этом надежными против классических, а также обладающих возможностями квантовых вычислений злоумышленников.With the growing demand for security in the Internet of Things, key exchange schemes must also achieve high performance (eg, minimum data exchange or bandwidth requirements) while remaining robust against classical as well as quantum-capable attackers.

Цитируемая литература:Cited Literature:

RLWE: «On Ideal Lattices and Learning with Errors Over Rings», by Vadim Lyubashevsky, Chris Peikert, and Oded Regev,RLWE: "On Ideal Lattices and Learning with Errors Over Rings", by Vadim Lyubashevsky, Chris Peikert, and Oded Regev,

RLWR: «Pseudorandom Functions and Lattices», by Abhishek Banerjee, Chris Peikert, and Alon Rosen,RLWR: "Pseudorandom Functions and Lattices", by Abhishek Banerjee, Chris Peikert, and Alon Rosen,

LWE: «On Lattices, Learning with Errors, Random Linear Codes, and Cryptography», by Oded Regev.LWE: "On Lattices, Learning with Errors, Random Linear Codes, and Cryptography", by Oded Regev.

LWR: «Pseudorandom Functions and Lattices», by Abhishek Banerjee, Chris Peikert, and Alon Rosen,LWR: "Pseudorandom Functions and Lattices", by Abhishek Banerjee, Chris Peikert, and Alon Rosen,

Hila5: «HILA5: On Reliability, Reconciliation, and Error Correction for Ring-LWE Encryption», by Markku-Juhani O. SaarinenHila5: "HILA5: On Reliability, Reconciliation, and Error Correction for Ring-LWE Encryption", by Markku-Juhani O. Saarinen

Round2: «Round2: KEM and PKE based on GLWR», by Hayo Baan, Sauvik Bhattacharya, Oscar Garcia-Morchon, Ronald Rietman, Ludo Tolhuizen, Jose-Luis Torre-Arce, and Zhenfei ZhangRound2: "Round2: KEM and PKE based on GLWR", by Hayo Baan, Sauvik Bhattacharya, Oscar Garcia-Morchon, Ronald Rietman, Ludo Tolhuizen, Jose-Luis Torre-Arce, and Zhenfei Zhang

Эта литература включена в настоящий документ путем ссылки.This literature is incorporated herein by reference.

РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE INVENTION

Было бы полезно иметь улучшенные криптографические устройства, решающие эти и другие проблемы. Представлены первое и второе криптографические устройства.It would be useful to have improved cryptographic devices that solve these and other problems. The first and second cryptographic devices are presented.

Второе криптографическое устройство может содержать интерфейс связи, выполненный с возможностью обмена данными с первым криптографическим устройством. Второе криптографическое устройство может содержать процессор. Процессор может быть выполнен с возможностью выполнения одного или более из следующего:The second cryptographic device may include a communication interface configured to communicate with the first cryptographic device. The second cryptographic device may include a processor. The processor may be configured to do one or more of the following:

- получения первого открытого ключа для первого криптографического устройства,- obtaining the first public key for the first cryptographic device,

- формирования второго закрытого ключа, кодового слова в соответствии с кодом с исправлением ошибок и формирования второго открытого ключа из второго закрытого ключа,- generating a second private key, a code word in accordance with the error correction code and generating a second public key from the second private key,

- формирования второго необработанного общего ключа из первого открытого ключа и второго закрытого ключа,- generating a second raw public key from the first public key and the second private key,

- применения функции надежных битов ко второму необработанному общему ключу с получением надежных индексов, указывающих коэффициенты необработанного общего ключа, и надежных битов, выведенных из указанных коэффициентов,- applying the reliable bits function to the second raw public key to obtain reliable indices indicating the coefficients of the raw public key, and reliable bits derived from the indicated coefficients,

- формирования данных согласования для указанных коэффициентов необработанного общего ключа, причем данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве,- generating matching data for said coefficients of the raw shared key, wherein the matching data contains information to reduce differences between the first and second raw keys output on the first and second device,

- инкапсуляции кодового слова с использованием надежных битов путем применения функции инкапсуляции с получением инкапсулированных данных, иencapsulating the codeword using reliable bits by applying the encapsulation function to obtain encapsulated data, and

- передачи второго открытого ключа, данных согласования, инкапсулированных данных и надежных индексов первому устройству.- transmitting the second public key, agreement data, encapsulated data and trusted indexes to the first device.

Первое криптографическое устройство может содержать интерфейс связи, выполненный с возможностью обмена данными со вторым криптографическим устройством. Первое криптографическое устройство может содержать процессор. Процессор может быть выполнен с возможностью выполнения одного или более из следующего:The first cryptographic device may include a communication interface configured to communicate with the second cryptographic device. The first cryptographic device may include a processor. The processor may be configured to do one or more of the following:

- получения первого закрытого ключа и первого открытого ключа, выведенного из первого закрытого ключа, передачи первого открытого ключа второму устройству,- obtaining the first private key and the first public key derived from the first private key, transmitting the first public key to the second device,

- приема от второго устройства второго открытого ключа, данных согласования и инкапсулированных данных и надежных индексов,- receiving from the second device the second public key, agreement data and encapsulated data and reliable indexes,

- формирования первого необработанного общего ключа из второго открытого ключа и первого закрытого ключа,- generating the first raw public key from the second public key and the first private key,

- применения данных согласования в функции согласования к коэффициентам в первом необработанном общем ключе, указанном надежными индексами, с получением надежных битов,applying the matching data in the matching function to the coefficients in the first raw shared key indicated by the reliable indexes to obtain reliable bits,

- декапсуляции инкапсулированных данных с получением почти кодового слова с использованием надежных битов,- decapsulation of encapsulated data to obtain an almost codeword using reliable bits,

- применения функции исправления ошибок к почти кодовому слову с получением кодового слова.- applying the error correction function to the near-codeword to obtain the codeword.

Что интересно, инкапсуляцию применяют как к битам данных, так и к битам четности, а не только к битам четности. Более того, инкапсуляцию применяют к кодовому слову, которое может быть частично сформированными данными, например, сообщением, ключом и/или предварительным ключом. Инкапсуляцию не применяют к данным, которые выводят из закрытых ключей или даже из открытых ключей. Это улучшает устойчивость к активным атакам. Следует отметить, что кодовое слово не зависит от закрытых ключей и даже от открытых ключей.Interestingly, encapsulation is applied to both data bits and parity bits, not just parity bits. Moreover, encapsulation is applied to the codeword, which may be partially formed data, such as a message, a key, and/or a pre-shared key. Encapsulation is not applied to data that is derived from private keys or even from public keys. This improves resistance to active attacks. It should be noted that the code word does not depend on private keys and even on public keys.

В варианте реализации общий ключ выводят по меньшей мере из относящейся к данным части кодового слова. Следует отметить, что в варианте реализации ни один из надежных битов не используют для вывода из них ключа, а вместо этого их используют для инкапсуляции, они могут быть игнорированы или использованы для других целей, например для вывода несвязанной формы ключа.In an embodiment, the shared key is derived from at least the data portion of the codeword. It should be noted that in an implementation, none of the safe bits are used to derive a key from them, but instead they are used for encapsulation, they may be ignored or used for other purposes, such as deriving an unbound form of the key.

В варианте реализации первое и второе криптографические устройства конфигурируют для протокола выработки общего ключа. Например, общий криптографический ключ может быть выведен по меньшей мере из данных, закодированных в кодовом слове. В этом случае первый закрытый ключ может быть сформирован кратковременно для формирования общего ключа. Второй закрытый ключ тоже может быть сформирован кратковременно.In an embodiment, the first and second cryptographic devices are configured for a pre-shared key protocol. For example, a common cryptographic key may be derived from at least the data encoded in the codeword. In this case, the first private key may be generated briefly to form a shared key. The second private key can also be generated for a short time.

В варианте реализации первое и второе криптографические устройства конфигурируют для шифрования с открытым ключом. Например, в кодовом слове может быть закодировано сообщение. Сообщение может быть получено первым криптографическим устройством. Например, сообщение может быть зашифровано общим симметричным ключом, выведенным по меньшей мере из данных, закодированных в кодовом слове. Зашифрованное сообщение может быть отправлено со вторым открытым ключом со второго устройства на первое устройство. Множество вторых криптографических устройств могут использовать одну и ту же открытую информацию, например, первый открытый ключ, для шифрования сообщений для первого криптографического устройства.In an embodiment, the first and second cryptographic devices are configured for public key encryption. For example, a message can be encoded in a code word. The message may be received by the first cryptographic device. For example, the message may be encrypted with a shared symmetric key derived from at least the data encoded in the codeword. The encrypted message may be sent with the second public key from the second device to the first device. A plurality of second cryptographic devices may use the same public information, such as the first public key, to encrypt messages for the first cryptographic device.

Что интересно, эти три источника информации могут быть использованы для снижения вероятности отказа при обмене кодовым словом и сформированным из него случайным образом ключом. Кроме того, поскольку кодовое слово может быть сформировано случайным образом, достигается активная защита. Эти источники включают использование надежных битов, данных согласования, выделенных для коэффициентов необработанного ключа, и избыточной информации для исправления ошибок, которая является частью кодового слова, например битов четности.Interestingly, these three sources of information can be used to reduce the probability of failure in the exchange of a code word and a randomly generated key from it. In addition, since the code word can be randomly generated, active protection is achieved. These sources include the use of reliable bits, matching data allocated to raw key coefficients, and redundant error correction information that is part of the codeword, such as parity bits.

Например, в варианте реализации первое и второе криптографические устройства могут согласовать необработанный ключ, скажем, полиномиальный ключ k* с n коэффициентами в Z_q. Например, n может быть размером полиномиального кольца. Например, коэффициент в необработанном ключе может быть отображен в часть конечного ключа или предварительного ключа, например, в один или более битов. Например, половина значений в Z_q могут быть отображены в 0 и половина значений могут быть отображены в 1. Выбор надежных битов может быть выполнен путем выбора, например, некоторого количества, скажем мю, коэффициентов, которые наиболее удалены от границы декодирования, так что вероятность совершения ошибки низкая.For example, in an embodiment, the first and second cryptographic devices may agree on a raw key, say a polynomial key k* with n coefficients in Z_q. For example, n can be the size of a polynomial ring. For example, the coefficient in the raw key may be mapped to a portion of the final key or pre-key, such as one or more bits. For example, half of the values in Z_q can be mapped to 0 and half of the values can be mapped to 1. The choice of reliable bits can be done by choosing, for example, some number, say mu, of the coefficients that are furthest from the decoding boundary, so that the probability of doing errors are low.

Данные согласования ключа могут представлять собой информацию, которая выделяется вторым криптографическим устройством, например, для выбранных надежных коэффициентов, скажем, выбранных мю коэффициентов, необработанного ключа, скажем, полиномиального ключа. Информация согласования помогает первому криптографическому устройству приходить к одному и тому же решению, отображается ли конкретный коэффициент необработанного ключа на ту или иную часть кодового слова. Следует отметить, что это нужно делать только для выбранных надежных коэффициентов, т.е. требуется меньше работы.The key agreement data may be information that is extracted by the second cryptographic device, for example, for selected strong coefficients, say, selected mu coefficients, raw key, say, polynomial key. The negotiation information helps the first cryptographic device to come to the same decision whether a particular coefficient of the raw key is mapped to a particular part of the codeword. It should be noted that this should only be done for selected reliable coefficients, i.e. less work required.

Информация для исправления ошибок может представлять собой биты четности. Биты четности могут быть выделены из случайно сформированного двоичного ключа K, сообщения m или предварительного ключа, так что информация, которую инкапсулирует второе устройство, в некоторой степени носит избыточный характер. Таким образом, даже если перед этим совершаются ошибки, первое устройство может исправить их. Поэтому, если требуется передать ключ K длиной каппа битов и имеются (мю – каппа) битов четности, эти биты четности помогают первому устройству убедиться, что каппа битов ключа K являются верными.The error correction information may be parity bits. The parity bits can be extracted from the randomly generated binary key K, the message m, or the pre-key, so that the information that the second device encapsulates is somewhat redundant. Thus, even if mistakes are made before, the first device can correct them. Therefore, if a key K of length kappa bits needs to be transmitted and there are (mu-kappa) parity bits, these parity bits help the first device to verify that the kappa bits of key K are correct.

Первое и второе криптографические устройства могут быть электронными устройствами. Например, они могут быть компьютерами. Они могут быть мобильными электронными устройствами, например мобильным телефоном, смарт-картой. Первое и второе криптографические устройства могут быть потребительской электроникой, например телеприставкой, телевизором.The first and second cryptographic devices may be electronic devices. For example, they may be computers. They may be mobile electronic devices such as a mobile phone, a smart card. The first and second cryptographic devices may be consumer electronics such as a set-top box, television.

Устройства и способы в соответствии с вариантом реализации могут быть применены к широкому диапазону областей практического применения. В число таких практических областей применения входят ряд криптографических протоколов. Такие практические области применения включают приложения для обмена сообщениями, сенсорные сети, обмен данными, финансовые приложения и т.д.Devices and methods in accordance with the implementation option can be applied to a wide range of areas of practical application. These practical applications include a number of cryptographic protocols. Such practical applications include messaging applications, sensor networks, data exchange, financial applications, etc.

Вариант реализации способа может быть реализован на компьютере в виде компьютеризованного способа или в специализированном оборудовании, или в сочетании того и другого. Исполнимый код для варианта реализации способа может храниться в компьютерном программном продукте. В число примеров компьютерных программных продуктов входят запоминающие устройства, оптические запоминающие устройства, интегральные схемы, серверы, интерактивное программное обеспечение и т.д. Предпочтительно компьютерный программный продукт содержит некратковременный программный код, хранящийся на компьютерочитаемом носителе, для осуществления варианта реализации способа при исполнении данного программного продукта на компьютере.An embodiment of the method may be implemented on a computer as a computerized method, or in specialized equipment, or a combination of both. The executable code for the method implementation may be stored in the computer program product. Examples of computer program products include storage devices, optical storage devices, integrated circuits, servers, interactive software, and the like. Preferably, the computer program product comprises non-transitory program code stored on a computer-readable medium for carrying out an embodiment of the method when the program product is executed on a computer.

В варианте реализации компьютерная программа содержит компьютерный программный код, выполненный с возможностью осуществления всех или части этапов варианта реализации способа при выполнении компьютерной программы на компьютере. Предпочтительно компьютерную программу реализуют на компьютерочитаемом носителе.In an embodiment, the computer program comprises computer program code configured to perform all or part of the steps of the method embodiment when the computer program is executed on the computer. Preferably, the computer program is implemented on a computer-readable medium.

Согласно другому аспекту настоящего изобретения предложен способ создания компьютерной программы, доступной для загрузки. Этот аспект используют при загрузке компьютерной программы, например, в App Store компании Apple, Play Store компании Google или Windows Store компании Microsoft, а также в том случае, когда компьютерная программа доступна для загрузки из такого магазина.According to another aspect of the present invention, a method for making a downloadable computer program is provided. This aspect is used when the computer program is downloaded from, for example, Apple's App Store, Google's Play Store, or Microsoft's Windows Store, or when the computer program is available for download from such a store.

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

Дальнейшие подробные сведения, аспекты и варианты реализации будут описаны только на примерах со ссылкой на чертежи. Элементы на фигурах показаны для простоты и ясности и необязательно изображены в масштабе. На фигурах элементы, которые соответствуют уже описанным элементам, могут иметь одинаковые номера позиций. Содержание чертежей:Further details, aspects and embodiments will be described by way of example only with reference to the drawings. Elements in the figures are shown for simplicity and clarity and are not necessarily drawn to scale. In the figures, elements that correspond to elements already described may have the same reference numerals. Content of drawings:

на Фиг. 1 схематически показан пример протокола KEX,in FIG. 1 schematically shows an example of the KEX protocol,

на Фиг. 2 схематически показан пример протокола KEM,in FIG. 2 schematically shows an example of a KEM protocol,

на Фиг. 3 схематически показан пример протокола KEM,in FIG. 3 schematically shows an example of a KEM protocol,

на Фиг. 4 схематически показан пример протокола KEM,in FIG. 4 schematically shows an example of a KEM protocol,

На Фиг. 5a схематически показан пример варианта реализации протокола шифрования с открытым ключом (PKE),On FIG. 5a schematically shows an example implementation of a Public Key Encryption (PKE) protocol,

на Фиг. 5b схематически показан пример варианта реализации протокола KEM,in FIG. 5b schematically shows an example implementation of the KEM protocol,

на Фиг. 6 схематически показано, как варианты реализации могут быть основаны на друг друге;in FIG. 6 schematically shows how the implementations can be based on each other;

На Фиг. 7a схематически показан пример варианта реализации устройства 100 первой стороны,On FIG. 7a schematically shows an exemplary embodiment of a first side device 100,

На Фиг. 7b схематически показан пример варианта реализации устройства 200 второй стороны,On FIG. 7b schematically shows an exemplary embodiment of the second side device 200,

На Фиг. 7c схематически показан пример варианта реализации криптографической системы 101.On FIG. 7c schematically shows an exemplary embodiment of the cryptographic system 101.

на Фиг. 8a схематически показан компьютерочитаемый носитель, имеющий выполненную с возможностью записи часть, содержащую компьютерную программу согласно варианту реализации,in FIG. 8a schematically shows a computer readable medium having a writable portion containing a computer program according to an embodiment,

на Фиг. 8b схематически показано представление процессорной системы согласно варианту реализации.in FIG. 8b is a schematic representation of a processor system according to an embodiment.

на Фиг. 9 схематически показан пример формирования секрета в соответствии с вариантом реализации,in FIG. 9 schematically shows an example of generating a secret in accordance with an implementation variant,

на Фиг. 10 схематически показан пример криптографической системы в соответствии с вариантом реализации,in FIG. 10 schematically shows an example of a cryptographic system according to an embodiment,

на Фиг. 11a схематически показан пример криптографического способа в соответствии с вариантом реализации,in FIG. 11a schematically shows an example of a cryptographic method according to an embodiment,

на Фиг. 11b схематически показан пример криптографического способа в соответствии с вариантом реализации.in FIG. 11b schematically shows an example of a cryptographic method according to an embodiment.

В приложении A, которое является частью данного описания, предложены схематические математические описания примеров реализации. Appendix A, which is part of this specification, provides schematic mathematical descriptions of implementation examples.

Список ссылочных позиций:List of reference items:

10 - первая сторона10 - first side

20 - вторая сторона20 - second side

100 - устройство первой стороны100 - first party device

130 - интерфейс связи130 - communication interface

191 - компьютерная сеть191 - computer network

192 - интерфейс хранилища192 - storage interface

194 - процессор194 - processor

196 - память196 - memory

200 - устройство второй стороны200 - second party device

230 - интерфейс связи230 - communication interface

292 - интерфейс хранилища292 - storage interface

294 - процессор294 - processor

296 - память296 - memory

300 - первое криптографическое устройство300 - the first cryptographic device

301 - криптографическая система301 - cryptographic system

302 - депозитарий открытых ключей302 - public key depository

305 - интерфейс связи305 - communication interface

315 - генератор открытых/закрытых ключей315 - public/private key generator

320 - средство исправления ошибок320 - Error Corrector

325 - блок Диффи-Хеллмана325 - Diffie-Hellman block

335 - блок согласования335 - matching block

340 - блок декапсуляции340 - decapsulation block

350 - второе криптографическое устройство350 - second cryptographic device

355 - интерфейс связи355 - communication interface

360 - получатель открытых ключей360 - recipient of public keys

365 - генератор открытых/закрытых ключей365 - public/private key generator

370 - генератор кодовых слов370 - code word generator

375 - блок Диффи-Хеллмана375 - Diffie-Hellman block

380 - генератор надежных битов380 - reliable bit generator

385 - генератор данных согласования385 - agreement data generator

390 - инкапсулятор390 - encapsulator

1000 - компьютерочитаемый носитель1000 - computer readable medium

1010 - выполненная с возможностью записи часть1010 - writable portion

1020 - компьютерная программа1020 - computer program

1110 - интегральная (-ые) схема (-ы)1110 - integrated circuit(s)

1120 - блок обработки1120 - processing unit

1122 - память1122 - memory

1124 - специализированная интегральная схема1124 - ASIC

1126 - элемент связи1126 - communication element

1130 - межсоединение1130 - interconnect

1140 - процессорная система1140 - processor system

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

Хотя настоящее изобретение может быть реализовано во многих различных формах, на чертежах показаны и будут подробно описаны один или более конкретных вариантов реализации при том понимании, что настоящее описание нужно рассматривать как пример принципов настоящего изобретения, и оно не предназначено для ограничения изобретения показанными и описанными конкретными вариантами реализации.While the present invention may be embodied in many different forms, one or more specific embodiments are shown and will be described in detail in the drawings, with the understanding that the present description is to be considered as exemplifying the principles of the present invention and is not intended to limit the invention to the specific embodiments shown and described. implementation options.

Далее в целях понимания элементы вариантов реализации описаны во время работы. Однако очевидно, что соответствующие элементы выполнены с возможностью осуществления функций, описываемых как выполняемые ими.In the following, for purposes of understanding, the elements of the embodiments are described at runtime. However, it is obvious that the respective elements are configured to perform the functions described as being performed by them.

Кроме того, настоящее изобретение не ограничивается этими вариантами реализации, и изобретение заключается в каждом из новых признаков или комбинации признаков, описанных в данном документе или изложенных во взаимно отличающихся зависимых пунктах формулы изобретения.In addition, the present invention is not limited to these embodiments, and the invention lies in each of the new features or combination of features described herein or set forth in mutually different dependent claims.

Мы представляем протокол KEM, который использует KEX-ключ k для инкапсуляции случайного ключа K, определенного второй частью, а также битами четности в K. В вариантах реализации используют KEX для инкапсуляции и функцию надежных битов для снижения вероятности отказа. Поскольку для инкапсуляции используют ключ KEX, можно обмениваться вспомогательными данными, что налагает низкие требования на пропускную способность и снижает вероятность отказа. Благодаря инкапсуляции можно достичь активной защиты. Поскольку биты четности тоже инкапсулируют, то, опять же, можно достичь более хорошей вероятности отказа. В приведенных ниже вариантах реализации мы будем ссылаться на функцию safe_bits, но это может быть любая функция надежных битов.We present a KEM protocol that uses a KEX key k to encapsulate a random key K defined by the second part as well as parity bits in K. Implementations use KEX for encapsulation and a reliable bits function to reduce failure probability. Since the KEX key is used for encapsulation, ancillary data can be exchanged, which imposes low bandwidth requirements and reduces the chance of failure. Through encapsulation, active protection can be achieved. Since the parity bits are also encapsulated, again, a better failure probability can be achieved. In the implementations below, we will refer to the safe_bits function, but it can be any safe bits function.

Проблема многих квантово-устойчивых протоколов обмена ключами заключается в наличии у них некоторой вероятности отказа. Например, первая сторона и вторая сторона первоначально вырабатывают общий необработанный ключ с шумом, который потом согласуют, например посредством данных согласования. Функция надежных битов позволяет второй стороне, например, стороне, которая первой выводит необработанный ключ, идентифицировать, какие биты в необработанном ключе с наибольшей вероятностью будут выведены таким же образом первой стороной, а какие биты в необработанном ключе будут выведены первой стороной с меньшей вероятностью.The problem with many quantum-resistant key exchange protocols is that they have some probability of failure. For example, the first party and the second party initially generate a common noisy raw key, which is then negotiated, eg, through the negotiation data. The reliable bits function allows a second party, such as the party that first outputs the raw key, to identify which bits in the raw key are most likely to be output in the same way by the first side, and which bits in the raw key are less likely to be output by the first side.

В прямой реализация функции надежных битов задают две или более центральных точек для коэффициентов, которые отбирают для получения битов ключа. Коэффициенты, которые находятся слишком далеко от этих центральных точек, например, в соответствии с пороговым значением, могут быть отброшены, тогда как остальные могут быть отобраны для значения, связанного с центральной точкой. Например, количество центральных точек может быть степенью 2. Например, коэффициенты могут быть полиномиальными коэффициентами или элементами матрицы, возможно над самыми разными кольцами и т.п.In a direct implementation, the reliable bits functions define two or more center points for the coefficients that are sampled to produce the key bits. Coefficients that are too far away from these center points, for example in accordance with a threshold value, may be discarded, while the rest may be selected for the value associated with the center point. For example, the number of center points can be a power of 2. For example, the coefficients can be polynomial coefficients or matrix elements, possibly over very different rings, and the like.

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

Figure 00000001
намного больше требуемой длины ключа. Например, вторая сторона может выбрать m индексов в
Figure 00000001
, которые, скорее всего, будут согласованы. Эти безопасные коэффициенты могут быть коэффициентами, наиболее близкими к центральным точкам диапазонов коэффициентов, которые отображаются в нулевой бит или в единичный бит; k = 0 и k = 1. Например, в кольце по модулю q коэффициент
Figure 00000002
может быть отображен в 0, если
Figure 00000002
находится в диапазоне
Figure 00000003
, и в 1, если
Figure 00000002
находится в диапазоне
Figure 00000002
находится в диапазоне
Figure 00000004
, или наоборот. Если
Figure 00000002
не находится ни в одном их этих двух диапазонов, он не является надежным битом. Значение
Figure 00000005
определяет, в частности, надежность битов. Например, в этом случае оно может быть выбрано как
Figure 00000006
; меньшие значения для
Figure 00000005
обеспечивают более высокую надежность, но меньше битов ключа. В данном случае центральными точками могут быть
Figure 00000007
и
Figure 00000008
или их округленные значения.When choosing reliable bits, the assumption is made that not all bits given by the dimension of the ring are needed for the keys. Typically, the dimension of the underlying polynomials/matrices
Figure 00000001
much larger than the required key length. For example, the second party can choose m indices in
Figure 00000001
which are likely to be agreed upon. These safe coefficients may be the coefficients closest to the center points of the coefficient ranges that map to a zero bit or a one bit; k = 0 and k = 1. For example, in a ring modulo q, the coefficient
Figure 00000002
can be mapped to 0 if
Figure 00000002
is in the range
Figure 00000003
, and in 1 if
Figure 00000002
is in the range
Figure 00000002
is in the range
Figure 00000004
, or vice versa. If
Figure 00000002
is not in either of those two ranges, it is not a reliable bit. Meaning
Figure 00000005
defines, in particular, bit reliability. For example, in this case it could be chosen as
Figure 00000006
; smaller values for
Figure 00000005
provide higher security but fewer key bits. In this case, the central points can be
Figure 00000007
and
Figure 00000008
or their rounded values.

Вторая сторона, которая применяет вышеуказанную процедуру, получает индексы надежных битов и биты ключа, которые соответствуют им. Надежные индексы могут быть сообщены первой стороне, а надежные биты ключа нет. Первая сторона может получить биты ключа из битов с индексами, указанными второй стороной. Поскольку эти биты более надежные, частота ошибок будет ниже.The second party, which applies the above procedure, obtains the safe bit indices and the key bits that correspond to them. Trusted indexes can be communicated to the first party, but trusted key bits cannot. The first party can derive the key bits from the bits with indexes specified by the second party. Because these bits are more reliable, the error rate will be lower.

Дальнейшие реализации функций надежных битов можно найти в статье Hila 5, включенной в настоящий документ путем ссылки. Например, могут быть применены алгоритмы из раздела 3. Авторы изобретения обнаружили, что функции надежных битов могут быть применены в ряде ситуаций, например, при разных лежащих в основе кольцах или объектах, например полиномах или матрицах.Further implementations of the trusted bits functions can be found in the Hila 5 article incorporated herein by reference. For example, the algorithms of Section 3 can be applied. The inventors have found that the reliable bit functions can be applied in a number of situations, for example, with different underlying rings or entities, such as polynomials or matrices.

Существуют ряд разных механизмов обмена ключами и инкапсуляции ключей, которые проиллюстрированы со ссылкой на фигуры.There are a number of different key exchange and key encapsulation mechanisms, which are illustrated with reference to the figures.

На Фиг. 1 схематически показан пример протокола KEX. Примером этого протокола являются spKEX или Frodo.On FIG. 1 schematically shows an example of a KEX protocol. An example of this protocol is spKEX or Frodo.

На Фиг. 2 схематически показан пример протокола KEM. Примером этого протокола является CPA-PKE-версия Round2 или NewHope Simple.On FIG. 2 schematically shows an example of a KEM protocol. An example of this protocol is the CPA-PKE version of Round2 or NewHope Simple.

На Фиг. 3 схематически показан пример протокола KEM с исправлением ошибок.On FIG. 3 schematically shows an example of a KEM protocol with error correction.

На Фиг. 4 схематически показан пример KEX, который использует ключ KEX для инкапсуляции ключа и включает в себя исправление ошибок. Примером этого протокола является HILA5.On FIG. 4 schematically shows an example of a KEX that uses a KEX key to encapsulate the key and includes error correction. An example of this protocol is HILA5.

На фигурах использованы следующие обозначения:The following symbols are used in the figures:

- a представляет главную копию секрета, например, полином в данном кольце (например, как в RLWE или RLWR) или матрицу с элементами в целых числах (например, как в LWE или LWR). - a represents the master copy of the secret, such as a polynomial in the given ring (eg, as in RLWE or RLWR) or a matrix with entries in integers (eg, as in LWE or LWR).

- r и s представляют секреты первой стороны и второй стороны.- r and s represent the secrets of the first side and the second side.

- b и u представляют «открытые» общие части ключа первой стороны и второй стороны, показанные как произведение a*r или a*s. Это представление операции фактически означает однонаправленную функцию лежащей в основе задачи. Операция звездочка (*) выводит новый математический объект из двух исходных объектов, вводя при этом некоторый шум. Например, операция звездочка может быть полиномиальным или матричным произведением; например, шум может быть введен путем добавления элементов шума или неявно, например за счет округления. Примеры операции звездочка можно найти в том, что может представлять собой (R)LWE или (R)LWR либо их модульная версия. Например, a*r может означать Round( (A*r (mod q)), p, q), например, как в LWR. Это означает произведение r, являющегося вектором длины n, на квадратную матрицу A размера n×n по модулю q. Затем результат округляют с помощью целых чисел p и q, где p < q путем выполнения p/q (A*r (mod q).- b and u represent the "open" common parts of the first side and second side key, shown as the product of a*r or a*s . This representation of an operation actually means a one-way function of the underlying task. The asterisk (*) operation outputs a new math object from the two original objects, while introducing some noise. For example, the asterisk operation can be a polynomial or matrix product; for example, noise can be introduced by adding noise elements or implicitly, such as by rounding off. Examples of the asterisk operation can be found in what could be (R)LWE or (R)LWR or their modular version. For example, a*r can mean Round( (A*r (mod q)), p, q), such as in LWR. This means the product of r, which is a vector of length n, by an n×n square matrix A modulo q. The result is then rounded to integers p and q, where p < q, by doing p/q (A*r (mod q).

- c представляет шифртекст.- c represents the ciphertext.

- h представляет вспомогательные данные, содержащие биты согласования.- h represents ancillary data containing justification bits.

- parity_bits относится к информации, используемой для исправления ошибок.- parity_bits refers to information used for error correction.

- get_reconciliation(k) является функцией, которая возвращает биты согласования из необработанного ключа k.- get_reconciliation(k) is a function that returns the reconciliation bits from the raw key k.

- reconciliate(k,h) является функцией, которая согласует необработанный ключ k при данных битах согласования h.- reconciliate(k,h) is a function that reconciles the raw key k given the reconciliation bits h.

- encapsulate(m,k) означает, что сообщение m инкапсулируют с помощью k. Например, если k принадлежит Z_q, то m тоже может быть представлено в Z_q. Если k принадлежит Z_2, то это эквивалентно XOR. Инкапсуляция может быть выполнена покомпонентно следующим образом:- encapsulate(m,k) means that message m is encapsulated with k. For example, if k belongs to Z_q, then m can also be represented in Z_q. If k belongs to Z_2, then this is equivalent to XOR. Encapsulation can be done component by component as follows:

c = k + m*(q/2) (mod q).c = k + m*(q/2) (mod q).

Например, функция инкапсуляции может маскировать сообщение m с помощью ключа k так, что ошибка в k оказывает ограниченное воздействие на m, например линейное воздействие.For example, the encapsulation function may mask message m with key k such that an error in k has a limited effect on m, such as a linear effect.

- decapsulate(c,k) означает, что шифртекст c декапсулируют из k, возвращающего битовую строку.- decapsulate(c,k) means that the ciphertext c is decapsulated from k, which returns a bit string.

- obtain_parity_bits(k) означает, что получают некоторые биты четности k. Например, биты четности могут быть сформированы в соответствии с кодом с исправлением ошибок.- obtain_parity_bits(k) means get some parity bits k. For example, the parity bits may be generated in accordance with the error correction code.

- error_correct(k, parity_bits) означает, что биты четности используют для исправления потенциальных ошибок либо в k, либо в битах четности с получением версии k, которая, скорее всего, не содержит ошибок.- error_correct(k, parity_bits) means that parity bits are used to correct potential errors in either k or parity bits to produce a version of k that is most likely error-free.

- safe_bits() возвращает два значения: (i) фактические надежные значения и (ii) позиции битов ключа, которые могут привести к более низкой вероятности отказа, поскольку полученные значения находятся дальше от границ количественного определения. Фактические значения, возвращаемые Safe_bits(), используют позже, например для инкапсуляции. Позициями обмениваются с другой стороной, чтобы она знала, какие позиции нужны.- safe_bits() returns two values: (i) the actual safe values and (ii) the key bit positions, which may result in a lower failure probability as the resulting values are further from the quantification bounds. The actual values returned by Safe_bits() are used later, for example for encapsulation. Positions are exchanged with the other party so that it knows which positions are needed.

KEX на Фиг.1 позволяет первой стороне и второй стороне вырабатывать общий ключ. Этот ключ имеет низкую вероятность отказа, поскольку первая сторона и вторая сторона обмениваются некоторыми битами согласования. Проблема KEX (Фиг. 1) состоит в том, что он делает возможным только один этап исправления ошибок, а именно, использование согласования ключа. Другая проблема KEX заключается в том, что ключи определяются только посредством r и s. В результате KEX не может достичь активной защиты для сообщений, которые нужно защитить.The KEX in Figure 1 allows the first party and the second party to generate a shared key. This key has a low failure probability because the first party and the second party exchange some handshake bits. The problem with KEX (FIG. 1) is that it only allows one error correction step, namely the use of key negotiation. Another problem with KEX is that keys are only defined by r and s. As a result, KEX cannot achieve active protection for messages that need to be protected.

KEM на Фиг. 2 позволяет второй стороне инкапсулировать случайный ключ на свой выбор при данном открытом ключе b первой стороны. Это позволяет достигать активной защиты. Проблема KEM (Фиг. 2) состоит в том, что он имеет только один этап для сокращения ошибок, обычно путем изменения коэффициента сжатия в шифртексте c. Желательно сжимать таким образом, чтобы требования к пропускной способности были ниже, например, если элементы, которые нужно инкапсулировать, принадлежат Z_q, то эти элементы могут быть перемещены в Z_t (где t > q). Однако, если t очень маленькое, вероятность ошибки возрастает.KEM in Fig. 2 allows the second party to encapsulate a random key of its choice, given the public key b of the first party. This allows you to achieve active protection. The problem with KEM (Fig. 2) is that it has only one step to reduce errors, usually by changing the compression factor in the ciphertext c. It is desirable to compress in such a way that the bandwidth requirements are lower, for example, if the elements to be encapsulated belong to Z_q, then these elements can be moved to Z_t (where t > q). However, if t is very small, the probability of error increases.

KEM на Фиг. 3 позволяет второй стороне включать биты четности в ключ, который она хочет инкапсулировать. Таким образом, первая сторона может исправлять ошибки, которые могут возникать. Это снижает вероятность отказа. Отличие KEM с исправлением ошибок (Фиг. 3) состоит в том, что по сравнению с KEX инкапсулированные ключи принадлежат Z_q или Z_t, так что KEM эффективно инкапсулирует фактический ключ, определенный второй стороной. Однако это означает также, что KEM всегда будет иметь больше служебных данных, чем KEX.KEM in Fig. 3 allows the second side to include parity bits in the key it wants to encapsulate. Thus, the first party can correct errors that may occur. This reduces the chance of failure. The difference between error-correcting KEM (Figure 3) is that, compared to KEX, the encapsulated keys belong to Z_q or Z_t, so KEM effectively encapsulates the actual key defined by the second party. However, this also means that KEM will always have more overhead than KEX.

Протокол, приведенный на Фиг. 4, представляет собой KEX, который использует ключ KEX вместе с исправлением ошибок. Хорошим свойством этой конструкции является то, что она позволяет добавлять код с исправлением ошибок, который, как в протоколе, показанном на Фиг. 3, снижает вероятность отказа. Поскольку это KEX, он может также использовать функцию safe_bits(), которая возвращает биты общего ключа k*, что приводит к снижению вероятности отказа. Проблемой протокола, приведенного на Фиг. 4, является то, что он не дает возможности активной защиты. Причина в том, что ключ определяется только посредством r и s.The protocol shown in Fig. 4 is a KEX that uses a KEX key along with error correction. The good thing about this design is that it allows you to add error-correcting code that, as in the protocol shown in FIG. 3, reduces the chance of failure. Since this is a KEX, it can also use the safe_bits() function, which returns k* public key bits, resulting in a lower failure rate. The problem with the protocol shown in FIG. 4 is that it does not enable active protection. The reason is that the key is only determined by r and s.

На Фиг. 4 схематически показан вариант реализации протокола KEM, причем функция инкапсуляции может представлять собой, например, c = encapsulate () = (k1 | parity_bits(k1)) XOR (k2). Пример параметров для использования в протоколе, приведенном на Фиг. 4, в котором используют вышеуказанную функцию инкапсуляции:On FIG. 4 schematically shows an implementation of the KEM protocol, where the encapsulation function may be, for example, c = encapsulate () = (k1 | parity_bits(k1)) XOR (k2). An example of parameters for use in the protocol shown in FIG. 4, which uses the above encapsulation function:

- k1 имеет длину каппа битов, например 256 битов;- k1 has a kappa bit length, eg 256 bits;

- биты четности составляют, например 121 бит;- parity bits are, for example, 121 bits;

- k2 имеет длину мю битов, например 121;- k2 has a length of mu bits, for example 121;

- C имеет длину parity_bits битов, например 121;- C has a length of parity_bits bits, for example 121;

- H имеет длину (каппа + parity_bits)b_h битов, например 256 + 121.- H has a length of (kappa + parity_bits)b_h bits, e.g. 256 + 121.

На Фиг. 5a схематически показан пример варианта реализации протокола PKE. В протоколе PKE, приведенном на Фиг. 5, используют согласование ключа, исправление ошибок и безопасные биты.On FIG. 5a schematically shows an example implementation of the PKE protocol. In the PKE protocol shown in FIG. 5 use key negotiation, error correction, and secure bits.

Фиг. 5a ссылается на алгоритмы в приложении A для конкретных примеров реализации. Однако следует отметить, что алгоритмы 1, 2 и 3 описывают конкретный вариант реализации, который может быть реализован частично, например, с использование примитивов, аналогичных примитивам в RLWR. Тем не менее, протокол, показанный на Фиг. 5a, является более общим, поскольку операции a*s, a*r, b*s, u*r представляют многие различные основополагающие криптографические задачи, такие как LWR, MLWR, RLWR, LWE, MLWE или RLWE.Fig. 5a refers to the algorithms in Appendix A for specific implementation examples. However, it should be noted that Algorithms 1, 2, and 3 describe a specific implementation that may be partially implemented, for example, using primitives similar to those in RLWR. However, the protocol shown in FIG. 5a is more general because the operations a*s, a*r, b*s, u*r represent many different underlying cryptographic problems such as LWR, MLWR, RLWR, LWE, MLWE, or RLWE.

Функцией инкапсуляции может быть например, c = encapsulate () = (K | parity_bits(K)) XOR (k*). При таком выборе можно использовать следующие примеры параметров:The encapsulation function could be, for example, c = encapsulate () = (K | parity_bits(K)) XOR (k*). With this choice, the following examples of parameters can be used:

- K имеет длину каппа битов, например 256 битов;- K has a kappa bit length, eg 256 bits;

- биты четности составляют, например 121 бит;- parity bits are, for example, 121 bits;

- K* имеет длину мю = каппа + parity_bits битов, например 256 + 121;- K* has length mu = kappa + parity_bits bits, eg 256 + 121;

- c имеет длину мю битов, например 256 + 121;- c has a length of mu bits, for example 256 + 121;

- H имеет длину (каппа + parity_bits)b_h битов, например 256 + 121.- H has a length of (kappa + parity_bits)b_h bits, e.g. 256 + 121.

- Safe_bits: n битов.- Safe_bits: n bits.

В протоколе шифрования с открытым ключом, приведенном на Фиг. 5a, первая сторона 10 может формировать случайный объект a и r, например полином или матрицу. Соответствующий открытый ключ содержит их произведение b, полученное с помощью операции звездочка. Объект a может совместно использоваться двумя сторонами другим способом, но в варианте реализации как a, так и b являются частью открытого ключа. Чтобы зашифровать сообщение m, вторая сторона 20 может сформировать кратковременный закрытый ключ s и из него определить соответствующий открытый ключ, содержащий u. В PKE первая сторона 10 может повторно использовать свой открытый ключ, например a и b. Одни и те же a и b могут быть использованы многими сторонами 20 для шифрования сообщений для первой стороны 10. Следует отметить, что передача общего объекта может быть осуществлена путем передачи затравки, из которой можно сформировать a, например псевдослучайным образом.In the public key encryption protocol shown in FIG. 5a, the first side 10 may generate a random object a and r, such as a polynomial or a matrix. The corresponding public key contains their product b, obtained using the asterisk operation. The object a may be shared between the two parties in another way, but in an implementation, both a and b are part of the public key. To encrypt the message m, the second party 20 may generate a short-lived private key s and from it determine the corresponding public key containing u. In PKE, the first party 10 can reuse its public key, such as a and b. The same a and b can be used by multiple parties 20 to encrypt messages for the first party 10. It should be noted that the transfer of a common object can be done by sending a seed from which a can be formed, eg, in a pseudo-random manner.

Для использования подобного протокола в качестве KEM открытые ключи могут быть сформированы случайным образом на обеих сторонах. Такой протокол показан на Фиг. 5b.To use such a protocol as KEM, public keys can be generated randomly on both sides. Such a protocol is shown in Fig. 5b.

Мы представляем протокол KEM, который использует KEX-ключ k для инкапсуляции случайного ключа K, определенного второй частью, а также битами четности в K. Так как ключ, используемый для инкапсуляции, поступает из KEX, можно применить функцию safe_bits(), снижающую вероятность отказа. Поскольку этот ключ, используемый для инкапсуляции, поступает из KEX, можно обмениваться вспомогательными данными, что накладывает низкие требования на пропускную способность и снижает вероятность отказа. Благодаря тому, что инкапсулирует протокол в целом, можно достичь активной защиты. Поскольку биты четности тоже инкапсулируют, можно достичь более хорошей вероятности отказа.We present a KEM protocol that uses the KEX key k to encapsulate the random key K defined by the second part, as well as the parity bits in K. Since the key used for encapsulation comes from KEX, the safe_bits() function can be used to reduce the probability . Since this key used for encapsulation comes from KEX, ancillary data can be exchanged, which imposes low bandwidth requirements and reduces the chance of failure. By encapsulating the protocol as a whole, active protection can be achieved. Since the parity bits are also encapsulated, a better failure probability can be achieved.

Эта схема имеет следующие свойства:This schema has the following properties:

- Как и в протоколах, приведенных на Фиг. 1 или Фиг. 4, это KEX, так что большие служебные данные из инкапсуляции ключа в Z_t не требуются.- As in the protocols shown in FIG. 1 or Fig. 4 is KEX, so no big overhead from key encapsulation in Z_t is required.

- Как и в протоколах, приведенных на Фиг. 1 или Фиг. 4, это KEX, так что для выполнения согласования ключа и снижения вероятности отказа присоединяют биты согласования.- As in the protocols shown in FIG. 1 or Fig. 4 is KEX, so to perform key negotiation and reduce the chance of failure, justify bits are appended.

- Как и в протоколах, приведенных на Фиг. 3 и Фиг. 4 это позволяет внедрять биты четности, так что вероятность отказа дополнительно снижается.- As in the protocols shown in FIG. 3 and FIG. 4, this allows parity bits to be embedded, so that the probability of a failure is further reduced.

- Инкапсуляция происходит в Z_2, поэтому служебные данные для инкапсуляции сведены к минимуму.- Encapsulation occurs in Z_2, so the overhead for encapsulation is minimized.

Например, достигаются следующие преимущества по сравнению с:For example, the following advantages are achieved compared to:

- Протоколом на Фиг. 1 в том, что новый протокол делает возможной активную защиту и вводит исправление ошибок для снижения вероятности отказа/потребностей в пропускной способности.- Protocol in Fig. 1 is that the new protocol enables active protection and introduces error correction to reduce the likelihood of failure/bandwidth requirements.

- Протоколом на Фиг. 2 в том, что новый протокол позволяет выбирать безопасные биты и исправление ошибок.- Protocol in Fig. 2 is that the new protocol allows safe bit selection and error correction.

- Протоколом на Фиг. 3 в том, что новый протокол позволяет выбирать безопасные биты.- Protocol in Fig. 3 is that the new protocol allows you to select safe bits.

- Протоколом на Фиг. 4 в том, что новый протокол делает возможной активную защиту.- Protocol in Fig. 4 is that the new protocol makes active protection possible.

Авторы изобретения сочли этот подход более эффективным, чем протокол, приведенный на Фиг. 3.The inventors found this approach to be more efficient than the protocol shown in FIG. 3.

Протокол, приведенный на Фиг. 5a может быть применен к сообщениям

Figure 00000009
, но также к ключу K. Например, ключ может быть сформирован на второй стороне. Пример такого применения показан на Фиг. 5b. Вариант реализации, например, показанный ниже на Фиг. 5b, может содержать следующие части:The protocol shown in Fig. 5a can be applied to messages
Figure 00000009
, but also to the key K. For example, the key can be generated on the second side. An example of such an application is shown in Fig. 5b. An embodiment such as shown below in FIG. 5b may contain the following parts:

- 1: Первая сторона получает секретный ключ r, открытый параметр a и общую часть b своего открытого ключа.- 1: The first party receives the private key r, the public parameter a, and the common part b of their public key.

- 2: Первая сторона отправляет a и b. Первая сторона может также вместо этого отправлять затравку для получения а.- 2: The first side sends a and b. The first party may also instead send a seed to receive a.

- 3: Вторая сторона получает свой секретный ключ s, вторая сторона случайным образом получает ключ K, который вторая сторона хочет тоже инкапсулировать. Затем вторая сторона получает общую часть u своего открытого ключа и главный ключ k*. Вторая сторона выполняет функцию безопасных битов на k*, чтобы получить биты в k*, которые являются наиболее подходящими, другими словами, которые, вероятно, приведут к меньшим отказам, поскольку их значения находятся дальше от границ принятия решения. Далее, она применяет функцию get_reconciliation() для получения материала согласования ключа для выбранных безопасных битов. После этого вторая сторона получает биты четности для сформированного K. Биты четности получают с использованием выбранного способа исправления ошибок. Затем вторая сторона переходит к инкапсуляции двоичной строки битов, содержащей (например, состоящей из) ключ K и биты четности с ключом k, поступающим из обмена ключами. В данном случае инкапсуляция означает побитовое применение операции XOR, поскольку элементы ключа принадлежат Z_2. Это шифртекст c.- 3: The second party receives its secret key s, the second party randomly receives the key K, which the second party also wants to encapsulate. The second party then receives the common part u of its public key and the master key k*. The second side performs a safe bit function on k* to get the bits in k* that are the best fit, in other words, that are likely to result in fewer failures because their values are farther from the decision boundaries. Next, it uses the get_reconciliation() function to get the key agreement material for the selected secure bits. Thereafter, the second side receives the parity bits for the generated K. The parity bits are obtained using the selected error correction method. The second side then proceeds to encapsulate a binary bitstring containing (eg, consisting of) the key K and parity bits with the key k coming from the key exchange. In this case, encapsulation means applying the bitwise XOR operation, since the elements of the key belong to Z_2. This is the ciphertext c.

- 4: Вторая сторона должна отправить первой стороне общую часть u открытого ключа, вспомогательные данные h и шифртекст c. Вторая сторона должна также включить безопасные биты.- 4: The second party must send the public key part u, the ancillary data h, and the ciphertext c to the first party. The other side must also enable secure bits.

- 5: Первая сторона переходит к получению K, сначала получив свой необработанный ключ k'. Затем она согласовывает ключ при имеющихся необработанном ключе, вспомогательных данных и местоположении безопасных битов. С помощью этой информации первая сторона может теперь декапсулировать и получить оценку (K|Parity_bits(K)), к которой она применяет функцию исправления ошибок error_correct() для удаления потенциальных ошибок. Первая сторона получает K.- 5: The first party proceeds to receive K by first obtaining its raw key k'. It then negotiates the key given the raw key, ancillary data, and the location of the secure bits. With this information, the first party can now decapsulate and obtain a score (K|Parity_bits(K)), to which it applies the error_correct() error correction function to remove potential errors. The first side gets K.

См. Фиг. 6. Отметим, что с учетом этого стандартного блока можно:See FIG. 6. Note that, given this building block, you can:

- Задать на его основе indCPA-KEM путем хэширования K. Это можно сделать точно так же, как в Round2.- Set on its basis indCPA-KEM by hashing K. This can be done in the same way as in Round2.

- Задать на его основе indCCA-KEM путем применения стандартного преобразования, такого как преобразование Фуджисаки-Окамото (Fujisaki-Okamoto, FO). Это идентично тому, что делают в Round2.- Define indCCA-KEM based on it by applying a standard transformation such as the Fujisaki-Okamoto (FO) transformation. This is identical to what they do in Round2.

На Фиг. 9 схематически показан пример формирования секрета в соответствии с вариантом реализации.On FIG. 9 schematically shows an example of generating a secret in accordance with an embodiment.

В некоторых протоколах выгодно, когда секреты, например, один или оба закрытых ключа, являются троичными, поскольку тогда вычисления могут быть выполнены быстрее с использованием только простых сложений и вычитаний, как в случае с Round2. Например, коэффициенты закрытого ключа могут быть ограничены значениями -1, 0 или 1.In some protocols it is advantageous when secrets, such as one or both private keys, are ternary, because then calculations can be performed faster using only simple additions and subtractions, as is the case with Round2. For example, private key coefficients can be limited to -1, 0, or 1.

С другой стороны, иногда выгодно использовать секреты, компоненты которых немного больше (не только -1 и 1), поскольку это позволяет лучше справляться с гибридной атакой по той причине, что общая энтропия выше. В варианте реализации секреты имеют корень в единице, поскольку это свойство может позволить уменьшить увеличение шума.On the other hand, it is sometimes advantageous to use secrets that have slightly larger components (not just -1 and 1), as this makes it easier to deal with a hybrid attack, for the reason that the total entropy is higher. In an implementation, the secrets are rooted in one, since this property may allow the increase in noise to be reduced.

Ниже описаны система и способы формирования подходящих секретов, например первого и/или второго закрытого ключа. Система изображена на Фиг. 9, где генератор секретов

Figure 00000010
сконфигурирован с несколькими параметрами, таким как длина
Figure 00000011
секрета
Figure 00000010
, диапазон элементов в
Figure 00000010
и распределение элементов в
Figure 00000012
. Генератор может содержать генератор истинно случайных чисел, обычно на аппаратной основе, который используют для получения случайной затравки, применяемой для формирования псевдослучайной последовательности. Вместо генератора истинно случайных чисел могут быть использованы псевдослучайные числа.The following describes a system and methods for generating suitable secrets, such as a first and/or second private key. The system is shown in Fig. 9 where the secret generator
Figure 00000010
configured with several parameters such as length
Figure 00000011
secret
Figure 00000010
, the range of elements in
Figure 00000010
and distribution of elements in
Figure 00000012
. The generator may include a true random number generator, usually in hardware, that is used to generate a random seed that is used to generate the pseudo-random sequence. Instead of a true random number generator, pseudo-random numbers can be used.

Учитывая входные параметры, генератор получает набор

Figure 00000013
, содержащий входные элементы, в которые будет входить
Figure 00000012
. С учетом псевдослучайной последовательности генератор получает еще один набор
Figure 00000014
, содержащий элементы в
Figure 00000010
, которые будут объединены с элементами в
Figure 00000013
.Given input parameters, the generator receives a set
Figure 00000013
A that contains the input elements that will include
Figure 00000012
. Given the pseudo-random sequence, the generator gets another set
Figure 00000014
, containing the elements in
Figure 00000010
, which will be merged with the elements in
Figure 00000013
.

Полученный секрет

Figure 00000015
может быть сохранен в памяти. Генератор может выполняться на ЦП компьютера.Received secret
Figure 00000015
can be stored in memory. The generator can run on the computer's CPU.

Детерминистический способDeterministic way

Генератор может быть сконфигурирован, например, пользователем, с использованием весов

Figure 00000016
так, что
Figure 00000017
. Например, пользователь может сконфигурировать его с использованием значения
Figure 00000011
, которое определяет длину
Figure 00000012
.The generator can be configured, for example, by the user, using a scale
Figure 00000016
so
Figure 00000017
. For example, the user can configure it using the value
Figure 00000011
, which determines the length
Figure 00000012
.

Секрет s с

Figure 00000011
компонентами будет иметь
Figure 00000018
значений
Figure 00000019
и
Figure 00000018
значений
Figure 00000020
, где
Figure 00000021
для
Figure 00000022
.Secret s
Figure 00000011
components will have
Figure 00000018
values
Figure 00000019
and
Figure 00000018
values
Figure 00000020
, where
Figure 00000021
for
Figure 00000022
.

Количество ненулевых элементов в s называется

Figure 00000023
и задается как
Figure 00000024
.The number of nonzero elements in s is called
Figure 00000023
and is given as
Figure 00000024
.

Последовательность ненулевых элементов называется

Figure 00000013
и содержит значения
Figure 00000025
.The sequence of non-zero elements is called
Figure 00000013
and contains the values
Figure 00000025
.

Кроме того, s будет иметь

Figure 00000026
значений 0, где
Figure 00000027
.Also, s will have
Figure 00000026
values 0, where
Figure 00000027
.

едует отметить, что вместо

Figure 00000028
можно использовать
Figure 00000029
, и в этом случае
Figure 00000030
предпочтительно достаточно большое, так что
Figure 00000031
.goes to note that instead of
Figure 00000028
can be used
Figure 00000029
, and in this case
Figure 00000030
preferably large enough so that
Figure 00000031
.

Генератор инициализирует вектор

Figure 00000010
размерности
Figure 00000011
нулями.The generator initializes the vector
Figure 00000010
dimensions
Figure 00000011
zeros.

С учетом значений

Figure 00000032
генератор случайным образом формирует последовательность
Figure 00000014
с ровно
Figure 00000023
разными целыми числами в диапазоне от
Figure 00000033
до
Figure 00000034
. Затем генератор присваивает значения в
Figure 00000013
s в соответствии со значениями в
Figure 00000014
:Given the values
Figure 00000032
generator randomly generates a sequence
Figure 00000014
from exactly
Figure 00000023
different integers ranging from
Figure 00000033
before
Figure 00000034
. The generator then assigns values to
Figure 00000013
s according to the values in
Figure 00000014
:

значение

Figure 00000035
в
Figure 00000036
позициям вектора в
Figure 00000010
, индексированным первыми
Figure 00000037
значениями в
Figure 00000014
,meaning
Figure 00000035
in
Figure 00000036
vector positions in
Figure 00000010
, indexed first
Figure 00000037
values in
Figure 00000014
,

значение

Figure 00000038
в
Figure 00000036
присваивают позициям вектора в
Figure 00000010
, индексированным следующими
Figure 00000039
значениями в
Figure 00000014
,meaning
Figure 00000038
in
Figure 00000036
are assigned to the positions of the vector in
Figure 00000010
, indexed by the following
Figure 00000039
values in
Figure 00000014
,

значение

Figure 00000040
в
Figure 00000036
присваивают позициям вектора в
Figure 00000010
, индексированным следующими
Figure 00000041
значениями в
Figure 00000014
,meaning
Figure 00000040
in
Figure 00000036
are assigned to the positions of the vector in
Figure 00000010
, indexed by the following
Figure 00000041
values in
Figure 00000014
,

значение

Figure 00000042
в
Figure 00000036
присваивают позициям вектора в
Figure 00000010
, индексированным следующими
Figure 00000041
значениями в
Figure 00000014
,meaning
Figure 00000042
in
Figure 00000036
are assigned to the positions of the vector in
Figure 00000010
, indexed by the following
Figure 00000041
values in
Figure 00000014
,

значение

Figure 00000043
в
Figure 00000036
присваивают позициям вектора в
Figure 00000010
, индексированным следующими
Figure 00000044
значениями в
Figure 00000014
,meaning
Figure 00000043
in
Figure 00000036
are assigned to the positions of the vector in
Figure 00000010
, indexed by the following
Figure 00000044
values in
Figure 00000014
,

и т.д. до тех пор, пока не используют последние

Figure 00000037
значений
Figure 00000014
в качестве индекса в
Figure 00000010
, и присвоят значение
Figure 00000045
в
Figure 00000013
.etc. until the last one is used.
Figure 00000037
values
Figure 00000014
as an index in
Figure 00000010
, and will assign a value
Figure 00000045
in
Figure 00000013
.

Вероятностный способProbabilistic method

Генератор может быть сконфигурирован с использованием весов

Figure 00000046
так, что
Figure 00000047
. Это распределение может быть обобщено до большего количества весов, как в предыдущем разделе.Generator can be configured using scales
Figure 00000046
so
Figure 00000047
. This distribution can be generalized to more weights, as in the previous section.

С учетом секрета длины

Figure 00000011
генератор сначала вычисляет
Figure 00000048
и определяет последовательность
Figure 00000013
с
Figure 00000041
значениями «
Figure 00000049
» и
Figure 00000041
значениями «
Figure 00000050
». Значения
Figure 00000051
также могут быть обобщены до других значений, например,
Figure 00000052
, где
Figure 00000045
положительное целое число.Given the secret of length
Figure 00000011
generator first calculates
Figure 00000048
and determines the sequence
Figure 00000013
With
Figure 00000041
values "
Figure 00000049
" and
Figure 00000041
values "
Figure 00000050
". Values
Figure 00000051
can also be generalized to other meanings, for example,
Figure 00000052
, where
Figure 00000045
positive integer.

Генератор инициализирует вектор

Figure 00000010
размерности
Figure 00000011
нулями.The generator initializes the vector
Figure 00000010
dimensions
Figure 00000011
zeros.

С учетом

Figure 00000013
генератор случайным образом формирует набор
Figure 00000014
с
Figure 00000053
случайными значениями в диапазоне от
Figure 00000033
до
Figure 00000034
. Затем генератор последовательно берет элемент
Figure 00000054
в
Figure 00000014
и элемент
Figure 00000055
в
Figure 00000013
и назначает
Figure 00000056
.Taking into account
Figure 00000013
the generator randomly generates a set
Figure 00000014
With
Figure 00000053
random values ranging from
Figure 00000033
before
Figure 00000034
. The generator then sequentially takes the element
Figure 00000054
in
Figure 00000014
and element
Figure 00000055
in
Figure 00000013
and appoints
Figure 00000056
.

Вектор

Figure 00000010
обновляют в соответствии со следующим псевдокодом.Vector
Figure 00000010
updated according to the following pseudocode.

Таблица 1. Псевдокод для второго способаTable 1. Pseudocode for the second method seed = obtain_true_random_seed()
R = generate_2_h1_pseudo_random_values(seed);
s = 0;
// первая часть в наборе P
For i = 0 to h1-1 {
s [R[i]] = s [R[i]] + 1;
}
// вторая часть в наборе P
For i = 0 to h1-1 {
s [R[i+h1]] = s [R[i+h1]] - 1;
}
seed = obtain_true_random_seed()
R = generate_2_h1_pseudo_random_values(seed);
s = 0;
// first part in set P
For i = 0 to h1-1 {
s [R[i]] = s [R[i]] + 1;
}
// second part in set P
For i = 0 to h1-1 {
s [R[i+h1]] = s [R[i+h1]] - 1;
}

Детерминистический способ, приводящий к биномиальному распределениюDeterministic way leading to binomial distribution

В этом третьем варианте реализацииIn this third embodiment

вычисляют

Figure 00000057
векторов
Figure 00000058
, каждый длины
Figure 00000011
с коэффициентами {0,1}, причем каждый вектор ровно с
Figure 00000059
ненулевыми элементами, где p является вероятностью того, что коэффициент равен 1. Для этого можно случайным образом выбрать
Figure 00000060
разных значений в [0, n - 1], которым будет присвоено значение 1.calculate
Figure 00000057
vectors
Figure 00000058
, each length
Figure 00000011
with coefficients {0,1}, and each vector with exactly
Figure 00000059
non-zero elements, where p is the probability that the coefficient is 1. To do this, you can randomly choose
Figure 00000060
different values in [0, n - 1], which will be assigned the value 1.

вычисляют k/2 векторов

Figure 00000061
длины
Figure 00000011
с коэффициентами {0,1}, причем каждый вектор ровно с
Figure 00000059
ненулевыми элементами, где p является вероятностью того, что коэффициент равен 1. Для этого можно случайным образом выбрать
Figure 00000060
разных значений в [0, n - 1], которым будет присвоено значение 1.compute k/2 vectors
Figure 00000061
length
Figure 00000011
with coefficients {0,1}, and each vector with exactly
Figure 00000059
non-zero elements, where p is the probability that the coefficient is 1. To do this, you can randomly choose
Figure 00000060
different values in [0, n - 1], which will be assigned the value 1.

вычисляют секретный вектор s с

Figure 00000011
коэффициентами, где
Figure 00000062
коэффициент вычисляют следующим образом:calculate the secret vector s with
Figure 00000011
coefficients, where
Figure 00000062
coefficient is calculated as follows:

Figure 00000063
Figure 00000063

Figure 00000064
Figure 00000064

Figure 00000065
Figure 00000065

Figure 00000066
Figure 00000066

Это соответствует распределению, являющемуся биномиальным с центром в 0. Оно биномиальное, поскольку коэффициенты

Figure 00000067
при
Figure 00000068
имеют вероятность
Figure 00000069
равенства
Figure 00000042
. В этом варианте реализации значения 1 в векторах
Figure 00000070
соответствуют набору
Figure 00000013
, а значения в диапазоне от 0 до
Figure 00000034
, которым присвоено значение 1, соответствуют набору
Figure 00000014
. Получающий в результате секрет имеет нуль в единице, поскольку количество 1 в каждом векторе
Figure 00000071
одинаковое, и мы складываем
Figure 00000072
векторов и вычитаем
Figure 00000057
векторов.This corresponds to a distribution that is binomial centered at 0. It is binomial because the coefficients
Figure 00000067
at
Figure 00000068
are likely
Figure 00000069
equality
Figure 00000042
. In this implementation, the values 1 in the vectors
Figure 00000070
match the set
Figure 00000013
, and values in the range from 0 to
Figure 00000034
, which are assigned the value 1, correspond to the set
Figure 00000014
. The resulting secret has zero at one because the number of 1s in each vector
Figure 00000071
the same and we add
Figure 00000072
vectors and subtract
Figure 00000057
vectors.

Следует отметить, что в вероятностном способе (c) целые числа в

Figure 00000014
не должны быть разными, так что их проще формировать. Также следует отметить, что элементы в
Figure 00000014
не нужно вычислять заблаговременно, а они могут быть вычислены по ходу дела. Если целые числа в
Figure 00000073
разные, детерминистический и вероятностный способы дают один и тот же секрет s. Следует отметить также, что определение последовательности значений в P (значений, которые выделены секрету) не обязательно должно выполняться явно, а оно может оставаться неявным в коде, как это показано в таблице 1.It should be noted that in the probabilistic method (c) the integers in
Figure 00000014
should not be different, so that they are easier to form. It should also be noted that the elements in
Figure 00000014
do not need to be calculated ahead of time, but can be calculated as you go. If the integers are
Figure 00000073
different, deterministic and probabilistic methods give the same secret s . It should also be noted that the definition of the sequence of values in P (the values that are allocated to the secret) does not have to be done explicitly, but can be left implicit in the code, as shown in Table 1.

В вариантах реализации две стороны формируют два необработанных ключа, например, полиномы или матрицы, которые приблизительно, но не точно, равны. Для выработки точного общего ключа отправляют некоторые данные согласования. Схема для этого объяснена в заявке на патент того же заявителя под названием «REACHING AGREEMENT ON A SECRET VALUE», поданной в EPO 4 ноября 2016 г., с номером заявки 16197277.3; например, способ на стр. 7-10 может быть использован для согласования в вариантах реализации. Также могут быть приняты варианты, раскрытые в других местах цитируемой заявки на патент.In embodiments, the two parties form two raw keys, such as polynomials or matrices, that are approximately, but not exactly, equal. To generate an accurate pre-shared key, some handshake data is sent. The scheme for this is explained in the same applicant's patent application titled "REACHING AGREEMENT ON A SECRET VALUE" filed with the EPO on November 4, 2016, application number 16197277.3; for example, the method on pages 7-10 can be used to negotiate across implementations. Variants disclosed elsewhere in the cited patent application may also be adopted.

В данной заявке мы будем использовать следующие обозначения для следующих трех функций:In this application, we will use the following notation for the following three functions:

1. Функция округления

Figure 00000074
: Для
Figure 00000075
пусть 1. Rounding function
Figure 00000074
: For
Figure 00000075
let

Figure 00000076
. Тогда
Figure 00000076
. Then

Figure 00000077
Figure 00000077

Интуитивно понятно, что

Figure 00000078
выделяет
Figure 00000079
старших значащих битов
Figure 00000080
, где второй компонент является коэффициентом округления для обеспечения несмещенных ошибок округления. B указывает количество битов, выделяемых из символа
Figure 00000081
, а
Figure 00000082
указывает количество битов вспомогательных данных. В варианте реализации
Figure 00000083
может быть степенью 2.It is intuitively clear that
Figure 00000078
highlights
Figure 00000079
most significant bits
Figure 00000080
, where the second component is a rounding factor to ensure unbiased rounding errors. B indicates the number of bits to extract from a character
Figure 00000081
, a
Figure 00000082
indicates the number of bits of ancillary data. In the implementation
Figure 00000083
can be degree 2.

2. Функция перекрестного округления

Figure 00000084
: Для
Figure 00000085
пусть 2. Cross round function
Figure 00000084
: For
Figure 00000085
let

Figure 00000076
. Тогда
Figure 00000076
. Then

Figure 00000086
Figure 00000086

Интуитивно понятно, что

Figure 00000087
выделяет
Figure 00000082
младших значащих битов из
Figure 00000088
старших значащих битов
Figure 00000081
.It is intuitively clear that
Figure 00000087
highlights
Figure 00000082
least significant bits of
Figure 00000088
most significant bits
Figure 00000081
.

3. Функция согласования

Figure 00000089
: 3. Matching function
Figure 00000089
:

Для

Figure 00000090
,For
Figure 00000090
,

Figure 00000091
Figure 00000091

где v является ближайшим элементом к w, так что

Figure 00000092
. Ближайший элемент
Figure 00000093
может быть взят в соответствии с расстоянием Ли, например,
Figure 00000094
where v is the closest element to w so that
Figure 00000092
. nearest element
Figure 00000093
can be taken according to the Lie distance, for example,
Figure 00000094

Эти три функции могут быть применены покоэффициентно к полиномам или матрицам. В качестве примера в настоящем документе используется вышеприведенная функция согласования. Как отмечалось, способы согласования в цитируемой выше области применения тоже могут быть использованы. Функция перекрестного округления может быть применена для получения данных согласования, а функция округления для получения данных, которые согласовывают, например надежных битов. При последующем использовании данных согласования в функции согласования восстанавливают согласуемые данные. Другими словами:

Figure 00000095
в предположении, что
Figure 00000081
и
Figure 00000093
находятся в пределах порогового расстояния друг от друга.These three functions can be applied coefficient-wise to polynomials or matrices. The above negotiation function is used as an example in this document. As noted, matching methods in the scope cited above can also be used. The cross rounding function can be used to obtain matching data, and the rounding function to obtain data that matches, such as reliable bits. When the matching data is subsequently used in the matching function, the matching data is restored. In other words:
Figure 00000095
on the assumption that
Figure 00000081
and
Figure 00000093
are within a threshold distance from each other.

В варианте реализации первый и второй открытые ключи, первый и второй закрытые ключи и необработанный ключ являются множеством полиномов над конечным полем или кольцом, причем открытый ключ получают из закрытого ключа путем умножения с внесением шума на множество общих полиномов (a). Например, множество полиномов может быть использовано в модульных решетках, в которых элементы решетки являются полиномами.In an embodiment, the first and second public keys, the first and second private keys, and the raw key are a set of polynomials over a finite field or ring, with the public key derived from the private key by noisy multiplication by the set of common polynomials (a). For example, a set of polynomials can be used in modular lattices in which the elements of the lattice are polynomials.

На Фиг. 7a схематически показан пример варианта реализации устройства 100 первой стороны. На Фиг. 7b схематически показан пример варианта реализации устройства 200 второй стороны. На Фиг. 7c схематически показан пример варианта реализации криптографической системы 101, содержащей первое устройство 100 и второе устройство 200. Первое устройство 100, второе устройство 200 могут содержать одно или более из интерфейса 192, 292 хранилища, процессора 194, 294 и памяти 196, 296, соответственно.On FIG. 7a schematically shows an exemplary embodiment of the first side device 100. On FIG. 7b schematically shows an exemplary embodiment of the second side device 200. On FIG. 7c schematically shows an exemplary embodiment of a cryptographic system 101 comprising a first device 100 and a second device 200. The first device 100, the second device 200 may comprise one or more of a storage interface 192, 292, a processor 194, 294, and a memory 196, 296, respectively.

Первое устройство 100 и второе устройство 200, например, разные устройства системы 101, могут обмениваться данными друг с другом по компьютерной сети 191. Компьютерная сеть может быть интернетом, интрасетью, ЛВС, БЛВС и т.д. Компьютерная сеть 191 может быть Интернетом. Компьютерная сеть может быть полностью или частично проводной и/или полностью или частично беспроводной. Например, компьютерная сеть может содержать соединения Ethernet. Например, компьютерная сеть может содержать беспроводные соединения, такие как Wi-Fi, ZigBee и т.п. Устройства содержат интерфейс соединения, который выполнен с возможностью обмена данными с другими устройствами системы 101 при необходимости. Например, интерфейс соединения может содержать разъем, например, проводной разъем, например, разъем Ethernet, или беспроводной разъем, например, антенну, например, антенну Wi-Fi, 4G или 5G. Например, первое устройство 100 и второе устройство 200 могут содержать интерфейс 130, 230 связи, соответственно. Компьютерная сеть 191 может содержать дополнительные элементы, например, маршрутизатор, концентратор и т.д.The first device 100 and the second device 200, such as different devices of the system 101, may communicate with each other over the computer network 191. The computer network may be the Internet, an intranet, a LAN, a WLAN, and so on. Computer network 191 may be the Internet. The computer network may be wholly or partially wired and/or wholly or partially wireless. For example, a computer network may contain Ethernet connections. For example, a computer network may contain wireless connections such as Wi-Fi, ZigBee, and the like. The devices comprise a connection interface that is configured to communicate with other devices of the system 101 as needed. For example, the connection interface may comprise a connector, such as a wired connector, such as an Ethernet connector, or a wireless connector, such as an antenna, such as a Wi-Fi, 4G or 5G antenna. For example, the first device 100 and the second device 200 may include a communication interface 130, 230, respectively. Computer network 191 may include additional elements such as a router, hub, and so on.

Исполнение первого устройства 100 и второго устройства 200 может быть реализовано в процессоре, например, в схеме процессора, примеры которой показаны в настоящем документе. Первое устройство 100, в частности, процессор первого устройства 100, может реализовывать функции первой стороны 10. Второе устройство 200, в частности, процессор второго устройства 200, может реализовывать функции второй стороны 20. Например, эти функции могут быть полностью или частично реализованы в компьютерных инструкциях, которые хранятся на устройстве 100 или 200, например, в электронной памяти устройства, и выполнены с возможностью исполнения микропроцессором устройства. В гибридные вариантах реализации функциональные блоки реализуют частично в оборудовании, например, таком как сопроцессоры, например, криптопроцессоры, и частично в программном обеспечении, хранящемся и исполняемом на устройстве 100 или 200.The execution of the first device 100 and the second device 200 may be implemented in a processor, such as in a processor circuit, examples of which are shown herein. The first device 100, in particular the processor of the first device 100, may implement the functions of the first side 10. The second device 200, in particular the processor of the second device 200, may implement the functions of the second side 20. For example, these functions may be fully or partially implemented in computer instructions that are stored on the device 100 or 200, such as in the device's electronic memory, and are executable by the device's microprocessor. In hybrid implementations, the functional blocks are implemented partly in hardware, such as coprocessors, such as crypto processors, and partly in software, stored and executed on device 100 or 200.

Устройства 100 и 200 могут содержать интерфейс хранилища для сохранения и/или извлечения сообщений, возможно, шифрованных сообщений. Например, интерфейс хранилища может быть реализован локально, например, как интерфейс с памятью, содержащейся в устройстве, например, с памятью 196 или 296, соответственно. Интерфейс хранилища может быть также интерфейсом с автономным, например, нелокальным, хранилищем, например, с облачным хранилищем, таким как память или дисковод, находящийся в другом устройстве. В случае использования облачного хранилища устройства могут также содержать локальное хранилище, например память. Например, память может быть использована для хранения компьютерных программных инструкций, временного хранения файлов и т.п.Devices 100 and 200 may include a storage interface for storing and/or retrieving messages, possibly encrypted messages. For example, the storage interface may be implemented locally, eg, as an interface with the memory contained in the device, eg, memory 196 or 296, respectively. The storage interface may also be an interface with offline, eg, non-local, storage, eg, cloud storage, such as a memory or disk drive, located in another device. In the case of cloud storage, devices may also contain local storage, such as memory. For example, memory can be used to store computer program instructions, temporarily store files, and the like.

В различных вариантах реализации устройств 100 и 200 интерфейс связи может быть выбран из различных вариантов. Например, интерфейс может быть сетевым интерфейсом с локальной или глобальной вычислительной сетью, такой как Интернет, интерфейсом хранилища с внутренним или внешним хранилищем данных, интерфейсом приложений (API) и т.д.In various implementations of devices 100 and 200, the communication interface may be selected from various options. For example, the interface may be a network interface with a local or wide area network such as the Internet, a storage interface with internal or external data storage, an application interface (API), and so on.

Устройства 100 и 200 могут иметь пользовательский интерфейс, который может содержать хорошо известные элементы, такие как одна или более кнопок, клавиатура, дисплей, сенсорный экран и т.д. Пользовательский интерфейс может быть выполнен с возможностью обеспечения взаимодействия пользователя для инициирования протокола выработки общего ключа, реагирования на протокол выработки общего ключа, отправки сообщения, зашифрованного открытым ключом, расшифрования сообщения открытым ключом и т.д.Devices 100 and 200 may have a user interface that may include well-known elements such as one or more buttons, a keyboard, a display, a touch screen, and so on. The user interface may be configured to allow user interaction to initiate a pre-shared key protocol, respond to a pre-shared key protocol, send a message encrypted with the public key, decrypt the message with the public key, and so on.

Хранилище может быть реализовано как электронная память, скажем, флэш-память, или магнитная память, скажем, жесткий диск и т.п. Хранилище может содержать множество дискретных памятей, вместе составляющих хранилище. Хранилище также может быть временной памятью, скажем, ОЗУ.The storage may be implemented as electronic storage, say flash memory, or magnetic storage, say hard disk, and the like. The store may contain a plurality of discrete memories that together make up the store. Storage can also be temporary storage, say RAM.

Как правило, каждое из устройств 100 и 200 содержит микропроцессор, который исполняет надлежащее программное обеспечение на устройствах 100 и 200; например, это программное обеспечение могло быть загружено и/или сохранено в соответствующей памяти, например, энергозависимой памяти, такой как ОЗУ, или энергонезависимой памяти, такой как флэш-память. В альтернативном варианте реализации устройства 100 и 200 полностью или частично реализованы в программируемой логике, например, такой как программируемая пользователем вентильная матрица (FPGA). Устройства 100 и 200 могут быть реализованы, полностью или частично, в виде так называемой специализированной интегральной схемы (ASIC), например, интегральной схемы (ИС), изготовленной на заказ для ее конкретного применения. Например, схемы могут быть реализованы в КМОП, например, с использованием языка описания аппаратных средств, такого как Verilog, VHDL и т.д.Typically, each of the devices 100 and 200 contains a microprocessor that runs the appropriate software on the devices 100 and 200; for example, this software may have been loaded and/or stored in appropriate memory, such as volatile memory such as RAM or non-volatile memory such as flash memory. In an alternative implementation, devices 100 and 200 are implemented wholly or partially in programmable logic, such as, for example, a field programmable gate array (FPGA). Devices 100 and 200 may be implemented, in whole or in part, as a so-called application specific integrated circuit (ASIC), such as an integrated circuit (IC) custom-made for its particular application. For example, the circuits may be implemented in CMOS, eg using a hardware description language such as Verilog, VHDL, etc.

В варианте реализации устройства 100 и 200 могут содержать одну или более схем для реализации одной или более или всех функций соответствующего устройства. Схемы реализуют соответствующие функции, описанные в настоящем документе. Схемы могут быть схемой процессора и схемой запоминающего устройства, причем схема процессора исполняет инструкции, представленные в электронном виде в схемах запоминающего устройства.In an embodiment, devices 100 and 200 may include one or more circuits for implementing one or more or all of the functions of the respective device. The circuits implement the corresponding functions described in this document. The circuits may be a processor circuit and a storage circuit, the processor circuit executing instructions electronically represented in the storage circuits.

Схема процессора может быть реализована распределенным образом, например, в виде нескольких схем подпроцессоров. Запоминающее устройство может быть распределенным по нескольким распределенным запоминающим подустройствам. Частично или полностью память может быть электронной памятью, магнитной памятью и т.д. Например, запоминающее устройство может иметь энергозависимую и энергонезависимую часть. Часть запоминающего устройства может быть предназначена только для чтения.The processor circuitry may be implemented in a distributed manner, for example, as multiple subprocessor circuits. The storage device may be distributed across multiple distributed storage subdevices. Some or all of the memory may be electronic memory, magnetic memory, and so on. For example, a storage device may have a volatile part and a non-volatile part. Part of the storage device may be read-only.

Схемы могут также представлять собой FPGA, ASIC и т. п.Circuits can also be FPGA, ASIC, etc.

На Фиг. 10 схематически показан пример криптографической системы 301 в соответствии с вариантом реализации. Система 301 содержит первое криптографическое устройство 300, второе криптографическое устройство 350 и, необязательно, депозитарий 302 открытых ключей. Например, первое устройство 300 и второе устройство 350 на устройстве, таком как первое устройство 100 и/или второе устройство 200.On FIG. 10 schematically shows an example of a cryptographic system 301 according to an embodiment. System 301 includes a first cryptographic device 300, a second cryptographic device 350, and optionally a public key depository 302. For example, the first device 300 and the second device 350 on a device such as the first device 100 and/or the second device 200.

Первое устройство 300 и второе устройство 350 выполнены с возможностью осуществления криптографического протокола. Они обладают способностью безопасно передавать данные из одного устройства в другое. Эта же самая способность может быть использована в различных криптографических протоколах. В качестве примера описаны два протокола, которые используют эту способность.The first device 300 and the second device 350 are configured to implement a cryptographic protocol. They have the ability to securely transfer data from one device to another. This same ability can be used in various cryptographic protocols. As an example, two protocols are described that use this capability.

Например, первое и второе устройства могут быть сконфигурированы для протокола выработки общего ключа, например, выполнены с возможностью формирования ключа, как правило, симметричного ключа, который является общим для двух устройств. Тогда общий ключ может быть использован устройствами для защиты обмена данными, например, шифрованного и/или использующего проверку подлинности обмена данными, например, путем использования ключа для шифрования сообщений и/или для вычисления метки проверки подлинности для сообщения. Протокол может быть протоколом шифрования с открытым ключом, например, выполненным с возможностью предоставления другим устройствам, скажем, второму устройству 350, возможности шифрования сообщения (m) так, что конкретное устройство, скажем, первое устройство 300, может расшифровать его. Однако содержимое зашифрованных открытым ключом сообщений не может быть получено другими устройствами, кроме зашифровывающего и расшифровывающего устройства, например, второго устройства 350 и первого устройства 300. В случае шифрования с открытым ключом один и тот же открытый ключ первого устройства, например, одни и те же первый открытый ключ и открытый объект, могут быть использованы множеством вторых устройств для отправки зашифрованных сообщений первому открытому устройству. Даже если два вторых устройства используют один и тот же открытый ключ для шифрования сообщения, они не могут расшифровать обмен данными один другого.For example, the first and second devices may be configured for a pre-shared key generation protocol, such as being configured to generate a key, typically a symmetric key, that is shared between the two devices. The shared key can then be used by devices to secure communications, such as encrypted and/or authenticated communications, for example by using the key to encrypt messages and/or to compute an authentication label for the message. The protocol may be a public key encryption protocol, for example, configured to allow other devices, say the second device 350, to encrypt the message (m) so that a particular device, say the first device 300, can decrypt it. However, the content of messages encrypted with the public key cannot be received by devices other than the encrypting and decrypting device, such as the second device 350 and the first device 300. In the case of public key encryption, the same public key of the first device, for example, the same the first public key and the public object may be used by multiple second devices to send encrypted messages to the first open device. Even if two second devices use the same public key to encrypt a message, they cannot decrypt one another's communication.

Первое устройство 300 и второе устройство 350 содержат интерфейс 305, 355 связи, соответственно. Интерфейсы связи выполнены с возможностью обмена данными друг с другом. Примеры интерфейсов связи, например, по проводным или беспроводным сетям, описаны в настоящем документе.The first device 300 and the second device 350 comprise a communication interface 305, 355, respectively. Communication interfaces are configured to exchange data with each other. Examples of communication interfaces, such as over wired or wireless networks, are described in this document.

Первое устройство 300 содержит генератор 315 открытых/закрытых ключей, выполненный с возможностью формирования первого закрытого ключа (r) и первого открытого ключа (b), выводимого из первого закрытого ключа. При выводе открытого ключа из закрытого ключа может быть использован открытый объект (a). Например, формирование открытого ключа может включать умножение на открытый объект и/или введение некоторого рода шума, например, уменьшение масштаба результата умножения, добавления члена шума и т.д. Закрытый ключ и открытый объект могут быть полиномом или матрицей, например над конечным полем или кольцом.The first device 300 includes a public/private key generator 315 configured to generate a first private key (r) and a first public key (b) derived from the first private key. When deriving a public key from a private key, the public object (a) can be used. For example, generating the public key may involve multiplying by the public object and/or introducing some sort of noise, such as downscaling the result of the multiplication, adding a noise term, and so on. The private key and public object can be a polynomial or a matrix, such as over a finite field or ring.

Первые закрытый и открытый ключи могут быть сформированы кратковременно. Например, последнее можно сделать для протокола выработки общего ключа, в частности, если первое и второе устройства используют некоторый другой механизм проверки подлинности, например, внеполосной механизм, например, проверку подлинности на основе сертификата и т. п., для проверки подлинности друг друга. Первые закрытый и открытый ключи могут быть также сформированы для более длительного использования. Например, первый открытый ключ может быть сохранен во внешнем депозитарии 302 открытых ключей. Депозитарий 302 открытых ключей может также хранить открытый объект (a) или его затравку.The first private and public keys can be generated in a short time. For example, the latter can be done for a pre-shared key protocol, in particular if the first and second devices use some other authentication mechanism, such as an out-of-band mechanism such as certificate-based authentication, etc., to authenticate each other. The first private and public keys can also be generated for longer use. For example, the first public key may be stored in an external public key repository 302 . The public key repository 302 may also store the public object (a) or seed thereof.

Первый открытый ключ передают с первого устройства 300 на второе устройство 350, например, посредством интерфейсов 305 и 355 связи. Это можно сделать прямым обменом данных или опосредованно, например, через депозитарий 302 открытых ключей. Вместе с первым открытым ключом также может быть передан открытый объект (a), если требуется. Например, открытый объект может быть передан путем отправки затравки, из которой может быть сформирован открытый объект (a).The first public key is transmitted from the first device 300 to the second device 350, for example, via communication interfaces 305 and 355. This can be done by direct data exchange or indirectly, for example, through the public key depository 302. A public object (a) may also be passed along with the first public key, if required. For example, an open object may be communicated by sending a seed, from which an open object (a) may be formed.

Второе устройство 350 может содержать получатель 360 открытых ключей, например, выполненный с возможностью извлечения первого открытого ключа из депозитария 302 открытых ключей. Этот тип получения подходит, например, для шифрования с открытым ключом. Однако, открытый ключ может быть также получен непосредственно от первого устройства, возможно, вне полосы, например в электронном письме. Открытый ключ может храниться до тех пор, пока он нее понадобится для шифробмена с открытым ключом. Однако первый открытый ключ может быть также принят для немедленного использования, например, для операции с общим ключом, например, в этом случае первый открытый ключ и/или открытый объект могут быть сформированы кратковременно.The second device 350 may include a public key receiver 360, for example configured to retrieve the first public key from the public key depository 302. This type of acquisition is suitable, for example, for public key encryption. However, the public key may also be obtained directly from the first device, possibly out of band, such as in an email. The public key can be kept for as long as it is needed for the public key cipher exchange. However, the first public key may also be received for immediate use, eg for a shared key operation, eg in which case the first public key and/or public object may be generated transiently.

Второе устройство 350 может содержать генератор 365 открытых/закрытых ключей, выполненный с возможностью формирования второго закрытого ключа (s) и формирования первого открытого ключа (u), выводимого из второго закрытого ключа (s). Второй открытый ключ использует тот же самый открытый объект, который использовали при формировании первого открытого ключа. Первый и второй закрытые ключи являются закрытыми для их соответствующих устройств. Они могут совместно использоваться доверенными сторонами, если требуется, например, для резервного копирования, депонирования ключа и т.д. Открытые ключи и открытый объект не обязательно являются секретными для безопасности; тем не менее, один или более из них все же могут быть закрытыми для первого и второго устройства, если требуется. Например, первый открытый ключ может совместно использоваться только со вторым устройством, и наоборот.The second device 350 may include a public/private key generator 365 configured to generate a second private key (s) and generate a first public key (u) derived from the second private key (s). The second public key uses the same public object that was used to generate the first public key. The first and second private keys are private to their respective devices. They can be shared between trusted parties if required, such as for backup, key escrow, etc. The public keys and the public object are not necessarily secret for security purposes; however, one or more of them may still be private to the first and second devices, if desired. For example, the first public key can only be shared with the second device, and vice versa.

Второе устройство 350 содержит генератор 370 кодовых слов. Генератор 370 кодовых слов выполнен с возможностью формирования кодового слова в соответствии с кодом с исправлением ошибок. Код с исправлением ошибок может быть линейным кодом или нелинейным кодом. Например, код с исправлением ошибок может быть кодом БЧХ, кодом Рида-Соломона, кодом Адамара и т.п. Могут быть конкатенированы несколько кодов. Конкатенированные коды являются кодами с исправлением ошибок, которые построены из двух или более менее сложных кодов для достижения хороших рабочих характеристик при разумной сложности. Например, кода Адамара может быть конкатенирован с кодом БЧХ.The second device 350 contains a generator 370 code words. The codeword generator 370 is configured to generate a codeword in accordance with the error correction code. The error correcting code may be a linear code or a non-linear code. For example, the error correcting code may be a BCH code, a Reed-Solomon code, a Hadamard code, and the like. Multiple codes can be concatenated. Concatenated codes are error-correcting codes that are constructed from two or more less complex codes to achieve good performance at reasonable complexity. For example, a Hadamard code can be concatenated with a BCH code.

Закодированное в кодовом слове представляет собой данные для инкапсуляции. Например, кодовое слово может разбито на относящуюся к данным часть, например, биты данных, и относящуюся к четности часть, например биты четности. Например, данные для инкапсуляции могут содержаться в битах данных. Одним из способов формирования кодового слова является формирование относящейся к данным части и вычисление битов четности из относящейся к данным части. Например, вектор данных с битами данных может быть матрицей, умноженной на матрицу четности для получения битов четности или даже полного кодового слова. Кодовое слово может быть получено путем объединения данных для инкапсуляции и битов четности. Например, относящаяся к данным часть и относящаяся к четности часть могут быть конкатенированы, хотя для создания действительного кодового слова согласно соответствующему коду с исправлением ошибок может быть использована любая перестановка битов данных и битов четности. Например, биты данных и биты четности могут чередоваться. Следует отметить, что данные согласования, как правило, вычисляют на одном q-ичном символе, но данные четности, как правило, вычисляют из множества битов; следует отметить, что q гораздо больше 2.Encoded in the codeword is the data to be encapsulated. For example, the codeword may be split into a data part, such as data bits, and a parity part, such as parity bits. For example, the data to be encapsulated may be contained in data bits. One way to generate a codeword is to generate a data part and calculate parity bits from the data part. For example, a data vector with data bits may be a matrix multiplied by a parity matrix to obtain parity bits or even a complete codeword. The codeword can be obtained by combining the encapsulation data and parity bits. For example, the data part and the parity part can be concatenated, although any permutation of data bits and parity bits can be used to create a valid codeword according to the corresponding error correction code. For example, data bits and parity bits may be interleaved. It should be noted that the matching data is usually calculated on a single q-ary symbol, but the parity data is usually calculated from a plurality of bits; note that q is much greater than 2.

Кодовое слово может быть использовано различными способами. Например, сообщение, которое должно быть доставлено от второго устройства 350 первому устройству 300, может быть закодировано в относящейся к данным части кодового слова как данные, подлежащие инкапсуляции. Такой способ кодирования подходит, например, для шифрования с открытым ключом. Шифрование с открытым ключом может быть также получено путем шифрования сообщения (m) на втором устройстве 350, например, симметричным ключом, например, формируемым случайным образом для этой цели, и кодирования симметричного ключа шифрования в кодовом слове. Может быть использован дополнительный этап вывода ключа. Например, в кодовом слове может быть закодирован случайный предварительный ключ, а ключ шифрования может быть выведен из предварительного ключа. Например, при выводе может быть использована функция выработки производного ключа (Key Derivation Function, KDF), например хэш-функция. Например, в последнем случае зашифрованное сообщение может быть отправлено от второго устройства первому устройству вместе с требуемыми данными для расшифрования данных, например, со вторым открытым ключом, и другими данными, как описано ниже.The codeword can be used in a variety of ways. For example, a message to be delivered from the second device 350 to the first device 300 may be encoded in the data portion of the codeword as data to be encapsulated. This encoding method is suitable, for example, for public key encryption. Public key encryption can also be obtained by encrypting the message (m) at the second device 350, eg with a symmetric key, eg generated randomly for this purpose, and encoding the symmetric encryption key in a codeword. An additional key derivation step may be used. For example, a random pre-key may be encoded in the codeword, and the encryption key may be derived from the pre-key. For example, the derivation may use a Key Derivation Function (KDF), such as a hash function. For example, in the latter case, the encrypted message may be sent from the second device to the first device, along with the required data to decrypt the data, such as a second public key, and other data, as described below.

Что интересно, кодовое слово формируют независимо от первого закрытого ключа, первого открытого ключа, второго закрытого ключа и второго открытого ключа. Из-за этого протокол имеет повышенную устойчивость к активным атакам. У злоумышленника меньше возможностей влиять на общий ключ, поскольку он не может влиять на ключ путем подбора первого и второго закрытых ключей.Interestingly, the codeword is generated independently of the first private key, the first public key, the second private key, and the second public key. Because of this, the protocol has increased resistance to active attacks. An attacker has less ability to influence the public key, since he cannot influence the key by guessing the first and second private keys.

Независимое формирование может быть получено, например, в случае сообщения, если сообщение формируют из приложения, которое не зависит от шифрования с открытым ключом, например, из финансового или коммуникационного приложения и т.д. Независимое формирование может быть получено, например за счет формирования случайным образом. Например, ключ или предварительный ключ в кодовом слове может быть сформирован независимо, например, при помощи генератора истинно случайных чисел или при помощи генератора псевдослучайных чисел, использующего затравку, которая не зависит от первого и второго закрытых ключей, например, которые сами сформированы случайным образом или предварительно заданы и т.п. Например, кодовое слово может быть сформировано на втором устройстве даже до принятия первого открытого ключа и/или до формирования второго закрытого ключа; это тоже гарантирует независимость.Independent generation can be obtained, for example, in the case of a message, if the message is generated from an application that does not depend on public key encryption, such as a financial or communications application, etc. Independent shaping can be obtained, for example, by random shaping. For example, the key or pre-key in the codeword may be generated independently, such as by a true random number generator, or by a pseudo-random number generator using a seed that is independent of the first and second private keys, such as being themselves randomly generated or preset, etc. For example, the codeword may be generated on the second device even before the first public key is received and/or before the second private key is generated; this also guarantees independence.

Второе устройство 350 содержит блок 375 Диффи-Хеллмана. Блок 375 Диффи-Хеллмана выполнен с возможностью формирования второго необработанного общего ключа (k*) из первого открытого ключа (b) и второго закрытого ключа (s). Например, блок 375 Диффи-Хеллмана может быть выполнен с возможностью применения функции Диффи-Хеллмана к первому открытому ключу и второму закрытому ключу. Например, функция Диффи-Хеллмана может быть умножением или возведением в степень в зависимости от лежащего в основе механизма. Второе устройство 350 выполнено с возможностью передачи своего второго открытого ключа первому устройству 300. Первое устройство 300 содержит блок 325 Диффи-Хеллмана. Блок 325 Диффи-Хеллмана выполнен с возможностью формирования первого необработанного общего ключа (k’) из второго открытого ключа (u) и первого закрытого ключа (r), например путем применения той же самой функции Диффи-Хеллмана. К сожалению, для некоторых типов функции Диффи-Хеллмана может случиться так, что первый и второй ключи будут близки друг к другу, хотя и не обязательно идентичны. Практическая вероятность того, что это случится, зависит от лежащей в основе функции Диффи-Хеллмана. Некоторая вероятность разных необработанных ключей может быть допустима в большинстве областей применения, однако, насколько высокой может быть эта вероятность, будет зависеть от области применения. Однако, как правило, предпочтительной будет более низкая вероятность. Необработанный ключ может быть того же математического типа, например, полиномом или матрицей, что и закрытый и открытый ключи.The second device 350 includes a Diffie-Hellman block 375. The Diffie-Hellman block 375 is configured to generate a second raw public key (k*) from the first public key (b) and the second private key (s). For example, the Diffie-Hellman block 375 may be configured to apply a Diffie-Hellman function to the first public key and the second private key. For example, a Diffie-Hellman function may be a multiplication or exponentiation, depending on the underlying mechanism. The second device 350 is configured to transmit its second public key to the first device 300. The first device 300 includes a Diffie-Hellman block 325. The Diffie-Hellman block 325 is configured to generate the first raw public key (k') from the second public key (u) and the first private key (r), for example by applying the same Diffie-Hellman function. Unfortunately, for some types of Diffie-Hellman function, it can happen that the first and second keys are close to each other, although not necessarily identical. The practical likelihood that this will happen depends on the underlying Diffie-Hellman function. Some probability of different raw keys may be acceptable in most applications, however, how high this probability can be will depend on the application. However, in general, a lower probability will be preferred. The raw key may be of the same mathematical type, such as a polynomial or matrix, as the private and public keys.

Второе устройство 350 содержит генератор 380 надежных битов и генератор 385 данных согласования. Генератор 380 надежных битов выполнен с возможностью применения функции надежных битов ко второму необработанному общему ключу (K*) для получения надежных индексов и надежных битов, выводимых из указанных коэффициентов. Надежные индексы указывают коэффициенты необработанного общего ключа. Например, генератор 380 надежных битов может определять, какие коэффициенты в необработанном ключе близки к границе выборки, а какие нет. Например, коэффициенты в необработанном ключе, которые находятся в пределах порогового значения от границы выборки, могут быть отброшены как ненадежные. Остальные, надежные, коэффициенты могут быть указаны надежными индексами. Надежные биты могут быть получены выборкой из надежных коэффициентов.The second device 350 includes a reliable bit generator 380 and a matching data generator 385 . The reliable bit generator 380 is configured to apply the reliable bits function to the second raw shared key (K*) to obtain reliable indices and reliable bits derived from said coefficients. Robust indexes indicate the coefficients of the raw public key. For example, reliable bit generator 380 can determine which coefficients in the raw key are close to the sample boundary and which are not. For example, coefficients in the raw key that are within a threshold value of the sample boundary may be discarded as unreliable. The remaining, reliable, coefficients can be indicated by reliable indices. Reliable bits can be obtained by sampling the reliable coefficients.

В случае, если осталось недостаточно надежных коэффициентов, существуют несколько возможностей, например, завершение протокола, перезапуск протокола с новым первым и/или вторым закрытым ключом и/или новым открытым объектом, вывод более короткого ключа или отбрасывание меньшего количества коэффициентов. Вместо выбора всех коэффициентов в пределах порогового значения можно также выбрать заданное количество коэффициентов, например, мю коэффициентов, и выбрать наиболее надежные коэффициенты, например, первые мю наиболее надежных коэффициентов.In case there are not enough strong coefficients left, there are several possibilities, such as terminating the protocol, restarting the protocol with a new first and/or second private key and/or a new public object, deriving a shorter key, or discarding fewer coefficients. Instead of selecting all coefficients within a threshold, one can also select a predetermined number of coefficients, eg mu coefficients, and select the most reliable coefficients, eg the first mu most reliable coefficients.

Один способ реализации надежных битов заключается во взятии одного или более, скажем,

Figure 00000079
, старших значимых битов коэффициентов. Например, количество надежных битов в пересчете на выбранные коэффициенты может быть, скажем, 1 или 2. В некоторых вариантах реализации, например, когда используют большие полиномы или матрицы, количество коэффициентов большое, что делает возможным высокую надежность, например низкое значение для
Figure 00000079
. Для других вариантов реализации, например для устройств IoT, для
Figure 00000079
могут быть использованы более крупные значения. Вычисления в конечном кольце могут быть выполнены в конечном кольце целых чисел по модулю степени 2. Преимущество последнего варианта заключается в более равномерном распределении надежных битов.One way to implement reliable bits is to take one or more, say,
Figure 00000079
, the most significant bits of the coefficients. For example, the number of reliable bits in terms of the chosen coefficients may be, say, 1 or 2. In some implementations, for example, when large polynomials or matrices are used, the number of coefficients is large, which allows high reliability, for example, a low value for
Figure 00000079
. For other implementations, such as IoT devices, for
Figure 00000079
larger values may be used. Calculations in a finite ring can be performed on a finite ring of integers modulo degree 2. The latter option has the advantage of a more even distribution of good bits.

Генератор 385 данных согласования выполнен с возможностью формирования данных (h) согласования для указанных коэффициентов необработанного общего ключа. Данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве. Например, применение данных согласования может привести к уменьшению разности, например, расстояния Ли, между коэффициентом необработанных ключей на первом и втором устройствах, и тем самым к увеличению вероятности создания одного и того же надежного бита обоими устройствами. Как биты четности в кодовом слове, так и данные согласования служат для уменьшения шума, однако, биты четности вычисляют на множестве битов данных, тогда как данные согласования вычисляют на коэффициентах в необработанном общем ключе. Данные согласования дополнительно повышают надежность надежных битов.The match data generator 385 is configured to generate match data (h) for specified raw shared key coefficients. The negotiation data contains information to reduce differences between the first and second raw keys outputted on the first and second devices. For example, the use of matching data may result in a decrease in the difference, eg, Lee distance, between the raw key ratio on the first and second devices, and thereby increase the likelihood of both devices generating the same reliable bit. Both the parity bits in the codeword and the matching data serve to reduce noise, however, the parity bits are calculated on a plurality of data bits, while the matching data is calculated on coefficients in the raw common key. The matching data further enhances the reliability of the reliable bits.

Один способ реализации данных согласования заключается во взятии одного или более, скажем,

Figure 00000082
, битов коэффициентов, которые следуют за битами, взятыми в качестве надежных битов. Например, это могут быть
Figure 00000082
битов, которые следуют за
Figure 00000079
битами по значимости. Например, количество битов согласования в пересчете на выбранные коэффициенты может быть, скажем, 1 или 2. Преимущество меньшего количества битов согласования заключается в уменьшении служебных данных связи. Хотя возможно большее количество битов согласования..One way to implement match data is to take one or more, say,
Figure 00000082
, coefficient bits that follow the bits taken as reliable bits. For example, these may be
Figure 00000082
bits that follow
Figure 00000079
bits in order of importance. For example, the number of justification bits in terms of selected coefficients may be, say, 1 or 2. The advantage of having fewer justification bits is to reduce the communication overhead. Although more matching bits are possible..

Второе устройство 350 может содержать инкапсулятор 390. Инкапсулятор 390 выполнен с возможностью инкапсуляции кодового слова с использованием надежных битов путем применения функции инкапсуляции, например XOR. Инкапсуляция может быть одноразовой инкапсуляцией с заполнением. В варианте реализации функция инкапсуляции получает совершенную защиту в том смысле, что информация в кодовом слове, которая может быть получена из инкапсулированного кодового слова, является нулевой без знания надежных битов. Например, на одной из других описанных в настоящем документе функций инкапсуляции может быть использована функция XOR.The second device 350 may include an encapsulator 390. The encapsulator 390 is configured to encapsulate the codeword using reliable bits by applying an encapsulation function such as XOR. The encapsulation may be a one-time padding encapsulation. In an embodiment, the encapsulation function obtains perfect protection in the sense that the information in the codeword that can be obtained from the encapsulated codeword is null without knowledge of the reliable bits. For example, on one of the other encapsulation functions described herein, the XOR function can be used.

Следует отметить, что инкапсуляцию применяют к целому кодовому слову, содержащему биты данных и биты четности, а не просто к битам четности. Кроме того, инкапсуляцию применяют к сформированным данным, например, сообщению, ключу, предварительному ключу и т.д., а не к данным, выведенным из одного или более из первого или второго открытых или закрытых ключей.It should be noted that encapsulation is applied to the whole codeword containing data bits and parity bits, and not just to parity bits. In addition, encapsulation is applied to generated data, such as a message, key, pre-key, etc., and not to data derived from one or more of the first or second public or private keys.

Второе устройство выполнено с возможностью передачи второго открытого ключа (u), данных согласования (h), инкапсулированных данных (c) и надежных индексов первому устройству. Передача может быть в ответ на прием первого открытого ключа, например, в случае выработки общего ключа, или нет, например в случае шифрования с открытым ключом.The second device is configured to send the second public key (u), handshake data (h), encapsulated data (c), and trusted indices to the first device. The transmission may be in response to receiving the first public key, such as in the case of a shared key, or not, such as in the case of public key encryption.

Первое устройство 300 выполнено с возможностью приема от второго устройства второго открытого ключа (u), данных согласования (h) и инкапсулированных данных (c) и надежных индексов. Первое устройство 300 содержит блок 335 согласования, выполненный с возможностью применение данных согласования (h) в функции согласования к коэффициентам в первом необработанном общем ключе (k'), указанном надежными индексами (safe_bits), с получением надежных битов (k). Например, коэффициент, указанный как надежный, может быть согласован с использованием битов согласования и затем отобран для получения надежного бита.The first device 300 is configured to receive from the second device a second public key (u), handshake data (h) and encapsulated data (c), and trusted indices. The first device 300 includes a matcher 335 configured to apply the match data (h) in the match function to the coefficients in the first raw shared key (k') indicated by safe indices (safe_bits) to obtain safe bits (k). For example, a coefficient indicated as reliable may be matched using the matching bits and then selected to obtain a reliable bit.

Первое устройство 300 содержит блок 340 декапсуляции, выполненный с возможностью декапсуляции инкапсулированных данных (c) с получением почти кодового слова с использованием надежных битов. Причина, по которой кодовое слово второго устройства не может быть получено непосредственно, состоит в том, что даже при надежных битах и согласовании все равно между необработанными ключами могут оставаться различия, которые не разрешены. Первое устройство 300 содержит средство 320 исправления ошибок, которое выполнено с возможностью применения функции исправления ошибок к почти кодовому слову с получением кодового слова.The first device 300 includes a decapsulation unit 340 configured to decapsulate the encapsulated data (c) into a near-codeword using reliable bits. The reason why the codeword of the second device cannot be obtained directly is that even with reliable bits and negotiation, there may still be differences between the raw keys that are not resolved. The first apparatus 300 includes an error corrector 320 that is configured to apply an error correction function to a near-codeword to obtain a codeword.

Наконец, кодовое слово может быть декодировано, например, для получения относящейся к данным части, и тем самым получения сообщения (m), ключа (K) и предварительного ключа. В первом случае может быть предпринято некоторое действие на основе сообщения, например, сообщение может быть отображено, например в коммуникационном приложении. Во втором случае ключ может быть использован для дальнейших защищенных обменов данными, и т.д. В третьем случае к предварительному ключу может быть применена функция выработки производного ключа для получения общего ключа.Finally, the codeword may be decoded, for example, to obtain the data part, and thereby obtain the message (m), key (K), and pre-key. In the first case, some action may be taken based on the message, for example, the message may be displayed, for example, in a communication application. In the second case, the key can be used for further secure data exchanges, and so on. In the third case, a derivation function can be applied to the pre-shared key to obtain a shared key.

Ниже приведен небольшой, но наглядный пример для надежности и согласования. Пусть

Figure 00000096
и
Figure 00000097
. Запишем коэффициенты в виде пяти битовых последовательностей со старшими значащими битами слева. Например, в варианте реализации второе устройство может отбросить коэффициенты 00000, 00001, 01110, 01111, 10000, 10001, 11110 и 11111, поскольку лишь небольшое сложение с такими коэффициентами или вычитание из них приведет к смене на противоположный старшего значимого бита.Below is a small but illustrative example for reliability and consistency. Let
Figure 00000096
and
Figure 00000097
. We write the coefficients as five bit sequences with the most significant bits on the left. For example, in an embodiment, the second device may discard the coefficients 00000, 00001, 01110, 01111, 10000, 10001, 11110, and 11111, since only a slight addition to or subtraction from such coefficients will reverse the most significant bit.

Не отброшены будут коэффициенты 00010, 00011, …, 01101 и 10010, 10011, …, 11101. Коэффициенты в первом списке дадут надежный бит 0, а коэффициенты в последнем списке дадут надежный бит 1. Второй бит этих последовательностей может быть взять в качестве данных согласования. Данные согласования выбранных коэффициентов передают другому устройству, а надежные бит не передают.The coefficients 00010, 00011, ..., 01101 and 10010, 10011, ..., 11101 will not be discarded. The coefficients in the first list will give a reliable bit of 0, and the coefficients in the last list will give a reliable bit of 1. The second bit of these sequences can be taken as the matching data . The match data of the selected coefficients is transmitted to the other device, and the reliable bits are not transmitted.

После того, как первое устройство вычисляет свой необработанный ключ, оно выбирает коэффициенты в соответствии с коэффициентами, указанными первым устройством. Предположим, например, что коэффициент в необработанном ключе первого устройства представляет собой 01101, и что данные согласования для этого коэффициента представляют собой 0. Поскольку второй бит коэффициента на первом устройстве не является 0, это указывает первому устройству, что была сделана ошибка. Ближайшим значением к выбранному коэффициенту 01101 со вторым битом 0, которое не было отброшено, является 10010. Следует отметить, что 00111 тоже имеет второй бит 0, но находится дальше от выбранного коэффициента 01101. Поэтому первое устройство выберет 1 в качестве надежного бита для выбранного коэффициента.After the first device calculates its raw key, it selects the coefficients according to the coefficients indicated by the first device. Suppose, for example, that the coefficient in the raw key of the first device is 01101, and that the matching data for this coefficient is 0. Since the second bit of the coefficient on the first device is not 0, this indicates to the first device that an error has been made. The closest value to the selected factor 01101 with a second bit of 0 that was not discarded is 10010. Note that 00111 also has a second bit of 0, but is farther away from the selected factor 01101. Therefore, the first device will choose 1 as the safe bit for the selected factor .

Следует отметить, что если шум был большим, это исправление может быть неверным; можно предположить, что второе устройство имело коэффициент 00111. В таком случае выбран неверный надежный бит. Что интересно, даже при умеренных количествах данных согласования ошибки такого типа являются редкими. Этот означает, что вместо увеличения количества данных согласования для исправления оставшегося количества ошибок эффективнее опираться на коды с исправлением ошибок. Минимизация расстояния Ли может быть выполнена простым опробованием потенциально возможных измененных коэффициентов при увеличении расстояния Ли до тех пор, пока не будет найдено совпадение. Возможны более продвинутые алгоритмы, например описанные в данной области техники.It should be noted that if the noise was large, this correction may not be correct; it can be assumed that the second device had a factor of 00111. In this case, the wrong reliable bit is selected. Interestingly, even with moderate amounts of matching data, errors of this type are rare. This means that instead of increasing the amount of matching data to correct the remaining number of errors, it is more efficient to rely on error correction codes. Minimizing the Lee distance can be done by simply trying out the potentially changed coefficients while increasing the Lee distance until a match is found. More advanced algorithms are possible, such as those described in the art.

Между надежностью и согласованием существует интересная синергия. Может случиться так, что ближайший измененный коэффициент с правильными данными согласования будет отброшен вторым криптографическим устройством. Ближайший измененный коэффициент с правильными данными согласования и дополнительным ограничением, который не был отброшен вторым криптографическим устройством, может иметь другой надежный бит. Учитывание этого дополнительно повышает эффективность битов согласования. Например, в продолжение вышеприведенного примера, пусть второе устройство получает коэффициент 01100 с данными согласования 0. Ближайшим измененным коэффициентом будет 10000, но ближайшим коэффициентом, который не был отброшен, является 00111. Соответственно, первое устройство восстановит надежный бит 0, а не 1.There is an interesting synergy between reliability and consistency. It may happen that the nearest changed coefficient with correct matching data will be discarded by the second cryptographic device. The nearest modified coefficient with correct matching data and an additional constraint that has not been discarded by the second cryptographic device may have a different reliable bit. Taking this into account further improves the performance of the matching bits. For example, continuing with the above example, let the second device receive a factor of 01100 with matching data of 0. The nearest changed factor would be 10000, but the nearest factor that was not discarded is 00111. Accordingly, the first device would recover a safe bit of 0, not 1.

На Фиг. 11a схематически показан пример криптографического способа 400 в соответствии с вариантом реализации. Способ 400 выполнен с возможностью совместного использования кодового слова. Способ 400 включает:On FIG. 11a schematically shows an example of a cryptographic method 400 in accordance with an embodiment. Method 400 is configured to share a codeword. Method 400 includes:

- обмен (410) данными с первым криптографическим устройством (10),- exchange (410) data with the first cryptographic device (10),

- прием (420) первого открытого ключа (b) от первого криптографического устройства,- receiving (420) the first public key (b) from the first cryptographic device,

- формирование (430) второго закрытого ключа (s) и формирование второго открытого ключа (u) из второго закрытого ключа (s),- generating (430) the second private key (s) and generating the second public key (u) from the second private key (s),

- формирование (440) кодового слова (K||четность) в соответствии с кодом с исправлением ошибок, и- generating (440) a codeword (K||parity) in accordance with the error correction code, and

- формирование (450) второго общего ключа (k*) из первого открытого ключа (b) и второго закрытого ключа (s),- generating (450) a second public key (k*) from the first public key (b) and the second private key (s),

- применение (460) функции надежных битов (shared_bits) ко второму необработанному общему ключу (k*) с получением надежных индексов, указывающих коэффициенты необработанного общего ключа, и надежных битов, выведенных из указанных коэффициентов,- applying (460) the function of reliable bits (shared_bits) to the second raw shared key (k*) to obtain reliable indices indicating the coefficients of the raw shared key, and reliable bits derived from the indicated coefficients,

- формирование (470) данных (h) согласования для указанных коэффициентов необработанного общего ключа, причем данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве,generating (470) matching data (h) for said raw shared key coefficients, wherein the matching data contains information to reduce differences between the first and second raw keys outputted on the first and second devices,

- инкапсуляцию (480) кодового слова при помощи надежных битов путем применения функции инкапсуляции с получением инкапсулированных данных (c),encapsulating (480) the codeword with reliable bits by applying the encapsulation function to obtain encapsulated data (c),

- передачу (490) второго открытого ключа (u), данных (h) согласования, инкапсулированных данных (c) и надежных индексов первому устройству.- transmitting (490) the second public key (u), agreement data (h), encapsulated data (c) and trusted indexes to the first device.

На Фиг. 11b схематически показан пример криптографического способа 500 в соответствии с вариантом реализации. Способ 500 выполнен с возможностью совместного использования кодового слова, при этом способ 500 включает:On FIG. 11b schematically shows an example of a cryptographic method 500 in accordance with an implementation. Method 500 is configured to share a codeword, wherein method 500 includes:

- обмен (510) данными со вторым криптографическим устройством (20),- exchange (510) data with the second cryptographic device (20),

- получение (520) первого закрытого ключа (r) и первого открытого ключа (b), выведенного из первого закрытого ключа, передачу первого открытого ключа (b) второму устройству,- receiving (520) the first private key (r) and the first public key (b) derived from the first private key, transmitting the first public key (b) to the second device,

- прием (530) от второго устройства второго открытого ключа (u), данных (h) согласования и инкапсулированных данных (c) и надежных индексов,- receiving (530) from the second device the second public key (u), agreement data (h) and encapsulated data (c) and reliable indexes,

- формирование (540) первого необработанного общего ключа (k’) из второго открытого ключа (u) и первого закрытого ключа (r),- generating (540) the first raw public key (k') from the second public key (u) and the first private key (r),

- применение (550) данных (h) согласования в функции согласования к коэффициентам в первом необработанном общем ключе (k'), указанным надежными индексами (safe_bits), с получением надежных битов (k),applying (550) the matching data (h) in the matching function to the coefficients in the first raw shared key (k') indicated by the safe indexes (safe_bits) to obtain safe bits (k),

- декапсуляцию (560) инкапсулированных данных (c) с получением почти кодового слова с использованием надежных битов,- decapsulation (560) of the encapsulated data (c) to obtain an almost codeword using reliable bits,

- применение (570) функции исправления ошибок к почти кодовому слову с получением кодового слова.- applying (570) the error correction function to the near-codeword to obtain the codeword.

Кодовое слово в способе 400 или 500 может быть использовано для передачи сообщения или ключа, используемого для способа шифрования, например в способе шифрования с открытым ключом. Кодовое слово может быть использовано для выработки общего ключа.The codeword in method 400 or 500 may be used to convey a message or a key used for an encryption method, such as a public key encryption method. The code word can be used to generate a shared key.

Как очевидно специалисту в данной области, возможны множество разных путей исполнения этих способов. Например, этапы могут быть выполнены в указанном порядке, однако порядок этапов может также меняться, или некоторые этапы могут быть выполнены параллельно. Кроме того, между этапами могут быть введены другие этапы способа. Введенные этапы могут представлять собой усовершенствования способа, такие как описанные в настоящем документе, или могут не иметь отношения к способу. Например, некоторые части могут быть исполнены, по меньшей мере частично, параллельно. Кроме того, данная часть может быть не завершена полностью до начала следующего этапа.As one of skill in the art will appreciate, many different ways of performing these methods are possible. For example, the steps may be performed in the specified order, but the order of the steps may also change, or some steps may be performed in parallel. In addition, other method steps may be introduced between the steps. The steps introduced may represent improvements to the method, such as those described herein, or may not be relevant to the method. For example, some parts may be executed, at least in part, in parallel. In addition, this part may not be fully completed before the start of the next stage.

Варианты реализации способа могут быть исполнены с использованием программного обеспечения, которое содержит инструкции для обуславливания выполнения процессорной системой способа. Программное обеспечение может содержать только те этапы, которые предпринимаются компонентом системы. Программное обеспечение может храниться на подходящем носителе для хранения, таком как жесткий диск, гибкий диск, память, оптический диск и т.д. Программное обеспечение может быть отправлено в виде сигнала по проводу или без провода либо с использованием сети данных, например Интернета. Программное обеспечение может быть доступно для загрузки и/или удаленного использования на сервере. Варианты реализации способа могут быть исполнены с использованием битового потока, выполненного с возможностью конфигурирования программируемой логики, например, программируемой пользователем вентильной матрицы (FPGA), для осуществления способа.Embodiments of the method may be executed using software that contains instructions for causing the processor system to execute the method. The software may contain only those steps that are undertaken by the system component. The software may be stored on suitable storage media such as a hard disk, floppy disk, memory, optical disk, etc. The software may be sent as a signal over or over the wire, or using a data network such as the Internet. The software may be available for download and/or remote use on a server. Embodiments of the method may be executed using a bitstream configured to configure programmable logic, such as a field programmable gate array (FPGA), to implement the method.

Понятно, что изобретение также распространяется на компьютерные программы, в частности, на компьютерные программы на или в носителе, выполненном с возможностью воплощения изобретения на практике. Программа может быть в виде исходного кода, объектного кода, промежуточного источника кода и объектного кода, например, в частично компилированном виде или любом ином виде, пригодном для использования в осуществлении варианта реализации способа. Вариант реализации, относящийся к компьютерному программному продукту, содержит выполненные с возможностью исполнения инструкции, соответствующие каждому из этапов обработки по меньшей мере одного из изложенных способов. Эти инструкции могут подразделяться на подпрограммы и/или храниться в одном или более файлах, которые могут быть связаны статически или динамически. Другой вариант реализации, относящийся к компьютерному программному продукту, содержит выполненные с возможностью исполнения инструкции, соответствующие каждому из средств по меньшей мере одной из описанных систем и/или продуктов.It is understood that the invention also extends to computer programs, in particular to computer programs on or in a carrier capable of practicing the invention. The program may be in source code, object code, intermediate source code, and object code, such as partially compiled form, or any other form suitable for use in carrying out an embodiment of the method. An embodiment relating to a computer program product comprises executable instructions corresponding to each of the processing steps of at least one of the methods set forth. These instructions may be subdivided into subroutines and/or stored in one or more files, which may be linked statically or dynamically. Another embodiment related to a computer program product comprises executable instructions corresponding to each of the means of at least one of the described systems and/or products.

На Фиг. 8a показан компьютерочитаемый носитель 1000, имеющий выполненную с возможностью записи часть 1010, содержащую компьютерную программу 1020, причем компьютерная программа 1020 содержит инструкции для обуславливания выполнения процессорной системой способа выработки общего ключа, или способа шифрования с открытым ключом, или способа расшифрования с открытым ключом в соответствии с вариантом реализации. Компьютерная программа 1020 может быть реализована на компьютерочитаемом носителе 1000 в виде физических меток или посредством намагничивания компьютерочитаемого носителя 1000. Однако возможен и любой другой подходящий вариант реализации. Кроме того, понятно, что хотя компьютерочитаемый носитель 1000 показан здесь в виде оптического диска, компьютерочитаемый носитель 1000 может быть любым подходящим компьютерочитаемым носителем, таким как жесткий диск, твердотельная память, флэш-память и т.д., и может быть выполнен без возможности записи или с возможностью записи. Компьютерная программа 1020 содержит инструкции для обуславливания выполнения процессорной системой способа выработки общего ключа, или способа шифрования с открытым ключом, или способа расшифрования с открытым ключом.On FIG. 8a shows a computer-readable medium 1000 having a writable portion 1010 comprising a computer program 1020, the computer program 1020 including instructions for causing the processing system to execute a pre-shared key generation method, or a public key encryption method, or a public key decryption method, in accordance with with implementation. The computer program 1020 may be implemented on the computer readable medium 1000 in the form of physical marks or by magnetizing the computer readable medium 1000. However, any other suitable implementation is possible. Further, it will be understood that although the computer readable medium 1000 is shown here in the form of an optical disc, the computer readable medium 1000 may be any suitable computer readable medium such as a hard disk, solid state memory, flash memory, etc., and may be configured without being able to recording or recordable. The computer program 1020 includes instructions for causing the processor system to perform a pre-shared key generation method, or a public key encryption method, or a public key decryption method.

На Фиг. 8b показано схематическое представление процессорной системы 1140 в соответствии с вариантом реализации устройства, например, устройства для выработки общего ключа, или устройства для шифрования или расшифрования с открытым ключом. Процессорная система содержит одну или более интегральных схем 1110. Архитектура одной или более интегральных схем 1110 схематически показана на Фиг. 8b. Схема 1110 содержит блок 1120 обработки, например, ЦП, для выполнения компонентов компьютерной программы с целью осуществления способа согласно варианту реализации и/или реализации его модулей или блоков. Схема 1110 содержит память 1122 для хранения программного кода, данных и т.д. Часть памяти 1122 может быть предназначена только для чтения. Схема 1110 может содержать элемент 1126 связи, например, антенну, разъемы или то и другое и т.п. Схема 1110 может содержать специализированную интегральную схему 1124 для выполнения части или всей обработки, определенной в способе. Процессор 1120, память 1122, специализированная ИС 1124 и элемент 1126 связи могут быть соединены друг с другом посредством межсоединения 1130, скажем, шины. Процессорная система 1110 может быть выполнена с возможностью контактного и бесконтактного обмена данными с использованием антенны и/или разъемов, соответственно.On FIG. 8b shows a schematic representation of a processor system 1140 in accordance with an embodiment of a device, such as a device for deriving a shared key, or a device for encrypting or decrypting a public key. The processor system includes one or more integrated circuits 1110. The architecture of one or more integrated circuits 1110 is shown schematically in FIG. 8b. Circuitry 1110 includes a processing unit 1120, such as a CPU, for executing computer program components to implement the method of the embodiment and/or implement modules or blocks thereof. Circuit 1110 includes memory 1122 for storing program code, data, and so on. Portion of memory 1122 may be read-only. Circuitry 1110 may include a coupling element 1126, such as an antenna, connectors, or both, and the like. Circuit 1110 may include an ASIC 1124 to perform some or all of the processing defined in the method. The processor 1120, memory 1122, ASIC 1124, and coupler 1126 may be connected to each other via an interconnect 1130, say, a bus. Processor system 1110 may be configured to communicate contactlessly and contactlessly using an antenna and/or connectors, respectively.

Например, в варианте реализации процессорная система 1140, например, устройство выработки общего ключа или устройство шифрования или расшифрования с открытым ключом могут содержать схему процессора и схему памяти, причем процессор выполнен с возможностью исполнения программного обеспечения, хранящегося в схеме памяти. Например, схема процессора может представлять собой процессор Intel Core i7, ARM Cortex-R8 и т.д. В варианте реализации схема процессора может представлять собой ARM Cortex M0. Схема памяти может быть схемой ПЗУ или энергонезависимой памяти, например, флэш-памяти. Схема памяти может быть схемой энергозависимой памяти, например, СОЗУ. В последнем случае устройство может содержать энергонезависимый программный интерфейс, например, жесткий диск, сетевой интерфейс и т.д., выполненный с возможностью снабжения программным обеспечением.For example, in an embodiment, the processor system 1140, such as a shared key generator or a public key encryption or decryption device, may comprise a processor circuit and a memory circuit, the processor being configured to execute software stored in the memory circuit. For example, the processor scheme may be an Intel Core i7 processor, ARM Cortex-R8, etc. In an embodiment, the processor circuitry may be an ARM Cortex M0. The memory circuitry may be a ROM circuitry or non-volatile memory circuitry such as flash memory. The memory circuit may be a volatile memory circuit such as SRAM. In the latter case, the device may comprise a non-volatile software interface, such as a hard drive, a network interface, etc., configured to be provided with software.

Следующие пронумерованные пункты не являются формулой изобретения, а содержат предлагаемые варианты реализации. Заявитель настоящим уведомляет о том, что к таким пунктам и/или сочетаниям таких пунктов и/или признаков, взятых из описания или формулы изобретения, могут быть сформулированы новые пункты, например, во время судебного процесса по настоящей заявке или по любой дальнейшей заявке, полученной из нее.The following numbered paragraphs are not claims, but contain proposed implementation options. Applicant hereby acknowledges that such claims and/or combinations of such claims and/or features taken from the description or claims may be subject to new claims, for example, during litigation of this application or any further application received from her.

1. Второе криптографическое устройство (20), содержащее:1. The second cryptographic device (20), containing:

- интерфейс связи, выполненный с возможностью обмена данными с первым криптографическим устройством (10),- a communication interface configured to exchange data with the first cryptographic device (10),

- процессор, выполненный с возможностью:- a processor configured to:

- получения первого открытого ключа (b) для первого криптографического устройства,- obtaining the first public key (b) for the first cryptographic device,

- формирования второго закрытого ключа (s), кодового слова в соответствии с кодом с исправлением ошибок и формирования второго открытого ключа (u) из второго закрытого ключа (s),- generating a second private key (s), a code word in accordance with the error correction code and generating a second public key (u) from the second private key (s),

- формирования второго необработанного общего ключа (k*) из первого открытого ключа (b) и второго закрытого ключа (s),- generating a second raw public key (k*) from the first public key (b) and the second private key (s),

- применения функции надежных битов ко второму необработанному общему ключу (k*) с получением надежных индексов, указывающих коэффициенты необработанного общего ключа, и надежных битов, выведенных из указанных коэффициентов,- applying the reliable bits function to the second raw public key (k*) to obtain reliable indices indicating the coefficients of the raw public key and reliable bits derived from the indicated coefficients,

- формирования данных (h) согласования для указанных коэффициентов необработанного общего ключа, причем данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве,generating matching data (h) for said raw shared key coefficients, wherein the matching data contains information to reduce differences between the first and second raw keys output on the first and second devices,

- инкапсуляции кодового слова с использованием надежных битов путем применения функции инкапсуляции с получением инкапсулированных данных (c),- encapsulating the codeword using reliable bits by applying the encapsulation function to obtain encapsulated data (c),

- передачи второго открытого ключа (u), данных (h) согласования, инкапсулированных данных (c) и надежных индексов первому устройству.- transmitting the second public key (u), handshake data (h), encapsulated data (c) and trusted indices to the first device.

2. Первое криптографическое устройство (10), содержащее:2. The first cryptographic device (10), containing:

- интерфейс связи, выполненный с возможностью обмена данными со вторым криптографическим устройством (20),- a communication interface configured to exchange data with the second cryptographic device (20),

- процессор, выполненный с возможностью:- a processor configured to:

- получения первого закрытого ключа (r) и первого открытого ключа (b), выведенного из первого закрытого ключа, передачи первого открытого ключа (b) второму устройству,- obtaining the first private key (r) and the first public key (b) derived from the first private key, transmitting the first public key (b) to the second device,

- приема от второго устройства второго открытого ключа (u), данных (h) согласования и инкапсулированных данных (c) и надежных индексов,- receiving from the second device the second public key (u), agreement data (h) and encapsulated data (c) and reliable indexes,

- формирования первого необработанного общего ключа (k’) из второго открытого ключа (u) и первого закрытого ключа (r),- generating the first raw public key (k') from the second public key (u) and the first private key (r),

- применения данных (h) согласования в функции согласования к коэффициентам в первом необработанном общем ключе (k’), указанном надежными индексами, с получением надежных битов (k),- applying the matching data (h) in the matching function to the coefficients in the first raw shared key (k') indicated by the reliable indices, obtaining reliable bits (k),

- декапсуляции инкапсулированных данных (c) при помощи надежных битов (k) с получением почти кодового слова,- decapsulation of the encapsulated data (c) using reliable bits (k) to obtain an almost code word,

- применения функции исправления ошибок к почти кодовому слову с получением кодового слова.- applying the error correction function to the near-codeword to obtain the codeword.

3. Криптографический способ (400) совместного использования кодового слова, включающий:3. A cryptographic method (400) for sharing a code word, including:

- обмен (410) данными с первым криптографическим устройством (10),- exchange (410) data with the first cryptographic device (10),

- прием (420) первого открытого ключа (b) для первого криптографического устройства,- receiving (420) the first public key (b) for the first cryptographic device,

- формирование (430) второго закрытого ключа (s) и формирование второго открытого ключа (u) из второго закрытого ключа (s),- generating (430) the second private key (s) and generating the second public key (u) from the second private key (s),

- формирование (440) кодового слова в соответствии с кодом с исправлением ошибок, и- generating (440) a code word in accordance with the error correction code, and

- формирование (450) второго необработанного общего ключа (k*) из первого открытого ключа (b) и второго закрытого ключа (s),- generating (450) a second raw public key (k*) from the first public key (b) and the second private key (s),

- применение (460) функции надежных битов ко второму необработанному общему ключу (k*) с получением надежных индексов, указывающих коэффициенты необработанного общего ключа, и надежных битов, выведенных из указанных коэффициентов,- applying (460) the function of good bits to the second raw public key (k*) to obtain good indices indicating the coefficients of the raw common key and good bits derived from said coefficients,

- формирование (470) данных (h) согласования для указанных коэффициентов необработанного общего ключа, причем данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве,generating (470) matching data (h) for said raw shared key coefficients, wherein the matching data contains information to reduce differences between the first and second raw keys outputted on the first and second devices,

- инкапсуляцию (480) кодового слова с использованием надежных битов путем применения функции инкапсуляции с получением инкапсулированных данных (c),encapsulating (480) the codeword using reliable bits by applying the encapsulation function to obtain encapsulated data (c),

- передачу (490) второго открытого ключа (u), данных (h) согласования, инкапсулированных данных (c) и надежных индексов первому устройству.- transmitting (490) the second public key (u), agreement data (h), encapsulated data (c) and trusted indexes to the first device.

4. Криптографический способ (500) совместного использования кодового слова, включающий:4. A cryptographic method (500) for sharing a code word, including:

- обмен (510) данными со вторым криптографическим устройством (20),- exchange (510) data with the second cryptographic device (20),

- получение (520) первого закрытого ключа (r) и первого открытого ключа (b), выведенного из первого закрытого ключа, передачу первого открытого ключа (b) второму устройству,- receiving (520) the first private key (r) and the first public key (b) derived from the first private key, transmitting the first public key (b) to the second device,

- прием (530) от второго устройства второго открытого ключа (u), данных (h) согласования и инкапсулированных данных (c) и надежных индексов,- receiving (530) from the second device the second public key (u), agreement data (h) and encapsulated data (c) and reliable indexes,

- формирование (540) первого необработанного общего ключа (k’) из второго открытого ключа (u) и первого закрытого ключа (r),- generating (540) the first raw public key (k') from the second public key (u) and the first private key (r),

- применение (550) данных (h) согласования в функции согласования к коэффициентам в первом необработанном общем ключе (k'), указанном надежными индексами, с получением надежных битов (k),applying (550) the matching data (h) in the matching function to the coefficients in the first raw common key (k') indicated by the reliable indexes to obtain reliable bits (k),

- декапсуляцию (560) инкапсулированных данных (c) при помощи надежных битов с получением почти кодового слова,- decapsulation (560) encapsulated data (c) using reliable bits to obtain almost a code word,

- применение (570) функции исправления ошибок к почти кодовому слову с получением кодового слова.- applying (570) the error correction function to the near-codeword to obtain the codeword.

Следует отметить, что вышеупомянутые варианты реализации иллюстрируют, а не ограничивают, настоящее изобретение, и что специалисты в данной области техники в состоянии разработать множество альтернативных вариантов реализации.It should be noted that the foregoing embodiments are illustrative, and not limiting, of the present invention, and that those skilled in the art are able to develop many alternative implementations.

В формуле изобретения любые номера позиций, указанные в скобках, не следует трактовать как ограничивающие пункт формулы изобретения. Использование глагола «содержит/включает в себя» и его спряжений не исключает наличия других элементов или этапов, кроме указанных в пункте формулы изобретения. Грамматические средства выражения единственного числа, используемые с элементом, не исключают наличия множества таких элементов. Настоящее изобретение может быть реализовано посредством оборудования, содержащего несколько различных элементов, и посредством соответствующим образом запрограммированного компьютера. В описывающем устройство пункте, перечисляющем несколько средств, некоторые из этих средств могут быть реализованы одним и тем же элементом оборудования. Сам факт того, что определенные меры изложены во взаимно отличающихся зависимых пунктах формулы, не означает того, комбинация этих мер не может быть использована эффективно.In the claims, any position numbers given in parentheses should not be construed as limiting the claim. The use of the verb "comprises/includes" and its conjugations does not preclude the presence of other elements or steps other than those specified in a claim. The singular grammatical means used with an element does not preclude the presence of a plurality of such elements. The present invention can be implemented by means of equipment containing several different elements, and by means of an appropriately programmed computer. In a device-specific clause listing multiple features, some of those features may be implemented by the same piece of equipment. The mere fact that certain measures are set forth in mutually distinct dependent claims does not mean that a combination of these measures cannot be used effectively.

В формуле изобретения ссылки в скобках относятся к номерам позиций на чертежах, демонстрирующих примеры вариантов реализации, или к формулам в вариантах реализации, чтобы сделать пункт формулы изобретения более понятным. Эти ссылки не должны толковаться как ограничивающие пункт формулы изобретения.In the claims, references in parentheses refer to reference numbers in the drawings showing exemplary embodiments or to formulas in embodiments to make the claim more understandable. These references are not to be construed as limiting the claim.

ПРИЛОЖЕНИЕ AAPPENDIX A

Схематические математические описания примеров реализации.Schematic mathematical descriptions of implementation examples.

Алгоритмы описывают схему шифрования CPAPKE с открытым ключом, которая является INDCPA-стойкой (неразличимость при атаке подбором открытого текста, Indistinguishability under chosen-plaintext attack). CPAKEM может быть построен из CPAPKE в виде «черного ящика», а механизм CCAKEM защищенной инкапсуляции ключа INDCCA2 может быть построен из CPAPKE, например путем применения преобразования Фуджисаки-Окамото.The algorithms describe a public-key CPAPKE encryption scheme that is INDCPA-resistant (Indistinguishability under chosen-plaintext attack). CPAKEM can be built from CPAPKE as a black box, and the INDCCA2 secure key encapsulation mechanism CCAKEM can be built from CPAPKE, for example by applying the Fujisaki-Okamoto transformation.

CPAPKE использует открытые параметры, которые являются целыми числами n; q; p; bh; κ; μ, и алгоритмы формирования ключа, шифрования и расшифрования. Ds представляет собой распределение, из которого могут быть извлечены коэффициенты секретного ключа, и параметризовано посредством η. Например, если Ds является распределением разреженных троичных векторов, то η представляет вес Хэмминга векторов. fr является детерминистической функцией, которая при данной затравке ρ отбирает свежий секретный ключ из распределения Ds. Действует на полиноме степени не более n. Функция SafeBits выбирает μ≤n коэффициентов, которые приводят к минимальной общей вероятности отказа расшифрования, в соответствии с положительными позициями/индексами, например, в векторе, представляющем μ выбираемых коэффициентов.CPAPKE uses public parameters, which are integers n; q; p; bh; κ; μ , and algorithms for key generation, encryption and decryption. Ds is a distribution from which the secret key coefficients can be extracted and is parameterized by η. For example, if Ds is a distribution of sparse ternary vectors, then η represents the Hamming weight of the vectors. fr is a deterministic function that, given a seed ρ, selects a fresh secret key from the distribution Ds . Acts on a polynomial of degree at most n . The SafeBits function selects μ≤ n coefficients that result in the minimum overall decryption failure probability, according to positive positions/indices, for example, in a vector representing μ of selectable coefficients.

CPAKEM представляет собой механизмом пассивной инкапсуляции секретного ключа, построенный с использованием CPAPKE в виде «черного ящика». Он повторно использует алгоритм формирования ключа схемы CPAPKE и дополнительно содержит алгоритм инкапсуляции и декапсуляции, параметры предыдущей схемы и хэш-функцию H из * битов в κ битов.CPAKEM is a passive secret key encapsulation mechanism built using CPAPKE as a black box. It reuses the key generation algorithm of the CPAPKE scheme and additionally contains the encapsulation and decapsulation algorithm, the parameters of the previous scheme, and the hash function H of * bits to κ bits.

CCAKEM может быть получен путем применения преобразования Фуджисаки-Окамото на CPAPKE и может использовать хэш-функции H, как определено в CPAKEM, и дополнительно хэш-функцию G из * битов в умноженные на 3 κ битов.CCAKEM can be obtained by applying the Fujisaki-Okamoto transform on CPAPKE and can use hash functions H as defined in CPAKEM and optionally hash function G of * bits times 3 κ bits.

Figure 00000098
Figure 00000098

Figure 00000099
Figure 00000099

Figure 00000100
Figure 00000100

Claims (57)

1. Криптографическое устройство (20), содержащее:1. Cryptographic device (20) containing: интерфейс связи, выполненный с возможностью обмена данными с первым криптографическим устройством (10),communication interface configured to exchange data with the first cryptographic device (10), процессор, выполненный с возможностью:a processor configured to: приема первого открытого ключа (b) для первого криптографического устройства от первого криптографического устройства, причем первый открытый ключ (b) сформирован из сформированного кратковременно первого закрытого ключа,receiving the first public key (b) for the first cryptographic device from the first cryptographic device, wherein the first public key (b) is generated from the short-term generated first private key, формирования второго закрытого ключа (s), кодового слова в соответствии с кодом с исправлением ошибок по меньшей мере частично случайным образом и формирования второго открытого ключа (u) из второго закрытого ключа (s), причем кодовое слово сформировано независимо от первого открытого ключа, второго закрытого ключа и второго открытого ключа,generating a second private key (s), a code word in accordance with the error correction code at least partially randomly; a private key and a second public key, формирования второго необработанного общего ключа (k*) из первого открытого ключа (b) и второго закрытого ключа (s), при этом forming the second raw public key (k*) from the first public key (b) and the second private key (s), while первый и второй открытые ключи, второй закрытый ключ и второй необработанный общий ключ являются матрицей над конечным полем или кольцом, причем второй открытый ключ получен из второго закрытого ключа путем умножения с внесением шума на общую матрицу (a),the first and second public keys, the second private key, and the second raw public key are a matrix over a finite field or ring, with the second public key derived from the second private key by noise multiplication by the overall matrix (a), инкапсуляции кодового слова с использованием второго необработанного общего ключа путем применения функции инкапсуляции с получением инкапсулированных данных (c),encapsulating the codeword using the second raw public key by applying the encapsulation function to obtain encapsulated data (c), вывода общего криптографического ключа из по меньшей мере данных (K), закодированных в кодовом слове,deriving a common cryptographic key from at least the data (K) encoded in the codeword, передачи второго открытого ключа (u) и инкапсулированных данных (c) первому устройству.transmitting the second public key (u) and the encapsulated data (c) to the first device. 2. Криптографическое устройство по п. 1, в котором:2. Cryptographic device according to claim 1, in which: процессор выполнен с возможностью:the processor is configured to: получения кодового слова путем получения данных для инкапсуляции и формирования битов четности для данных инкапсуляции, причем кодовое слово получено путем объединенияobtaining a codeword by obtaining data to be encapsulated and generating parity bits for the encapsulation data, the codeword being obtained by combining данных для инкапсуляции и битов четности.data to encapsulate and parity bits. 3. Криптографическое устройство (10), содержащее:3. Cryptographic device (10), containing: интерфейс связи, выполненный с возможностью обмена данными со вторым криптографическим устройством (20), communication interface configured to exchange data with the second cryptographic device (20), процессор, выполненный с возможностью:a processor configured to: формирования кратковременно первого закрытого ключа (r) для формирования общего ключа, вывода первого открытого ключа (b) из первого закрытого ключа и передачи первого открытого ключа (b) второму устройству,briefly generating a first private key (r) to generate a shared key, deriving the first public key (b) from the first private key, and transmitting the first public key (b) to the second device, приема от второго устройства второго открытого ключа (u) и инкапсулированных данных (c),receiving from the second device the second public key (u) and encapsulated data (c), формирования первого необработанного общего ключа (k’) из второго открытого ключа (u) и первого закрытого ключа (r), при этом:generating the first raw public key (k') from the second public key (u) and the first private key (r), while: первый и второй открытые ключи, первый закрытый ключ и необработанный ключ являются матрицей над конечным полем или кольцом, причем первый открытый ключ получен из первого закрытого ключа путем умножения с внесением шума на общую матрицу (a),the first and second public keys, the first private key, and the raw key are a matrix over a finite field or ring, where the first public key is obtained from the first private key by noisy multiplication by the common matrix (a), декапсуляции инкапсулированных данных (c) при помощи первого необработанного общего ключа с получением почти кодового слова независимо от первого закрытого ключа, первого открытого ключа и второго открытого ключа,decapsulating the encapsulated data (c) using the first raw public key to obtain an almost codeword, regardless of the first private key, the first public key and the second public key, применения функции исправления ошибок к почти кодовому слову с получением кодового слова и applying an error correction function to an almost codeword to obtain a codeword, and вывода общего криптографического ключа из по меньшей мере данных (K), закодированных в кодовом слове. deriving a common cryptographic key from at least the data (K) encoded in the code word. 4. Криптографическое устройство по любому из предыдущих пунктов, сконфигурированное для протокола шифрования с открытым ключом, в котором сообщение (m) зашифровано общим симметричным ключом, выведенным по меньшей мере из данных (K), закодированных в кодовом слове, причем зашифрованное сообщение отправляют вместе со вторым открытым ключом (u) со второго устройства первому устройству. 4. A cryptographic device according to any one of the preceding claims, configured for a public key encryption protocol, wherein the message (m) is encrypted with a common symmetric key derived from at least data (K) encoded in the codeword, the encrypted message being sent along with second public key (u) from the second device to the first device. 5. Криптографическое устройство по любому из предыдущих пунктов, в котором необработанный общий ключ получен умножением принятого открытого ключа на закрытый ключ. 5. A cryptographic device according to any one of the preceding claims, wherein the raw public key is obtained by multiplying the received public key by the private key. 6. Криптографическое устройство по любому из предыдущих пунктов, в котором данные согласования получены по меньшей мере из множества коэффициентов необработанного ключа, причем данные согласования получены, отправлены, приняты и/или применены для меньшего, чем все, количества коэффициентов необработанного ключа. 6. A cryptographic device according to any one of the preceding claims, wherein the handshake data is obtained from at least a plurality of raw key coefficients, wherein the handshake data is received, sent, received and/or applied for less than all of the raw key coefficients. 7. Криптографическое устройство по любому из пп. 1 или 2 или 4-6 при зависимости от п. 1 или 2, в котором процессор второго устройства выполнен с возможностью 7. Cryptographic device according to any one of paragraphs. 1 or 2 or 4-6 depending on claim 1 or 2, in which the processor of the second device is configured to применения функции надежных битов ко второму необработанному общему ключу с получением надежных индексов, указывающих коэффициенты необработанного общего ключа, и надежных битов, выведенных из указанных коэффициентов, applying the reliable bits function to the second raw public key to obtain reliable indices indicating coefficients of the raw public key and reliable bits derived from said coefficients, формирования данных согласования для указанных коэффициентов необработанного общего ключа, причем данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве, причем инкапсуляция кодового слова использует надежные биты, и передачи данных согласования и надежных индексов первому устройству. generating matching data for said raw shared key coefficients, wherein the matching data contains information to reduce differences between the first and second raw keys output on the first and second devices, the codeword encapsulating using reliable bits, and transmitting the matching data and reliable indices to the first device . 8. Криптографическое устройство по п. 3 или по любому из пп. 4-6 при зависимости от п. 3, в котором процессор криптографического устройства выполнен с возможностью 8. Cryptographic device according to claim. 3 or according to any one of paragraphs. 4-6 depending on claim 3, in which the processor of the cryptographic device is configured to приема от второго устройства данных согласования и надежных индексов, receiving matching data and reliable indices from the second device, применения данных согласования в функции согласования к коэффициентам в первом необработанном общем ключе, указанном надежными индексами, с получением надежных битов, причем декапсуляция инкапсулированных данных использует надежные биты. applying the matching data in the matching function to the coefficients in the first raw shared key indicated by the reliable indices to obtain reliable bits, wherein decapsulation of the encapsulated data uses reliable bits. 9. Криптографическое устройство по п. 8, в котором: 9. Cryptographic device according to claim 8, in which: надежные биты являются одним или более старшими значащими битами указанных коэффициентов, данные согласования для указанных коэффициентов являются одним или более битами указанных коэффициентов, следующими за надежными битами по значимости, при этом обеспечена возможность отбрасывания одного или более младших значащих битов указанных коэффициентов. the reliable bits are one or more most significant bits of the specified coefficients, the matching data for the specified coefficients is one or more bits of the specified coefficients following the reliable bits in significance, while it is possible to discard one or more least significant bits of the specified coefficients. 10. Криптографическое устройство по п. 8 или 9, в котором процессор выполнен с возможностью выбора коэффициентов в необработанном ключе, указанном надежными индексами, замены выбранных коэффициентов измененными коэффициентами, согласующимися с соответствующими данными согласования и минимизирующими расстояние Ли между выбранными коэффициентами и измененными коэффициентами, с получением надежных битов в виде одного или более старших значащих битов измененных коэффициентов. 10. The cryptographic device according to claim 8 or 9, in which the processor is configured to select the coefficients in the raw key indicated by reliable indexes, replace the selected coefficients with modified coefficients consistent with the corresponding matching data and minimize the Lee distance between the selected coefficients and the modified coefficients, with obtaining reliable bits in the form of one or more most significant bits of the modified coefficients. 11. Криптографическое устройство по п. 10, в котором процессор выполнен с возможностью определения измененных коэффициентов, согласующихся с соответствующими данными согласования, которые не были отброшены вторым устройством, и которые минимизируют расстояние Ли между выбранным коэффициентом и измененным коэффициентом. 11. The cryptographic device of claim 10, wherein the processor is configured to determine modified coefficients consistent with corresponding matching data that has not been discarded by the second device and which minimizes the Lee distance between the selected coefficient and the modified coefficient. 12. Криптографический способ (400) совместного использования кодового слова, включающий: 12. A cryptographic method (400) for sharing a code word, including: обмен (410) данными с первым криптографическим устройством (10),exchange (410) data with the first cryptographic device (10), прием (420) первого открытого ключа (b) для первого криптографического устройства от первого криптографического устройства, причем первый открытый ключ (b) формируют из сформированного кратковременно первого закрытого ключа, receiving (420) the first public key (b) for the first cryptographic device from the first cryptographic device, wherein the first public key (b) is generated from the short-term generated first private key, формирование (430) второго закрытого ключа (s) и формирование второго открытого ключа (u) из второго закрытого ключа (s), generating (430) a second private key (s) and generating a second public key (u) from the second private key (s), формирование (440) кодового слова в соответствии с кодом с исправлением ошибок по меньшей мере частично случайным образом, причем кодовое слово формируют независимо от первого открытого ключа, второго закрытого ключа и второго открытого ключа, иgenerating (440) a codeword in accordance with the error correction code at least partially randomly, wherein the codeword is generated independently of the first public key, the second private key, and the second public key, and формирование (450) второго необработанного общего ключа (k*) из первого открытого ключа (b) и второго закрытого ключа (s), при этом generating (450) a second raw public key (k*) from the first public key (b) and the second private key (s), wherein первый и второй открытые ключи, второй закрытый ключ и второй необработанный общий ключ являются матрицей над конечным полем или кольцом, причем второй открытый ключ получают из второго закрытого ключа путем умножения с внесением шума на общую матрицу (a), the first and second public keys, the second private key, and the second raw public key are a matrix over a finite field or ring, the second public key being derived from the second private key by noise multiplication by the overall matrix (a), инкапсуляцию (480) кодового слова с использованием второго необработанного общего ключа путем применения функции инкапсуляции с получением инкапсулированных данных (c), encapsulating (480) the codeword using the second raw public key by applying the encapsulation function to obtain encapsulated data (c), вывод общего криптографического ключа из по меньшей мере данных (K), закодированных в кодовом слове, deriving a common cryptographic key from at least the data (K) encoded in the code word, передачу (490) второго открытого ключа (u) и инкапсулированных данных (c) первому устройству. transmitting (490) the second public key (u) and the encapsulated data (c) to the first device. 13. Криптографический способ (500) совместного использования кодового слова, включающий: 13. A cryptographic method (500) for sharing a code word, including: обмен (510) данными со вторым криптографическим устройством (20), exchange (510) data with the second cryptographic device (20), формирование кратковременно первого закрытого ключа (r) для формирования общего ключа, вывод первого открытого ключа (b) из первого закрытого ключа и передачу первого открытого ключа (b) второму устройству, briefly generating a first private key (r) to generate a shared key, deriving the first public key (b) from the first private key, and transmitting the first public key (b) to the second device, прием (530) от второго устройства второго открытого ключа (u) и инкапсулированных данных (c), receiving (530) from the second device the second public key (u) and encapsulated data (c), формирование (540) первого необработанного общего ключа (k’) из второго открытого ключа (u) и первого закрытого ключа (r), при этом generating (540) the first raw public key (k') from the second public key (u) and the first private key (r), wherein первый и второй открытые ключи, первый закрытый ключ и необработанный ключ являются матрицей над конечным полем или кольцом, причем первый открытый ключ получают из первого закрытого ключа путем умножения с внесением шума на общую матрицу (a),the first and second public keys, the first private key, and the raw key are a matrix over a finite field or ring, the first public key being derived from the first private key by noise multiplication by the common matrix (a), декапсуляцию (560) инкапсулированных данных (c) при помощи первого необработанного общего ключа с получением почти кодового слова независимо от первого закрытого ключа, первого открытого ключа и второго открытого ключа,decapsulating (560) the encapsulated data (c) using the first raw public key to obtain an almost codeword regardless of the first private key, the first public key and the second public key, применение (570) функции исправления ошибок к почти кодовому слову с получением кодового слова и applying (570) an error correction function to a near-codeword to obtain a codeword, and вывод общего криптографического ключа из по меньшей мере данных (K), закодированных в кодовом слове. deriving a common cryptographic key from at least the data (K) encoded in the codeword. 14. Компьютерочитаемый носитель (1000), содержащий кратковременные или некратковременные данные (1020), представляющие инструкции, выполнение которых процессорной системой приводит к осуществлению ею способа по п. 12 или 13.14. A computer-readable medium (1000) containing transient or non-transitory data (1020) representing instructions whose execution by the processor system causes it to perform the method of claim 12 or 13.
RU2021103795A 2018-07-17 2019-07-17 Key encapsulation protocols RU2787692C9 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP18183911.9 2018-07-17
EP18187763.0 2018-08-07

Publications (3)

Publication Number Publication Date
RU2021103795A RU2021103795A (en) 2022-08-17
RU2787692C2 true RU2787692C2 (en) 2023-01-11
RU2787692C9 RU2787692C9 (en) 2023-05-10

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094189B2 (en) * 2010-02-18 2015-07-28 Centre National De La Recherche Scientifique-Cnrs Cryptographic method for communicating confidential information
RU2587417C2 (en) * 2012-01-06 2016-06-20 Хуавэй Текнолоджиз Ко., Лтд. Authentication systems and methods
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9094189B2 (en) * 2010-02-18 2015-07-28 Centre National De La Recherche Scientifique-Cnrs Cryptographic method for communicating confidential information
RU2587417C2 (en) * 2012-01-06 2016-06-20 Хуавэй Текнолоджиз Ко., Лтд. Authentication systems and methods
US9673977B1 (en) * 2016-09-15 2017-06-06 ISARA Corporation Refreshing public parameters in lattice-based cryptographic protocols

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Joppe Bos et al. Frodo: Take off the Ring! Practical, Quantum-Secure Key Exchange from LWE, CCS '16: Proceedings of the 2016 ACM SIGSAC Conference on Computer and Communications Security, October 2016, c. 1006-1018, 24.10.2016, 12 c. *

Similar Documents

Publication Publication Date Title
CN110870250B (en) Key agreement device and method
US11991285B2 (en) Configurable cryptographic device
CN111492615B (en) Encryption device with updatable shared matrix
JP6975361B2 (en) Key encapsulation protocol
US11909877B2 (en) Public/private key system with decreased public key size
CN114008967B (en) Method and apparatus for authenticated lattice-based key agreement or key encapsulation
US11917063B2 (en) Public/private key system with increased security
RU2787692C2 (en) Key encapsulation protocols
RU2787692C9 (en) Key encapsulation protocols
EP3609117A1 (en) Key encapsulation protocols
Al-Doori et al. Securing IoT Networks with NTRU Cryptosystem: A Practical Approach on ARM-based Devices for Edge and Fog Layer Integration.
JP2006054638A (en) Quantum key delivering method and communication apparatus
CN116684068A (en) Efficient quantum key exchange resisting method and system