2007
7(12)
ВЕСТНИК ПЕРМСКОГО УНИВЕРСИТЕТА Математика. Механика. Информатика
Вып.
ИНФОРМАТИКА. ИНФОРМАЦИОННЫЕ СИСТЕМЫ
УДК 004.056.5
Криптоанализ перестановочного шифра с помощью генетического алгоритма
А. Ю. Городилов
Пермский государственный университет, 614990, Пермь, ул. Букирева, 15
Рассматривается возможность применения генетических алгоритмов к задачам криптоанализа. Разработан и описан генетический алгоритм для поиска секретного ключа блочного перестановочного шифра. В качестве ключа в данном случае выступает перестановка. Анализ полученных результатов свидетельствует о возможности почти полной автоматической расшифровки текста.
1. Введение
Надежность защиты информации методами криптографии определяется стойкостью к криптоанализу используемой системы шифрования. Основными задачами в криптологии являются разработка новых способов шифрования, сложных для вскрытия (задача криптографии), и нахождение новых способов вскрытия существующих шифров (задача криптоанализа). Эти задачи, безусловно, взаимосвязаны между собой. Разработка нового надежного средства шифрования подразумевает тестирование этого шифра на возможность вскрытия. Задача вскрытия шифра состоит в нахождении секретного ключа среди множества всех возможных ключей, т.е. является задачей поиска. В данной работе рассматривается задача криптоанализа.
В последнее время все большее распространение получают генетические алгоритмы. Нужно заметить, что одной из областей при-
менения генетических алгоритмов являются именно задачи оптимизации и поиска. Таким образом, возникает возможность применения генетических алгоритмов к задачам криптоанализа. Это направление в криптографии является молодым и недостаточно хорошо изученным. В российских публикациях данная тема упоминается лишь косвенно [2, 3], каких-либо научных исследований, посвященных этому вопросу, на русском языке найти не удалось. На английском языке есть ряд статей, посвященных применению генетических алгоритмов в криптографии [1, 5], но они имеют в основном описательный характер. Рассказывая об уже имеющихся результатах, авторы используют стандартные подходы и не исследуют влияние параметров на сходимость и скорость сходимости алгоритмов. Таким образом, представляется весьма актуальным исследование применения генетических алгоритмов к задаче криптоанализа.
© А. Ю. Городилов, 2007
44
В данной работе рассматривается конкретная схема шифрования - блочный перестановочный шифр. Разработка и анализ генетического алгоритма потребует решения нескольких задач:
- определение способа представления допустимого решения в виде особи в генетическом алгоритме;
- выбор основных операторов генетического алгоритма;
- исследование скорости сходимости алгоритма и оценивание процента правильных решений.
2. Шифр простой перестановки
Для исследования была выбрана задача криптоанализа, а именно задача дешифровки текста, которая может быть интерпретирована как задача поиска секретного ключа среди множества всех возможных ключей. Пространство возможных ключей в реальных криптографических схемах очень велико, и решить задачу полным перебором за разумное время невозможно. Таким образом, генетические алгоритмы могут быть применены для ускорения решения задачи поиска секретного ключа (взлома криптосистемы).
В данной статье будет рассмотрена атака только на один симметричный шифр, а именно блочный перестановочный шифр. Суть этого шифра состоит в следующем. Входной текст Т разбивается на блоки (Ть Т2, ..., Тк) фиксированной длины N. Секретным ключом является подстановка Р длины N. Из блока Т открытого текста Т блок шифрованного текста Е(Т) получается следующим образом. Пусть блок Т текста состоит из символов (?ь Ь, ., ^), а подстановка Р имеет вид
'1 2 ...
ЧЛ Р2 ••• Рыу
Р =
Тогда
е(т1) = {ґРі,ґР2,...,ґРм),
Рм'
т.е. символы внутри блока меняются местами в соответствии с перестановкой Р.
Зашифрованный текст Е(Т) представляет собой последовательность всех зашифрованных блоков, т.е.
Е(Т)= Я(Т,),Е(Т2),...,Е(Тк)[.
Расшифровывание происходит с использованием обратной подстановки:
Рі
1
Р 2 2
Рм
N
Л
Шифртекст тоже разбивается на блоки длины N и внутри каждого блока символы меняются местами в соответствии с перестановкой Р~ .
Очевидно, В силу ТОГО ЧТО Р ' Р — Е , где _ тождественная подстановка, в результате получится исходный текст.
Еще раз подчеркнем, что секретным ключом в таком шифре является подстановка Р.
3. Г енетический алгоритм
Для разработки генетического алгоритма нам нужно решить, как будет представляться особь, как вычислять значение фитнесс-функции, определить операторы выбора, кроссовера, мутации. Ключевым здесь является выбор способа представления особи.
Как уже было отмечено, в рассматриваемой задаче решением является подстановка, следовательно, особью в генетическом алгоритме должна быть подстановка. Принципиальный вопрос, который необходимо решить - чем будут отдельные гены особи. Простейший вариант, который является на первый взгляд наиболее очевидным, - считать отдельными генами элементы подстановки, т.е. 7-тым геном особи Р считать число Рі. Основным недостатком такого подхода является то, что гены получаются зависимыми друг от друга. Если какой-то ген имеет значение ], то никакой другой ген этой особи уже не может иметь то же значение у, так как, очевидно, в подстановке все числа от 1 до N встречаются ровно по 1 разу. Зависимость генов накладывает значительные ограничения на операторы мутации и скрещивания, требует специальной их разработки под конкретную решаемую задачу (стандартные операторы будут неприменимы, так как все они работают с представлением набора генов в виде строки независимых бит). Такие зависимости генов несвойственны живой природе, что делает аналогию неточной и ставит под сомнение эффективность применения генетического алгоритма. Тем не менее такое определение генов интуитивно
понятно и не требует дополнительных затрат на их формирование (вычисление).
Альтернативным подходом является использование некоторого промежуточного представления, т. е. набор генов будет задавать некоторый объект, из которого уже можно будет сформировать подстановку. При этом упомянутый промежуточный объект должен задаваться при помощи битовой строки, так чтобы были применимы стандартные операторы скрещивания и мутации. При альтернативном подходе основной задачей будет нахождение подходящего промежуточного представления.
В данной работе выбран первый подход, т. е. везде в дальнейшем в качестве отдельных генов будут рассматриваться именно элементы подстановки.
Следующий вопрос - как вычислять приспособленность особей. Мы будем исходить из предположения, что шифруемый текст представляет собой осмысленный текст на русском языке. Фитнесс-функция (целевая функция) будет заимствована из работ Якобсена [4, 5].
Томас Якобсен в 1995 г. предложил автоматический метод раскрытия ключа шифра простой замены. В своем методе вскрытия шифров замены Якобсен использовал информацию о распределении частот встречаемости биграмм в открытых текстах. Биграмма здесь - это две подряд идущие буквы в тексте. Целевую функцию Якобсен предложил вычислять как сумму разностей по модулю между заранее известным среднестатистическим количеством биграмм и их реальным количеством в шифртексте. Пусть О/ - это элемент матрицы О, равный количеству встретившихся в тексте биграмм (//'). Тогда целевая (фитнесс-) функция будет иметь вид
^{Т) = У)р1-еХ
а
где Е/ - частоты биграмм, заранее известные и зафиксированные в алгоритме в качестве эталонных. Матрица Е высчитывается заранее на текстах большой длины, т. е. отражает среднестатистическое распределение. Кроме того, легко заметить, что чем ближе текст к осмысленному (а значит, ключ ближе к искомому), тем значение целевой функции меньше. Поэтому меньшему значению целевой
функции будет соответствовать большее значение приспособленности особи, и наоборот.
Таким образом, если нам дан зашифрованный текст S, то для вычисления приспособленности особи Р необходимо выполнить следующие шаги:
1. Расшифровать зашифрованный текст S с
использованием ключа Р: Т=Вестур1Р(^).
2. Посчитать количество биграмм От в тексте
т.
3. Найти значение целевой функции Ж(Т) по
указанной выше формуле.
Рассмотрим выполнимость требований к фитнесс-функции.
Пусть две особи Р1 и Р2 различаются двумя генами (очевидно, одним геном они отличаться не могут). Пусть для определенности
1
\Рг
Рг =
2
2
Р 2 2 Р1
3
Рз
3
Рз
N
Рм
N Л Рм,
т.е. особи отличаются только двумя первыми генами, а остальные гены у особей Р1 и Р2 одинаковы. Пусть имеется зашифрованное сообщение S. Тогда расшифрованные при помощи ключей Р1 и Р2 тексты ОвстуР(£) и
ОвсгуР^ (£) отличаются только символами,
стоящими на позициях с номерами р1 и р2, p1+N и p2+N и т.д. с периодом N. Соответственно, биграммы могут измениться только в указанных позициях, т. е. могут измениться максимум 3 биграммы из N. Таким образом, если размер ключа (и соответственно размер блока) достаточно большие (что справедливо для реальных систем), то отношение 3/N будет мало, т. е. небольшому изменению в особи будет соответствовать небольшое изменение целевой функции.
Заметим также, что при достаточно большой длине сообщения частоты встречаемости биграмм О/ в осмысленных текстах стремятся к соответствующим среднестатистическим вероятностям Е/. Поэтому, если в результате дешифровки получился осмысленный текст (что свидетельствует о том, что найден правильный секретный ключ), то значение целевой функции будет стремиться к 0. Очевидно, целевая функция принимает только неотрицательные значения. Значит, если К -
1
секретный ключ, то Ж(ОК(5)) принимает минимальное значение.
В литературе по генетическим алгоритмам описано достаточно много операторов выбора родительских особей для получения потомков. В данной работе были реализованы две идеи. Во-первых, выбор родителей осуществляется по принципу "рулетки". Он заключается в следующем: для каждой особи в популяции высчитывается значение фитнесс-функции; первая особь выбирается в качестве родителя с вероятностью, пропорциональной приспособленности особи. Затем выбранная особь отбрасывается, вероятности пересчитываются (с учетом нормировки) и аналогично выбирается вторая особь-родитель. Во-вторых, при включении потомка в популяцию реализован принцип "элитизма", согласно которому особи с большим уровнем приспособленности гарантированно остаются в популяции.
Нужно отметить, что размер популяции может быть как фиксированным, так и изменяющимся в ходе эволюции. Для решения поставленной задачи использовался первый способ, когда численность популяции остается неизменной. Следовательно, каждый раз при производстве двух потомков необходимо удалять из популяции две особи. Согласно принципу элитизма исключаться будут особи с наименьшим значением приспособленности.
Как было сказано выше, стандартные операторы скрещивания применимы только тогда, когда особь представляется битовой строкой. В нашем случае это не так, поэтому стандартные операторы неприменимы. Требуется разработка оператора кроссовера именно для данного случая. Основное условие, накладываемое на оператора, - в результате его применения должна получаться корректная подстановка.
В данной работе предлагается такой оператор скрещивания, который будет удовлетворять следующим условиям:
1. Очередной ген берется от одного из предков, если это возможно.
2. Если гены от обоих родителей недопустимы, берется произвольное допустимое число.
Будем использовать обозначение Р(1) для числа, в которое переводит число 1 подстановка Р. Таким образом, получаем сле-
дующии алгоритм скрещивания двух родителей P1 и P2 и получения потомка P*:
1. Сформировать начальное множество уже использованных значений генов Used = 0, установить номер текущего вычисляемого гена i = 1.
2. Выяснить, принадлежат ли числа P1(i) и P2(i) множеству Used.
3. Если множеству Used не принадлежит только одно число, то его и присвоить i-тому гену потомка Р*. Если оба числа не принадлежат указанному множеству, то либо с вероятностью pc выбрать число P1(i), либо с вероятностью (1 - pc) выбрать P2(i). Выбранное число присвоить i-му гену потомка P*. Наконец, если оба числа лежат во множестве Used, то i-му гену потомка P* присвоить произвольное число, еще не лежащее во множестве Used.
4. Число, которое было присвоено i-му гену потомка P*, включить во множество Used.
5. Перейти к рассмотрению следующего гена: i = i + 1.
В качестве оператора мутации можно использовать стандартный оператор обмена. В мутирующей особи просто меняются местами два гена, т. е. из перестановки
Р =
1
а
получается перестановка г\ 2 ■
Р' =
N
Pnj N '
Р
N У
если в качестве пары мутирующих были выбраны 1-й и 2-й гены. При этом номера переставляемых генов выбираются случайно.
Наконец, условием окончания для данной задачи было выбрано превышение количества эпох М заранее выбранной величины. Говорить о том, что найдено точное решение для данной задачи, мы не можем, так как выбранная фитнесс-функция Ж не обращается в 0 даже при правильно найденной подстановке (за исключением отдельных частных случаев). Следовательно, раньше алгоритм не завершится, т.е. в любом случае будет пройдено М популяций. Это позволяет заранее предсказать время, которое потребуется для работы алгоритма и, наоборот, позволяет задать параметр М так, чтобы алгоритм завершил свою работу за указанное ограниченное время.
Итак, был предложен конкретный генетический алгоритм для решения задачи криптоанализа блочного перестановочного шифра. Далее необходимо оптимальным образом подобрать параметры алгоритма.
4. Влияние параметров генетического алгоритма на решение задачи криптоанализа
4.1. Параметры генетического алгоритма
Выделим те параметры алгоритма, которые упоминались в тексте и которые могут оказывать влияние на качество и скорость решения задачи:
• численность начальной популяции к,
• вероятность унаследования генов от одного из родителей рс;
• вероятность мутации рт;
• количество поколений (эпох) М.
Каких-либо теоретических рекомендаций выбора этих параметров нет. Можно только сказать, что вероятность мутации должна быть малой величиной, а вероятность унаследования генов от одного из родителей, наоборот, должна быть величиной, близкой к
0,5. Количество поколений может быть выбрано, исходя из имеющегося времени, если оно ограничено. Вообще говоря, количество поколений должно быть достаточно большим. Численность начальной популяции имеет большое значение, так как в построенном нами генетическом алгоритме численность популяции остается неизменной и всегда равна к Обычно размер популяции устанавливают равным 10-20 особям. Следует отметить, что численность популяции также оказывает немаловажное значение на объем вычислений,
и, следовательно, на затрачиваемое время.
4.2. Анализ результатов
Практическое исследование показывает, что в отношении указанных параметров можно сделать следующие замечания. Малая численность популяции дает плохие результаты, алгоритм быстро уходит в локальный минимум. Оптимальным значением численности популяции является 13-17 особей. Изменение показателя вероятности мутации в пределах разумного заметного эффекта не оказывает.
Частично это можно объяснить тем, что специфический оператор скрещивания уже подразумевает некоторую мутацию (в том случае, когда ген не может быть унаследован ни от одного предка, он просто выбирается случайным образом, т.е. в этом гене потомок не похож ни на одного из своих предков). Большое число поколений не имеет смысла, так как на втором десятке алгоритм находит локальный минимум, и дальнейшие действия не имеют смысла. Таким образом, оптимальным значением числа популяций является 25-30.
Отметим, что задача тестировалась на ключах относительно небольших размеров (порядка 10 элементов). На ключах большей длины, по всей видимости, потребуются большие значения числа популяций и, возможно, численности популяции.
Получаемый в результате дешифровки текст далеко не всегда совпадает с исходным открытым текстом, однако отличается от него не сильно, что делает возможным дальнейшую доработку. Таким образом, алгоритм не решает задачу дешифровки полностью автоматически, но значительно помогает в ее решении, т. е. результаты применения алгоритма можно оценивать как удовлетворительные.
5. Пример работы программы
Посмотрим, как на практике работает разработанный алгоритм. Для примера был взят фрагмент художественного текста, а именно отрывок из романа Тургенева "Ру-дин":
Было тихое летнее утро. Солнце уже довольно высоко стояло на чистом небе, но поля еще блестели росой, из недавно проснувшихся долин веяло душистой свежестью, и в лесу еще сыром и не шумном, весело распевали ранние птички. На вершине пологого холма, сверху донизу покрытого...
Этот текст был зашифрован при помощи блочного перестановочного шифра. Как говорилось выше, суть такого шифра заключается в перестановке местами букв исходного текста. В результате был получен следующий набор символов:
т иолоеыхБенеуеттл оСлц. еонрд оожелув ывско оноьляонтоас отм ис ч,н бе-пеонщеебя лл оил отессрези е, дйноп рснонво-асхядшиов уевяон иллтсо шисуйдтсь,же ею-
велс в е уирыо сиемщушмое мнн есл вер о,авл пе сиаеи тнниапрН ави.ек ч еплиношорх ом-гоаолгрех свд у, упкизрноо о ог т ы.
Видя такой набор букв, трудно воссоздать исходный текст "вручную": его смысл совершенно не ясен. Далее этот зашифрованный текст был подан на вход разработанного генетического алгоритма. Для дешифровки использовались следующие параметры: численность популяции - 10, количество поколений - 30, вероятность мутации - 20%. В результате работы алгоритма был получен следующий текст:
Былохти ое лет еенутро. нолСце ужев-до ольно оысвко сто лояна чис омт небе он, поля щееблестери лосой, нз иедавноопр снув-ши сяхдолин леяво душийтос свежеютьс, и в уесл еще смроы и не нумшом, веоелс распеи-алв раннпе итички. На вершино пелогоголхо ма, свурхе донизо пукрытог о...
Как видно, полностью дешифровать шифртекст алгоритму не удалось - полученный текст не совпадает с исходным. Однако можно заметить, что он намного ближе к исходному, чем шифртекст. В нем можно заметить осмысленные слова, которые, совпадают с соответствующими словами исходного текста (было, уже, поля, небе). На основе полученного текста уже намного проще довести дешифровку до конца "вручную".
Кроме того, если посмотреть на секретный ключ, которым в данном случае является перестановка
(\ 2345678910Л
ч10 8 5 6 2 1 3 9 4 7 ,,
и на ключ, полученный в результате работы генетического алгоритма
' 1 23456789 10Л
v10 8 5 6 9 1 3 2 4 7у,
то можно увидеть, что они отличаются только в одной паре значений (что в генетическом алгоритме соответствует одной паре хромосом). То есть "вручную" остается только найти и изменить эту пару значений, что не составляет труда сделать, учитывая, что текст должен получиться осмысленным.
Таким образом, алгоритм хотя и не полностью автоматизирует процесс дешифровки текста, зашифрованного секретным ключом, но довольно существенно ускоряет его, делая несложным процесс доведение дешифровки до конца "вручную".
Список литературы
1. Delman B. GeneticAlgorithms in Cryptography // A Thesis Submitted in Partial Fulfillment of the Requirements for the Degree of Master of Science in Computer Engineering. New York, 2004.
2. Лебедев А. В криптографии мы способны конкурировать. ЛАН: Крипто, 2005.
3. Стикс Г. Совершенно секретно. Режим доступа: http // www.sciam.ru/news/2005.
4. Аграновский А В., Хади Р.А. Практическая криптография: алгоритмы и их программирование. М.: СОЛОН-Пресс, 2002.
5. Jakobsen T. A Fast Method for the Cryptanalysis of Substitution Ciphers. 1995.
Genetic algorithms for cryptanalysis of the permutation cipher
A. YU. Gorodilov
Perm State University, 614990, Perm, Bukireva st., 15
In this article the possibility of using genetic algorithms for cryptanalysis is discussed. Genetic algorithm for searching secret key in permutation cipher was worked out. In this case secret key is the permutation. The results confirm the possibility of the almost automatic deciphering.