УДК 004.056.55
О ВОЗМОЖНОСТИ ПРИМЕНЕНИЯ МЕТОДОВ ГЕНЕТИЧЕСКОГО ПОИСКА ДЛЯ РЕАЛИЗАЦИИ КРИПТОАНАЛИЗА АСИММЕТРИЧНОГО АЛГОРИТМА
ШИФРОВАНИЯ ДАННЫХ RSA
© 2008 г. А.С. Сергеев
В настоящее время проблема информационной безопасности и защиты обрабатываемой информации становится все более и более актуальной. Как отмечено в [1], если несколько лет назад вопросы защиты информации интересовали, в основном, военные и государственные структуры, то сейчас каждый, владеющий компьютером, стремится обезопасить свои данные.
Одним из самых эффективных средств защиты является шифрование информации. Наряду с ростом числа новых криптографических алгоритмов в последние годы стремительно развивается и криптоанализ, основные типы которого описаны, например, в [2]. Отметим, что наряду с реализацией современных методов криптоанализа (дифференциальный криптоанализ, линейный криптоанализ, метод слайдовой атаки) отмеченными, например, в [1], в настоящее время актуальной является задача применения для этой цели методов направленно-случайного поиска (используемых в значительной степени для решения NP--полных задач с комбинаторной сложностью), в частности методов генетического поиска. Отметим, что для классических методов шифрования (методы перестановки, простой и сложной замены) результаты применения генетических алгоритмов (ГА) для криптоанализа приведены в [3, 4].
Наряду с реализацией криптоанализа классических методов шифрования представляет интерес возможность применения ГА для криптоанализа блочных криптосистем, построенных на основе схемы Фейсте-ля. Возможные подходы для реализации криптоанализа алгоритмов DES и ГОСТ 28147-89 описаны в [5, 6].
Следует заметить, что наряду с классическими симметричными алгоритмами шифрования в настоящее время сравнительно молодой областью криптографии является асимметричная криптография. Одним из ее первых представителей является алгоритм RSA [2, 7], надежность которого определяется трудностью факторизации больших чисел. Как отмечено в [2], для проведения криптоанализа и определения секретного ключа необходимо разложение модуля N на простые множители Р и Q (т.е. определение функции Эйлера fN) = (P-1)*(Q-1)), а также определение секретного ключа Ксек из уравнения Коткр *Ксек = 1modf(N), где Коткр - известный открытый ключ (число, взаимно простое с числом f(N)), Ксек - секретный ключ, подлежащий определению. Так как числа Коткр и N считаются доступными, то рассмотрим ГА для решения зада-
чи определения вариантов разложения заданного числа N на множители (т.е. нахождения делителей большого целого числа N).
Рассмотрим процедуру инициализации, которая создает элемент популяции, представляющий собой матрицу V размера nxn, где элементы i-й строки и j-го столбца представляют собой разложение чисел Ni и Nj на n+1 целых сомножителей. В случае, когда все Ni = = Nj (i, j = 1 ,n), строки и столбцы матрицы представляют собой варианты разложения числа N. Алгоритм 1 создания элемента популяции сформулируем в следующей форме.
1. Выбрать все числа от 1 до n*n как непомеченные, положить V0i = N¡, Vj0 = Nj.
2. Выбрать непомеченное случайное число q в интервале [1, n*n] и сделать его помеченным.
3. Выбрать строку i = [(q-1)/n+1] и столбец j = (q--1)modn+1.
4. Выбрать случайное число Val в интервале [0, min (Nh Nj)].
5. Проверить, является ли число Val делителем чисел Ni, Nj. Если не является, перейти к 4.
6. Положить Vl} = Val, N, = N,/Val, N} = N}/Val, V0j = = Nj, V,o = N,
7. Если не все числа от 1 до n*n помечены, перейти к 2, иначе конец.
Рассмотрим построение матрицы V размером 4х4 для разложения числа N = 360360 на 5 сомножителей. Пусть значения q и Val выбираются произвольно следующим образом: qi = 4, Val1 = 1287, q2 = 9, Val2 = = 585, q3 = 15, Val3 = 990, q4 = 2, Val4 = 35, q5 = 3, Val5 = 4, q6 = 7, Val6 = 13, q7 = 12, Val7 = 28, q8 = 1, Val8 = 2, q9 = 10, Val9 = 11, q10 = 16, Val10 = 2, q11 = 13, Val11 = 14, q12 = 8, Val12 = 5, q13 = 14, Val13 = 13, q14 = 6, Val14 = 18, q15 = 11, Val15 = 1, q16 = 5, Val16 = 22. В этом случае матрица V будет иметь вид (рис. 1)
1 4 7 1
1 2 35 4 1287
14 22 18 13 5
2 585 11 1 28
1 14 13 990 2
Рис. 1. Пример матрицы V, представляющей разложение числа N = 360360 на 5 сомножителей. Значения и показаны курсивом
Таким образом, полученный вариант разложения числа 360360 на 5 сомножителей (элемент популяции) может быть представлен в виде векторной хромосомы, содержащей n*n генов, каждый ген которой имеет вид (qi, Val). Отметим, что данный элемент популяции также в общем случае может быть представлен в виде комбинации двух числовых хромосом (аналогично задаче размещения оборудования, описанной автором в [8]), где первая хромосома представляет набор значений {qi}, а вторая - набор значений {Val}. Очевидно, что данная методика кодирования может обеспечить взаимно однозначное соответствие между числовыми векторами и матрицей V.
Рассмотрим применение основных генетических операций. Рассмотрим оператор мутации. Пусть матрица V - родитель для мутации выбрана с вероятностью ^мут. Алгоритм 2 операции мутации сформулируем в следующей форме.
1. Выбрать случайным образом числа 1< qi <n, 1< q2 <n.
2. В матрице V выбрать случайным образом q1 строк i1, i2,...iq1 и q2 столбцов j1, j2...jq2. Сформировать из них матрицу W (q1xq2).
3. Определить значения S¡ = nWj, Dj = nWy
j '
Эти значения присвоить переменным w10....wq0,
W01...W0q.
4. Обнулив элементы матрицы W, провести процедуру разложения чисел Si и Di на q + 1 множителей с помощью алгоритма 1.
5. Заменить соответствующие элементы матрицы V на новые элементы матрицы W. Перемножить соответствующие значения Wi0 и Vi0 , W0j- и V0j:
Пусть, например, в приведенной выше матрице V выбраны q1 = 3 строки (строки 2, 3, 4) и q2 = 3 столбца (столбцы 1, 2, 4). Подсчитав значения wi0 и w0j, получим, что w10 = 1980, w20 = 180180, w30 = 364. Аналогично получим w01 = 180180, w02 = 2574, w03 = 280. Полученная матрица W показана на рис. 2.
После замены соответствующих элементов матрицы V на новые элементы матрицы W и перемножения значений Wi0 и V¿o , Woi и Voi , получим потомок Vp после мутации (рис. 4)
180180 2574 280
1980 22 18 5
180180 585 11 28
364 14 13 2
Рис. 2. Пример матрицы W, полученной после выбора 2, 3, 4 строк и 1, 2, 4 столбца матрицы V
После проведения разложения чисел w0 и w0j с помощью матрицы размером 3х3 на 4 сомножителя матрица W будет иметь вид, представленный на (рис. 3).
77 3 2
6 1 33 10
77 1170 1 2
1 2 26 7
77 12 7 2
1 2 35 4 1287
84 1 33 13 10
154 1170 1 1 2
1 2 26 990 7
Рис. 3. Пример матрицы W, полученной после разложения чисел w,0 и w0j.
Рис. 4. Потомок Vр после мутации
Рассмотрим оператор кроссинговера, реализуемого при матричном представлении вариантов разложения. Пусть 2 матрицы VI и V2 размером пхп выбраны как родители для кроссинговера и пусть в данных матрицах каждые строка и столбец представляют разложение числа N. Алгоритм 3 кроссинговера представим в следующей форме.
1. Выбрать случайным образом числа К1 и К2, являющиеся делителями числа N.
2. В матрице V1 выбрать п чисел V1lj, не лежащих в одной строке и одном столбце, кратных К1, аналогично в матрице V2 выбрать п чисел V2j, не лежащих в одном столбце и одной строке, кратных К2.
3. Разделить выбранные числа в матрице V1 на К1, в матрице V2 на К2.
4. Сформировать результирующую матрицу V по правилу Vij = V1ij * V2j. В матрице V произведение элементов в каждой строке и столбце будет равно Ы1/(К1 *К2).
5. В результирующей матрице Vвыбрать 2*п элементов так, чтобы в каждой строке и каждом столбце были выбраны 2 элемента.
6. В каждой строке и каждом столбце матрицы V один из элементов умножить на К1, другой умножить на К2. После данной операции произведение элементов в строках и столбцах матрицы V равно М2.
7. Элемент i матрицы V разложить на случайное количество и множителей с помощью алгоритма 1.
8. Сформировать результирующих потомков Р1 и Р2 по правилу: а) выбрать из произвольной клетки матрицы V произвольное количество множителей и поместить в произвольную клетку потомка Р1; б) найти произведение q элементов в строках и столбцах матрицы Р1, если N кратно q, перейти к а), если N не кратно q, выбрать другие элементы; в) процесс продолжать, пока во всех строках и столбцах потомка произведение элементов не станет равно М, аналогичным образом сформировать потомок Р2. Пусть, например, родители для кроссинговера следующие (рис. 5), К1 = 11, К2 = 7, и пусть в матрице V1 выбраны элементы V101, V114, К^К^, V143 , в матрице V2 элементы V203„ ^12, ^20, ^34, V241, показанные жирным шрифтом.
После формирования результирующей матрицы Vij = V1ij*V2ij, получим матрицу V, показанную на рис. 6. В данной матрице выбрано 8 элементов, показанных жирным шрифтом.
V]
77 12 7 2
1 2 35 4 1287
84 1 33 13 10
154 1170 1 1 2
1 2 26 990 7
V*
1 4 7 1
1 2 35 4 1287
14 22 18 13 5
2 585 11 1 28
1 14 13 990 2
Рис. 5. Пример матриц, выбранных для кроссинговера
7 48 7 2
1 4 175 16 150579
168 22 54 169 50
28 684450 11 1 8
1 4 338 89100 14
7 24*3 7 2
1 2**11 5**7* 24 11*34*132
*з*7*3 7*2*11 2*33*11 13* 5**2
7*22 2*5* *3 4*132 11 11 23*7
1 22 2*13* 2**52*34*7*1 1 2*7*11
Рис. 7. Матрица V, произведение элементов строк и столбцов которой равно N 2
После случайного выбора сомножителей из матрицы V возможно получение потомка Р, показанного на рис. 8
105 7 1 18
9 2*11 5 13*7 2*2
42 3 1 2* 5*13*11
5 2* 2*13 3* *11 7
7 13 11*9*2* 5*2 1
Рис. 8. Потомок P, полученный в результате операции кроссинговера
Таким образом, мы рассмотрели алгоритм разложения целого числа на n множителей. Отметим, что этот процесс можно продолжать итеративно для каждого из полученных множителей, получая разложение заданного числа N на простые множители. Однако, если число N достаточно большое, то процедура разложения на множители может оказаться довольно трудоемкой, кроме этого весьма трудоемкой может оказаться процедура определения числа Val - делителя числа N. Поэтому для разложения достаточно большого числа N можно использовать следующий подход. Пусть число N представлено в виде суммы n слагаемых, т.е. N = Ni+N2+... +Nn. Пусть каждое слагаемое Ni представлено в виде произведения К сомножителей
N = NU*Nn*...*Nm
n2 = n21 *n22*... *n2
2k2
Nn, = N„i*N„2*.. *N
Рис. 6. Пример результирующей матрицы V, произведение элементов строк и столбцов в которой равно N 2/(К*К2) = 1686484800
После умножения выбранных элементов на значения К и К 2 и разложения элементов матрицы V на множители матрица будет иметь вид (рис. 7).
пкп
Очевидно, что если в разложении N1, N2,...Nn имеются равные сомножители N1t = = ... = N„1 = Р, то число Р является делителем числа N. Таким образом, определяя с помощью генетического поиска различные варианты разложения числа N на слагаемые N1, можно определить делители числа N. Отметим также, что если в разложении N1, имеется два
равных сомножителя = = ^^ = = ... = = = Nnl2 (или более двух), то число N не является произведением простых чисел.
Отметим, что если число N известно получателю в качестве модуля, то актуальной является задача: можно ли представить число N в виде произведения N = = P*Q, где Р и Q - простые числа. Как отмечено в [9], задача разложения чисел на простые множители, как и задача проверки простоты числа является одной из основных теоретико-числовых задач, используемых в криптографии. Рассмотрим метод поиска на числовом отрезке [0, N точки R, удовлетворяющей условию OR = п1*Р, RN = п2*Р, п1*Р+п2*Р = P*Q. В общем случае определение точки R с помощью генетического поиска при п1 = 1 можно осуществить с помощью алгоритма 4.
1. Определить с помощью генетического алгоритма поиск вариантов разложения числа N на п слагаемых, каждое из которых далее подвергается разложению на множители. Если определен вариант разложе-
ния числа N на слагаемые, в разложение каждого из которых входит 2 или более одинаковых множителей, то число N не является произведением 2 простых чисел.
2. В случае, если число N с большой вероятностью может быть представлено в виде произведения двух простых чисел, на отрезке [0, N методом генетического поиска найти точку R, удовлетворяющую условиям
(N-R)/R = п - целое, Л*(п + 1) = N (1)
или множества точек R1, R2...Rk , удовлетворяющих условиям
R1/R = п1, (Л2-Л1)/Л = п2,
= пз, ...., Л-Лы)/Л =
= щ, Л*(щ+П2+... +щ) = N,
где Л, щ - целые числа.
Очевидно, что так как разложение числа N на простые множители единственно, то точка Л может быть определена единственным образом. Выражение (1) может быть использовано в качестве целевой функции при реализации ГА.
3. В случае, если число Л за заданное число генераций не определено, провести разделение отрезка [0, N на 2, 4 и т.д. частей, проводя генетический поиск точки Л в каждом из интервалов с помощью обрабатывающих устройств, функционирующих параллельно.
Пусть, например, N = 40217 и вычислительная система содержит 128 параллельно работающих процессоров. Разбивая интервал [0, N на 2, 4, 6, .128 частей, мы получим интервал [0, 314].
Таким образом, проводя генетический поиск в интервале [0, 314], можно определить точку Л1 = 131, удовлетворяющую условию (N-R1)/R1 = п - целое, т.е. (40217—131)/131 = 306, 131*307 = 40217. Аналогично может быть определена точка Л2 = 307, удовлетворяющая условию (40217-307)/307 = 130, 307*131 = = 40217. Поскольку других точек, удовлетворяющих данному условию, не определено, данное число N не имеет других делителей, и числа Л1 и Л2 являются простыми. Отметим, что если при бесконечном увеличении числа интервалов точка Л не определена, число N с большой долей вероятности является простым. Данная методика проверки числа на простоту может быть использована наряду с вероятностными алгоритмами, описанными, например, в [10].
Таким образом, после того как определены значения Р и Q, криптоаналитик может определить значение функции /(Л) и значение Ксекр, используя расширенный алгоритм Евклида, имеющего сложность [11] 5*р операций деления, где р - количество цифр в записи меньшего числа (в данном случае ключа Коткр). Ключ Ксекр определяется из соотношения Коткр*Ксекр = = 1 modfN), которое можно представить в виде
Коткр *ксекР + /(т*у = 1 (2)
Пусть, например, Р = 17, Q = 13, N = 221, /(Щ = = 192. Выбрав Коткр = 25 и применяя для определения Ксекр алгоритм Евклида, получим выражение 25*(-23) + + 192*3 = 1. Отметим, что так как значение у и Ксекр должны иметь разные знаки, то рассмотрим вначале отмеченный выше в примере случай, когда Ксекр< 0. В этом случае, воспользовавшись для нахождения Ксекр = Коткр-1mod/(Л) приведенными в [2] соотношениями и обозначив Ксекр = -хк, получим
(Коткр *(-Хк) + ШУ^т = (Коткр*(-Xк))mod/(Л) = 1,
K0ткР-1mod/(Л) = (-xk)mod/(N) = (-хк+/(N))mod/(N) (3)
Для приведенного примера Ксекр = КCTкр—lmod/(Л) = = (-23)mod192 = (-23 + 192)mod192 = 169.
Таким образом, из данного соотношения (3) следует, что Ксекр находится в отрезке [0, f(Л)], где можно проводить генетический поиск точки, удовлетворяющей условию
(КСекр *Коткр-1)//(Л) = п - целое (4)
Отметим, что остальные значения Ксекр определяются из соотношения
Ксекр+1 = [1 + (П + Коткр)*/(Л)]/Коткр.
В то же время из (3) следует, что ключи Ксекр связаны соотношениями
Ксекр1+1 = Кceкрi+/(Л) (5)
Рассмотрим случай, когда Ксекр > 0. Пусть Р = 3, Q = 17, N = 51, т = 32. Выбрав Коткр = 11, с помощью алгоритма Евклида получим соотношение 11*3 + + 32*(-1) = = 1, т.е. Ксекр = 3. Поскольку остальные значения Ксекр связаны с данным значением соотношением (5), то на отрезке [0, /N0] методом генетического поиска всегда можно определить точку Ксекр, удовлетворяющую условию (4), используемому в качестве целевой функции в ГА. Отметим, что при большой разрядности чисел /(N) и Коткр, а также наличии обрабатывающих устройств, работающих параллельно, использование генетического поиска при разбиении отрезка [0, /(N)] на интервалы для определения ключа Ксекр может оказаться более эффективным, чем применение классического алгоритма Евклида.
Таким образом, после определения ключей е = = Коткр и d = Ксекр осуществляется шифрование блоков Мi исходного текста по формуле С^ = Мlе(modN). Покажем, что для любого ключа d = Ксекр, определяемого из (5), справедливо Mi = C1d(modN). Воспользуемся соотношениями, приведенными в [7]. Поскольку простые числа Р и Q значительно больше числа М1, удовлетворяющего условию 1<_М1 <_s ^ - число букв в используемом алфавите), то числа МI и N являются взаимно простыми. Используя теорему Эйлера, запишем выражение M1■p-1)*('1-1)modN = 1. Далее, возведя обе части в степень (-у) и умножив их на М1 , получим
м(-у)*(Р-1)*с-1)+1 = м (6)
Далее из соотношения (2) выразим Коткр*Ксекр = = e*d = 1-у*(р-1)*(д-1) и, подставив в (6), найдем
Me*d = Mi (7). Таким образом, для любого ключа Ксекр, удовлетворяющего условию (2), справедливо (7), т.е. любой секретный ключ, определенный с помощью ГА и из соотношений (2), (5), может быть использован для расшифрования текста.
Таким образом, в данной работе был представлен ГА для определения вариантов разложения заданного числа на множители, определены основные генетические операции (мутация, кроссинговер), представлена методика для нахождения делителей числа и определения секретного ключа на заданном интервале с использованием параллельных процессоров при криптоанализе алгоритма RSA.
Литература
1. Бабенко Л.К., Ищукова Е.А. Современные алгоритмы блочного шифрования и методы их анализа. М., 2006.
2. Романец Ю.В. и др. Защита информации в компьютерных системах и сетях. М., 1999.
3. Сергеев А.С. Исследование возможности организации методов криптографической атаки с использованием эволюционной оптимизации и квантового поиска при разработке систем передачи и защиты информации // Материалы 6 Всеросс. НТК «Теоретические и прикладные вопросы современных информационных технологий». Улан-Удэ, 2005. С. 61-65.
Азовский технологический институт
4. Сергеев А.С. Информационные войны и методы криптографической атаки на системы передачи и защиты информации // Коммуникативные технологии в образовании, бизнесе, политике и праве ХХ1 века: Человек и его дискурс - 2: Сб. науч. тр., М., Волгоград, 2006. С. 248-259.
5. Сергеев А.С. Исследование и разработка методов генетического поиска для организации криптоанализа блочных криптосистем в системах управления безопасностью и защиты информации на примере стандарта шифрования DES // Третья Междунар. конф. по проблемам управления: Пленарные доклады и избранные труды. М., 2006. С. 328-335.
6. Сергеев А.С. Применение методов генетического поиска для организации криптоанализа блочных криптосистем на примере стандарта DES// Научная мысль Кавказа; Приложение, 2006. № 15. С. 185-193.
7. http:// zeus.sai.msu.ru:7000/internet/infsecture - Беляев А.В. Методы и средства защиты информации.
8. Чернышев Ю.О., Сергеев А.С. Исследование и разработка методов размещения элементов на основе эволюционной оптимизации в САПР машиностроительного производства // Изв. вузов, Техн. науки, 2003, № 2. С. 7-10.
9. http://www.bre.ru/security/12050.html Основные тенденции развития открытой криптографии.
10. http://www.pavel.hut1.ru Алгоритмы обработки информации. Алгоритм RSA. Описание RSA. Нахождение простых чисел. Алгоритм поиска простых чисел.
11. http://www.cyberguru.ru / cpp-sources / algorithms / algoritm-evklida.html - Алгоритм Евклида.
18 февраля 2008 г.