Генетический криптоанализ шифра Меркли-Хеллмана

УДК 681.3.067

Л.А. Назаренко, Р.Н. Кононенко ГЕНЕТИЧЕСКИЙ КРИПТОАНАЛИЗ ШИФРА МЕРКЛИ-ХЕЛЛМАНА

Введение

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

С самого начала криптология развивалась как двуединая наука. Как и само ее название(«кр1лхоо»—тайный и «Хоуэс» — слово), она развивалась, оставаясь двойственной. Се составными частями были, выражаясь современным языком, криптография и криптоанализ. Криптография — наука о методах защиты информации с помощью шифров, а криптоанализ — наука о методах раскрытия этих самых шифров. В свою же очередь криптографические Шифры подразделяются на две больших категории:

1. Криптосистемы с закрытым ключом (secret key cryptosystems) — когда для шифровки/расшифровки данных используется один универсальный ключ.

2. Криптосистемы с открытым ключом (public key cryptosystems) — когда для шифрования используется один ключ (т.н. открытый ключ — public key), а для дешифровки — совершенно другой (закрытый ключ, private key), причем вычислить по открытому ключу закрытый нереально.

Вся идея криптографии с открытым ключом заключается в существовании, так называемых, «односторонних функций»(опе--\уау functions), т.е. таких функций, значение Которых возможно вычислить в одном направлении, но чрезвычайно сложно обратить. Наиболее удачными в этом направлении оказались три нижеследующих подхода.

В данной статье мы рассмотрим криптоанализ шифра Меркли-Хеллмана, основанного На задаче декомпозиции множества по числу, то есть на задаче об укладке ранца или рюкзака (knapsack problem).

Задачей криптоанализа является нахождение ключа шифра по известному шифртексту. Основной проблемой при решении задач криптоанализа на ЭВМ является очень большое пРостранство поиска, и в связи с этим, требуются большие вычислительные ресурсы для Решения задач такого рода за реальное время (перебор до 105 вариантов в секунду на Intel Celeron™ 366А ).

Как говорилось ранее, лобовой криптоанализ или задача полного перебора является пРоблемой чрезвычайно ресурсоемкой. Необычайно большое пространство поиска и большое Количество возможных локальных оптимумов делают применение методов оптимизации к ^ачам криптоанализа также малоэффективными. Именно в этом направлении и пРедполагается использовать генетические алгоритмы. Сокращение пространства поиска, Легкий выход из локальных оптимумов, уменьшение количества вычислительных операций и с°кращение времени криптоанализа вообще — вот некоторые из преимуществ, которые °беспечивает нам применение генетических алгоритмов./4, 5/

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

Задача об укладке ранца

