Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Практическая криптография алгоритмы и их программирование
.pdf
Глава 3. Дешифрование классических шифров 61
Ðèñ. 3.7. Первый шифр Тайлера
Многие незаурядные шифровальщики проявляли интерес к задачам По в течение нескольких лет, но ни один из них не предложил верного решения задач
Тайлера до недавнего времени.
Были даже объявлены соревнования, в которых требовалось раскрыть обе задачи Тайлера, а за победу полагалось приличное денежное вознаграждение. Первый шифр Тайлера оказался более легким — шифром простой моноалфавитной
замены, а потому был вскрыт относительно быстро. Это сделал в 1992 году профессор Теренс Вален (Terence Whalen). Текст сообщения выглядит следующим
образом:
The soul secure in her existence smiles at the drawn dagger and defies
its point. The stars shall fade away, the sun himself grow dim with age
and nature sink in years, but thou shall flourish in immortal youth, unhurt amid the war of elements, the wreck of matter and the crush of
worlds.
Но вот второй шифр Тайлера уже был не так прост, и найти его решение оказалось возможным только недавно, с использованием компьютерной вычислительной техники. Только спустя 150 лет вторая задача, оставленная По для своих
читателей, была решена Гилом Борза из Торонто (рис. 3.8).
Как видно из рис. 3.8, второй шифр представляет собой довольно разношерстный набор различных символов, которые на первый взгляд абсолютно независимы.
Первой задачей было выяснение метода зашифрования и языка, на котором
было написано зашифрованное сообщение. Поскольку первое сообщение было написано на английском языке и сам По говорил и писал на нем, то можно предположить, что, скорее всего, и второй шифр тоже содержит сообщение на английском. Еще одним доводом являются подсчитанные длины слов (в предположении,
что пробелы расставлены на границах слов сообщения), распределение которых
характерно для английского языка.
Повторения отдельных слов и частей слов указывают на то, что был использован метод простой замены. Большое количество различных букв указывает на
полиалфавитность, видимо для того, чтобы сбить с толку частотный анализ. Ко
-

62 Глава 3. Дешифрование классических шифров
Ðèñ. 3.8. Второй шифр Тайлера
нечно, повторения могут возникать еще и при использовании таких шифров, как,
например, шифр Виженера, но расстояния между видимыми повторениями не
имеют ни одного общего кратного, а потому подобные шифры были отклонены.
Некоторые слова были написаны буквами, которые были «отражены» или перевернуты слева-направо или вверх тормашками. Если посчитать все отраженные
и перевернутые символы одними и теми же, криптоанализ зайдет в тупик.
При этом символы были так равномерно распределены по всему тексту,
что не давали никаких зацепок. Подстановка вместо повторяющихся коротких
шифробозначений часто употребляемых английских слов тоже не дает результата, поскольку из-за отсутствия достаточного объема текста сложно проверить замены и на распределение частот, и на присутствие каких-либо шаблонов слов.
Именно поэтому к делу дешифрования был приобщен компьютер. Для занесения всевозможных вариантов написания английских букв для ввода в компьютер
пришлось использовать специальную кодировку, обозначая каждый символ на бу
-

