Научная статья на тему 'КЛЕПТОГРАФИЧЕСКИЕ (АЛГОРИТМИЧЕСКИЕ) ЗАКЛАДКИ В ГЕНЕРАТОРЕ КЛЮЧЕЙ RSA'

КЛЕПТОГРАФИЧЕСКИЕ (АЛГОРИТМИЧЕСКИЕ) ЗАКЛАДКИ В ГЕНЕРАТОРЕ КЛЮЧЕЙ RSA Текст научной статьи по специальности «Математика»

CC BY
241
39
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
RSA / КЛЕПТОГРАФИЯ / АЛГОРИТМИЧЕСКАЯ ЗАКЛАДКА / ЛАЗЕЙКА / КЛЕПТОГРАФИЧЕСКАЯ ЗАКЛАДКА / БЭКДОР

Аннотация научной статьи по математике, автор научной работы — Маркелова Александра Викторовна

Рассмотрены основные виды алгоритмических закладок. Представлен способ построения асимметричных клептографических закладок в генераторе ключей RSA, позволяющий владельцу ключа закладки (разработчику или авторизованной спецслужбе) получать доступ к пользовательскому ключу, сгенерированному инфицированным алгоритмом. Сформулированы теоремы, иллюстрирующие работоспособность описанных алгоритмов, оценена вычислительная сложность этих алгоритмов. Продемонстрирована стойкость построенных закладок к некоторым классам атак даже при условии, что противник знает используемые методы и имеет доступ к исходному коду ключевого генератора.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

KLEPTOGRAPHIC (ALGORITHMIC) BACKDOORS IN THE RSA KEY GENERATOR

The main types of algorithmic bookmarks are considered. A method for constructing asymmetric kleptographic bookmarks in the RSA key generator is presented, which allows the owner of the bookmark key (the developer or an authorized intelligence agency) to access a user key generated by an infected algorithm. Theorems illustrating the performance of the described algorithms are formulated, and the computational complexity of these algorithms is estimated. The resistance of the built tabs to some classes of attacks is demonstrated even if the adversary knows the methods used and has access to the source code of the key generator.

Текст научной работы на тему «КЛЕПТОГРАФИЧЕСКИЕ (АЛГОРИТМИЧЕСКИЕ) ЗАКЛАДКИ В ГЕНЕРАТОРЕ КЛЮЧЕЙ RSA»

2022

Математические методы криптографии

№ SS

МАТЕМАТИЧЕСКИЕ МЕТОДЫ КРИПТОГРАФИИ

КЛЕПТОГРАФИЧЕСКИЕ (АЛГОРИТМИЧЕСКИЕ) ЗАКЛАДКИ В ГЕНЕРАТОРЕ КЛЮЧЕЙ RSA

А. В. Маркелова

Рассмотрены основные виды алгоритмических закладок. Представлен способ построения асимметричных клептографических закладок в генераторе ключей RSA, позволяющий владельцу ключа закладки (разработчику или авторизованной спецслужбе) получать доступ к пользовательскому ключу, сгенерированному инфицированным алгоритмом. Сформулированы теоремы, иллюстрирующие работоспособность описанных алгоритмов, оценена вычислительная сложность этих алгоритмов. Продемонстрирована стойкость построенных закладок к некоторым классам атак даже при условии, что противник знает используемые методы и имеет доступ к исходному коду ключевого генератора.

Ключевые слова: RSA, клептография, алгоритмическая закладка, лазейка, клептографическая закладка, бэкдор.

KLEPTOGRAPHIC (ALGORITHMIC) BACKDOORS IN THE RSA KEY GENERATOR

A. V. Markelova Science and Technology Center "AlphaProject", Moscow, Russia

A cryptographic (algorithmic) backdoor is the ability of the backdoor key owner to gain an unauthorized access to user's secret information embedded in the cryptoalgo-rithm. There are two independent classifications of backdoors: by the level of cryptographic strength (weak, symmetric, asymmetric backdoor) and by the method of implementing undeclared capabilities (based on covert channel or on implicit weakening of the cryptoalgorithm). We present examples of each type of backdoor and discuss a method for constructing an asymmetric backdoor based on an implicit weakening of the algorithm in the RSA key generator. Let it be required to generate a public module of the RSA key n = pq, \n\ = L. We will generate such prime numbers that |p| = \q\ = L/2. Let D be the backdoor parameter, |D| = K; ID is the identifier of the generator instance; i is the key generation counter; фs(a,ID,i) is a one-way (trapdoor) function with the trapdoor s on the first argument. Let (a,D) = 1 and

УДК 519.7

DOI 10.17223/20710410/55/2

ООО «НТЦ Альфа-Проект», г. Москва, Россия E-mail: a@safe-crypto.ru

min{r : r ^ r0; (rD + a) is prime}, if r<2L/2 K and rD + a<2L/2; 0, otherwise.

Let's choose the function R(x,y,z,i) and define r|D(a, D) = r'(a,D,R(a,D,ID,i)). For any random ap e Z*D and r0 e Z, (2L/2-1)/D < r0 < 2L/2-K, the following values are uniquely determined:

P = rID(aP, D)D + ap, q = r'(^s(ap, ID, i)a-1 mod D, D, r0)D + фs(ap, ID, i)a-1 mod D.

At the same time, if r|D(■) = 0 and r'(-) = 0, then the numbers p and q are prime, |p| = |q| = L/2, |n| = |pq| e {L — 1,L}. If the numbers p and q are generated in this way, then, provided that the secret s is known, the public module n = pq can be factorized in polynomial time of the key length. Really, P = г\D(ф-1(п mod D,ID,i),D)D + ф- 1(n mod D, ID, i). This approach allows to develop a cryptographically strong key generator, even if the adversary knows the methods used and has access to the source code of the key generator. This allows us to use a backdoor generator even in open source systems. Cryptographic strength depends on the choice of algorithm parameters: in particular, on the level of cryptographic strength of the function фs(a, ID, i).

Keywords: RSA, kleptography, algorithmic backdoor, trapdoor, kleptographic backdoor, backdoor.

Введение

Алгоритмическая закладка — это заложенная в криптоалгоритм возможность получения неавторизованного доступа владельца ключа закладки к секретной пользовательской информации.

Клептографическая закладка — это преднамеренная модификация криптографического алгоритма (разработанного изначально без алгоритмической закладки) с целью получения неавторизованного доступа владельца ключа закладки к секретной пользовательской информации при сохранении достаточного уровня стойкости к атакам противника и полиномиальной неотличимости работы модифицированного алгоритма от работы исходного алгоритма.

В данной теме, к сожалению, не выработано единой терминологии: например, ряд авторов называет закладки такого вида лазейками («trapdoor» [1, 2]), когда требуется подчеркнуть их отличие от «обычных» закладок (бэкдоров, «backdoor» [3]), вносящих изменения в программное обеспечение или аппаратную платформу. Реализацию алгоритма с клептографической закладкой можно также назвать инфицированным алгоритмом [4].

