2011
ВЕСТНИК ПЕРМСКОГО УНИВЕРСИТЕТА Математика. Механика. Информатика
Вып. 4(8)
ИНФОРМАТИКА. ИНФОРМАЦИОННЫЕ СИСТЕМЫ
УДК 004.021
Криптоанализ тригонометрического шифра с помощью генетического алгоритма
А. Ю. Городилов, А. А. Митраков
Пермский государственный национальный исследовательский университет Россия, 614990, Пермь, ул. Букирева, 15 gora830@yandex.ru; (342) 2-396-594
Рассматривается возможность применения генетического алгоритма к задаче криптоанализа тригонометрического шифра, разработанного В.П.Сизовым [1]. Описывается схема построения генетического алгоритма и анализ получаемых с его помощью результатов для произвольных текстов на естественном языке. Предложенная модель гарантирует получение достаточно хорошего результата за приемлемое время.
Ключевые слова: генетический алгоритм; криптография; тригонометрический шифр.
Введение
Надежность современных систем шифрования определяется, как правило, с нескольких основных позиций: теоретическое исследование свойств криптосхемы, исследование получаемого шифр-текста на наличие в нем статистических закономерностей, стойкость шифра к различным видам криптоатак. На настоящее время существует ряд достаточно надежных криптографических протоколов, стойкость которых обоснована формально и проверена на практике.
Однако технологии активно развиваются, вычислительные ресурсы совершенствуются. Это дает повод к разработке новых шифров, а следовательно, и к поиску новых способов криптоанализа как вновь создаваемых, так и уже существующих криптосхем. В данной статье рассматривается один из таких новых алгоритмов, предложенный В.П.Сизовым [1] (отличающийся "бесконечным" периодом гаммирования).
© А. Ю. Городилов, А. А. Митраков, 2011
Среди различных криптоатак выделяются два основных вида:
1) с известной парой шифр-текст - исходный текст;
2) только с известным шифр-текстом (при этом предполагается, что исходный текст содержит какие-либо известные статистические закономерности).
Мы рассмотрим атаку второго вида. При этом будем предполагать, что исходный текст являлся осмысленным текстом на некотором естественном языке.
Раз исходная последовательность символов представляет собой осмысленный текст на естественном языке и алгоритм шифрования заведомо известен (что является одним из основополагающих принципов криптографии), то задача сводится к исследованию шифр-текста и подбору ключа таким образом, чтобы результат дешифровки отражал поведение естественного языка. То есть мы приходим к задаче поиска решения, а для управления поиском возможно применение алгоритмов комбинаторной оптимизации.
Ниже будет рассмотрен генетический алгоритм, направленный на подбор ключа, близкого к истинному решению (достаточно близкого, чтобы расшифрованный текст получился легко восстанавливаемым вручную).
1. Тригонометрический шифр
Шифр, разработанный Владимиром Сизовым [і], классифицируется как поточный шифр простой подстановки с использованием закрытого симметричного ключа.
В основе шифрования лежит использование непрерывных на всем числовом промежутке периодических функций. В простейшем варианте рассматривается y = cos(x) и соответствующее уравнение волны y = cos(x+ndx). Далее мы будем рассматривать именно эту схему. В данном случае шифрование выполняется по формуле
y = x + Ncos(z + n • dx) (modN), (і)
y - новый символ, x - исходный символ, n -номер шифруемого символа (n = 1,2,3,...), z и dx - ключ (пара вещественных чисел), N -мощность алфавита.
При шифровании/дешифровке число округляется до целого. Для расшифрования используется та же формула (і), выраженная через х:
x = y - N cos(z + n • dx) (mod N). (2)
На выходе алгоритма шифрования мы получаем текст той же длины в том же алфавите, что и исходный текст.
В качестве примера зашифруем текст "АБГ" в 33-буквенном русском алфавите. Положим ключом значения z = 'Л, dx = 7. Каждому символу алфавита ставится в соответствие полуинтервал:
А ^[0..і) Б ^[і..2) В ^[2.3) ...
В качестве х берем центр соответствующего полуинтервала и подставляем в формулу (і):
y1 = 0.5 + 33cos(1 +1*7) * 11.93 ^ К
y2 = 1.5 + 33cos(^ + 2*7) *
* -10.21 = 22.79 (mod33) ^ X.
y3 = 3.5 + 33cos(^ + 3*7) *
* -25,59 = 7.40 (mod 33) ^ Ж.
В результате имеем "КХЖ". Расшифровка выполняется по формуле (2):
х1 = 11.5 -33cos(1 +1*7) * 0.06 ^ А
y2 = 22.5 - 33cos(1 + 2*7) *
* 34.21 = 1.21 (mod33) ^ Б y3 = 7.5 + 33cos(1 + 3*7) *
* 36.59 = 3.59 (mod33) ^ Г.
Напомним, что криптостойкость обеспечивается только за счет секретного ключа -пары вещественных чисел z и dx.
В работе В.П.Сизова доказывается, что при dx Ф 2n/n, neZ алгоритм имеет бесконечный период гаммирования (т.е. последовательность "добавок" в виде значения косинуса никогда не повторится). По предположению автора, при больших объемах текста "вскрыть" шифр, не зная ключа, является невозможным.
В работе хорошо исследованы получаемые шифр-тексты на предмет наличия в них статистических закономерностей. В этом плане у шифра действительно уязвимостей не наблюдается. Однако в данной статье мы рассмотрим другой аспект - возможную атаку на эту криптосхему на основе шифр-текста и знаний о наличии в исходном тексте определенных статистических закономерностей.
2. Г енетический алгоритм
Наша криптосистема работает с текстами на естественном языке, а также использует вещественные числа. Поэтому перед разработкой генетического алгоритма требуется формализации задачи.
Следует иметь в виду, что успех алгоритма во многом определяется как способом кодирования решений, так и качеством фитнесс-функции, позволяющей ранжировать их некоторым способом.
В связи с этим еще раз зафиксируем некоторые ограничения:
* Для шифрования используется классическая схема:
у = х + N cos(z + n • dx) (modN)
• Исходным является осмысленный
текст на русском языке.
3. Представление особи
Для реализации генетического алгоритма требуется представить решение задачи в виде, удобном для вычислений, а также определить последовательность генетических операторов.
Решением задачи служит пара действительных чисел z и dx. Первая проблема - отображение этого решения в виде одной хромосомы. Вторая, и более неприятная проблема, -пространство решений получается неограниченным (Х = R2).
На начальном этапе следует изучить свойства криптосистемы с математической точки зрения. Согласно [1] вместо тригонометрических функций можно взять любые периодические непрерывные функции, определённые на всей числовой прямой. В нашем примере мы выбрали косинус, имеющий период 2п. Тогда рассмотрим следующие выражения:
cos((z + 2л) + n • dx) = cos(z + n • dx) x x cos(2^) - sin(z + n • dx) • sin(2^) =
= cos(z + n • dx),
cos(z + n(dx + 2л)) = cos(z + n • dx) x x cos(2;rcn) - sin(z + n • dx) • sin(2^n) =
= cos(z + n • dx).
Второе выражение справедливо только для целого n, что, вообще говоря, выполняется. Таким образом, задача имеет не одно решение, а целое множество, каждое из которых отличается на 2п по любой координате. Это "уязвимое место" справедливо и для остальных модификаций криптосхемы - достаточно лишь знать период функции.
Этот факт снижает пространство поиска с R2 до прямоугольника
|0 < z < 2 л [0 < dx < 2л.
Окончательно проблема с конечностью пространства может быть решена следующим образом.
Пусть z и dx - секретные параметры схемы и m - длина анализируемого текста.
Рассмотрим некоторые числа z и dx, такие, что
1
<
* z - z 1 < , dx - dx *
2N
2 Nm
Тогда
(z + n • dx )-(z * + n • dx * 1 <-^ + — v ’ v ^ 2N 2 N
1 w
= —, Vn < m. N
В силу свойств функции cos, а именно, что ее производная всегда не превосходит 1: |cosa - cos J3\ < \a - J3\. Следовательно,
)s(z + n • dx)-cos(z* + n • dx*)| < —
Значения шифр-текста (т.е. элементы yn) известны. Обозначим правильный символ исходного текста xn = yn-dn, где
dn = round (N • cos(z * + n • dx * ]) и "приближенный" символ xn = yn - dn, где
dn = round(N • cos(z + n • dx]) .
С учетом приведенного выше неравенства
можно заключить, что
< 1, а это, в
свою очередь, означает, что символ хп отличается от правильного символа не более чем на 1. Таким образом, для получения текста, близкого к исходному, в качестве решения можно рассматривать не точку (пару секретных параметров), а некоторую ее окрестность. Из предложенных выше выкладок следует, что теоретически радиус такой окрестности должен находить-1
ся в пределах----- для параметра г и в пределах
2 N
------ для параметра dx. Для алфавита из N =
2 Nm
256 символов и текстов длиной порядка т = 500 символов эти величины имеют порядок 10 и 10" соответственно.
Очевидно, что чем больше длина текста, тем меньше требуется радиус окрестности для корректной его дешифровки.
Простые практические исследования показали, что начальный фрагмент текста уже
10 4
является читабельным в окрестности 10 истинного решения (см. табл. 1). В окрестности
10
1и в тексте уже легко прослеживается смысл (200-символьные тексты расшифровы-
10 ~б
ваются полностью), а в окрестности 10 полностью расшифровываются даже 400символьные тексты.
Итак, проблема с конечностью пространства решена. На прямоугольнике |0 < ёх < 2п
[0 < г < 2ж.
построим равномерную сетку с шагом И = 105. Решениями будут служить точки в узлах сетки. Для их представления потребуется хранить 5 разрядов после запятой по каждой координате. Нетрудно посчитать, что количество элементов в пространстве решений соста-
вит
(2^-105 )2
от задачи) значение функции. Во многих задачах выбор функции приспособленности достаточно тривиален, однако в нашем примере мы работаем с осмысленными текстами на естественном языке, и нам требуется установить зависимость между числами ^, йх} и "осмысленностью" дешифруемых с их помощью строк.
■ 4-1011.
Однако решить даже такую задачу полным перебором за приемлемое время не представляется возможным.
Для кодирования мы будем использовать двоичный алфавит {0,1}. Хромосома будет представлять собой конкатенацию двух битовых строк. В структуре особи будет храниться дробная часть чисел г и ёх. Так как log2100000 « 16.684, то для хранения 5 десятичных разрядов потребуется 17 двоичных. Вывод - особь есть упорядоченная последовательность 34 бит, хранящая дробные части ключа (рис. 1).
Напомним также, что возможны другие формы кодирования целых чисел, например двоичные коды Грея и Джонсона.
4. Фитнесс-функция
Фитнесс-функция отображает множест-
Рис. 1. Структура особи
Ответ, казалось бы, прост - чем больше текст по смыслу похож на нормальную речь, тем лучше особь должна быть приспособлена, и тем выше должно быть значение фитнесс-функции.
Осталось только этому "смыслу" придать математическое описание. Существует несколько способов заставить машину "понимать" нормальный текст на естественном языке. Мы рассмотрим модель, предложенную Т.Якобсеном в 1995 г. [2]. Общая идея - собрать информацию о распределении частотностей биграмм во множестве реальных текстов на естественном языке. И далее полученные частотности использовать как эталон.
Рассмотрим следующую модель. Алфавит А есть множество мощности N, состоящее из прописных букв русского алфавита и некоторых знаков препинания, наиболее часто используемых в письменной речи. Под биграм-
Таблица 1. Зависимость результата дешифровки от окрестности решения (текст был за-
шифрован с ключом 2=6, йх=8)
2 йх Результат расшифрования
5.9 7.9 ??ФК7М: 117ВЧ А?А?2ЮСЫЗЧРИ,:8
5.99 7.99 ЖАГЛРЁЛ!ХНКЛЯАНЛЧЛР!ЪЦ7ДЪК:Т
5.999 7.999 ЗАБЛТЕИВШИИРЯ ПТУЁЧДТТАЕОНЗЛ
5.9999 7.9999 ЗАБЛУДИВШИИСЯ ПУУЕШЕСТВЕННИК
5.99999 7.99999 ЗАБЛУДИВШИИСЯ ПУТЕШЕСТВЕННИК
6.00000 8.00000 ЗАБЛУДИВШИИСЯ ПУТЕШЕСТВЕННИК
во хромосом (решений задачи) на множество действительных чисел. При этом наиболее приспособленные особи должны получить наибольшее (либо наименьшее, в зависимости
мой будем понимать упорядоченный набор из двух символов данного алфавита а = (а1,а2}, ах,а2 е А . Множество В, со-
держащее всевозможные биграммы, будет состоять из N элементов. Определим функцию частотности g(а) : B ^ R, которая каждой
биграмме ставит в соответствие число (это дискретная функция, заданная таблицей, которая показывает, насколько часто комбинация встречается в естественном языке) и функцию дешифрования:
D(s, x): SN ^ SN, (3)
где x = {z, dx} е X - ключ шифра, z,dxe[0..2^); X - множество всех ключей; SN = {s | s = {ofj, a2,... am }} - множество
символьных строк длины m, состоящих из букв алфавита A.
Функция дешифрования (3) преобразует входную строку шифр-текста в строку такой же длины с помощью ключа x по формуле (2).
И теперь, наконец, конструктивно определяем фитнесс-функцию порядка m в виде последовательности трех шагов: дешифрование строки; представление ее в виде биграмм; нахождение средней частотности.
function Fitness (s е SN, x е X) ^ R {
c = D(s, x),
C = {a1, a2,..., am } ^ {al, a2,., am-1}(4)
m-1
Fitness = — V g(a ) m ,■=
}
На вход фитнесс-функции поступают строка шифр-текста и ключ {г, ёх}, на выходе получаем число, равное средней частотности
строка похожа на фрагмент нормальной речи, тем выше значение функции.
Таблицы частотностей биграмм g(а) выбираются в зависимости от конкретного естественного языка.
5. Г енетические операторы
Все операторы преобразуют одну популяцию фиксированного размера.
В качестве операторов редукции/репродукции используется отбор усечением (особи сортируются по приспособленности, делятся на несколько групп, и далее для скрещивания случайно выбираются особи из первой и второй группы, в то время как последняя группа покидает популяцию).
Для скрещивания применяется модификация соответствующего кроссинговера. В ходе скрещивания два родителя дают единственного потомка. Суть подхода заключается в том, что биты родителей с вероятностью 1/3 складываются по модулю 2 либо с такой же вероятностью наследуются от одного из них.
Кроме того, на практике дополнительно возможен второй вариант скрещивания для особо удачных особей (принцип строительных блоков). В этом случае сохраняются несколько первых бит дробной части для каждого из чисел г и ёх. Такой способ гарантирует, что потомок окажется в окрестности одного из своих родителей (например, в окрестности 10" ). Это используется лишь для улучшения возможно найденного решения.
В качестве оператора мутации можно использовать инвертирование битов хромосомы с вероятностью 1/2.
Таблица 2. Неадекватность фитнесс-функции на коротких текстах (слово "Цена" было зашифровано с ключом г = 2, йх = 3)
Шифр-текст z dx Fitness Результат
4?НЖ 2.00000 3.00000 5.05 ЦЕНА
4?НЖ 4.27256 0.14479 5.89 ВЕНА
4?НЖ 3.87591 0.72168 6.44 ТОМ_
4?НЖ 6.08764 2.27589 6.53 КОРА
4?НЖ 3.19664 5.16387 6.93 КТО_
биграмм, содержащихся в дешифрованной строке. Понятно, что такой способ не идеален (см. табл. 2), но с ростом т в случае осмысленных текстов функция приспособленности даёт очень хорошие результаты: чем больше
6. Общая схема работы
Приведем пошаговое описание работы алгоритма.
1. Формируется начальная популяция. Количество особей задается пользователем.
2. Выбирается число М - количество поколений. Параметр вновь задается пользователем.
3. Каждая особь расшифровывает шифр-текст, и далее фитнесс-функция применяется либо ко всему тексту, либо к его части (порядок фитнесс-функции т задается пользователем). Таким образом, каждой особи ставится в соответствие число, показывающее ее приспособленность.
4. Происходит сортировка всей популяции.
5. Отсортированная популяция делится на 5 групп (их размер также задается пользователем).
6. Первые 2 группы (с лучшими хромосомами) допускаются к кроссоверу.
7. Четвертая группа (с особями низкой приспособленности) претерпевает мутацию.
8. Последняя группа (худшие особи) удаляется из популяции, а их место занимают потомки, полученные после скрещивания первых двух групп. В нашем случае каждые два родителя дают одного потомка, так что размер популяции не изменится.
9. Если количество поколений не превышает М, то эволюция продолжается (возвращаемся к шагу 3).
Напомним, что особи хранят только дробную часть чисел г и ёх. Так как мы рас-
[0 < г < 2п
сматриваем прямоугольник [ , то
[0 < йх < 2п
целая часть каждого параметра варьируется от 0 до 6 и таким образом генетический алгоритм запускается 49 раз (по одному разу для каждой пары целых частей чисел г и ёх).
7. Исследование на практике
7.1. Влияние параметров
На практике пользователь уполномочен регулировать следующие параметры генетического алгоритма:
• п - размер популяции,
• М - количество поколений,
• т - порядок фитнесс-функции,
• р - процент скрещивания особей в популяции,
• X - процент мутации особей в популяции.
Также по желанию пользователя возможно регулирование таких параметров, как вероятность мутации, вероятность унаследования генов конкретного родителя и т. д.
К сожалению, теоретических рекомендаций к подбору параметров нет. Более того, экспериментальные значения также будут сильно варьироваться, ведь для их получения следует испытать огромную массу текстов на естественном языке различной формы и содержания.
Реализованный по классической схеме генетический алгоритм даёт приемлемые результаты после 200 поколений эволюции 200 особей. Это означает, что придется перебрать порядка 4-104 решений. При этом получаемый текст легко восстановить вручную.
Для сравнения, полный перебор потребует дешифрования приблизительно 4-1011 решений (для сетки с шагом И = 10-).
Временная оценка сложности при достаточно больших параметрах может быть выражена полиномом 3-й степени:
Т « 36 -М - О(тп). (5)
Таким образом, решающий вклад в сложность алгоритма привносят размер популяции п, количество поколений М и размер реально дешифруемой строки (порядок фитнесс-функции т).
Среднее время выполнения на современных ЭВМ при М = п = 200 и т = 60 составит порядка 1-2 мин.
В дополнение стоит отметить, что кроме алгоритма, представленного выше, также была реализована модификация в форме распределённого генетического алгоритма по типу островной модели. В этом случае аналогичные по качеству результаты можно получить при куда более меньших параметрах (М = п = 100) за то же самое время (параметры предоставлены для количества узлов, равного двум).
7.2. Анализ результатов
Рассмотрим работу генетического алгоритма на практике. Для примера возьмем два текста:
1) "МЫ НЕ ПОЛУЧИЛИ ЗЕМЛЮ В НАСЛЕДСТВО ОТ ПРЕДКОВ, МЫ ОДОЛЖИЛИ ЕЕ У НАШИХ ДЕТЕЙ" (поговорка американских индейцев).
2) "НЕВОЗМОЖНО УВИДЕТЬ БЕРЕГА НОВОГО СВЕТА, НЕ ПОТЕРЯВ ИЗ ВИДУ СТАРОГО" (Андре Жид).
Тексты были зашифрованы с параметрами г = 6, йх = 14.
Вот результат шифрования:
Таблица 3. Результат работы генетического алгоритма
Разумеется, алгоритм на выходе выдает не только строку, но и само значение ключа, поэтому для вскрытия текстов больших объемов потребуется лишь начальный фрагмент. Затем по найденному ключу расшифровывается весь текст, и дальнейшая доработка легко выполняется вручную.
М = п Результат Время с
25 МЪ НЁ ПОЛУЦИЛИ ЗЁМЛЮ Г НАТЛДГСТВН ОУ9ОСЕДИОГ,9ЛЬ.НГПМЖЗЛИ ДЕ.Ф9МАЩИУ ЕЁСДК 5.91
50 МЫ.НЕ РОКУЧИКИ.ЗЕМЛЯ В НАСЛЕДСТВО ОТ ПРЕДКОВ, МЫ ОГОЛЖИЛИ ЕЕ У НАШИФ ДЕСЕК 16.97
75 МЫ.НЕ РОКУЧИКИ.ЗЕЛЛЯ В ОБСЛЕДССВО НТ ПРЕЕКОВ, МЫ ОДОЛЖИЛИ ЕЕ У НАШИФ ДЕТЕИ 36.51
100 МЫ НЕ ПОЛУЧИЛИ ЗЕМЛЮ В НАСЛЕДСТВО ОТ ПРЕДКОВ, МЫ ОДОЛЖИЛИ ЕЕ У НАШИХ ДЕТЕИ 60.17
25 ПААСЛИЛИРО6ТЕКВГФЮ9:ЕТЕБ:,ОНАПДО9СВЁСА, НЕ ПОУЕ-ПЯГ.ЗЖ.ДИВТ,ТР!СРВЛ 5.26
50 НЕГОЗМПЖМО УБИЕЕТЬ ВЕРЕДА НОВОВО СВЕТА, НЕ ПОТЕРЯВ ИЗ ВИДУ СТАРОГО 15.37
75 НЕГНЗМПЖМО УБИЕЕТЬ ВЕРЕДА НОВОВО СВЕТА, НЕ ПОТЕРЯВ ИЗ ВИДУ СТАРОГО 31.93
100 НЕВОЗМОЖНО УВИДЕТЬ БЕРЕГА НОВОГО СВЕТА, НЕ ПОТЕРЯВ ИЗ ВИДУ СТАРОГО 54 46
1) К!БЯ61.СФУЫЙ.ГЦХП5ЗТ Б9ЬЕ8 А9ЩЦ1БМ ГПРЩЯ2! ПЖ,ВОЁ2! ФЦ0ЕБЛГ8ЧЛЛЕ07Г3ИЧ.5А?СХ
2) ЛШЙ09Д ЙЦО?Ф1Г1ТЭД66 ЕП-ДСЕПВВЧУСН8С7В ЙЙЦЗ4.Ф ОЫЖ,Ч2ЙРЬ8.И!СЛШ52Ж8ЁЩ
Для генетического алгоритма использовались следующие параметры:
т = 60 - порядок фитнесс-функции р = 20% - процент скрещивания особей в популяции
X = 10% - процент мутации особей в популяции
Параметры п (размер популяции) и М (количество поколений) будем изменять. Результаты работы алгоритма и затраченное время представлены в табл. 3.
Как видно в нашем случае, уже при М = п = 100 результат дешифровки полностью совпадает с оригиналом. Исследования показали, что начиная с М = п = 200, вероятность полной расшифровки 60-100 символьных осмысленных текстов приближается к единице.
Заключение
Генетические алгоритмы хорошо зарекомендовали себя для решения сложных комбинаторных задач оптимизации, в которых множество допустимых решений велико, но конечно. Задача криптоанализа тригонометрического шифра в первоначальном виде к таковым не относится, поэтому прямое применение к ее решению классических генетических алгоритмов представляется невозможным.
В статье показано, что в решаемой задаче криптоанализа можно рассматривать не бесконечное множество допустимых решений, а лишь его конечное подмножество. При этом корректность такого перехода строго математически обоснована. Реализованный на практике эффективный генетический алгоритм успешно дешифрует осмысленные тексты на естественном языке, тем самым подтверждая правильность теоретических выводов.
Список литературы
1. Сизов В.П. Криптографические алгоритмы на основе тригонометрических функций. URL: http://www.ruscrvpto.ru/sources/conjBrsnce/rc2005/
2. Jakobsen T. A Fast Method for the Cryptanalysis of Substitution Ciphers, 1995.
3. Харин Ю.С., Берник В.И., Матвеев Г.Е. Математические и компьютерные основы
криптологии: учеб. пособие. Минск: Новое знание, 2003.
4. Гладков Л.А., Курейчик В.В., Курейчик В.М. Генетические алгоритмы / под ред.
В.М.Курейчика. М.: Физматлит, 2006.
Cryptanalysis of trigonometric cipher with genetic algorithm
A. Yu. Gorodilov, A. A. Mitrakov
Perm State National Research University, Russia, 614990, Perm, Bukireva st., 15 gora830@yandex.ru; (342) 2-396-594
In the article the possibility of applying genetic algorithms to cryptanalysis of trigonometric cipher designed by V.P. Sizov is considered. The way of designing the algorithm and an analysis of its results using any text in natural language are also proposed here. Suggested model guarantees a good result for reasonable time.
Key words: genetic algorithms; cryptology; trigonometric cipher.