Очень многие системы шифров с открытым ключом используют в своей основе задачу об укладке ранца. В своем математическом изложении она формулируется следующим образом. Если заданы вектор целых чисел a={at, а3, aj и целое число S, то задача об укладке ранца состоит в отыскании такого подвектора a*={aj, сумма элементов которого равна S, аналогично по заданным а и S найти такой бинарный n-вектор х, чтобы выполнялось условие ax=S.

Считается, что задача об укладке ранца в общем случае является исключительно сложной и относится к классу задач, называемых NP-полными (NP-complete problems) и неразрешимы, как полагают, в полиномиальное время на любой детерминистской вычислительной системе.

Несмотря на это, существует некоторый тип векторов, для которых задача отыскания подвектора является достаточно простой. Такие вектора называются тривиальными сверхвозрастающими векторами, а их компоненты — сверхвозрастающими последовательностями. Компоненты этих векторов характеризуются следующей 1-1

зависимостью: а, > . ,/=2...и;

Пример 1: упаковка рюкзака.

А={ 46, 38, 10, 12, 25 7}

S=73

А*={ 0, 1, 1, 0, 1, 0}

Пример 2: сверхвозрастающий тривиальный вектор.

А={ 1, 4, 7, 13, 27 56}

S=80

А*={ О, 1, 1, 1, 0, 1}

Криптосистема Меркли-Хеллмана

Меркли и Хеллман изобрели криптосистему с открытым ключом, используя вышеописанную задачу об укладке рюкзака. Пользуясь ранее введенной терминологией, эту криптосистему можно описать следующим образом. Вектор а используется для шифрования сообщений, разбивая на n-битные блоки xh х3, ... и образуют скалярное произведение Sf=axi-Числа 5; образуют шифротекст. Восстановление X/ по Si связано с решением задачи об укладке рюкзака и поэтому, как полагают, невыполнима в вычислительном отношении, если а и X выбраны случайным образом ./6/.

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

Например, если а*={171, 197, 459, 1191, 2410} и S = 3797, то х} должен быть равен единице, если же Jtj=0, то даже при xi=x2=x4=l скалярное произведение ах будет слишком малым. Тогда поскольку Xs=l, S-as-3797-2410=1387 должно быть суммой подмножества из четырех первых элементов а. Так как 1387 больше а4 равного 1191, то х4 тоже должно быть равным 1. Наконец, S-a5-0^196 что равно а2, поэтому х3=0, х2=1, х,=0.

Л={ 171, 197, 459, 1191, 2410}

S=3798

А*={ О, 1, О, 1, 1}

Столь простой вектор а нельзя использовать в качестве открытого ключа, поскольку д; легко восстановить по S, как было показано выше. Поэтому алгоритм для генерирования открытого ключа порождает случайный простой вектор ранца а, состоящий из нескольких сотен компонент и хранящийся в секрете. Алгоритм порождает также случайное число m>Tai и случайную пару и> и w'1, такую что w-w',=l mod т. Затем посредством умножения каждой компоненты а на w mod т порождается открытый вектор ранца или ключ шифрования </ a'^w-a mod т. Когда другой пользователь хочет послать сообщение д: корреспонденту А, он вычисляет S=t/х и посылает этот результат в канал связи. Корреспондент А использует свою секретную информацию w’1, т и вычисляет:

S'=wmIS mod m=w 'lhi mod m=w '2J(wa, mod m)xt mod m=2fww''at mod m)xi mod m=2hlXi *nod m=aix, т.к. m>2hf.

Например, если секретный вектор а выбран таким же, как и раньше, то w=2550 и т~8443, что дает в результате открытый ключ (/={2457, 4213, 5316, 6013, 7439}, в котором скрыта структура, имеющаяся в векторе а.

Вектор с/ публикуется пользователем в качестве открытого ключа (public key), а параметры и>';, т держатся в секрете (private key).

Они могут быть использованы для шифрования любого сообщения, зашифрованного его открытым ключом, путем вычисления S'=w'l-S mod т и решения простого ранца S'=a x.

Фактически наиболее эффективным способом реализации алгоритма Меркли-Хеллмана является выбор такого порядка значений в исходных множествах, чтобы они обеспечивали:

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

Величина /-го члена исходной сверхвозрастающей последовательности, для обеспечения вышеперечисленных требований, должны находится в пределах [2I0M''; 2I00+I-1J.

Поскольку, как и говорилось ранее, исходная последовательность должна содержать не Ченее 100 чисел, то значение числа т, которое является простым, должно быть больше чем

• После чего w выбирается из интервала /т; т-1/. Необходимо также отметить, что условие Простоты числа т не является обязательным, нужно лишь обеспечить, чтобы число w имело обратное значение по модулю и числа т и н> были взаимно простыми.

Как следствие, наиболее эффективным способом т и н> состоит в генерации числа т из иНтервала I2201; 2го1}, причем т может быть и не простым, а число w выбирается таким °бразом, чтобы наибольший общий делитель (НОД) был равен 1. Если значение НОД Находится по алгоритму Евклида /7/, то коэффициент, полученный при w, будет равен w'1 mod И|- Вероятность того, что число т является простым по отношению к w достаточно высока и Рзвна приблизительно 0,607 (6/ii), что дает реальную вероятность получения результата даже ПРИ Двух-трех попытках. /6, 8/

Приведем схему получившейся криптосистемы:

1. Закрытый ключ: сверхвозрастающий вектор а размерностьи п.

2. Огрьпый ключ: выберем и (и>а паа‘ и - простое), и» (we[0,uj; w - простое). Вычислим 41 по условию н» н>'; mod и = 1. Правило получения отрытого ключа: aj = ayw1 mod и.

3. Пространство сообщений: совокупность л-мерных бинарных векторов jc.

4. Шифровка:.£=Ход

5. Расшифровка: решение задачи об укладке рюкзака суммы S на вектор а

Эволюционные и генетические алгоритмы

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

1. Эволюционное программирование (ЭП);

2. Эволюционные стратегии (ЭС);

3. Генетические алгоритмы (ГА);

4. Генетическое программирование (ГП).

Из них наиболее интересными для решения нашей задачи оказались ГА, которые в отличие от остальных трех пунктов, используют генетическое представление, т.е. решение комбинаторной или параметрической задачи оптимизации кодируется в бинарный вектор -хромосому. Оператор рекомбинации в ГА называется кроссовером, он порождает потомков, комбинируя компоненты хромосом родителей с вероятностью рк- Примером двухточечного кроссовера является простой перехлест хромосом с обменом в точках соприкосновения. Оператор мутации в ГА определяется как инверсия одной из компонент хромосомы и задается вероятностью инверсии в строке р„.

Исследования пространства поиска при помощи популяции решений, а не при помощи одного текущего, как это делается в задачах оптимизации, позволяет ГА улавливать общие закономерности формы целевой функции (ЦФ). Это дает возможность направлять поиск путем комбинирования решений и отбора в наиболее перспективных направлениях.

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

1. Целевую функцию;

2. Генетическое представление решения, а именно способ, которым решению будет сопоставляться строка символов;

3. Операторы рекомбинации и мутации;

4. Схему отбора.

В последующих пунктах мы определим перечисленные компоненты ГА применительно к решению задачи упаковки в контексте криптоанализа, а также приведем результаты экспериментального моделирования.

Генетическое кодирование

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

1. Простая кодировка и сложный оператор кроссовера, требующий соблюдения приемлемости решения;

2. Кодировка, при которой любой оператор рекомбинации дает' приемлемое решение.

Для рассматриваемой задачи наиболее естественный вариант кодировки, при котором длина генетической строки равна мощности исходного множества и, а единица в этой строке означает включение соответствующего элемента вектора в искомый подвектор а* Например, при размерности задачи равной 8 и генетической строке Ь={0, 1, 1, 0, 0, 0, 1, 0}-Текущее решение х составляет подвектор а*={</с/ь </7). Если сумма компонент этого подвектора 5* равна шифротсксту 5, то генетическая строка равна исходному сообщению £=дг=А.

Преимуществами такого метода кодировки является простота ее интерпретации и использования при подсчете ЦФ /(х). Другим же достоинством является валидность решения потомка при обмене любыми частями строк родительских хромосом.

Целевая Функция

Пусть имеем вектор (/ длины я, что является открытым ключом для нашего шифра. Также имеем сообщение Л\ полученное из исходного текста при помощи ранее описанных соотношений. Тогда мы можем оценить близость текущего решения задачи .V к искомому Решению Ь как разность между данным шифротекстом 5 и шифротекстом, полученным из вектора

Л - X X ,а ; I

/ ( х ) =

1-і

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

/(х) = е

1-І

Где яО ~ некоторая масштабирующая функция, в качестве которой обычно используется степенная с показателем /<!.

При реализации генетических алгоритмов мы применяем бинарные аргументы при вычислении ЦФ, как следствие, она трансформируется следующим образом:

Н

/(Х) =----------^-------,

где НО - расстояние между решениями по Хэммингу, Р - длина хромосомы.

Теперь с введением такой функции задача криптоанализа изменяется на такую, чтобы иМея некоторое начальное решение х0 с оценкой /0 изменять данное решение с тем, чтобы получать все меньшее и меньшее значение целевой функции до тех пор, пока она не станет Равной нулю.

Операторы рекомбинации

Фактически, наиболее часто используются операторы рекомбинации, работающие с бинарными строками. Это одноточечный, двухточечный и равномерный кроссоверы. Как Показывает практика, самым эффективным является равномерный кроссовер, т.к. для данной задачи невозможно априорно определить взаимосвязанность бит в хромосомах родителей, что является главным признаком для использования одноточечного или двухточечного кроссовера. Равномерный кроссовер требует определения для каждого бита хромосомы потомка путем вычисления того, от кого из родителей унаследуется соответствующий бит с вероятностью ‘/4.

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

Выполняется равномерный кроссовер над родительскими хромосомами д.';, х2, получаем ПОТОМКОВ О, и О2.

• Подсчитываем сумму / элементов подвектора а*;е заданного решением О;.

• Если 5=5^,, то выход.

Если ^ то подбираем число такое, чтобы выражение |5//+а/г^1 было

минимальным, после чего переходим к пункту 6.

• Если Я',^+а/т1п, то подбираем число «//ео'-а*, такое, чтобы выражение было

минимальным, после чего переходим к пункту 6.

у Выполняем пункты аналогично со 2 по 5, но для потомка 03.

Конец.

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

Схема отбора

В ходе селекции каждой особи популяции приписывается действительное значение, называемое темпом копирования R(x,t)e% которое обозначает ожидаемое число копий особи х в популяции потомков с номером t. Копирование же производит первоначальных потомков копированием родителей в соответствии со значениями R(x,t). Один из наиболее оптимальных алгоритмов копирования выполняется методом рулетки и требует, чтобы 3Xt(Xi,t)'-N. Он генерирует N копий, выполняя N раз следующее действие:

1. Сгенерировать Р, являющееся случайным числом (СЧ), равномерно распределенным на интервале /0,7V/, присвоить S=0 и /=/.

2. Проходя последовательное решение и добавляя к S значение темпа копирования S=S+R(xt,t). Проверить, не выполняется ли условие S2P.

3. Если условие выполняется, то элемент х/ копируется в промежуточную популяцию потомков и производится переход к пункту 1; иначе /=/+1 и переход к пункту 2.

Можно сказать, что при таком алгоритме отбора вероятность копирования особи х,- с темпом копирования R(xht) равна ps=R(xt,t)/N, а математическое ожидание (МА) числа копий этой особи промежуточной популяции равно Ms(xi)=Nps=R(Xi,t).

Среди алгоритмов отбора наиболее широко используется пропорциональная селекция R(х„t)=u(xj/u'(t), где u(xj=g(f(xj)) - функция качества, a g( ) функция, преобразующая значение ЦФ в неотрицательное число таким образом, что функция u(xj должна быть максимизирована. u‘(t) - среднее значение функции качества в текущей популяции t.

Пропорциональная селекция имеет ряд недостатков:

1. Если на начальной стадии поиска в популяции появляется особь, качества которой значительно превышают среднее значение u*(t), то в следующем поколении появится несколько копий этой особи. Далее их количество будет расти лавинообразно, что приведет к вырождению популяции.

2. После длительной работы алгоритма все особи имеют приблизительно одинаковое

значение качества, что делает вероятность попадания лучших особей в следующее

поколение очень низкой.

Эти недостатки обычно устраняют путем линейного масштабирования, который

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

Итоговая схема алгоритма

Теперь скомпонуем все данные и опишем итоговую схему полученного генетического алгоритма.

1. Генерируем стартовую популяцию V={vJ , ie/1+NJ методом рулетки [10] и оцениваем каждую особь при помощи функции качества u(vj.

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

V=>P = {pif. Перемешиваем популяцию

3. Формируем родительские пары и выполняем кроссовер {py.i,p2j} =>{о'ij.i,o'yf; je/l+N/2! с вероятностью рс, в результате чего получает промежуточную популяцию потомков &={oj'

4. Произвести мутацию каждого потомка oy/i=i(/t.

5. Подсчитать значение ЦФ для каждого потомка, проверить валидность потомков, есл*' значение ЦФ достигнуто, переходим к пункту 8.

6- Поместить в популяцию потомков лучшего из родителей 0=0 и(рь}.

~1- У=0, перейти к пункту 2.

8- Конец.

Опытным путем удалось определить, что мутация в п.4 алгоритма делается с вероятностью инверсии рт**2.12 I где I — длина хромосомы.

Экспериментальные результаты

В этом разделе приведены результаты сравнения рассмотренных алгоритмов при Решении задачи генетического криптоанализа шифров упаковки на примере шифра Меркли-Хеллмана. Моделирование в первом случае производилось с использованием вычислительной системы на базе микропроцессора 1Ше1 Се1егоп™ 366А для задач пяти размерностей: п={10, 14, 16, 20}, со средней величиной компонент исходного вектора 2500. Основными Характеристиками при проведении испытаний являются время обработки и среднее количество вычислений целевой функции (СКВЦФ), среднее время общей отработки алгоритма (СВООГА), среднее время алгоритма полного перебора (СВАПП) и процент успешности диетического криптоанализа (%).

Табл.2

СКВЦФ % СВООГА, сек СВАПП, сек

- N=10 1150 92 10 120

— N=12 5240 90 55 350

— N=14 11800 86 120 900

- N=16 20000 80 250 1600

N=18 47000 57 610 3700

_ N=20 85000 36 900 6000

ЛИТЕРАТУРА

I • Диффи У. Первые десять лет криптографии с открытым ключом // ТИИЭР, т.76, №5 Май 1988. С.54-74.

2. АхоА., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.

3. Кнут Д. Э. Искусство программирования. Т2 Получисленные алгоритмы. М.: Мир, 197?г., 723с.: ил.

4. Солтцер Дж. Н„ Шредер М.Д Защита информации в вычислительных системах // ТИИЭР, т.9, №10 октябрь 1975. С. 17-51.

5. КурейчикВ.М. Генетические алгоритмы. Монография. Таганрог: ТРТУ 1998.ил.

6. в. Водолазский. Коммерческие системы шифрования: основные алгоритмы. Часть 3.

Нстемы с открытым ключом..// Монитор №6. 1993. С.34-38

7- Врикелл Э.Ф., Одлижко Э.М. Криптоанализ: обзор новейших результатов // ТИИЭР, тл6. №5 май 1988. С.75-94.

8. Диффи У., Хеллман М.Э. Защищенность и имитостойкость: Введение в криптографию // ‘ИИЭР, т.67, №3 март 1979. С.71-109.

Р’ Patterson W. Mathematical Cryptology for computer Scientists and Mathematicians. Rowman

* Littlefield, 1987.

10- O. Lebedko, A. Topchy, "On efficiency of genetic cryptanalysis of knapsack ciphers", Emitted to ACDM'98, Plymouth