Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kody_i_shifry_yuliy_Cezar_Enigma_i_Internet_2007.pdf
Скачиваний:
259
Добавлен:
29.03.2016
Размер:
2.04 Mб
Скачать

202

числа, стоящие в правом столбце напротив значений n=0,4,6 и 11:

(63)2129 63 523 1500 2822.

Поскольку

63 523=32949=10 3127+1679 1679(mod 3127),

и

1500 2822=4233000=1353 3127+2169 2169(mod 3127),

и наконец,

1679 2169=3641751=1164 3127+1923 1923(mod 3127),

то в результате расшифрования блока 0063 получается значение 1923. Оно преобразуется в пару букв TX, которая на самом деле является четвертым диграфом исходного сообщения.

Эти вычисления, хотя они и утомительны, могут быть выполнены на карманном калькуляторе. Но в реальных приложениях системы RSA используются числа, гораздо большие по порядку величин, и здесь не обойтись без компьютера со специальным программным обеспечением для обработки подобных чисел. И даже с использованием компьютера жизненно необходимым остается применение техники "последовательного возведения в квадрат" ради сокращения числа операций умножения и деления. В типичном приложении системы RSA, где порядок модуля, скорее всего, не меньше 10100, значение ключа зашифрования или расшифрования легко может оказаться близким к 1050. Поскольку числовые блоки придется возводить в эту степень, то о подсчете "в лоб" речи идти не может. С другой стороны, применяя последовательное возведение в квадрат, мы сокращаем число операций умножения и деления до нескольких сотен, что по времени займет не больше нескольких миллисекунд (см. приложение M26).

Каким образом хозяин ключей отвечает корреспондентам?

Как может обладатель ключа расшифрования ответить на письмо, зашифрованное с помощью предоставленного им открытого ключа по системе RSA? Ответ очень прост: зашифровать свой ответ на (секретном) ключе расшифрования d; получатель при этом расшифрует пришедшее ему шифрованное сообщение на (открытом) ключе зашифрования. При этом

203

получится исходное открытое сообщение, потому что, как уже замечено ранее, в системе RSA ключи зашифрования и расшифрования симметричны:

каждый из них является обратным для другого.

Алгоритм RSA является частным случаем системы шифрования с открытым ключом, поскольку любой желающий получать шифрованные сообщения в какой-либо форме публикует свой ключ, который является общедоступным, подобно телефонному справочнику. Это - ключ зашифрования. И только у хозяина этого ключа есть соответствующий ключ расшифрования. Поэтому, хотя любой может послать ему шифрованное сообщение, только он в состоянии расшифровать их. Для того, чтобы это было так, надо, чтобы для данного метода шифрования было невозможно за приемлемое время найти ключ расшифрования, даже если известны и сам метод шифрования, и ключ зашифрования. В случае алгоритма RSA стойкость держится на том, что перемножить два больших числа просто, но, если дано только произведение этих двух больших чисел, то найти их крайне трудно. Функция, значение которой просто вычислить, но очень трудно найти ее инверсию (как в случае алгоритма RSA), называется однонаправленной функцией. Еще один пример такой функции - это задача дискретного логарифмирования, с которой мы уже встречались при анализе системы Диффи-Хеллмана.

Задача 13.1

Существует вероятность, что при шифровании по системе RSA строка перейдет сама в себя. Наиболее очевидными случаями для двухзначных строк из вышеприведенного примера являются строки AA и AB, численные представления которых равны соответственно 0000 и 0001. Поскольку эти числа при возведении в любую степень не изменяются, то они при шифровании переходят сами в себя независимо от значений ключа зашифрования и модуля. Существуют и другие случаи: проверьте, что

для значения модуля 3127 и ключа зашифрования 17 числа 0530 и 0531 при зашифровании по алгоритму RSA оба переходят в себя.

(Могут возразить, что числам 0530 и 0531 не отвечают никакие пары букв; однако, заметим, что числа 0825 и 2302 - числовые представления пар IZ и XC - также переходят сами в себя.)

Тем не менее, необходимо сказать, что для "реального" приложения системы RSA вероятность того, что блок текста перейдет при шифровании сам в себя, будет пренебрежимо мала

204

Американский Стандарт Шифрования Данных (DES)*)

В1973 году правительство США в ответ на неоднократные обращения со стороны промышленности и различных организаций дало своему министерству торговли поручение разработать единые федеральные стандарты автоматической обработки данных. Внутри министерства эта задача была возложена на Национальное Бюро Стандартов (НБС). Одной из задач, рассматривавшихся в HБС, была разработка стандарта шифрования данных. Вместо того, чтобы просто заняться самостоятельной разработкой такого алгоритма, НБС в мае 1973 года публично пригласило заинтересованные стороны присылать свои предложения по разработке "стандарта шифрования данных".

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

Поскольку первые поступившие предложения разочаровали организаторов, в августе 1974 года приглашение было опубликовано повторно, в результате чего в марте 1975 года для дальнейшего исследования был выбран проект, представленный корпорацией IBM. После обсуждений и диспутов, длившихся более 18 месяцев, в ноябре 1976 года данное предложение IBM было принято и превратилось в "Стандарт шифрования данных" ("The Data Encryption Standard", сокращенно DES) - см. [13.3, 13.4].

