RU2787692C2 - Key encapsulation protocols - Google Patents
Key encapsulation protocols Download PDFInfo
- 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
Links
- 238000005538 encapsulation Methods 0.000 title claims abstract description 42
- 238000004891 communication Methods 0.000 claims description 26
- 239000011159 matrix material Substances 0.000 claims description 17
- 230000000875 corresponding Effects 0.000 claims description 8
- 230000001052 transient Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 3
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 230000015654 memory Effects 0.000 description 33
- 238000004590 computer program Methods 0.000 description 20
- 238000009795 derivation Methods 0.000 description 7
- 230000001965 increased Effects 0.000 description 3
- 230000003287 optical Effects 0.000 description 3
- 230000001131 transforming Effects 0.000 description 3
- 230000001419 dependent Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000007493 shaping process Methods 0.000 description 2
- 230000036462 Unbound Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000021615 conjugation Effects 0.000 description 1
- 230000001808 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000000977 initiatory Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Abstract
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
На Фиг. 7b схематически показан пример варианта реализации устройства 200 второй стороны,On FIG. 7b schematically shows an exemplary embodiment of the
На Фиг. 7c схематически показан пример варианта реализации криптографической системы 101.On FIG. 7c schematically shows an exemplary embodiment of the
на Фиг. 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.
При выборе надежных битов делают допущение, что не все биты, заданные размерностью кольца, нужны для ключей. Как правило, размерность лежащих в основе полиномов/матриц намного больше требуемой длины ключа. Например, вторая сторона может выбрать m индексов в , которые, скорее всего, будут согласованы. Эти безопасные коэффициенты могут быть коэффициентами, наиболее близкими к центральным точкам диапазонов коэффициентов, которые отображаются в нулевой бит или в единичный бит; k = 0 и k = 1. Например, в кольце по модулю q коэффициент может быть отображен в 0, если находится в диапазоне , и в 1, если находится в диапазоне находится в диапазоне , или наоборот. Если не находится ни в одном их этих двух диапазонов, он не является надежным битом. Значение определяет, в частности, надежность битов. Например, в этом случае оно может быть выбрано как ; меньшие значения для обеспечивают более высокую надежность, но меньше битов ключа. В данном случае центральными точками могут быть и или их округленные значения.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 much larger than the required key length. For example, the second party can choose m indices in 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 can be mapped to 0 if is in the range , and in 1 if is in the range is in the range , or vice versa. If is not in either of those two ranges, it is not a reliable bit. Meaning defines, in particular, bit reliability. For example, in this case it could be chosen as ; smaller values for provide higher security but fewer key bits. In this case, the central points can be and 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
Существуют ряд разных механизмов обмена ключами и инкапсуляции ключей, которые проиллюстрированы со ссылкой на фигуры.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
Функцией инкапсуляции может быть например, 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
Для использования подобного протокола в качестве 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 может быть применен к сообщениям , но также к ключу K. Например, ключ может быть сформирован на второй стороне. Пример такого применения показан на Фиг. 5b. Вариант реализации, например, показанный ниже на Фиг. 5b, может содержать следующие части:The protocol shown in Fig. 5a can be applied to messages , 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, где генератор секретов сконфигурирован с несколькими параметрами, таким как длина секрета , диапазон элементов в и распределение элементов в . Генератор может содержать генератор истинно случайных чисел, обычно на аппаратной основе, который используют для получения случайной затравки, применяемой для формирования псевдослучайной последовательности. Вместо генератора истинно случайных чисел могут быть использованы псевдослучайные числа.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 configured with several parameters such as length secret , the range of elements in and distribution of elements in . 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.
Учитывая входные параметры, генератор получает набор , содержащий входные элементы, в которые будет входить . С учетом псевдослучайной последовательности генератор получает еще один набор , содержащий элементы в , которые будут объединены с элементами в .Given input parameters, the generator receives a set A that contains the input elements that will include . Given the pseudo-random sequence, the generator gets another set , containing the elements in , which will be merged with the elements in .
Полученный секрет может быть сохранен в памяти. Генератор может выполняться на ЦП компьютера.Received secret can be stored in memory. The generator can run on the computer's CPU.
Детерминистический способDeterministic way
Генератор может быть сконфигурирован, например, пользователем, с использованием весов так, что . Например, пользователь может сконфигурировать его с использованием значения , которое определяет длину .The generator can be configured, for example, by the user, using a scale so . For example, the user can configure it using the value , which determines the length .
Секрет s с компонентами будет иметь значений и значений , где для .Secret s components will have values and values , where for .
Количество ненулевых элементов в s называется и задается как .The number of nonzero elements in s is called and is given as .
Последовательность ненулевых элементов называется и содержит значения .The sequence of non-zero elements is called and contains the values .
Кроме того, s будет иметь значений 0, где .Also, s will have values 0, where .
едует отметить, что вместо можно использовать , и в этом случае предпочтительно достаточно большое, так что .goes to note that instead of can be used , and in this case preferably large enough so that .
Генератор инициализирует вектор размерности нулями.The generator initializes the vector dimensions zeros.
С учетом значений генератор случайным образом формирует последовательность с ровно разными целыми числами в диапазоне от до . Затем генератор присваивает значения в s в соответствии со значениями в :Given the values generator randomly generates a sequence from exactly different integers ranging from before . The generator then assigns values to s according to the values in :
значение в позициям вектора в , индексированным первыми значениями в ,meaning in vector positions in , indexed first values in ,
значение в присваивают позициям вектора в , индексированным следующими значениями в ,meaning in are assigned to the positions of the vector in , indexed by the following values in ,
……
значение в присваивают позициям вектора в , индексированным следующими значениями в ,meaning in are assigned to the positions of the vector in , indexed by the following values in ,
значение в присваивают позициям вектора в , индексированным следующими значениями в ,meaning in are assigned to the positions of the vector in , indexed by the following values in ,
значение в присваивают позициям вектора в , индексированным следующими значениями в ,meaning in are assigned to the positions of the vector in , indexed by the following values in ,
……
и т.д. до тех пор, пока не используют последние значений в качестве индекса в , и присвоят значение в .etc. until the last one is used. values as an index in, and will assign a value in.
Вероятностный способProbabilistic method
Генератор может быть сконфигурирован с использованием весов так, что . Это распределение может быть обобщено до большего количества весов, как в предыдущем разделе.Generator can be configured using scales so . This distribution can be generalized to more weights, as in the previous section.
С учетом секрета длины генератор сначала вычисляет и определяет последовательность с значениями «» и значениями «». Значения также могут быть обобщены до других значений, например, , где положительное целое число.Given the secret of length generator first calculates and determines the sequence With values " " and values " ". Values can also be generalized to other meanings, for example, , where positive integer.
Генератор инициализирует вектор размерности нулями.The generator initializes the vector dimensions zeros.
С учетом генератор случайным образом формирует набор с случайными значениями в диапазоне от до . Затем генератор последовательно берет элемент в и элемент в и назначает .Taking into account the generator randomly generates a set With random values ranging from before . The generator then sequentially takes the element in and element in and appoints .
Вектор обновляют в соответствии со следующим псевдокодом.Vector updated according to the following pseudocode.
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
вычисляют векторов , каждый длины с коэффициентами {0,1}, причем каждый вектор ровно с ненулевыми элементами, где p является вероятностью того, что коэффициент равен 1. Для этого можно случайным образом выбрать разных значений в [0, n - 1], которым будет присвоено значение 1.calculate vectors , each length with coefficients {0,1}, and each vector with exactly non-zero elements, where p is the probability that the coefficient is 1. To do this, you can randomly choose different values in [0, n - 1], which will be assigned the
вычисляют k/2 векторов длины с коэффициентами {0,1}, причем каждый вектор ровно с ненулевыми элементами, где p является вероятностью того, что коэффициент равен 1. Для этого можно случайным образом выбрать разных значений в [0, n - 1], которым будет присвоено значение 1.compute k/2 vectors length with coefficients {0,1}, and each vector with exactly non-zero elements, where p is the probability that the coefficient is 1. To do this, you can randomly choose different values in [0, n - 1], which will be assigned the
вычисляют секретный вектор s с коэффициентами, где коэффициент вычисляют следующим образом:calculate the secret vector s with coefficients, where coefficient is calculated as follows:
Это соответствует распределению, являющемуся биномиальным с центром в 0. Оно биномиальное, поскольку коэффициенты при имеют вероятность равенства . В этом варианте реализации значения 1 в векторах соответствуют набору , а значения в диапазоне от 0 до , которым присвоено значение 1, соответствуют набору . Получающий в результате секрет имеет нуль в единице, поскольку количество 1 в каждом векторе одинаковое, и мы складываем векторов и вычитаем векторов.This corresponds to a distribution that is binomial centered at 0. It is binomial because the coefficients at are likely equality . In this implementation, the
Следует отметить, что в вероятностном способе (c) целые числа в не должны быть разными, так что их проще формировать. Также следует отметить, что элементы в не нужно вычислять заблаговременно, а они могут быть вычислены по ходу дела. Если целые числа в разные, детерминистический и вероятностный способы дают один и тот же секрет s. Следует отметить также, что определение последовательности значений в P (значений, которые выделены секрету) не обязательно должно выполняться явно, а оно может оставаться неявным в коде, как это показано в таблице 1.It should be noted that in the probabilistic method (c) the integers in should not be different, so that they are easier to form. It should also be noted that the elements in do not need to be calculated ahead of time, but can be calculated as you go. If the integers are 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. Функция округления : Для пусть 1. Rounding function : For let
. Тогда . Then
Интуитивно понятно, что выделяет старших значащих битов , где второй компонент является коэффициентом округления для обеспечения несмещенных ошибок округления. B указывает количество битов, выделяемых из символа , а указывает количество битов вспомогательных данных. В варианте реализации может быть степенью 2.It is intuitively clear that highlights most significant bits , where the second component is a rounding factor to ensure unbiased rounding errors. B indicates the number of bits to extract from a character , a indicates the number of bits of ancillary data. In the implementation can be
2. Функция перекрестного округления : Для пусть 2. Cross round function : For let
. Тогда . Then
Интуитивно понятно, что выделяет младших значащих битов из старших значащих битов .It is intuitively clear that highlights least significant bits of most significant bits .
3. Функция согласования : 3. Matching function :
Для ,For ,
где v является ближайшим элементом к w, так что . Ближайший элемент может быть взят в соответствии с расстоянием Ли, например, where v is the closest element to w so that . nearest element can be taken according to the Lie distance, for example,
Эти три функции могут быть применены покоэффициентно к полиномам или матрицам. В качестве примера в настоящем документе используется вышеприведенная функция согласования. Как отмечалось, способы согласования в цитируемой выше области применения тоже могут быть использованы. Функция перекрестного округления может быть применена для получения данных согласования, а функция округления для получения данных, которые согласовывают, например надежных битов. При последующем использовании данных согласования в функции согласования восстанавливают согласуемые данные. Другими словами: в предположении, что и находятся в пределах порогового расстояния друг от друга.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: on the assumption that and 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
Первое устройство 100 и второе устройство 200, например, разные устройства системы 101, могут обмениваться данными друг с другом по компьютерной сети 191. Компьютерная сеть может быть интернетом, интрасетью, ЛВС, БЛВС и т.д. Компьютерная сеть 191 может быть Интернетом. Компьютерная сеть может быть полностью или частично проводной и/или полностью или частично беспроводной. Например, компьютерная сеть может содержать соединения Ethernet. Например, компьютерная сеть может содержать беспроводные соединения, такие как Wi-Fi, ZigBee и т.п. Устройства содержат интерфейс соединения, который выполнен с возможностью обмена данными с другими устройствами системы 101 при необходимости. Например, интерфейс соединения может содержать разъем, например, проводной разъем, например, разъем Ethernet, или беспроводной разъем, например, антенну, например, антенну Wi-Fi, 4G или 5G. Например, первое устройство 100 и второе устройство 200 могут содержать интерфейс 130, 230 связи, соответственно. Компьютерная сеть 191 может содержать дополнительные элементы, например, маршрутизатор, концентратор и т.д.The
Исполнение первого устройства 100 и второго устройства 200 может быть реализовано в процессоре, например, в схеме процессора, примеры которой показаны в настоящем документе. Первое устройство 100, в частности, процессор первого устройства 100, может реализовывать функции первой стороны 10. Второе устройство 200, в частности, процессор второго устройства 200, может реализовывать функции второй стороны 20. Например, эти функции могут быть полностью или частично реализованы в компьютерных инструкциях, которые хранятся на устройстве 100 или 200, например, в электронной памяти устройства, и выполнены с возможностью исполнения микропроцессором устройства. В гибридные вариантах реализации функциональные блоки реализуют частично в оборудовании, например, таком как сопроцессоры, например, криптопроцессоры, и частично в программном обеспечении, хранящемся и исполняемом на устройстве 100 или 200.The execution of the
Устройства 100 и 200 могут содержать интерфейс хранилища для сохранения и/или извлечения сообщений, возможно, шифрованных сообщений. Например, интерфейс хранилища может быть реализован локально, например, как интерфейс с памятью, содержащейся в устройстве, например, с памятью 196 или 296, соответственно. Интерфейс хранилища может быть также интерфейсом с автономным, например, нелокальным, хранилищем, например, с облачным хранилищем, таким как память или дисковод, находящийся в другом устройстве. В случае использования облачного хранилища устройства могут также содержать локальное хранилище, например память. Например, память может быть использована для хранения компьютерных программных инструкций, временного хранения файлов и т.п.
В различных вариантах реализации устройств 100 и 200 интерфейс связи может быть выбран из различных вариантов. Например, интерфейс может быть сетевым интерфейсом с локальной или глобальной вычислительной сетью, такой как Интернет, интерфейсом хранилища с внутренним или внешним хранилищем данных, интерфейсом приложений (API) и т.д.In various implementations of
Устройства 100 и 200 могут иметь пользовательский интерфейс, который может содержать хорошо известные элементы, такие как одна или более кнопок, клавиатура, дисплей, сенсорный экран и т.д. Пользовательский интерфейс может быть выполнен с возможностью обеспечения взаимодействия пользователя для инициирования протокола выработки общего ключа, реагирования на протокол выработки общего ключа, отправки сообщения, зашифрованного открытым ключом, расшифрования сообщения открытым ключом и т.д.
Хранилище может быть реализовано как электронная память, скажем, флэш-память, или магнитная память, скажем, жесткий диск и т.п. Хранилище может содержать множество дискретных памятей, вместе составляющих хранилище. Хранилище также может быть временной памятью, скажем, ОЗУ.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
В варианте реализации устройства 100 и 200 могут содержать одну или более схем для реализации одной или более или всех функций соответствующего устройства. Схемы реализуют соответствующие функции, описанные в настоящем документе. Схемы могут быть схемой процессора и схемой запоминающего устройства, причем схема процессора исполняет инструкции, представленные в электронном виде в схемах запоминающего устройства.In an embodiment,
Схема процессора может быть реализована распределенным образом, например, в виде нескольких схем подпроцессоров. Запоминающее устройство может быть распределенным по нескольким распределенным запоминающим подустройствам. Частично или полностью память может быть электронной памятью, магнитной памятью и т.д. Например, запоминающее устройство может иметь энергозависимую и энергонезависимую часть. Часть запоминающего устройства может быть предназначена только для чтения.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
Первое устройство 300 и второе устройство 350 выполнены с возможностью осуществления криптографического протокола. Они обладают способностью безопасно передавать данные из одного устройства в другое. Эта же самая способность может быть использована в различных криптографических протоколах. В качестве примера описаны два протокола, которые используют эту способность.The
Например, первое и второе устройства могут быть сконфигурированы для протокола выработки общего ключа, например, выполнены с возможностью формирования ключа, как правило, симметричного ключа, который является общим для двух устройств. Тогда общий ключ может быть использован устройствами для защиты обмена данными, например, шифрованного и/или использующего проверку подлинности обмена данными, например, путем использования ключа для шифрования сообщений и/или для вычисления метки проверки подлинности для сообщения. Протокол может быть протоколом шифрования с открытым ключом, например, выполненным с возможностью предоставления другим устройствам, скажем, второму устройству 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
Первое устройство 300 и второе устройство 350 содержат интерфейс 305, 355 связи, соответственно. Интерфейсы связи выполнены с возможностью обмена данными друг с другом. Примеры интерфейсов связи, например, по проводным или беспроводным сетям, описаны в настоящем документе.The
Первое устройство 300 содержит генератор 315 открытых/закрытых ключей, выполненный с возможностью формирования первого закрытого ключа (r) и первого открытого ключа (b), выводимого из первого закрытого ключа. При выводе открытого ключа из закрытого ключа может быть использован открытый объект (a). Например, формирование открытого ключа может включать умножение на открытый объект и/или введение некоторого рода шума, например, уменьшение масштаба результата умножения, добавления члена шума и т.д. Закрытый ключ и открытый объект могут быть полиномом или матрицей, например над конечным полем или кольцом.The
Первые закрытый и открытый ключи могут быть сформированы кратковременно. Например, последнее можно сделать для протокола выработки общего ключа, в частности, если первое и второе устройства используют некоторый другой механизм проверки подлинности, например, внеполосной механизм, например, проверку подлинности на основе сертификата и т. п., для проверки подлинности друг друга. Первые закрытый и открытый ключи могут быть также сформированы для более длительного использования. Например, первый открытый ключ может быть сохранен во внешнем депозитарии 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
Первый открытый ключ передают с первого устройства 300 на второе устройство 350, например, посредством интерфейсов 305 и 355 связи. Это можно сделать прямым обменом данных или опосредованно, например, через депозитарий 302 открытых ключей. Вместе с первым открытым ключом также может быть передан открытый объект (a), если требуется. Например, открытый объект может быть передан путем отправки затравки, из которой может быть сформирован открытый объект (a).The first public key is transmitted from the
Второе устройство 350 может содержать получатель 360 открытых ключей, например, выполненный с возможностью извлечения первого открытого ключа из депозитария 302 открытых ключей. Этот тип получения подходит, например, для шифрования с открытым ключом. Однако, открытый ключ может быть также получен непосредственно от первого устройства, возможно, вне полосы, например в электронном письме. Открытый ключ может храниться до тех пор, пока он нее понадобится для шифробмена с открытым ключом. Однако первый открытый ключ может быть также принят для немедленного использования, например, для операции с общим ключом, например, в этом случае первый открытый ключ и/или открытый объект могут быть сформированы кратковременно.The
Второе устройство 350 может содержать генератор 365 открытых/закрытых ключей, выполненный с возможностью формирования второго закрытого ключа (s) и формирования первого открытого ключа (u), выводимого из второго закрытого ключа (s). Второй открытый ключ использует тот же самый открытый объект, который использовали при формировании первого открытого ключа. Первый и второй закрытые ключи являются закрытыми для их соответствующих устройств. Они могут совместно использоваться доверенными сторонами, если требуется, например, для резервного копирования, депонирования ключа и т.д. Открытые ключи и открытый объект не обязательно являются секретными для безопасности; тем не менее, один или более из них все же могут быть закрытыми для первого и второго устройства, если требуется. Например, первый открытый ключ может совместно использоваться только со вторым устройством, и наоборот.The
Второе устройство 350 содержит генератор 370 кодовых слов. Генератор 370 кодовых слов выполнен с возможностью формирования кодового слова в соответствии с кодом с исправлением ошибок. Код с исправлением ошибок может быть линейным кодом или нелинейным кодом. Например, код с исправлением ошибок может быть кодом БЧХ, кодом Рида-Соломона, кодом Адамара и т.п. Могут быть конкатенированы несколько кодов. Конкатенированные коды являются кодами с исправлением ошибок, которые построены из двух или более менее сложных кодов для достижения хороших рабочих характеристик при разумной сложности. Например, кода Адамара может быть конкатенирован с кодом БЧХ.The
Закодированное в кодовом слове представляет собой данные для инкапсуляции. Например, кодовое слово может разбито на относящуюся к данным часть, например, биты данных, и относящуюся к четности часть, например биты четности. Например, данные для инкапсуляции могут содержаться в битах данных. Одним из способов формирования кодового слова является формирование относящейся к данным части и вычисление битов четности из относящейся к данным части. Например, вектор данных с битами данных может быть матрицей, умноженной на матрицу четности для получения битов четности или даже полного кодового слова. Кодовое слово может быть получено путем объединения данных для инкапсуляции и битов четности. Например, относящаяся к данным часть и относящаяся к четности часть могут быть конкатенированы, хотя для создания действительного кодового слова согласно соответствующему коду с исправлением ошибок может быть использована любая перестановка битов данных и битов четности. Например, биты данных и биты четности могут чередоваться. Следует отметить, что данные согласования, как правило, вычисляют на одном 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
Что интересно, кодовое слово формируют независимо от первого закрытого ключа, первого открытого ключа, второго закрытого ключа и второго открытого ключа. Из-за этого протокол имеет повышенную устойчивость к активным атакам. У злоумышленника меньше возможностей влиять на общий ключ, поскольку он не может влиять на ключ путем подбора первого и второго закрытых ключей.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
Второе устройство 350 содержит генератор 380 надежных битов и генератор 385 данных согласования. Генератор 380 надежных битов выполнен с возможностью применения функции надежных битов ко второму необработанному общему ключу (K*) для получения надежных индексов и надежных битов, выводимых из указанных коэффициентов. Надежные индексы указывают коэффициенты необработанного общего ключа. Например, генератор 380 надежных битов может определять, какие коэффициенты в необработанном ключе близки к границе выборки, а какие нет. Например, коэффициенты в необработанном ключе, которые находятся в пределах порогового значения от границы выборки, могут быть отброшены как ненадежные. Остальные, надежные, коэффициенты могут быть указаны надежными индексами. Надежные биты могут быть получены выборкой из надежных коэффициентов.The
В случае, если осталось недостаточно надежных коэффициентов, существуют несколько возможностей, например, завершение протокола, перезапуск протокола с новым первым и/или вторым закрытым ключом и/или новым открытым объектом, вывод более короткого ключа или отбрасывание меньшего количества коэффициентов. Вместо выбора всех коэффициентов в пределах порогового значения можно также выбрать заданное количество коэффициентов, например, мю коэффициентов, и выбрать наиболее надежные коэффициенты, например, первые мю наиболее надежных коэффициентов.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.
Один способ реализации надежных битов заключается во взятии одного или более, скажем, , старших значимых битов коэффициентов. Например, количество надежных битов в пересчете на выбранные коэффициенты может быть, скажем, 1 или 2. В некоторых вариантах реализации, например, когда используют большие полиномы или матрицы, количество коэффициентов большое, что делает возможным высокую надежность, например низкое значение для . Для других вариантов реализации, например для устройств IoT, для могут быть использованы более крупные значения. Вычисления в конечном кольце могут быть выполнены в конечном кольце целых чисел по модулю степени 2. Преимущество последнего варианта заключается в более равномерном распределении надежных битов.One way to implement reliable bits is to take one or more, say, , 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 . For other implementations, such as IoT devices, for larger values may be used. Calculations in a finite ring can be performed on a finite ring of integers modulo
Генератор 385 данных согласования выполнен с возможностью формирования данных (h) согласования для указанных коэффициентов необработанного общего ключа. Данные согласования содержат информацию, позволяющую уменьшить различия между первым и вторым необработанными ключами, выведенными на первом и втором устройстве. Например, применение данных согласования может привести к уменьшению разности, например, расстояния Ли, между коэффициентом необработанных ключей на первом и втором устройствах, и тем самым к увеличению вероятности создания одного и того же надежного бита обоими устройствами. Как биты четности в кодовом слове, так и данные согласования служат для уменьшения шума, однако, биты четности вычисляют на множестве битов данных, тогда как данные согласования вычисляют на коэффициентах в необработанном общем ключе. Данные согласования дополнительно повышают надежность надежных битов.The
Один способ реализации данных согласования заключается во взятии одного или более, скажем, , битов коэффициентов, которые следуют за битами, взятыми в качестве надежных битов. Например, это могут быть битов, которые следуют за битами по значимости. Например, количество битов согласования в пересчете на выбранные коэффициенты может быть, скажем, 1 или 2. Преимущество меньшего количества битов согласования заключается в уменьшении служебных данных связи. Хотя возможно большее количество битов согласования..One way to implement match data is to take one or more, say, , coefficient bits that follow the bits taken as reliable bits. For example, these may be bits that follow 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
Следует отметить, что инкапсуляцию применяют к целому кодовому слову, содержащему биты данных и биты четности, а не просто к битам четности. Кроме того, инкапсуляцию применяют к сформированным данным, например, сообщению, ключу, предварительному ключу и т.д., а не к данным, выведенным из одного или более из первого или второго открытых или закрытых ключей.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
Первое устройство 300 содержит блок 340 декапсуляции, выполненный с возможностью декапсуляции инкапсулированных данных (c) с получением почти кодового слова с использованием надежных битов. Причина, по которой кодовое слово второго устройства не может быть получено непосредственно, состоит в том, что даже при надежных битах и согласовании все равно между необработанными ключами могут оставаться различия, которые не разрешены. Первое устройство 300 содержит средство 320 исправления ошибок, которое выполнено с возможностью применения функции исправления ошибок к почти кодовому слову с получением кодового слова.The
Наконец, кодовое слово может быть декодировано, например, для получения относящейся к данным части, и тем самым получения сообщения (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.
Ниже приведен небольшой, но наглядный пример для надежности и согласования. Пусть и . Запишем коэффициенты в виде пяти битовых последовательностей со старшими значащими битами слева. Например, в варианте реализации второе устройство может отбросить коэффициенты 00000, 00001, 01110, 01111, 10000, 10001, 11110 и 11111, поскольку лишь небольшое сложение с такими коэффициентами или вычитание из них приведет к смене на противоположный старшего значимого бита.Below is a small but illustrative example for reliability and consistency. Let and . 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
- обмен (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
- обмен (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
Как очевидно специалисту в данной области, возможны множество разных путей исполнения этих способов. Например, этапы могут быть выполнены в указанном порядке, однако порядок этапов может также меняться, или некоторые этапы могут быть выполнены параллельно. Кроме того, между этапами могут быть введены другие этапы способа. Введенные этапы могут представлять собой усовершенствования способа, такие как описанные в настоящем документе, или могут не иметь отношения к способу. Например, некоторые части могут быть исполнены, по меньшей мере частично, параллельно. Кроме того, данная часть может быть не завершена полностью до начала следующего этапа.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-
На Фиг. 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
Например, в варианте реализации процессорная система 1140, например, устройство выработки общего ключа или устройство шифрования или расшифрования с открытым ключом могут содержать схему процессора и схему памяти, причем процессор выполнен с возможностью исполнения программного обеспечения, хранящегося в схеме памяти. Например, схема процессора может представлять собой процессор Intel Core i7, ARM Cortex-R8 и т.д. В варианте реализации схема процессора может представлять собой ARM Cortex M0. Схема памяти может быть схемой ПЗУ или энергонезависимой памяти, например, флэш-памяти. Схема памяти может быть схемой энергозависимой памяти, например, СОЗУ. В последнем случае устройство может содержать энергонезависимый программный интерфейс, например, жесткий диск, сетевой интерфейс и т.д., выполненный с возможностью снабжения программным обеспечением.For example, in an embodiment, the
Следующие пронумерованные пункты не являются формулой изобретения, а содержат предлагаемые варианты реализации. Заявитель настоящим уведомляет о том, что к таким пунктам и/или сочетаниям таких пунктов и/или признаков, взятых из описания или формулы изобретения, могут быть сформулированы новые пункты, например, во время судебного процесса по настоящей заявке или по любой дальнейшей заявке, полученной из нее.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 *
Claims (57)
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)
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)
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)
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 |