Глава 3. Дешифрование классических шифров 63
маге двумя символами в кодировке ASCII. Первый означает расположение, а второй определяет сам символ (рис. 3.9).
A ]UB, ]SB, ]SC, ]SD, [LE, [UG, [LI, [UT, ]SY
B [LC, [SF, [UH
C [SA, ]UI, [UG
D [UA, [SB, [LF, [LH, [SS
E [UB, ]SC, [SG, [LJ, [UL, [UO, ]UP, ]LR, ]ST, UV, [SV, ]SX, [SY, ]UZ, [SZ
F [LA, [LK, [LS
G [SX, ]LY
H ]SA, [UC, ]UD, ]SH, ]LJ, ]LM, [UN, [SP, ]SR, ]UW
I [UD, ]SE, [UF, [SK, [LM, ]UX
J
K
L [SD, [UE, ]SF, [LG, ]US
M [SE, ]SG, ]UK, [LQ, ]UY
N ]LA, [SH, [UI, ]SJ, [UK, ]UQ, ]SS
O ]LC, ]UF, ]LG, [SJ, ]SK, ]UM, [LN, ]UR, [UT, ]SU, [UY
P ]UE, ]LF, [SI, ]SM, [UZ
Q
R ]LE, ]UG, ]LH, ]SL, ]UN, [SO, ]SQ, [UU, [UX
S ]UC, ]LI, ]LK, [SL, ]SN, [UP, [UV
T ]UA, ]UG, [UM, ]UO, ]SP, [LR, [SR, [US, ]LT, [LU, ]LU, ]SV, ]SW
U [LD, [SM, [LP, [UQ, [UR, [LT
V [ST
W [LB, ]UL, [SN, [LO, [SQ
X
Y [LL, [UW
Z [SU, [LV
8
Ðèñ. 3.9
Для криптоанализа шифра была написана программа, которая сопоставляла
эту запись символов к словам из большого словаря на разные темы. Еще одна дополнительная программа искала в полученных совпадениях наибольшее количество общих символов. Однако результаты, получаемые с их помощью, не дали
нужного результата.
9
Иногда нужный результат может дать поиск подходящего открытого текста в
сети, но такие попадания «в яблочко» встречаются очень редко.
Последним шансом вскрыть шифр остается попробовать все подстановки повторяющихся трехбуквенных сочетаний на часто употребляемые слова the, and,
not и т. д. Именно здесь и крылась разгадка шифра. Так, например, AmL вполне
8
На самом деле на рис. 3.9 показана нотация, в которой первый символ «[« или «]» обозначает соответственно переворот символа или его отражение. Второй обозначает заглавную
букву (U), строчную (L) или строчную большую (S). Третий символ содержит букву алфавита
в описанном двумя другими состоянии.
9
Как потом оказалось, шифр содержал ошибки, которые не позволяли осуществить поиск
по словарю. Таким образом, правильный в общем-то подход не дал нужного результата из-за
ошибок (возможно, преднамеренных) шифровальщика.

64 Глава 3. Дешифрование классических шифров
отвечает артиклю the, поскольку стоит после одного длинного слова и после одного длинного и одного двубуквенного, которое может обозначать предлог.
Подбирая таким образом слова, получим некоторый набор алфавитов. Дополнительно используем описанную выше программу для получения наиболее вероятных словосочетаний (а их получается около 4000).
«Цепляясь» за слова, можно довольно быстро раскрутить всю цепочку. Например, среди словосочетаний, которые предлагает программа, можно найти слова, привлекающие внимание: ardent, eye, and. После этого в шифрограмме получается слово, которое выглядит, как ...ter...n, а это не что иное, как afternoon. Затем появляются th... и ...re и т. д. В результате получается следующий открытый
текст:
It was early spring, warm and sultry glowed the afternoon. The very
breezes seemed to share the delicious langour of universal nature, are laden the various and mingled perfumes of the rose and the — essaerne (?),
the woodbine and its wildflower. They slowly wafted their fragrant offering to the open window where sat the lovers. The ardent sun shoot fell
upon her blushing face and its gentle beauty was more like the creation of
romance or the fair inspiration of a dream than the actual reality on
earth. Tenderly her lover gazed upon her as the clusterous ringlets were
edged (?) by amorous and sportive zephyrs and when he perceived (?) the
rude intrusion of the sunlight he sprang to draw the curtain but softly she
stayed him. «No, no, dear Charles», she softly said, «much rather you'ld I
have a little sun than no air at all».
Очевидно, это и есть решение второй головоломки Тайлера-По.
Список литературы
1. Аграновский А. В., Хади Р. А., Ерусалимский Я. М., «Криптография и откры-
тые системы», Телекоммуникации, ¹ 2, 2001 г., стр. 13—23.
2. Аграновский А. В., Балакин А. В., Хади Р. А., «Классические шифры и методы
их криптоанализа», М: Машиностроение, Информационные технологии ¹ 10, 2001,
стр. 40—46.
3. T. Jakobsen, «A Fast Method for the Cryptanalysis of Substitution Ciphers», ðóêîïèñü, 1995.
4. J. C. King, «An algorithm for the complete automated cryptanalysis of periodic polyalphabetic substitution ciphers», Cryptologia, 18(4), 1994.
5. Peleg, S. and Rosenfeld, A. «Breaking Substitution Ciphers Using a Relaxation Algorithm» Comm. ACM Vol. 22(11) pp 598—605 (Nov. 1979).
6. Lucks, Michael, «A Constraint Satisfaction Algorithm for the Automated Decryption of.
7. Simple Substitution Ciphers», Advances in Cryptology — CRYPTO '88, Springer
Lecture Notes in Computer Science, vol. 403.
8. John Carrol and Steve Martin, «The Automated Cryptanalysis of Substitution Cip
hers», Cryptologia, vol X number 4, Oct 86 p. 193—209.
-

Глава 3. Дешифрование классических шифров 65
9. John Carrol and Lynda Robbins, «Automated Cryptanalysis of Polyalphabetic Ciphers», Cryptologia, vol XI number 4, Oct 87 p. 193—205.
10. Martin Kochanski, «A Survey of Data Insecurity Packages», Cryptologia, vol XI
number 1, Jan 87 p. 1—15.
11. Martin Kochanski, «Another Data Insecurity Package», Cryptologia, vol XII number 3, July 88, p. 165—177.
12. King and Bahler, «Probabilistic Relaxation in the Cryptanalysis of Simple Substitution Ciphers», Cryptologia 16(3):215—225.
13. King and Bahler, «An Algorithmic Solution of Sequential Homophonic Ciphers»,
Cryptologia, April 93 (in press).
14. R. Spillman et.al., «Use of Genetic Algorithms in Cryptanalysis of Simple Substitution Ciphers», Cryptologia, vol XVII Number 1, Jan 93 p. 31—44.
15. Gaines, H. F. 1956. Cryptanalysis. New York: Dover Publications.
16. Sinkov, A. 1966. Elementary Cryptanalysis. The Mathematical Association of
America.

Глава 4
Как устроены современные шифры
Блочный шифр — это криптографическая система, которая делит открытый текст на отдельные
блоки, как правило, одинакового размера и независимо оперирует с каждым из них с целью получения последовательности блоков шифрованного текста.
E. Smid, D. K. Branstad.
The Data Encryption Standard:
Past and Future
Несмотря на активное развитие и повышенный интерес к «математическому
Клондайку» асимметричной криптографии, блочные и поточные шифры остаются
верной надежной лошадкой, на использование которой опираются все без исключения современные криптосистемы.
При передаче и хранении ценной или секретной информации ее защищают c
помощью криптосистем смешанного типа. С помощью двухключевых асимметричных алгоритмов решается задача распределения ключей для симметричных шифров. А затем все передаваемые данные шифруются с помощью блочного или поточного шифра. Блочные шифры также используют в качестве криптографических функций для организации криптостойких хэш-функций и выработки
имитовставок для защиты сообщений от подделки и подлога.
Таким образом, одно из главных мест в создании защищенных информационных систем и обеспечении криптографической защиты занимают именно блочные
и поточные шифры как быстрый и весьма надежный метод преобразования данных, направленный на то, чтобы сделать эти данные бесполезными для непосвященных лиц.
Поскольку потенциальные авторы криптографических алгоритмов должны
исходить из практичности и эффективности своих детищ, необходимо четко представлять себе задачи, которые должны быть решены с помощью созданных алгоритмов. Останавливаясь на главном, необходимы такие криптографические преобразования, которые бы обеспечивали решение двух главных проблем защиты
данных, а именно:
•
проблему конфиденциальности (секретности), то есть лишение противника
возможности извлечь информацию из канала связи;
•
проблему имитостойкости, а именно лишение противника возможности
ввести ложную информацию или изменить данные так, чтобы изменился их
смысл.
В общем случае эти требования являются независимыми и методы их обеспечения весьма различаются. К примеру, хотя на сегодняшний день классическая

Глава 4. Как устроены современные шифры 67
схема однократного использования гаммы10(см. раздел «Использование однократного гаммирования») остается единственной безусловно стойкой системой шифрования, тем не менее она вовсе не является имитостойкой и, более того, подвержена подлогу с очень большой вероятностью.
Создание шифра или любого другого алгоритма обычно вызвано не каким-то
общим стремлением создать новый метод криптографического преобразования
данных, а призвано решить гораздо более приземленную практическую задачу.
На этапе формирования задачи специалист должен принять решение, какой шифр
или другой криптоалгоритм ему лучше использовать, чтобы достичь максимального эффекта. Критерием эффективности может быть скорость обработки, надежность или сложность анализа. В зависимости от типа задачи может быть выбран
поточный или блочный шифр. Оба вида имеют свои преимущества и недостатки и
должны быть выбраны с позиции максимальной эффективности при максимальной безопасности.
Собственно, понятия блочного и поточного шифров сами по себе в околонаучных кругах представляются довольно абстрактными, а уж разговоры об отличиях блочных шифров от поточных для непосвященного могут показаться и вовсе
интеллектуальным состязанием в философских размышлениях. Тем не менее все
не так сложно, и мы постараемся разобраться в принципах построения и тех и
других, а значит, обязательно увидим, чем они отличаются.
Вкратце же, с точки зрения создателя криптоалгоритмов, основное отличие
блочных шифров от поточных заключается не только в свойстве блочных шифров
преобразовывать сразу блоки битов данных, в отличие от поточных шифров, оперирующих с битами раздельно. К сожалению, эта расхожая точка зрения не является истинной в полной мере. Это лишь свойство шифров, но не их принципиальное отличие. Вообще блок для шифра — это некоторая порция данных, возможно,
фиксированного размера, которую он может преобразовать за один цикл работы.
Основное же и принципиальное отличие лежит в архитектуре, то есть
устройстве самих шифров и реализующих их алгоритмах. Разделение здесь можно провести следующим образом.
Поточные шифры, в отличие от блочных, обладают памятью предыдущего состояния шифра. На его основе и с привлечением некоторых дополнительных
криптографических преобразований поточная шифросистема вырабатывает текущий ключ для каждого следующего элемента открытого текста (например, символа или бита). Используя этот ключ, с помощью некоторого преобразования и зашифровывается каждый такой элемент, являющийся для шифросистемы атомарным, то есть неделимым.
Блочные же шифры не обладают таким устройством запоминания своего предыдущего состояния. Криптографическое преобразование данных они осуществляют в зависимости от итерационных подключей, которые вырабатываются из
главного ключа. И шифрование строится только на основе ключевой последовательности и криптографичеких примитивов. То есть блочный шифр может сгенери-
10
Конечно же при условии равновероятности гаммы и того, что ее длина больше либо рав
на длине зашифровываемого текста.
-

68 Глава 4. Как устроены современные шифры
ровать все необходимые ему для работы подключи сразу, и зависеть они будут только от исходной ключевой последовательности. Хотя здесь опять возникает некоторая неопределенность, если рассматривать существующие блочные шифры,
для которых описаны алгоритмы работы в режиме поточного гаммирования, —
это, например, ГОСТ 28147—89 и DES. В таком случае, будучи например, использованным в режиме гаммирования с обратной связью,
11
блочный шифр работа-
ет как поточный.
Во многих случаях при сравнении блочных и поточных шифров можно сделать вывод о том, что блочные шифры представляют собой более надежный и быстрый инструмент, нежели поточные. Это происходит по нескольким причинам.
В силу того что зашифрование для блочных шифров осуществляется одновременно блоками по нескольку символов (байтов) текста, пространство шифровеличин и шифробозначений у блочных шифров значительно больше, чем у поточных.
Многие методы криптоанализа основываются на ресурсоемких вычислениях, объем которых значительно зависит от объема используемого шифром алфавита
шифруемого текста (в общем случае эта зависимость выражается через экспоненциальную функцию).
Соответственно чем больше объем алфавита шифротекста — а это не что
иное, как объем пространства шифробозначений и объем пространства шифровеличин (если они совпадают), — тем вычислительно сложнее вскрыть шифр общими и некоторыми частными методами криптоанализа.
В то же время чем больше объем алфавита, тем больше приходится энтропии
на один знак шифробозначений. В этом случае блочный шифр начинает дополнительно вести себя как омофоническая система (см. раздел «Энтропия, расстояние
единственности. Омофон»), а следовательно, его статистические свойства приближаются к свойствам случайной функции. В ряде случаев это является одним
из критериев того, что шифр является достаточно криптостойким.
С другой стороны, для блочных шифров усложняется и анализ стойкости, заставляя авторов блочных шифров придумывать изощренные методы криптоанализа
и способы доказать стойкость используемых криптографических преобразований.
Возникновение блочных шифров
Шеннон в своей работе предложил рассматривать блочные шифры как наиболее эффективное перспективное средство обеспечения конфиденциальности сообщений в системах секретной связи. Он построил свою первую модель секретной системы с помощью алгебры шифров, введя понятия их суммы и произведения. Надо сказать, что, перенеся математические понятия в криптографию,
Шеннон сделал то, чего не сделал еще ни один криптограф до него, — он превратил криптологию в настоящую техническую научную сферу исследования. На сегодняшний день для моделирования шифров и их анализа уже существует не
11
Для аналога шифросистемы в соответствии с ГОСТ 28147—89 — шифра DES подобный
режим работы назван Ciphertext Feedback.

Глава 4. Как устроены современные шифры 69
один способ: это теория автоматов, теория групп, теория вероятности и многое
другое. Новейшие достижения только по каждой из них позволяют весьма эффективно исследовать различные свойства современных шифров и предлагать новые
методы криптоанализа. Многие весьма интересные свойства блочных шифров
оказались легко формализуемы именно с их помощью. Например, все раунды
шифра Rijndael могут быть описаны с помощью алгебраических уравнений над конечными полями, если воспользоваться теорией групп.
Изначально же существовал лишь способ, описанный Шенноном в своей статье о математической секретности. Сама статья разбита на несколько частей, и в
одной из них описана структура алгебры шифров.
12
Введение алгебры шифров
также может быть весьма полезно не только для теоретика-математика, но и для
практика-программиста.
Возможность сложения двух криптосистем X è Y, по Шеннону, — это шиф-
росистема Z = сумма(X, Y), которая заключается в использовании шифросистемы
X с некоторой вероятностью p или шифросистемы Y с вероятностью q = 1 − p.Выбор того, какую именно шифросистему использовать, содержится в значении
ключа, который будет применен к сумме Z этих шифросистем. То есть на самом
деле Z = pX + qY.
13
А произведение Z = XY представляет собой последовательное
применение сначала шифросистемы X, а затем уже Y.
На практике этот довольно формальный подход к описанию модели можно
представить и несколько по-иному. Предположим, что реализованы два алгоритма
шифрования — две шифросистемы, которые в обычной программе представлены
функциями F è S (см. листинг 4.1).
Листинг 4.1
uint8_t *F(uint8_t *text, int len) {
for(inti=0;i<len; i++) { // каждый символ текста
text[i] ^= i; // гаммируем с его позицией
}
return text;
}
uint8_t *S(uint8_t *text, int len) {
for(inti=0;i<len; i++) { // каждый символ текста
text[i] = (text[i] + i) % 0xFF; // складываем с его позицией по модулю
}
return text;
}
12
Поскольку речь в книге идет по большей части только о криптографических системах,
то и название алгебры криптосистем (а также алгебры шифров è алгебры шифросистем)
авторы сочли возможным дать немного отличным от термина алгебры секретных систем,о
которой и рассказывается в работе Шеннона. В рамках данной книги эти термины носят характер синонимов.
13
Шеннон использует понятия, близкие теории вероятности, формулируя термины алгеб
ры криптосистем очень похожими на алгебру вероятностных событий в теории вероятности.
Вообще же рассмотрение криптосистемы как вероятностного источника сообщений достаточно
продуктивно — многие криптоаналитические тесты построены именно на этом предположении.
-

70 Глава 4. Как устроены современные шифры
Обе функции в нашем частном случае не зависят от ключа (именно поэтому
соответствующий третий аргумент пропущен в их описаниях в исходных текстах). Однако практически ничего не меняется и в случае, когда одна или обе
шифросистемы зависят от ключа.
Как видно из листинга, выход обеих шифросистем совпадает по типу между
собой и аргументом — блоком данных с открытым текстом. Это позволяет создать программные функции суммы этих шифросистем и их произведения (см. листинг 4.2).
Листинг 4.2
uint8_t *sum_of_F_S(uint8_t *text, int len, int k) {
if(k&1!=0) //взависимости от ключа
return F(text, len); // используем одну шифросистему
else
return S(text, len); // или другую, но не обе сразу
}
uint8_t *other_sum_of_F_S(uint8_t *text, int len, int k) {
if (k > len) k = len; // проверка на случай недопустимых ключей
F(text, k); // используем одну шифросистему для одной части
// текста
S(text, len - k); // и другую для всего остального
return text;
}
uint8_t *MUL_OF_F_S(uint8_t *text, int len) {
F(text, len); // сначала используем один шифр
S(text, len); // потом другой
return text;
}
Обратите внимание на функцию other_sum_of_F_S(), которая также, как и
функция sum_of_F_S(), является суммой (!) шифросистем, поскольку содержит
зависимость от ключа. Поскольку используем одни и те же типы данных одновременно для выходов шифров и аргументов шифрующих функций, мы уже можем
строить все более сложные и сложные их композиции, создавая сумму произведений и произведения сумм различных шифров.
И вот тут надо отметить, что именно идея построения алгебры шифров оказалась весьма продуктивной. Определив суммы и произведения шифров, Клод Шеннон, так же как и мы только что, создавал и исследовал своего рода «бутерброды»
из композиции различных шифров. Правда, для своих исследований он использовал шифры перестановки и замены. Такие композиционные шифры для него
представлялись наиболее удачным решением двух проблем. И это оказалось действительно так. Исходя из практических соображений, Шеннон представил две
задачи криптографии для симметричных шифров.
Первая задача представляет собой задачу рассеивания, которая заключается
в необходимости иметь у шифра такое свойство, что малейшее изменение (или,
как еще говорят математики-алгебраисты, «возмущение») открытого текста вызы
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