Важно отметить, что подобные механизмы могут быть частью основной структуры алгоритма (как в случае DUAL_EC [5]) —в этом случае будем называть их алгоритмическими закладками — или они могут быть привнесены в существующие криптоалгоритмы (например, методами [1,2,6-8]. Закладки второго вида будем называть клептографическими, чтобы подчеркнуть их отличие от алгоритмических закладок общего вида — в данном случае мы пользуемся понятийным аппаратом Адама Янга и Моти Юнга, которые в 1996 г. ввели термин «клептография», означающий раздел криптографии, посвящённый изучению закладок (бэкдоров, лазеек) в криптоалгоритмах [1]. Можно считать, что клептографические закладки являются частным случаем алгоритмических.

В настоящей работе под «противником» будем понимать того нарушителя/злоумышленника, который не является участником (разработчиком или пользователем)

информационной системы, то есть в общем случае не знает ни ключа закладки, ни ключа какого-либо пользователя, ни особенностей реализации.

Заметим, что алгоритмические/клептографические закладки можно рассматривать как один из способов доступа авторизованных спецслужб к пользовательской информации. В такой трактовке алгоритмическая закладка является одним из инструментов системы оперативно-розысных мероприятий. Таким образом, владелец ключа закладки может быть как нарушителем (если это недобросовестный разработчик прикладного програмного обеспечения), так и честным участником системы — например, спецслужбой, чьей задачей как раз является использование данного ключа для проведения оперативно-розысных мероприятий.

Западные спецслужбы уже несколько десятилетий насаждают внедрение алгоритмических закладок в криптоалгоритмы и информационные системы, причём в последнее время это фактически является их официальной позицией. Изначально идеи базировались на депонировании ключа, как в случае с Clipper Chip [9], затем они трансформировались в концепцию «ответственного шифрования» («responsible encryption» [10]), а в последнее время спецслужбы всё чаще используют термин «исключительный доступ» («exceptional access» [11]).

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

Таким образом, данная тема давно вышла за рамки чисто теоретических исследований. Алгоритмические закладки проникают даже в международные криптографические стандарты. Самым ярким примером стал алгоритм генерации псевдослучайных чисел DUAL_EC, наличие закладки в котором на данный момент считается доказанным [5]. DUAL_EC вошёл в стандарт NIST [12] в 2006г. и просуществовал до 2015г., будучи внедрённым в ряд криптографических продуктов [13].

При невозможности стандартизировать инфицированную версию алгоритма её использование в программных реализациях может быть объяснено мерами по обфуска-ции кода или оптимизацией вычислений, что позволяет автору закладки скрыть факт её внедрения.

В открытых источниках описано немало случаев, когда западные спецслужбы внедряли те или иные закладки в пользовательское программное обеспечение и криптоалгоритмы [3, 9, 14, 15], но это относится к вопросам недекларированных возможностей и выходит за рамки нашего исследования.

Алгоритмические (и в частности, клептографические) закладки отличаются от недекларированных возможностей программного обеспечения тем, что они используют математическую структуру заражаемых алгоритмов и протоколов: выходные данные криптоалгоритма видоизменяются таким образом, что для стороннего наблюдателя результат неотличим от «честного» алгоритма, а владелец ключа закладки может вычислить какую-либо секретную пользовательскую информацию.

В п. 1 представлена классификация алгоритмических закладок по двум ключевым признакам: уровню стойкости и способу реализации недекларированных возможностей. В п. 2 приведены примеры каждого класса для генератора ключей RSA.

В п. 3 рассмотрен авторский метод построения асимметричной закладки на основе неявного ослабления алгоритма. Такие закладки являются стойкими к атакам противника (в том числе в предположении доступа противника к исходному коду генератора). Пункты 4-6 иллюстирируют этод метод конкретными вариантами встраивания лазеек в генератор ключей RSA.

Общая идея такой асимметричной закладки предложена автором в [16]. В настоящей работе даётся более детальное описание инфицированного алгоритма, приводится математическое обоснование его работоспособности и надёжности (теоремы 1-7), а также демонстрируется его место в обобщённой классификации закладок.

1. Виды клептографических закладок

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

Инфицированный криптоалгоритм должен обладать, как минимум, следующими свойствами:

— идентичностью инициализации: инфицированный и исходный алгоритмы работают на одних тех же входных данных (начальных условиях);

— структурной идентичностью результата: выходные данные инфицированного алгоритма имеют ту же структуру, что и у исходного алгоритма;

— функциональной идентичностью результата: выходные данные удовлетворяют тем же математическим соотношениям, которым должны удовлетворять выходные данные исходного алгоритма.

Дополнительные (опциональные) свойства инфицированного криптоалгоритма:

— статистическая идентичность результата: выходные данные инфицированного алгоритма статистически неотличимы от выходных данных исходного алгоритма;

— неотличимость среднего времени работы инфицированного криптоалгоритма от времени работы исходного криптоалгоритма.

В информационной системе с алгоритмической (клептографической) закладкой традиционно рассматривают три основные роли участников [4]: разработчик, пользователь и противник (злоумышленник).

В принятой терминологии [17, 18] пользователи могут быть внутренними нарушителями, а противник всегда является внешним нарушителем. То есть роль противника (злоумышленника) тождественна определяемой российской нормативно-правовой документацией роли внешнего нарушителя. Данное утверждение подтверждается и тем, что [18] определяет термины «внешний нарушитель» и «противник» как синонимы.

Далее, в соответствии с рекомендациями [18], будем использовать термин «противник», когда речь идёт о внешнем нарушителе. Под «внутренним нарушителем» будем подразумевать участников системы, выполняющих атаки на криптосистему со встроенной алгоритмической закладкой.

Принимая во внимание тенденции последних лет, ролевую модель можно видоизменить, добавив нового участника— спецслужбу — и ограничив уровень знания разработчика (производителя программного обеспечения или аппаратуры со встроенной реализацией криптоалгоритма) [19]: спецслужба, будучи автором закладки и владельцем её ключа, описывает производителю инфицированный алгоритм и, возможно, даёт какие-либо открытые данные, используемые этим алгоритмом. Для того чтобы не возникало смысловой путанницы между разработчиком (автором) алгоритма с закладкой и разработчиком соответствующего программного обеспечения, будем далее называть последнего производителем.

Разумеется, подобное расширение ролевой модели имеет смысл, если производитель не является автором закладки, а встраивает её в реализацию по указанию спецслужбы.

В [20] выделяют два вида противников:

— различительный противник (distinguishing adversary): его цель в том, чтобы отличить честную реализацию от инфицированной; различительная атака может либо выявлять отклонения реализации от эталонной (по времени работы, по статистическим характеристикам выхоных данных и т.п.), либо проверять наличие в реализации конкретного варианта клептографической закладки; в случаях, когда закладка официально встраивается в реализацию спецслужбой и документируется, различительная атака не имеет смысла;

— противник-криптоаналитик (cryptanalyzing adversary): его цель состоит в том, чтобы «сломать» безопасность данного устройства; это может включать нахождение секретного пользовательского ключа или данных, подделку подписи, вычисление ключа закладки и т. д.

По аналогии можем рассмотривать различительного нарушителя и нарушителя-криптоаналитика.

Нарушителем может быть практически любой участник системы, за исключением спецслужбы, если её действия по встраиванию закладок являются легальными в рамках информационной системы.

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

Пользователь может рассматриваться как нарушитель, причём его целью может быть как успешная различительная атака — то есть обнаружение факта инфицирования криптосистемы, так и получение ключа закладки для дальнейшего доступа к секретам других пользователей.

Резюмируя, выделим четыре основные роли в информационной системе с алгоритмической закладкой:

— спецслужба — владелец ключа закладки: обладает информацией о закладке, владеет ключом к закладке, не владеет секретным ключом пользователя, но может получить к нему полный или частичный доступ, используя ключ закладки;

— производитель — разработчик программного обеспечения и/или аппаратуры с реализацией инфицированного алгоритма: обладает информацией о закладке, не владеет ключом к закладке (если он не встроен в реализацию), не владеет секретным ключом пользователя;

— пользователь: не обладает (в общем случае) информацией о закладке, не владеет ключом закладки, владеет секретным ключом пользователя;

— противник: не обладает (в общем случае) информацией о закладке, не владеет ни ключом закладки, ни секретным ключом пользователя.

Алгоритмическая закладка (в частности, клептографическая), как и классическая программная закладка, реализует недекларируемую возможность: предоставляет доступ к секретным пользовательским данным при условии знания ключа закладки и особенностей её структуры. В зависимости от типа закладки доступ может быть предоставлен либо любому, кто знает о наличии закладки в реализации и о её структуре, либо только тому, кто дополнительно знает ключ закладки.

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

Слабые закладки являются бесключевыми. Единственный метод их защиты — сокрытие факта встраивания закладки и алгоритма её функционирования. Таким образом, если закладка обнаружена, то любой противник и/или внутренний нарушитель получает тот же доступ к пользовательским данным, что и спецслужба.

Симметричные и асимметричные закладки защищены с помощью соответственно симметричных и асимметричных ключей. В случае симметричной закладки ключ, необходимый для доступа к пользовательским данным, встроен в реализацию. Этот ключ участвует в защите скрытого канала или в механизме модификации криптоалгоритма. В случае асимметричной закладки ключ, встроенный в реализацию, не позволяет эффективно вычислить ключ доступа к закладке. Таким образом, асимметричные закладки могут быть использованы в реализациях с открытым исходным кодом — при этом доступ к закладке останется только у владельца ключа закладки (спецслужбы).

По способу реализации недекларированных возможностей можно выделить два вида закладок: на основе скрытых каналов и на основе неявного ослабления криптоалгоритма.

Скрытый канал — это непредусмотренный разработчиком коммуникационный канал, который может быть применён для нарушения политики безопасности [21]. Неде-кларированной возможностью в случае алгоритмической закладки на основе скрытого канала является передача автору закладки секретной пользовательской информации. При этом в качестве скрытого канала используется часть легально передаваемых по открытым каналам данных.

Для того чтобы скрытый канал реализовывал работу алгоритмической закладки, используется некоторая обратимая функция E. Пусть D = E-1 — обратная функция. В качестве E может быть выбрано как бесключевое обратимое преобразование (в том числе тождественное), так и симметричный или асимметричный шифр. Через скрытый канал передаётся сообщение m = E(x), где x — некоторая секретная информация пользователя.

Если E — бесключевое обратимое преобразование, то построенная алгоритмическая закладка является слабой. При этом x = D(m) может вычислить любой противник или внутренний нарушитель, получивший информацию о структуре закладки (то есть о функциях E и D).

Если функция E является симметричным или асимметричным шифром, то построена соответственно симметричная или асимметричная закладка. В этом случае ключ расшифрования для E позволяет эффективно вычислять D = E-1 и является ключом закладки. Владелец ключа закладки может вычислить x = D(m) и получить доступ к секретной пользовательской информации.

В алгоритмических закладках на основе неявного ослабления криптоалгоритма недекларированной возможностью является такая модификация базового алгоритма, которая позволяет вычислить какие-либо пользовательские данные на основе открытых данных. То есть при формальной структурной и функциональной идентичности результата выходные данные инфицированного алгоритма удовлетворяют каким-либо дополнительным соотношениям, на основе которых можно восстановить секретную информацию.

Отметим, что две описанные классификации — по уровню стойкости и по способу реализации недекларированных возможностей — являются независимыми, то есть в результате мы определили шесть видов закладок (см. таблицу в заключении). Далее рассмотрим закладки разных видов на примере генератора ключей RSA.

2. Клептографические закладки в генераторе RSA-ключей

Алгоритм RSA [22] широко известен, и мы не будем останавливаться на его описании. Напомним только вид RSA-ключей. Пусть p и q — большие простые числа, n = pq. Выбираются такие числа d и e, называемые соответственно закрытой и открытой экс-понентой, что

e ■ d = 1 (mod (p — 1)(q — 1)).

Пара чисел (e, n) является открытым ключом (известна всем участникам системы), а d — закрытым (является секретом пользователя). Очевидно, что для нахождения закрытого ключа d достаточно разложить n на простые множители. В общем случае эта задача является вычислительно трудной.

Рассмотрим такие закладки в генераторе ключей RSA, зависящие в некоторых случаях от секретного значения, называемого «ключом закладки», которые позволяют владельцу этого ключа разложить n на множители p и q за полиномиальное от длины ключа время, тогда как для любого стороннего наблюдателя факторизация n по-прежнему является вычислительно сложной задачей. Для слабых (бесключевых) закладок подразумевается, что для факторизации n достаточно знания о структуре закладки.

Подробный обзор методов построения закладок на основе скрытых каналов в генераторе ключей RSA дан в [23]. В качестве скрытого канала может быть использована открытая экспонента e или часть бит открытого модуля n [6-8].

Самым тривиальным примером бесключевой закладки на основе ослабления криптоалгоритма является использование детерминированного числа p. Детерминированность в данном случае означает, что простой делитель n выбирается без использования генератора псевдослучайных чисел, например может быть заранее задан список простых чисел. Второе простое число q при этом вырабатывается случайным образом.

Число p может быть также функцией от идентификатора ключевого генератора или ещё каких-либо открытых данных. Заметим, что построение таким методом асимметричной закладки невозможно, поскольку для взлома (то есть для факторизации n) требуется ровно та же функция, что и для генерации p.

Более сложным примером бесключевой закладки является закладка на основе уязвимости ROCA, обнаруженной в 2016-2017гг. в криптобиблиотеке RSALib компании «Infineon» [24, 25]. Исследования [25] показали, что все простые числа, вырабатываемые этой библиотекой, имеют вид

p = rp ■ M + (65537ap mod M). (1)

Числа rp и ap выбираются, судя по всему, случайно (по крайней мере, авторы исследования не выявили каких-либо закономерностей), а M задаётся как заранее известное произведение нескольких простых чисел. Авторы [25] провели успешную атаку на ключи RSA, выработанные подобным образом, и смогли взломать RSA-512 и RSA-1024, а также оценили возможность взлома для RSA-2048 и RSA-4096.

Невозможно однозначно утверждать, была ли подобная реализация следствием ошибки разработчиков (как математиков, предложивших алгоритм, так и программистов, реализовавших его) или это было намеренным ослаблением алгоритма для упрощения работы спецслужб. Тем не менее данный метод может рассматриваться в качестве примера слабой закладки.

Примером симметричной закладки на основе неявного ослабления алгоритма является закладка Андерсона [2], в которой генератор вырабатывает простые числа вида

p = rp • D + ap = r(Ap, D) • D + Ap, (2)

где D — секретное 200-битное число, называемое «ключом закладки»; Ap < y/D — 100-битные числа; (Ap,D) = 1; r(A,D) — функция от двух переменных, возвращающая 56-битное значение.

Как можно видеть, структура закладки Андерсона похожа на ROCA (хотя исторически, конечно, правильнее сказать, что структура (1) похожа на (2)), но взлом для противника, на первый взгляд, затруднён из-за использования ключа закладки. Однако в 1994 г. закладка Андерсона всё-таки была взломана [26]: было продемонстрировано, что противник может вычислить ключ закладки, получив всего 14 различных открытых ключей, выработанных с общим значением D.

Наибольший интерес представляют асимметричные закладки. Методы построения асимметричных закладок без скрытых каналов, впервые предложенные в [16], развивают идею, положенную в основу закладки Андерсона и ROCA. Далее эти методы рассмотрены подробнее и сформулированы теоремы, обосновывающие корректность работы модифицированных генераторов, возможность доступа к закладке для владельца ключей закладки и стойкость к атакам противника и внутреннего нарушителя.

3. Асимметричная закладка в генераторе RSA-ключей: общая идея

Пусть требуется выработать ключ RSA с длиной открытого модуля L бит. Обозначим битовую длину произвольного числа X как |X | при условии, что старший бит X равен 1, то есть 2W-1 ^ X < 2lXl.

Будем вырабатывать такие простые числа, что |p| = |q| = L/2. Пусть D — некоторый параметр лазейки, не обязательно секретный, |D| = K.

Для произвольных взаимно простых чисел a и D определим функцию

Íminjr : r ^ Го, (rD + a) —простое}, если r <