DES-алгоритм явился предметом большого числа исследований, и ему посвящено значительное количество работ. Полное его описание, представляющее интерес в основном для специалистов, можно найти в многочисленных книгах, в том числе [13.5] и [13.6]. Вкратце же сущность алгоритма заключается в следующем.

Общие сведения

(1)Конструктивно алгоритм обеспечивает шифрование блоков данных по 64 разряда (бита) под управлением 64-разрядного ключа (K). Таким образом, DES-алгоритм является примером так называемых

блочных шифров.

(2)Два человека, желающие связываться друг с другом с помощью DES-

*) DES –аббревиатура словосочетания "Data Encryption Standard", перевод которого вынесен в данный заголовок (прим. перев.).

205

алгоритма, должны договориться об используемом значении (секретного) ключа K. Все остальные сведения о DES-алгоритме являются общедоступными.

(3)При задании секретного ключа K пользователи выбирают семь 8-разрядных символов (т.е. в общей сложности 56 битов), к которым в процессе работы DES-алгоритма добавляются еще 8 проверочных разрядов. В результате получаются требуемые 64 разряда секретного ключа.

Процедура зашифрования

(4)Разряды 64-битового блока данных представляются согласно начальной перестановке (IP).

(5)64-битовый блок данных разбивается на два 32-разрядных сегмента: левый (L) и правый (R).

(6)Сорок восемь разрядов ключа K нелинейным образом комбинируются с 48-разрядным "расширением" сегмента R ("расширение" получается повторением 16-ти из 32 разрядов R); затем полученные 48 битов редуцируются до 32-разрядной строки (обозначим ее через X).

(7)L заменяется на R, а в качестве нового 32-разрядного значения R берется сумма по модулю 2 строк X и L.

(8)Шаги (6) и (7) повторяются 16 раз, и каждый раз на шаге (6) используются разные 48-разрядные сегменты ключа K.

(9)64 разряда, полученные в конце последнего (16-го) шага подвергаются инверсии начальной перестановки, т.е. (IP)-1.

(10)В результате получаются 64 бита шифрованного текста.

Процедура расшифрования

(11) Расшифрование осуществляется в обратном порядке с использованием того же самого ключа K.

Стойкость DES-алгоритма

Стоит заметить, что два человека, желающие связываться друг с другом с помощью DES-алгоритма, должны договориться об общем ключе. Это можно сделать с использованием системы ключевого обмена ДиффиХеллмана. Эта процедура является безопасной, если только третья сторона не может перехватывать и изменять содержание сообщений.

206

Что касается самого DES-алгоритма, то данные, зашифрованные с его помощью на большом количестве ключей, подвергались различным тестам, в том числе статистическим, и все они дали хорошие результаты. Один из самых важных тестов называется "лавина": сколько именно разрядов из 64-х изменится на выходе, если изменить один из 64-х разрядов на входе? Для слабого шифра ответ был бы "1"; в идеальной системе шифрования ответ должен быть "около 32-х" - именно так обстоит дело в DES-алгоритме

(примеры см. в [13.5]).

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

задают 56-разрядный ключ, то противнику надо опробовать "всего лишь" 256 возможных ключей. Так как 256 составляет около 1016,86, то компьютеру,

способному проверять один ключ в микросекунду, понадобится 2300 лет для их полного перебора. Ясно, что это практически невыполнимо. Однако критики DES-алгоритма заявляли, что миллион таких компьютеров, работающих параллельно, смогут найти ключ всего за один день. И так как это будет стоить огромной суммы денег и потребует больших организационных усилий, то трудно себе представить, чтобы кто-нибудь посчитал стоящим такое предприятие, если только заранее не известно, что сообщение относится к жизненно важному вопросу национальной безопасности. Также выдвигались предположения, что возможно существование тайной "лазейки", или Ахиллесовой пяты, известной разработчикам DES-алгоритма, что позволит осведомленным о ее существовании находить ключ за приемлемое время. Это может быть правдой, но никто до сих пор не обнаружил данных, свидетельствующих о ее существовании.

Также высказывались предположения, что в DES-алгоритме надо было использовать ключ большей длины, и чаще всего при этом говорили о 128 разрядах. Это, конечно, устранило бы все сомнения по поводу его стойкости, и с тех пор 128-битовое шифрование появилось в составе других систем, но в 1977 году это не сочли необходимым.

Альтернативой использования 128-разрядного ключа могло бы быть последовательное шифрование на двух 64-разрядных ключах, но можно показать, что в этом случае стойкость возрастает всего лишь вдвое по сравнению с использованием одного 64-разрядного ключа (если у криптоаналитика в наличии имеется компьютер с огромным объемом памяти). Данный метод вскрытия требует знания открытого текста и его шифрованного эквивалента. Известный открытый текст зашифровывается на всех возможных 64-разрядных ключах, а известный шифрованный текст расшифровывается на всех возможных 64-разрядных ключах. Затем происходит сортировка и сравнение двух построенных множеств данных. Это означает, что потребуется всего лишь 257 испытаний, а не 2112. Если

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]