Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Иванов Разрушаюсчие программные воздействия 2011

.pdf
Скачиваний:
5
Добавлен:
12.11.2022
Размер:
2.56 Mб
Скачать

Заметим, что второе свойство может выполняться только в том случае, если выполняется первое. Третье имеет смысл, только если выполняется второе, а пятое – только если выполняется четвертое. Остальные свойства независимы.

2.2. Внедрение троянских компонент в реализацию криптосистемы RSA

Криптосистема RSA создана Р. Ривестом, А. Шамиром и Л. Адлеманом. Впервые опубликована в 1977 г. Алгоритм много лет являлся неофициальным мировым стандартом на шифрование с открытым ключом.

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

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

Рассмотрим алгоритм генерации ключей RSA. Для того чтобы получить открытый и закрытый ключи, сначала необходимо сгенерировать два случайных простых числа p и q заданного размера (например, 512 бит каждое) и вычислить их произведение n = pq. В 2009 г. Лаборатория RSA рекомендовала для обычных задач ключи размером 1024 бита, а для особо важных задач – 2048 битов. Затем нужно выбрать число e, взаимно простое c ϕ(n) = (p – 1)(q – 1), где ϕ(n) функция Эйлера, и вычислить число d = e – 1 (mod ( ϕ(n)))

(иначе говоря, de 1 mod ϕ(n)). Пара чисел (е, n) объявляется открытым ключом (RSA public key), d – закрытым ключом (RSA private key). Число n называется модулем, а числа e и d – открытой и секретной экспонентами, соответственно.

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

41

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

Схема алгоритма генерации ключевой информации для криптосистемы RSA представлена на рис. 2.1.

Формирование простых чисел

p и q

n := pq, |n| = k

φ(n) := (p - 1)(q - 1)

Формирование e, |e| ≤ k

нет

НОД(e, φ(n)) = 1?

да

d := e-1mod φ(n)

Рис. 2.1. Схема стандартного алгоритма генерации ключей RSA

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

42

пор, пока реализованная криптосистема является «черным ящиком» (т.е. системой с известными выходными и входными параметрами и неизвестным внутренним устройством).

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

Сокрытие простого множителя в открытой экспоненте. Это наиболее простой зараженный алгоритм RSA, называемый RSA – HWPF(e) (Hidden Whole Prime Factor (e) – сокрытие всего простого множителя в открытой экспоненте).

В этом алгоритме в качестве случайно выбранной открытой экспоненты e, которая является взаимно простой с ϕ(n) = (p – 1)(q – 1), используется зашифрованный с помощью ассиметричного алгоритма один из простых множителей модуля n. Простой множитель p зашифрован открытым ключом разработчика (E, N) и может быть расшифрован только секретным ключом разработчика D. Полученная таким образом открытая экспонента e будет выглядеть случайно выбранной, и никто, кроме разработчика, не обнаружит в ней скрытую информацию.

Схема модифицированного алгоритма генерации ключевой информации представлена на рис. 2.2.

Разработчик получит доступ к секретной информации пользователей, раскладывая на множители p и q модуль n, за счет простого вычисления одного из множителей p: = eD mod N, где D – секретный ключ разработчика.

Этот алгоритм имеет ряд недостатков, например открытая экспонента получается довольно большого размера, а во многих криптосистемах, например PGP, используется небольшая шифрующая экспонента e.

43

Сокрытие слабых значений секретной экспоненты. Рас-

смотрим другой зараженный алгоритм RSA, называемый RSA –

HSD (Hidden Small D – сокрытие маленьких значений секретного

ключа). Он основывается на атаке Винера, который доказал, что

если секретная экспонента меньше некоторого значения, зави-

сящего от модуля n, то можно вычислить секретный ключ из от-

крытого ключа.

 

Теорема 1. Теорема Винера.

----------------------------------------------------------------------------------

 

 

1

Пусть n = pq, q < p < 2q, d < 1 N 4 , тогда по открытому ключу

 

 

3

(n, e),

ed 1(modϕ(n)), можно эффективно восстановить d.

----------------------------------------------------------------------------------

Схема модифицированного алгоритма генерации ключевой

информации RSA-HSD представлена на рис. 2.3.

Суть этого алгоритма в том, что сначала генерируются стан-

дартным образом секретный и открытый ключи ( δ, ε ), причем

к δ применима атака Винера. Затем данная слабая ключевая па-

ра при помощи специальной функции шифрованияπβ преобра-

зуется в выглядящие случайными закрытый и открытый ключи

(d, e). Получается, что открытая экспонента e содержит в себе

слабую открытую экспоненту ε , с помощью которой можно вы-

числить секретный ключ.

В

качестве

функции шифрования можно использовать:

πβ ( ε )

= ε xor

2 β|| ε |, где β – секретный ключ разработчика

(здесь и далее используются следующие обозначения: m|r

младшие r битов числа m, m|r – старшие r битов числа m).

44

Рис. 2.2. Схема зараженного алгоритма генерации ключей RSA-HWPF(e)

Чтобы получить секретную информацию пользователей, разработчик должен расшифровать с помощью функции ε := πβ -1(e) слабую открытую экспоненту, с помощью атаки Винера вычислить слабую секретную экспоненту δ, и, используя значения ( δ, ε ), разложить модуль n на множители p и q.

Схема алгоритма атаки на RSA-HSD представлена на рис. 2.4. Если вместо атаки Винера использовать атаку Бонеха и Дерфи, которые обобщили атаку Винера на случай, когда секретная экспонента не больше N 0,292, можно использовать большие значения δ. Время выполнения данного алгоритма генерации ключей отличается от стандартного незначительно. Главный недостаток этого метода в том, что размерность е приблизительно равна размерности