2 L/2-K

и rD + a< 2L/2, (3) 0 иначе.

То есть r1 (a, D,r0) —это наименьший (но больший r0) номер члена арифметической прогресии rD + a, являющегося простым числом. Для вычисления значения r'(a, D, r0) сначала задаётся r = r0, а затем r увеличивается на 1, пока число rD + a не окажется простым.

Так как (a, D) = 1, по теореме Дирихле [27] арифметическая прогрессия rD + a содержит бесконечно много простых чисел. При этом теоретически возможна ситуация, когда минимальное простое rD + a ^ 2L/2 или r ^ 2L/2-K. В этом случае считаем, что r'(a, D, r0) = 0.

Пусть ID — уникальный идентификатор, определённый для каждого экземпляра генератора, |ID| = m; i — счётчик генераций ключей. Выберем некоторую функцию

T(x, y, z, i) : ZK x ZK x Zm x N ^ Z^/2-K

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

+ T (x,y,z,i), (4)

и положим

"2 L/2-1

R(x,y,z,i) '

D

где [X] —верхняя целая часть, то есть X ^ [X] < X + 1.

Определим для произвольных взаимно простых чисел a и D

r|D(a, D) = r'(a, D, R(a, D, 1D, г)). (5)

Пусть VsO : Z*D x Zm x N ^ ZD —однонаправленная (односторонняя) по первому аргументу функция с секретом s. Генератор с лазейкой работает следующим образом. На первом шаге вырабатывается случайное число ap с условиями (ap, D) = 1, ap < D. На втором шаге вычисляются значения

