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

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

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

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

51

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

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

Разложение

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

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

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

Сокрытие простого множителя в модуле. Рассмотрим пер-

вый алгоритм данного типа — RSA – HWPF1(n) (Hidden Whole Prime Factor (n) – сокрытие всего простого множителя в модуле). Это сильная версия клептографической атаки на RSA, предложенная Юнгом и Янгом. Суть данного алгоритма в том, что в начале генерируется простой множитель p, который затем трижды шифруется различными способами ((E, N) – открытый ключ разработчика, (D, N) – закрытый ключ разработчика, K – секретный ключ разработчика, B1, B2 – целые положительные числа). В качестве модуля n берется число, старшие биты которого совпадают с зашифрованным множителем p. Далее вычисляется значение простого множителя q так, чтобы при умножении на p получался бы модуль n.

Схема модифицированного алгоритма генерации ключевой информации RSA – HWPF1(n) представлена на рис. 2.9.

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

52

рые затем дважды расшифровываются с помощью секретного ключа разработчика K и единожды с помощью закрытого ключа (D, N). Схема алгоритма атаки на RSA – HWPF1(n) представлена на рис. 2.10.

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

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

Сначала необходимо сформировать случайное число s определенного размера (например, 512 бит). Затем с помощью односторонней хеш-функции вычислить первый множитель p = H(s), в случае если он окажется не простым, необходимо s сгенерировать заново. С помощью открытого ключа разработчика (E, N) шифруется число s: r = sE mod N. Число r (или часть его битов) фиксирует старшую часть битов n. Далее необходимо подобрать такое значение второго множителя q, чтобы при умножении на p получалось бы n с зафиксированными старшими битами. Далее открытая и секретная экспоненты формируются стандартным образом.

53

Формирование простого p, |p| = k, i := 0

p' := FY(p), Y = K + i

нет

i < B1?

да

нет

|p'| < k?

да

p'' := (p’)E mod N, |N| = k

 

i := i + 1

 

 

 

 

 

 

 

 

 

 

 

 

 

j := 0

p''' := GX(p''), X = K + j, |p'''| = k

нет

j < B2?

да

r := (p''' : RND), |RND| = k

q := [r/p]

 

q простое?

нет

 

да

 

n := pq, |n| = 2k

j := j + 1

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

 

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

 

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

нет

да

 

d := e-1mod φ(n)

 

FY(p) – односторонняя функция с секретом, K – ключ разработчика

GX(p’’) – односторонняя функция с секретом, K – ключ разработчика

(p''' : RND) - конкатенация p''' со случайным числом RND размерности k

[r/p] – целая часть от деления r на p

Рис. 2.9. Cхема зараженного алгоритма генерации ключей RSA – HWPF1(n)

54

p''' := (n|k)

