Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическая криптография алгоритмы и их программирование

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
Глава 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, un­hurt 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 la­den the various and mingled perfumes of the rose and the — essaerne (?), the woodbine and its wildflower. They slowly wafted their fragrant offe­ring 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 po­lyalphabetic substitution ciphers», Cryptologia, 18(4), 1994.
5. Peleg, S. and Rosenfeld, A. «Breaking Substitution Ciphers Using a Relaxation Al­gorithm» Comm. ACM Vol. 22(11) pp 598—605 (Nov. 1979).
6. Lucks, Michael, «A Constraint Satisfaction Algorithm for the Automated Decrypti­on 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 Cip­hers», 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 num­ber 3, July 88, p. 165—177.
12. King and Bahler, «Probabilistic Relaxation in the Cryptanalysis of Simple Substi­tution 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 Substi­tution 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(), является суммой (!) шифросистем, поскольку содержит зависимость от ключа. Поскольку используем одни и те же типы данных одновре­менно для выходов шифров и аргументов шифрующих функций, мы уже можем строить все более сложные и сложные их композиции, создавая сумму произведе­ний и произведения сумм различных шифров.
И вот тут надо отметить, что именно идея построения алгебры шифров оказа­лась весьма продуктивной. Определив суммы и произведения шифров, Клод Шен­нон, так же как и мы только что, создавал и исследовал своего рода «бутерброды» из композиции различных шифров. Правда, для своих исследований он использо­вал шифры перестановки и замены. Такие композиционные шифры для него представлялись наиболее удачным решением двух проблем. И это оказалось дей­ствительно так. Исходя из практических соображений, Шеннон представил две задачи криптографии для симметричных шифров.
Первая задача представляет собой задачу рассеивания, которая заключается в необходимости иметь у шифра такое свойство, что малейшее изменение (или, как еще говорят математики-алгебраисты, «возмущение») открытого текста вызы
-
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]