rp = r(D(ap, D), p = rpD + ap, (6)

где г — монотонно увеличивающийся счётчик генераций ключа.

Если rp = 0, то алгоритм возвращается на первый шаг. Если реализация предусматривает использование фиксированной открытой экспоненты e, то дополнительно надо проверить, что (e,p — 1) = 1. При невыполнении этого условия необходимо вернуться на первый шаг.

На третьем шаге вычисляются значения

c = -0s(ap, 1D,i), aq = c • a-1 (mod D). (7)

Здесь и далее считаем, что в качестве значения по модулю выбирается наименьший положительный вычет.

На четвёртом шаге вырабатывается случайное число r0, |r01 = L/2 — K, и вычисляются значения

rq = r'(aq ,D,r0 ), q = rq D + aq. (8)

Если rq = 0 или (e, q — 1) = 1 (при использовании фиксированной открытой экспоненты), то четвёртый шаг повторяется.

Числа p и q — простые по определению функций (3) и (5). Значения d и e вырабатываются стандартными алгоритмами, n = pq — открытый RSA-модуль.

На основе описанного алгоритма можно сформулировать следующую теорему.

Теорема 1. Пусть требуется выработать ключ RSA. Пусть ID G Zm — идентификатор экземпляра генератора; г G N — счётчик генераций ключей; D G N — некоторое натуральное число, |D| = K; функции r'(a,D,r0) и rjD(a,D) определены формулами (3) и (5) соответственно; VsO : ZD x Zm x N ^ ZD —односторонняя по первому аргументу функция с секретом s. Тогда для любых случайных ap G ZD и r'0 G Z, (2l/2-1)/D < r0 < 2L/2-K, однозначно определены значения

p = rïï> (ap,D)D + ap (9)

q = r' (Vs(ap,/D,i)a-1 (mod D),D,r0) D + Vs(ap, 1D, i)a-1 (mod D).

При этом если r|D(ap, D) = 0 и r' (ap, 1D, i)a-1 (mod D), D, rO) = 0, то числа p и q являются простыми, |p| = |q| = L/2, |n| = |pq| G {L — 1,L} и сложность алгоритма генерации не превышает O(K3 + ФDsm + Cd) битовых операций, где ФDsm — сложность вычисления функции ; Cd — сложность вычисления значения функции rjD(ap,D).

Доказательство. Если r(D(ap,D) = 0 и r' (Vs(ap, ID, i)a-1 (mod D),D,r0) = 0, то однозначность вычисления и простота чисел p и q в (9) следуют из определения функций r'(a, D, r0) и r(D(a, D).

По формулам (3)-(5) получаем, что

/ .ч 2L/2-1

r(D(a, D) = r'(a, D, R(a, D, ID, i)) ^ R(a, D, ID, i) ^

D '

следовательно, p = r(D(ap, D)D + ap > 2L/2-1.

Поскольку r(D(ap,D) = 0, из определения (3) следует, что p = rD + a < 2L/2, то есть |p| = L/2. Условие |q| = L/2 следует из выбора r0.

Так как 2L/2-1 < p, q < 2L/2, то 2L-2 < pq < 2L, то есть |n| = |pq| G {L - 1,L}. Оценим сложность.

Для вычисления p требуется найти значение r(D(ap,D), для чего понадобится CD операций.

Обратный элемент a-1 (mod D) вычисляется с помощью расширенного алгоритма Евклида. Как показано в [28, гл. 4.5.3, следствие L], необходимое количество шагов деления не превышает O(K); битовая сложность каждого деления не превышает O(K2). Следовательно, получаем O(K3) операций.

Далее необходимо вычислить ^s(ap,ID,i) и произведение ^s(ap, ID, i)a-1 (mod D). Это в сумме потребует O(K3 + Ф^т) операций.

Вычисление функции r'(a, D,r0) быстрее, чем r(D(a, D), поскольку не требуется находить значение R(a, D, ID ,i). Следовательно, на построение q уйдёт не более чем O(K3 + ФDsm + CD) операций.

В итоге получаем общую оценку сложности O(K3 + ФDsm + Cd). ■

Отметим, что если |n| = L—1, то алгоритм возвращается на первый шаг и генерация простых чисел выполняется заново.

Рассмотрим, каким образом владелец ключа закладки может получить доступ к закрытому ключу пользователя. Для этого достаточно разложить n на простые множители. В общем случае факторизация является вычислительно сложной задачей, однако внедрённая закладка существенно упрощает вычисления.

В силу выбора p и q и условия (7) имеем n = pq = apaq = c (mod D). Поскольку владелец секрета s может обратить функцию то он может вычислить

ap = ^-\c,ID,i) = ф-\п mod D,ID,i).

После этого rp вычисляется по формуле (5), p = rpD + ap, q = n/p. Таким образом, доказана

Теорема 2. Пусть s — ключ лазейки, числа p и q выработаны по условиям теоремы 1 для некоторого D G N, |D| = K и n = pq. Тогда

p = r(D(Ф-1(п mod D, ID, i),D)D + ^-1(n mod D, ID, i).

Сложность алгоритма вычисления не превышает O(K3 + Cd + ФDS-lm), где ФDS-lm — сложность вычисления функции ф-1 при условии знания s; Cd — сложность вычисления значения r(D (ap, D).

Итак, знание ключа закладки действительно помогает восстановить закрытый ключ пользователя на основе знания открытого модуля n. Отметим, что если у владельца ключа закладки нет информации о текущем значении счётчика генераций, используемого в формуле (5), но при этом известно, что генератор вырабатывает небольшое количество ключей, то значения этого счётчика можно перебрать: необходимо

вычислять rp для различных г до тех пор, когда полученное значение p = rpD + ap окажется делителем n.

Если при взломе ключа нет возможности синхронизировать счётчик с ключевым генератором (т. е. владелец ключа закладки не может узнать, сколько ключей сгенерировано ранее данным генератором) и при этом генератор вырабатывает достаточно много значений, то можно использовать константное значение г (например, г = 0).

Стойкость закладки к атакам противника зависит от стойкости функции (но не сводится только к ней).

Стойкость (то есть возможность её обратить без знания секрета s) зависит, помимо непосредственно битовой длины s, от битовой длины первого аргумента и возвращаемого значения, то есть от битовой длины D. Выбор слишком маленького D может привести к взлому лазейки противником.

С другой стороны, слишком большие значения D сокращают возможное количество рассматриваемых кандидатов в простые. Например, в предельном случае, если битовый размер D равен размеру генерируемых простых чисел, то вычисление значения rD + ap может привести к превышению максимальной допустимой длины числа уже при r = 1 .

Вероятно, для RSA с длиной ключа L бит наиболее оптимальным является размер D порядка 3L/8, но данная оценка требует уточнения в каждом конкретном случае использования.

Мощность множества возможных пар простых чисел p и q при этом меньше, чем при «честной» генерации случайной пары простых чисел.

Во-первых, значение rp определяется однозначно для каждого фиксированного ap — то есть из каждой арифметической прогрессии rD + ap может быть выбрано ровно одно простое число, все остальные простые заведомо отсеиваются — ключевое множество сокращено. Для частичной компенсации этого эффекта в функцию R добавлена зависимость от идентификатора ключевого генератора (то есть общее множество возможных ключей для всех ключевых генераторов расширено) и от номера генерации (то есть даже при выработке одного и того же ap на разных шагах итоговые открытые модули не будут иметь общих делителей).

Во-вторых, значение aq тоже однозначно определяется из значения ap — то есть не любая пара простых чисел может быть выбрана в качестве p и q. Эта зависимость также отчасти компенсируется параметрами ID и г в функции Vs. Более того, случайный выбор r0 расширяет ключевое множество.

Даже без учёта счётчика генераций у каждого генератора есть <^(D) различных способов выбора ap. Если число D достаточно большое, то теоретическое снижение криптографической стойкости не обязательно приводит к упрощению взлома ключа противником. Стойкость к взлому противником должна отдельно оцениваться в каждом конкретном случае в зависимости от выбранных параметров закладки.

Построим функцию на основе задачи дискретного логарифмирования в произвольной циклической группе. Для простоты описания рассмотрим лазейку без учёта ID и счётика генераций.

Пусть G = (g) — конечная циклическая группа. Задачей дискретного логарифмирования в группе G называется нахождение для произвольного элемента a G G такого x G Z, что gx = a. Решением задачи Диффи — Хеллмана в группе G называется нахождение элемента gxy по известным элементам gx и gy без знания x и y. Будем рассматривать те группы G, в которых задачи дискретного логарифмирования и Диффи — Хеллмана являются вычислительно сложными.

Пусть задано некоторое отображение 7 : С ^ и 07 (а) = {д^ : 7(д^) = а} — множество прообразов элемента а Е при отображении 7. Требуется, чтобы мощность (а) была небольшой для любого а.

Зададим 5 = д« для некоторого секрета 5 и определим одностороннюю функцию с секретом следующим образом:

"(а) = 7(дС0), где а = 7(БС0). (10)

Очевидно, что в общем случае вычисление "«(а) является сложной задачей, поскольку определение с0 требует решения задачи дискретного логарифмирования. Но если изначально задать число а в виде 7(БС0), то и "«(а) вычисляется легко. То есть сначала нужно выбрать случайное С0, а потом уже вычислить а и "«(а). Поскольку выполнено соотношение

а = 7 (БС0 ) = 7 ) = 7 ((дС0 Г), (11)

то (дС0)« € (а). Если 7 является гомоморфизмом, то 7((дС0)«) = (7(дС0))«. Тогда для с = (а) выполнено

^-1(с) = ""^(а)) = а (= (7(дС0))« = ("«(а))« = с«.

В противном случае для с = "«(а) = 7(дС0) имеет место д^ = дС0 Е 07(с), то есть

""1(с) = ""1("«(а)) = а = 7((дС0)«) = 7(дП, где дг Е 07(с).

Таким образом, при знании секрета 5 функция " обратима. Одновременно с этим верна

Теорема 3. Пусть С = (д) — конечная циклическая группа, в которой задачи дискретного логарифмирования и Диффи — Хеллмана являются вычислительно сложными; 5 = д« для некоторого секрета 5 и "«(а) = 7(дС0), где а = 7(БС0) для некоторого случайного с0. Тогда:

1) для почти всех с (за исключением тривиальных) без знания 5 вычислительно трудно найти ""1(с);

2) при условии знания Б, с0, "«(а) вычислительно трудно найти 5.

Доказательство. Пусть с = 7(дС0). Предположим, что мы можем вычислить а = "-1(с) = 7(5С0) для произвольного с0.

Рассмотрим задачу Диффи — Хэллмана в группе С. Пусть заданы да и дь, требуется найти даЬ. Пусть 5 = а, с0 = Ь, тогда Б = да, с = 7(дС0) = 7(дь). По предположению, мы можем вычислить

а = ""1(с) = 7 (БС0 ) = 7 ((д")Ь) = 7(даЬ).

Поскольку по условиям выбора группы С и отображений 7 и #7(с) = {д^ : 7(д») = с} мощность #7 (с) является небольшой для любого с, перебор значений #7 (7(даЬ)) является быстрым — это даёт возможность найти даЬ.

Таким образом, мы свели решение задачи Диффи — Хеллмана к обращению функции а следовательно, вычисление "-1(с) без знания в является не менее сложной задачей, чем задача Диффи — Хеллмана в группе С. Поскольку по условию выбора группы С решение задачи Диффи — Хеллмана является вычислительно трудным, доказано первое утверждение теоремы.

Предположим теперь, что для заданных S, c0, фs(a) возможно вычислить s. Рассмотрим задачу дискретного логарифмирования по основанию g в группе G. Пусть требуется вычислить x, для которого X = gx.

Зададим S = X. Выберем случайное Со и вычислим a = 7(Sc0), ф3(а) = 7(gc0). По предположению, из этих данных возможно вычислить s, то есть найти такое значение s, что S = gs. Так как G = (g), то x = s.

Таким образом, второе утверждение теоремы следует из того, что по условию выбора группы G задача дискретного логарифмирования в ней является вычислительно сложной. ■

Итак, заданная соотношением (10) функция фs является однонаправленной для противника, то есть её обращение является вычислительно трудной задачей, что не позволяет противнику получить доступ к ключу закладки.

Далее рассмотрим конкретные примеры выбора группы G: мультипликативную группу конечного простого поля и подгруппу группы точек эллиптической кривой.

4. Асимметричные закладки в генераторе RSA-ключей на основе функции дискретного логарифмирования по простому модулю

Пусть D — простое число, g — первообразный корень по модулю D. Выберем ключ лазейки — число s, взаимно простое с (D — 1). Открытый ключ S = gs mod D встраивается в реализацию и не является секретом; S является элементом максимального порядка по модулю D.

Вариант 1. Определим функцию ф., следующим образом:

фз(а) = gc0 mod D, где а = Sc0 mod D. (12)

Фактически, это частный случай формулы (10) для G = ZD при y(x) = x, 6Y(x) = {x}.

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

Генератор работает так, как описано в п. 3. Теоремы 1 и 2 можно переформулировать следующим образом:

Теорема 4. Пусть требуется выработать ключ RSA. Пусть ID G Z^ — идентификатор экземпляра генератора; i G N — счётчик генераций ключей; D G N — простое число; |D| = K; g — первообразный корень по модулю D; функции r'(a, D,r0) и r(D (a,D) определены формулами (3) и (5) соответственно; s G ZD_ 1 — ключ закладки, S = gs mod D. Тогда для любых случайных c0 G ZD-1 и r0 G Z, (2L/2-1)/D < r0 < < 2l/2-K, однозначно определены значения

P = riD(Sc0 mod D, D)D + (Sc0 mod D), q = r'(gc0 ■ S-c0 mod D, D, r'0)D + (gc0 ■ S-c0 mod D).

При этом если r(D(Sc0 mod D, D) = 0 и r'(gc0 ■ S-c0 mod D, D, r0) = 0, то числа p и q являются простыми, |p| = |q| = L/2, |n| = |pq| G {L — 1,L} и сложность алгоритма генерации не превышает O(K3 + CD) битовых операций, где CD — сложность вычисления значения функции r(D(ap,D).

Теорема 5. Пусть s — ключ лазейки, числа p и q выработаны по условиям теоремы 4 для некоторого D G N, |D| = K и n = pq. Тогда

Р = r(D(ns mod D, D)D + (ns mod D).

Сложность алгоритма вычисления не превышает O(K3 + Cd), где Cd — сложность вычисления значения функции r(D(ap,D).

Доказательство обеих теорем тривиально, если заметить, что

ns = (gc0)s = Sc0 = p (mod D).

При реализации следует отсеивать тривиальные значения c0: 1, -1, (D — 1)/2. Вариант 2. Определим функцию ^ следующим образом:

(a) = gc0 mod D, где a0 = Sc0 mod D, a = g"0 mod D. (13)

Как и в варианте 1, число a сразу вырабатывается в виде (13), т. е сначала выбирается c0 — случайное целое число из интервала {2,..., D — 2}, c0 = (D — 1)/2, затем вычисляются a0 и a, после чего находится c = ^s(a) = gc0 mod D.

Так как выполнено соотношение a0 = Sc0 = gsc0 = (gc0)s = cs (mod D), то для c = ^s(a) имеет место -0-1(c) = ^-1(^s(a)) = a = g"0 = g(cS mod D) (mod D). Таким образом, владелец ключа лазейки может эффективно обращать функцию

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Итак, после выбора c0 и вычислений по формуле (13) генератор вычисляет

ap = g"0 (mod D), b0 = c0 — a0 (mod D — 1), aq = c ■ a-1 = gc0"a0 = gb0 (mod D).

Далее простые числа p и q вычисляются по формулам (6) и (8).

Владелец ключа лазейки осуществляет доступ к пользовательским ключам по формуле

ap

5. Асимметричная закладка в генераторе RSA-ключей на основе функции дискретного логарифмирования в группе точек эллиптической кривой

Пусть D — большое простое число. Рассмотрим эллиптическую кривую в форме Вейерштрасса

E : y2 = x3 + ax + b mod D). (14)

Пусть P — точка этой эллиптической кривой, имеющая порядок t, где t — большое простое число. Будем использовать кривую, состоящую ровно из t точек. Большая часть рассуждений остаётся верной, если порядок кривой больше t или если t является составным числом, однако мы вводим дополнительные ограничения для повышения стойкости алгоритма.

Для произвольной точки A эллиптической кривой E будем обозначать x-коорди-нату этой точки как Xg(A). Пусть O — нейтральная (нулевая) точка кривой E, то есть t ■ A = O для любой точки A.

Выберем ключ лазейки (число s < t) и вычислим точку S = s ■ P. Определим функцию ^ следующим образом:

^s(a) = xG(c0 ■ P), где a = xG(c0 ■ S). (15)

Очевидно, что функция ^s(a) определена не для всех a, но для построения лазейки это не имеет значения.

ap = g(n mod D)s mod D (mod D).

Данный вариант также является частным случаем лазейки, описанной в п. 3, с функцией фs, задаваемой формулой (10), для G = E при 7(X) = xG (X), (x) =

= {X, —X}.

Теоремы 1 и 2 можно переформулировать (конкретизировать для выбранных параметров) следующим образом:

Теорема 6. Пусть требуется выработать ключ RSA. Пусть ID G Z^ — идентификатор экземпляра генератора; i G N — счётчик генераций ключей; D G N — простое число; |D| = K; P — точка эллиптической кривой (14), имеющая порядок t, где t — большое простое число; функции r'(a, D,r0) и r|D(a,D) определены формулами (3) и (5) соответственно; s G Z^ — ключ закладки; S = sP.

Тогда для любых случайных c0 G Z^ и r0 G Z, (2L/2-1)/D < r'0 < 2L/2-K, однозначно определены следующие значения:

P = rlD (xg(C0S ),D)D + xG(c0 S), q = r' (xG(c0S)-1 ■ xG(c0P) (mod D),D, r'0) D + (xG(c0S)-1 ■ xG(^P) (mod D)).

При этом если r(D(xG(c0S),D) = 0 и r'(xG(c0S)-1 ■ xG(c0P) (mod D),D,r'0) = 0, то числа p и q являются простыми, |p| = |q| = L/2, |n| = |pq| G {L — 1,L} и сложность алгоритма генерации не превышает O(K3 + Cd + CPt) битовых операций, где CD — сложность вычисления значения функции r(D(ap, D); CPt — сложность вычисления кратной точки.

Пусть функция 0(x) : ZD ^ E возвращает точку на кривой E с заданной x-коор-динатой. Заметим, что точек с заданной x-координатой x0 либо не существует, либо ровно две (возможно, совпадающие): Q1 = (x0,y1) и Q2 = (x0,y2). При этом Q1 = — Q2, то есть y1 = —y2 (mod D).

Если рассматривать наименьшие положительные вычеты, то либо y1 = y2 = 0 (т. е. Q1 = Q2), либо ровно одно из чисел y1,y2 принадлежит диапазону {1,... , (D — 1)/2}. То есть можно однозначно определить ©(x) следующим образом:

6(xo) iQ =(x0,y0), 0 ^ y0 ^ (D — 1)/2,

1 O, если такой точки не существует.

Теорема 7. Пусть s — ключ лазейки, числа p и q выработаны по условиям теоремы 6 для некоторого D G N, |D| = K и n = pq. Тогда

p = r(D(xG(s ■ ©(n mod D)), D)D + xG(s ■ 6(n mod D)).

Сложность алгоритма вычисления не превышает O(K3 + CD + CPt), где Cd — сложность вычисления значения функции r(D(ap, D); CPt — сложность вычисления кратной точки.

Доказательства теорем 6 и 7 тривиальны. Подробно вычисления объяснены в [16]. Отметим, что 9y(n mod D) = {©(n mod D), —©(n mod D)}. В общем случае нужно было бы вычислить два кандидата в простые делители: p0 и p1 , а затем в качестве p выбирать тот из них, который является делителем открытого модуля n. Однако нетрудно заметить, что s ■ ©(n mod D) = — (s(—©(n mod D))), а следовательно,

xG(s ■ ©(n mod D)) = xG (s(—©(n mod D))),

то есть p0 = p1. Таким образом, кандидаты в простые делители совпадают. Стойкость функции фб; к атакам противника следует из теоремы 3.

6. Асимметричная закладка, аналогичная ROCA

Рассмотрим ещё один вариант закладки. Его структура обобщает вид (1) простых чисел, генерируемых в библиотеке RSALib, подверженной уязвимости ROCA [25].

k

„a¿

Пусть D = П p^1, где p^ — небольшие простые. Отметим, что генерация чисел ви-

г=1

да (6) и (8) для составного D позволяет исключить из рассмотрения составные числа, делящиеся на все p^. Например, если D — чётное, то количество кандидатов в простые числа сокращается вдвое.

При этом необходимо, чтобы (ap,D) = 1, иначе все числа вида (6) будут составными. Кроме того, поскольку aq также должно быть взаимно просто с D, необходимо проверить, что (c, D) = 1, где c берётся из формулы (7). Для того чтобы избежать проверок (ap, D) = (c, D) = 1, изменим общий вид простых чисел.

Пусть g — элемент максимального порядка по модулю D. Для поиска такого элемента достаточно выбрать первообразные корни g1,... , gm по модулям p^1,... , p^T, а затем решить систему

x = g1 (mod p^1), x = gm (mod pmm).

Поскольку модули взаимно просты, система имеет решение по китайской теореме об остатках:

x = g (mod p^1 ■ ... ■ pm).

Так как порядок каждого элемента gi максимален по соответствующему модулю pi, то и порядок g максимален по модулю D и равен A(D), где A(D) = НОК^^^1), ... , A(pmm)) — функция Кармайкла.

Генератор вырабатывает простые числа вида

p = rpD + g"p, q = rq D + g"q, (16)

где ap, aq < D; rp, rq задаются по аналогии с формулами (6) и (8).

Мы рассматривали подобный вид простых в п. 4 во втором варианте лазейки, но для простого числа D.

Внедрение закладки похоже на описанный ранее вариант. Пусть есть односторонняя функция с секретом s. Сначала выбирается число ap, для которого затем вычисляются

c = ^(ap), aq = c — ap (mod A(D)), rp = rg>(g"p,D), rq = r'(g"q,D,r0),

где функции r(D и r' определены, как и раньше, формулами (3) и (5), r'0 выбирается случайно с условием (2L/2-1)/D < r0 < 2L/2-K. Если какое-то из значений rp и rq оказалось равным 0, то необходимо вернуться на первый шаг алгоритма, к выбору ap.

Числа p и q, вычисленные по формулам (16), являются простыми по определению функций r|D и r'. При этом

n = gc (mod D).

Это условие равносильно системе

n = gC (mod p^1),

n = gm(mod pmm).

Поскольку все р небольшие, то можно решить каждое из уравнений системы (17), после чего найти с по китайской теореме об остатках (решение гарантированно существует по построению).

Далее владелец ключа в может обратить ф3, то есть вычислить ар = ф-1(с), а затем Гр, р и q. В качестве функции ф3 можно использовать формулы (12) и (15).

Подобный генератор снижает мощность множества возможных пар простых чисел р и q, поскольку мультипликативная группа вычетов по модулю составного О не является циклической, а значит, не все простые числа могут быть представлены в виде (16) для фиксированных О и д. Тем не менее при больших О ключевое множество остаётся достаточно большим, при этом использование составного О позволяет увеличить скорость работы ключевого генератора.

Нетрудно заметить, что вид чисел (1) в библиотеке КБАЫЬ фактически повторяет вид (16). Однако использование числа 65537 вместо элемента д максимального порядка существенно снижает стойкость генератора к атакам противника. Именно благодаря этому генератор оказался подвержен атаке Копперсмита.

Заключение

Классифицированы алгоритмические (в частности, клептографические) закладки по способу реализации недекларированных возможностей и по уровню стойкости, выделены шесть основных классов закладок. Для каждого класса в п. 2 приведены примеры практического построения закладок (таблица); подробно рассмотрен самый значимый класс — асимметричные закладки на основе неявного ослабления алгоритма.

Классы алгоритмических закладок

Классы закладок Слабые Симметричные Асимметричные

На основе скрытых каналов — Закладка Крепо — Слакмона HSD [8] — Закладка Крепо — Слакмона HSPE [8] — Скрытый канал в старших/младших битах [6, 7] — PAP (Pretty-Awful-Privacy) [29] — и другие...

При условии использования бесключевой обратимой функции преобразования сообщения При условии использования симметричного криптографического преобразования сообщения При условии использования асимметричного криптографического преобразования сообщения

На основе неявного ослабления алгоритма — Фиксированное р — ИОСА [25] Закладка Андерсона [2] Закладки Маркеловой [16]

При рассмотрении закладок, базирующихся на идеях Р. Андерсона, возникает вопрос о количестве простых чисел вида (1), (2), (6), (16). По теореме Дирихле, в арифметической прогрессии содержится бесконечно много простых чисел, но строгие оценки наименьшего простого в арифметической прогрессии (теорема Линника [30]), а также количества простых чисел в арифметической прогрессии на заданном интервале (аналог теоремы о распределении простых чисел [27]) на данный момент слишком неточны, поэтому на их основе сложно получить аналитическую оценку времени работы ключевого генератора с закладкой.

Для экспериментальной оценки возможности практической реализации описанных закладок (в том числе на малоресурсных платформах) была сделана модификация генератора ключей RSA российской смарт-карточной ОС «Вигрид». Численные эксперименты проводились на аппаратном эмуляторе платформы P5CC081. В результате

получено, что генератор с закладкой Андерсона работает в среднем то же время, что и неоптимизированный генератор без закладки. Генератор с уязвимостью ROCA работает в среднем в 2 раза быстрее, чем генератор без закладки. Описанный в п. 6 генератор с асимметричной закладкой работает то же время, что и генератор с уязвимостью ROCA.

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

Можно сделать вывод, что описанные варианты лазеек эффективны и могут использоваться в малоресурсных устройствах (таких, как смарт-карты, usb-токены, устройства интернета вещей). Кроме того, поскольку эти закладки являются асимметричными, то их можно применять в системах с открытым исходным кодом.

ЛИТЕРАТУРА

1. Young A. and Yung M. Kleptography: using cryptography against cryptography // EUROCRYPT'97. LNCS. 1998. V. 1233. P. 62-74.

2. Anderson R. J. Practical RSA trapdoor // Electronics Lett. 1993. V.29. No. 11. P. 995.

3. FBI 'planted backdoor' in OpenBSD. 2010. https://www.theregister.com/2010/12/15/ openbsd\_backdoor\_claim.

4. Жуков А. Е. Криптосистемы со встроенными лазейками // BYTE/Россия. 2007. №2. С. 45-51.

5. Bernstein D. J., Lange T., and Niederhagen R. Dual EC: A standardized back door // The New Codebreakers. LNCS. 2016. V.9100. P. 256-281.

6. Desmedt Y. Abuses in cryptography and how to fight them // LNCS. 1990. V. 403. P. 375-389.

7. Lenstra A. K. Generating RSA moduli with a predetermined portion // LNCS. 1998. V. 1514. P. 1-10.

8. Crepeau C. and Slakmon A. Simple backdoors for RSA key generation // LNCS. 2003. V. 2612. P. 403-416.

9. Blaze M. Protocol failure in the Escrowed Encryption Standard // Proc. CCS'94. 1994. http: //www.mattblaze.org/papers/eesproto.pdf.

10. Deputy Attorney General Rod J. Rosenstein Delivers Remarks on Encryption at the United States Naval Academ. Annapolis, MD, October 10, 2017. https://www.justice. gov/opa/speech/deputy-attorney-general-rod-j-rosenstein-delivers-remarks-encryption-united-states-naval.

11. Levy I. and Robinson C. Principles for a More Informed Exceptional Access Debate. 2018. https://www.lawfareblog.com/principles-more-informed-exceptional-access-debate.

12. Barker E. and Kelsey J. NIST Special Publication 800-90. Recommendation for Random Number Generation Using Deterministic Random Bit Generators. June 2006. https:// nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-90.pdf.

13. Menn J. Exclusive: Secret contract tied NSA and security industry pioneer. December 21, 2013. https://www.reuters.com/article/us-usa-security-rsa/exclusive-secret-contract-tied-nsa-and-security-industry-pioneer-idUSBRE9BJ1C220131220.

14. Thomson K. Reflection on trusting trust // Comm. ACM. 1984. V. 27. No. 8. P. 761-763.

15. Schneier B. Evaluating the GCHQ Exceptional Access Proposal. January 17, 2019. https: //www.lawfareblog.com/evaluating-gchq- exceptional-access-proposal.

16. Markelova A. V. Embedding asymmetric backdoors into the RSA key generator //J. Computer Virology Hacking Techniques. 2021. No. 17. P. 37-46.

17. Методический документ. Методика определения угроз безопасности информации. Утвержден ФСТЭК России 5 февраля 2021 г.

18. Словарь криптографических терминов / под ред. Б. А. Погорелова, В.Н. Сачкова. М.: Изд-во МЦМНО, 2006.

19. Жуков А. Е., Маркелова А. В. Криптография и клептография: скрытые каналы и лазейки в криптоалгоритмах // Информационная безопасность. 2019. №1. C. 36-41.

20. Young A. and Yung M. Malicious Cryptography. Exposing Cryptovirology. Wiley Publ., 2004. 392 p.

21. ГОСТ Р 53113.1-2008. Информационная технология. Защита информационных технологий и автоматизированных систем от угроз информационной безопасности, реализуемых с использованием скрытых каналов. Ч. 1. Общие положения. М.: Стандартинформ, 2018.

22. Rivest R. L., Shamir A., and Adleman L. M. A method for obtaining digital signatures and public-key cryptosystems // Comm. ACM. 1978. V.21. P. 120-126.

23. Жуков А. Е., Маркелова А. В. Криптография и клептография. Скрытые каналы и клеп-тографические закладки на их основе в криптосистеме RSA // Защита информации. Инсайд. 2020. №2(92). C. 58-67.

24. Svenda P., Nemec M., Sekan P., et al. The million-key question — investigating the origins of RSA public keys // Proc. 25th USENIX Security'16. USENIX Association, 2016. P. 893-910.

25. Nemec M., Sys M., Svenda P., et al. The return of Coppersmith's attack: Practical factorization of widely used RSA moduli // Proc. CCS'17. ACM, 2017. P. 1631-1648.

26. Kaliski B. S. Anderson's RSA trapdoor can be broken // Electronics Lett. 1993. V. 29. No. 15. P. 1387.

27. Дэвенпорт Г. Мультипликативная теория чисел. М.: Наука, 1971. 200с.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

28. Кнут Д. Искусство программированя. Т. 2. Получисленные алгоритмы. 3-е изд. М.: Ви-льямс, 2001. 832 с.

29. Young A. and Yung M. The dark side of black-box cryptography // CRYPTO'96. LNCS. 1997. V. 1109. P. 89-103.

30. Linnik Yu. V. On the least prime in an arithmetic progression I. The basic theorem // Матем. сб. 1944. Т. 15(57). №2. С. 139-178.

REFERENCES

1. Young A. and Yung M. Kleptography: using cryptography against cryptography. EUROCRYPT'97, LNCS, 1998, vol. 1233, pp. 62-74.

2. Anderson R. J. Practical RSA trapdoor. Electronics Lett., 1993, vol. 29, no. 11, pp. 995.

3. FBI 'planted backdoor' in OpenBSD. 2010. https://www.theregister.com/2010/12/15/ openbsd\_backdoor\_claim.

4. Zhukov A. E. Kriptosistemy so vstroennymi lazeykami [Cryptosystems with built-in trapdoors]. BYTE/Russia, 2007, no. 2, pp. 45-51. (in Russian)

5. Bernstein D. J., Lange T., and Niederhagen R. Dual EC: A standardized back door. The New Codebreakers, LNCS, 2016, vol.9100, pp.256-281.

6. Desmedt Y. Abuses in cryptography and how to fight them. LNCS, 1990, vol. 403, pp. 375-389.

7. Lenstra A. K. Generating RSA moduli with a predetermined portion. LNCS, 1998, vol. 1514, pp. 1-10.

8. Crepeau C. and Slakmon A. Simple backdoors for RSA key generation. LNCS, 2003, vol. 2612, pp. 403-416.

9. Blaze M. Protocol failure in the Escrowed Encryption Standard. Proc. CCS'94, 1994, http: //www.mattblaze.org/papers/eesproto.pdf.

10. Deputy Attorney General Rod J. Rosenstein Delivers Remarks on Encryption at the United States Naval Academ. Annapolis, MD, October 10, 2017, https://www.justice. gov/opa/speech/deputy-attorney-general-rod-j-rosenstein-delivers-remarks-encryption-united-states-naval.

11. Levy I. and Robinson C. Principles for a More Informed Exceptional Access Debate. 2018, https://www.lawfareblog.com/principles-more-informed-exceptional-access-debate.

12. Barker E. and Kelsey J. NIST Special Publication 800-90. Recommendation for Random Number Generation Using Deterministic Random Bit Generators. June 2006, https:// nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-90.pdf.

13. Menn J. Exclusive: Secret contract tied NSA and security industry pioneer. December 21, 2013, https://www.reuters.com/article/us-usa-security-rsa/exclusive-secret-contract-tied-nsa-and-security-industry-pioneer-idUSBRE9BJ1C220131220.

14. Thomson K. Reflection on trusting trust. Comm. ACM, 1984, vol. 27, no. 8, pp. 761-763.

15. Schneier B. Evaluating the GCHQ Exceptional Access Proposal. January 17, 2019, https: //www.lawfareblog.com/evaluating-gchq- exceptional-access-proposal.

16. Markelova A. V. Embedding asymmetric backdoors into the RSA key generator. J. Computer Virology Hacking Techniques, 2021, no. 17, pp. 37-46.

17. Metodicheskiy dokument. Metodika opredeleniya ugroz bezopasnosti informatsii [Methodical Document. Methodology for Determining Threats to Information Security]. Approved by the FSTEC of Russia on February 5, 2021. (in Russian)

18. Slovar' kriptograficheskikh terminov [Dictionary of Cryptographic Terms]. B. A. Pogorelov and V.N. Sachkov (eds.), Moscow, MCCME Publ., 2006. (in Russian)

19. Zhukov A. E. and Markelova A. V. Kriptografiya i kleptografiya: skrytye kanaly i lazeyki v kriptoalgoritmakh [Cryptography and kleptography: hidden channels and trapdoors in cryptoalgorithms]. Informatsionnaya Bezopasnost', 2019, no. 1, pp. 36-41. (in Russian)

20. Young A. and Yung M. Malicious Cryptography. Exposing Cryptovirology. Wiley Publ., 2004, 392 p.

21. GOST R 53113.1-2008. Informatsionnaya tekhnologiya. Zashchita informatsionnykh tekhnologiy i avtomatizirovannykh sistem ot ugroz informatsionnoy bezopasnosti, realizuemykh s ispol'zovaniem skrytykh kanalov. Ch. 1. Obshchie polozheniya [GOST R 53113.1-2008. Information Technology. Protection of Information Technologies and Automated Systems from Information Security Threats Implemented using Covert Channels. P. 1. General Principles]. Moscow, Standartinform Publ., 2018. (in Russian)

22. Rivest R. L., Shamir A., and Adleman L. M. A method for obtaining digital signatures and public-key cryptosystems. Comm. ACM, 1978, vol. 21, pp. 120-126.

23. Zhukov A. E. and Markelova A. V. Kriptografiya i kleptografiya. Skrytye kanaly i kleptograficheskie zakladki na ikh osnove v kriptosisteme RSA [Cryptography and kleptography. Covert channels and kleptographic backdoors based on them in the RSA cryptosystem]. Zasita Informacii. Inside, 2020, no. 2(92), pp. 58-67. (in Russian)

24. Svenda P., Nemec M., Sekan P., et al. The million-key question — investigating the origins of RSA public keys. Proc. 25th USENIX Security'16, USENIX Association, 2016, pp. 893-910.

25. Nemec M., Sys M., Svenda P., et al. The return of Coppersmith's attack: Practical factorization of widely used RSA moduli. Proc. CCS'17, ACM, 2017, pp. 1631-1648.

26. Kaliski B. S. Anderson's RSA trapdoor can be broken. Electronics Lett., 1993, vol. 29, no. 15, pp. 1387.

27. Davenport H. Mul'tiplikativnaya teoriya chisel [Multiplicative Number Theory]. Moscow, Nauka, 1971. 200 p. (in Russian)

28. Knuth D. The Art of Computer Programming, vol. 2: Seminumerical Algorithms. 3rd ed. Addison-Wesley, 1998.

29. Young A. and Yung M. The dark side of black-box cryptography. CRYPTO'96, LNCS, 1997, vol.1109, pp. 89-103.

30. Linnik Yu. V. On the least prime in an arithmetic progression I. The basic theorem. Rec. Math. (Mat. Sbornik) N.S., 1944, vol. 15(57), no. 2, pp. 139-178.

i Надоели баннеры? Вы всегда можете отключить рекламу.