p'' := GX-1(p'''), X = K + j, 0 ≤ j < B2

p' := (p'')D mod N

p := FY-1(p'), Y = K + i, 0 ≤ i < B1

q = n/p

Рис. 2.10. Cхема алгоритма атаки на RSA – HWPF1(n)

Схема второго варианта алгоритма генерации ключевой информации RSA – HWPF2(n) представлена на рис. 2.11.

Для доступа к секретному ключу пользователя разработчик извлекает из модуля зафиксированные там биты r, расшифровывает их и вычисляет p = H(s). Если же не все биты r фиксируют старшую часть модуля, необходимо перебрать неизвестные биты до тех пор, пока s = rD mod N не будет давать значение p = H(s), которое является делителем модуля n, где (D, N) – секретный ключ разработчика.

Схема алгоритма атаки на RSA – HWPF2(n) представлена на рис. 2.12.

Следующий алгоритм RSA – HPF (Hidden Prime Factor – со-

крытие простого множителя) – наиболее сильная версия из всех представленных здесь зараженных алгоритмов. Алгоритм основывается на атаке Копперсмита, с помощью которой можно раз-

55

ложить на множители модуль n, если известна небольшая часть битов одного из множителей.

Теорема 3. Теорема Копперсмита.

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

Пусть n = pq, где |n| = k, тогда, если известно k/4 младших или старших битов p, n можно эффективно разложить на множители.

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

Главная идея этого алгоритма в том, чтобы скрыть часть битов простого множителя p в представлении модуля n (n|3k/8|k/41 представляют собой зашифрованные pk/4). Впоследствии, получив эти биты секретным способом, можно разложить модуль n на множители, используя атаку Копперсмита.

Схема алгоритма атаки на RSA-HPF представлена на рис. 2.13. Для того чтобы получить секретный ключ, нужно извлечь из

модуля

n зафиксированные биты (n|3k/8|k/4), вычислить

pk/4 :=

πβ -1(n|3k/8|k/4) и с помощью атаки Копперсмита модуль n

разложить на множители p и q.

Схема алгоритма атаки на RSA-HPF представлена на рис. 2.14.

В

отличие от

предыдущих алгоритмов, функция вида

πβ (x)

= x xor 2 β||x|

не безопасна для этой схемы. После получе-

ния двух пар множителей (p, q) и (p’, q’) несложно проверить: (n’ xor n)|3k/8|k/4 = (p’ xor p)|k/4.

Подходящие шифрующие функции разработчика для этой схемы выглядят следующим образом:

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

π

(x)= x xor (2μ)

 

 

 

modβ или

β,μ

 

 

 

x

 

 

 

 

 

 

 

 

π

(x)= (x1 modβ)xor

(2μ)

 

 

 

β

 

,

 

 

 

 

 

β,μ

 

 

 

 

 

 

 

 

 

 

 

где β, μ – секретные параметры,

такие что | β| [max|n|,

2max|n|], | μ| [max |n|1/2,

2max |n|1/2].

 

 

 

 

1 Из старших 3k/8 разрядов n берутся k/4 младших разрядов. 56

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

p := H(s)

нет

p – простое?

да

r := pE mod N

Вычисление (q, c)

 

из (r : RND) = pq + с

 

N := pq, |n| = k

 

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

 

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

 

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

нет

 

да

 

d := e-1mod φ(n)

 

H(s) – хеш-функция

(E, N) - открытый ключ разработчика

(r : RND) – конкатенация r cо случайным числом RND. q должно быть простым

Рис. 2.11. Схема зараженного алгоритма генерации ключей RSA – HWPF2(n)

57

Рис. 2.12. Схема алгоритма атаки на RSA – HWPF2(n)

Время генерации ключей в этом алгоритме приблизительно такое же, как в оригинальном алгоритме RSA.

2.3. Необнаруживаемое восстановление секретного ключа для алгоритма цифровой электронной подписи ECDSA

ECDSA (Elliptic Curve Digital Signature Algorithm) алгоритм с открытым ключом для создания электронной цифровой подписи на основе эллиптических кривых [37, 51, 63, 64].

Для формирования подписи задаются характеристики (q, F) поля GF(2q), в котором ведутся вычисления, параметры (a, b) используемой эллиптической кривой и ее порядок n. Должна быть известна базовая точка кривой G. Подписывающая сторона А должна обладать секретным ключом dA (случайным числом в диапазоне [1, n − 1]), а также открытым ключом QA = dAG. Схема алгоритма формирования подписи (r, s) от сообщения m по стандарту ECDSA показана на рис. 2.15.

58

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

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

простого p

нет

НОД(e, p – 1) = 1?

да

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

простого q’

 

n’ := pq’, |n’| = k

 

 

n := (n’|k/8 : πβ (pk/4) : n’|5/8k)

 

 

q := [n/p] + (1 ± 1)/2,

 

 

q - нечетное число

 

 

НОД(e, q - 1) > 1,

нет

 

 

 

q – составное число?

 

 

да

 

 

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

 

 

четного m, |m| = k/8

 

 

q := q xor m, n := pq

 

да

НОД(e, q - 1) > 1,

 

 

 

 

q – составное число?

 

 

нет

 

 

d := e-1mod φ(n)

 

e – некоторая открытая экспонента (3, 17, 65537...),

для которой должно быть найдено соответствующее n

[n/p] – целая часть от деления n на p

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

59

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

Схема алгоритма проверки подписи с использованием открытого ключа QA показан на рис. 2.16.

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

В этом случае для восстановления секретного ключа владельца устройства (например, смарт-карты) злоумышленнику потребуется повторять формирование гаммы до тех пор, пока не будет получено число ki', удовлетворяющее условию

r' = r, где r' = x1' mod n, а (x1', y1') = ki'G.

60

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