45

n, таким образом, при ограничении размерности e ( e < c n ,c < 1 ) данный модифицированный алгоритм не применим.

Формирование простых чисел

 

p и q

 

n := pq, |n| = k

 

φ(n) := (p-1)(q-1)

 

Формирование

 

простого δ, |δ| = k/4

 

НОД(δ, φ(n)) = 1?

нет

 

да

 

ε := δ-1mod φ(n)

 

e := πβ (ε)

 

НОД(e, φ(n)) = 1?

нет

 

да

 

d := e-1mod φ(n)

 

πβ – функция шифрования разработчика

Рис. 2.3. Схема зараженного алгоритма генерации ключей RSA-HSD

46

Следующие модифицированные алгоритмы практически не имеют недостатков и могут успешно применяться на практике.

Сокрытие слабых значений открытой экспоненты. Две следующие схемы основываются на результатах Бонеха, Дерфи и Франкеля, которые доказали, что можно вычислить секретную экспоненту, если известен открытый ключ (n, e) и некоторые биты в секретном ключе d, и если открытая экспонента не превышает некоторого значения, зависящего от модуля n.

Теорема 2. Теорема БДФ.

----------------------------------------------------------------------------------

Пусть n такой, что n = pq и p < 4q.

a)Пусть t – целое число из интервала [|n|/4, |n|/2] и e – простое число из интервала [2t, 2t + 1], тогда по открытому ключу (n, e) и t старшим битам секретного ключа d, можно вычислить весь d.

b)Пусть t – целое число из интервала [1, |n|/2] и е – целое (не обязательно простое) из интервала [2t, 2t + 1], тогда по открытому ключу (n, e), t старшим битам и |n|/4 младшим битам секретного ключа d можно вычислить весь d.

----------------------------------------------------------------------------------

Алгоритм RSA – HSPE (Hidden Prime Small E – сокрытие ма-

лых значений простой открытой экспоненты) основывается на атаке БДФ, с помощью которой можно вычислить значение секретного ключа, если известны от |n|/4 до |n|/2 старших битов секретного ключа и если значение открытой экспоненты невелико (Теорема 2,a). Схема модифицированного алгоритма генерации

ключевой информации RSA-HSPE представлена на рис. 2.5.

В рассматриваемой ситуации сначала генерируются стандартным образом секретный и небольшой открытый ключи ( δ, ε ), затем с помощью функции πβ (x) = x xor 2 β||x| вычисля-

ется новый открытый ключ e, содержащий в себе информацию о слабом открытом ключе ε и о некоторых битах слабой секретной экспоненты δ(от |n|/4 до |n|/2 старших битов). Далее стандартным образом высчитывается секретная экспонента d.

47

ε:= πβ-1(e)

Вычисление δ с помощью атаки Винера

Разложение

на множители модуля n

Рис. 2.4. Cхема алгоритма атаки на RSA-HSD

Разрядность конкатенации ( δ|k/4 : ε ) равна k/2, поэтому открытую экспоненту можно создавать в пределах от n до ϕ(n).

Чтобы определить секретную ключевую информацию, заложенную в представлении открытой экспоненты, разработчик с помощью πβ -1(e) вычисляет кортеж ( δ|k/4 : ε ) – старших k/4 битов сла-

бого секретного ключа и слабой экспоненты. Известные ( δ, ε ) позволяют разложить n на множители p и q.

Схема алгоритма атаки на RSA-HSPE представлена на рис. 2.6. Главным преимуществом данного алгоритма является просто-

та и небольшой размер открытого ключа ( n2 ). Недостатком

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

Алгоритм RSA – HSE (Hidden Small E – сокрытие малых значений открытой экспоненты) основывается на атаке Бонеха, Дерфи и Франкеля, которые доказали, что зная от 1 до |n|/2 старших битов и |n|/4 младших битов секретного ключа, при не-

48

большой открытой экспоненте можно вычислить весь секретный ключ (Теорема 2,b).

Формирование простых

 

чисел p и q

 

n := pq, |n| = k

 

φ(n) := (p - 1)(q - 1)

 

Формирование ε,

 

|ε| = k/4

 

НОД(ε, φ(n)) = 1?

нет

 

да

 

δ := ε-1mod φ(n)

 

e := πβ (δ|k/4 : ε)

«:» - конкатенация

НОД(e, φ(n)) = 1?

нет

 

да

 

d := e-1mod φ(n)

 

Рис. 2.5. Зараженный алгоритм генерации ключей RSA-HSPE

49

Рис. 2.6. Схема алгоритма атаки на RSA-HSPE

Сначала генерируются стандартным образом секретный и небольшой открытый ключи ( δ, ε ), затем с помощью функции πβ (x) = x xor 2 β||x| вычисляется новый открытый ключ e, содер-

жащий в себе информацию о слабом открытом ключе ε и о некоторых битах слабой секретной экспоненты δ ([1, |n|/2] старших битов и |n|/4 младших битов). Далее стандартным образом высчитывается секретная экспонента d.

Схема зараженного алгоритма генерации ключевой информации RSA-HSE представлена на рис. 2.7.

Расшифровав открытую экспоненту e, разработчик получит слабую открытую экспоненту ε , [1, k/2] старших битов и k/4 младших битов секретной экспоненты, а этого достаточно, чтобы вычислить всю секретную экспоненту, используя атаку Бонеха, Дерфи и Франкеля. Получив слабую ключевую пару ( δ, ε ) можно разложить модуль n на множители p и q. Схема алгоритма атаки на RSA-HSE представлена на рис. 2.8.

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]