Министерство образования Российской Федерации
Санкт-Петербургский государственный институт точной
механики и оптики (технический университет)
Ю.А.Гатчин, А. Г. Коробейников
Основы криптографических алгоритмов
Учебное пособие
Санкт-Петербург 2002
2
УДК 511
Ю.А.Гатчин, А. Г. Коробейников. Основы криптографических алгоритмов
Учебное пособие. СПб: ГИТМО (ТУ), 2002. 29 с.
В учебном пособии рассматриваются основы современных математических криптографических алгоритмов, фундаментом которых является прикладная теория чисел.
Рассмотрены криптосистемы с секретным ключом (одноключевые, симметричные или классические), а также криптосистемы с открытым ключом (асимметричные). Кроме того, представлены основные положения криптографического протокола "электронная подпись". В каждом разделе рассмотрены примеры на соответствующие темы.
Предназначено для студентов, обучающихся по специальности 0754 "Комплексная защита объектов информатизации".
Илл. – 3, список литературы – 8 наим.
Cанкт-Петербургский государственный институт точной механики и оптики (технический университет), Ю.А.Гатчин, А.Г. Коробейников
ВВЕДЕНИЕ
Математическая криптография возникла как наука о шифровании информации, т.е. как наука о криптосистемах. В классической шенноновской модели системы секретной связи имеют два полностью доверяющих друг-другу участника, которым необходимо передавать между собой информацию, не предназначенную для третьих лиц. Такая информация называется конфиденциальной или секретной. Отсюда возникает задача обеспечения конфиденциальности, т.е. защита секретной информации от противника. Эта задача, по крайней мере исторически, – первая задача криптографии. Она традиционно решается с помощью криптосистем.При обмене информацией между участниками часто возникает ситуация, когда информация не является конфиденциальной, но важен факт поступления сообщений в неискаженном виде, т.е. наличие гарантии, что никто сумеет не подделать сообщение. Такая гарантия называется обеспечением целостности информации и составляет вторую задачу криптографии.
Для предотвращения угрозы контроля за источниками информации (откуда пересылаются сообщения) необходима система контроля за доступом к ресурсам, которая должна удовлетворять двум, казалось бы, взаимно исключающим требованиям. Во – первых, всякий желающий должен иметь возможность обратиться к этой системе анонимно, а во – вторых, при этом все же доказать свое право на доступ к ресурсам. Примером могут служить бумажные купюры. Если ресурсом является некоторый товар, то наличие у покупателя достаточного количества купюр является доказательством его права на доступ к ресурсу. С другой стороны, хотя каждая бумажная купюра и имеет уникальный номер, отслеживать купюры по номерам практически невозможно, т.е. определить, кто ее использовал и в каких платежах, практически невозможно. Аналог этого свойства в криптографии называется неотслеживаемостью. Обеспечение неотслеживаемости –третья задача криптографии.
Если задача обеспечения конфиденциальности решается с помощью криптосистем, то для обеспечения целостности и неотслеживаемости разрабатываются криптографические протоколы.
В первой части кратко рассмотрена история криптографии и её основные понятия. Приведены основные классические шифры, такие как, шифр Цезаря, маршрутная транспозиция, таблица Виженера, одноразовый блокнот и т.д.
Во второй части изучаются основные свойства диофантова уравнения и метод его решения при помощи алгоритма Евклида. Рассмотрена криптосистема без передачи ключей.
В третьей части представлена криптосистема с открытым ключом, рассмотрена основные положения системы шифрования RSA, дан анализ стойкости системы с открытым ключом.
В четвертой части рассмотрены основные положения криптографического протокола "электронная подпись".
В пятой части рассмотрено использование криптографических алгоритмов для защиты программного обеспечения. Дан анализ их применения в некоторых программных продуктах.
Каждая часть сопровождается соответствующими примерами.
Криптографические средства и программные продукты, упоминаемые в пособии, используются только для иллюстрации общих криптографических идей, так как в работе не ставится цель сравнения имеющихся на рынке криптографических средств.
1. КЛАССИЧЕСКИЕ ШИФРЫ И ОСНОВНЫЕ
ПОНЯТИЯ
1.1. ИЗ ИСТОРИИ КРИПТОГРАФИИ Термин криптография (тайнопись) ввел Д. Валлис. Потребность шифровать и передавать шифрованные сообщения возникла очень давно.Так, еще в V-IV вв. до н. э. греки применяли специальное шифрующее устройство. По описанию Плутарха, оно состояло из двух палок одинаковой длины и толщины. Одну оставляли себе, а другую отдавали отъезжающему. Эти палки называли скиталами. Когда правителям нужно было сообщить какую-нибудь важную тайну, они вырезали длинную и узкую, вроде ремня, полосу папируса, наматывали ее на свою скиталу, не оставляя на ней никакого промежутка, так чтобы вся поверхность палки была охвачена этой полосой. Затем, оставляя папирус на скитале в том виде, как он есть, писали на нем все, что нужно, а написав, снимали полосу и без палки отправляли адресату. Так как буквы на ней разбросаны в беспорядке, то прочитать написанное можно только при помощи соответствующей скиталы, намотав на нее без пропусков полосу папируса.
Аристотелю принадлежит способ дешифрования этого шифра. Надо изготовить длинный конус и, начиная с основания, обертывать его лентой с шифрованным сообщением, постепенно сдвигая ее к вершине. В какой-то момент начнут просматриваться куски сообщения. Так можно определить диаметр скиталы.
В Древней Греции (II в. до н. э.) был известен шифр, называемый квадрат Полибия. Это устройство представляло собой квадрат 5 х 5, столбцы и строки которого нумеровали цифрами от 1 до 5. В каждую клетку этого квадрата записывалась одна буква. (В греческом варианте одна клетка оставалась пустой, в латинском – в одну клетку помещали две буквы i и j.) В результате каждой букве отвечала пара чисел и шифрованное сообщение превращалось в последовательность пар чисел.
Это сообщение записано при использовании латинского варианта квадрата Полибия, в котором буквы расположены в алфавитном порядке.
("Cogito, ergo sum" – лат, "Я мыслю, следовательно существую").
В 1 в. н.э. Ю. Цезарь во время войны с галлами, переписываясь со своими друзьями в Риме, заменял в сообщении первую букву латинского алфавита (А) на четвертую (D), вторую (В) – на пятую (Е), наконец, последнюю – на третью:
ABCDEFGHI J KLMNOPQRSTUVWXYZ
DEFGHI J KLMNOP QRSTUVWXYZABC
Пример 2. Донесение Ю. Цезаря Сенату об одержанной им победе над Понтийским царем выглядело так:YHQL YLGL YLFL("Veni, vidi, vici" – лат. "Пришел, увидел, победил").
Император Август (1 в. н. э.) в своей переписке заменял первую букву на вторую, вторую – на третью и т. д., наконец, последнюю – на первую:
ABCDEFGHI J KLMNOPQRSTUVWXYZ
BCDEFGHI J KLMNOPQRSTUVWXYZA
Пример 2. Любимое изречение императора Августа выглядело так:GFTUJOB MFOUF ("Festina lente" – лат. "Торопись медленно").
Квадрат Полибия, шифр Цезаря входят в класс шифров, называемых подстановка или простая замена, т.е. Это такой шифр, в котором каждой букве алфавита соответствует буква, цифра, символ или какаянибудь их комбинация.
В известных рассказах “Пляшущие человечки” Конан Дойля и “Золотой жук” Эдгара По используемые шифры относятся к указанному классу шифров. В другом классе шифров – перестановка – буквы сообщения каким-нибудь способом переставляются между собой. К этому классу принадлежит шифр скитала.
1.2. МАРШРУТНАЯ ТРАНСПОЗИЦИЯ К классу перестановка относится шифр маршрутная транспозиция и его вариант постолбцовая транспозиция. В каждом из них в данный прямоугольник [nm] сообщение вписывается заранее обусловленным способом, а столбцы нумеруются или обычным порядком следования, или в порядке следования букв ключа – буквенного ключевого слова.
Пример 3. В первом прямоугольнике столбцы нумеруются в обычном порядке следования – слева направо, а во втором – в порядке следования букв слова “Пушкин”. Используя расположение букв этого ключа в алфавите, получим набор чисел [4 5 6 2 1 3]:
В первом случае шифрованный текст найдем, если будем выписывать буквы очередного столбца в порядке следования столбцов (прямом или обратном), во втором, – если будем выписывать буквы столбца в порядке следования букв ключа. Таким образом, будем иметь:
1) двундтго енвеаалй лошйнруа амипьибб дихрянов андесыкг;
2) дихрянов амипьибб андесыкг двундтго енвеаалй лошйнруа.
Термин “шифр” арабского происхождения. В начале XV в. арабы опубликовали энциклопедию “Шауба Аль-Аща”, в которой есть специальный раздел о шифрах. В этой энциклопедии указан способ раскрытия шифра простой замены. Он основан на различной частоте повторяемости букв в тексте. В этом разделе есть перечень букв в порядке их повторяемости на основе изучения текста Корана. Заметим, что в русском тексте чаще всего встречается буква “О”, затем буква “Е” и на третьем месте стоят буквы “И” и “А”. Более точно: на 1000 букв русского текста в среднем приходится 90 букв “О”, 72 буквы “Е” или “Ё”, 60 букв “И” и “А” и т.д.
Неудобство шифров типа подстановка (простая замена) в случае использования стандартного алфавита очевидно. Таблица частот встречаемости букв алфавита позволяет определить одни или несколько символов, а этого иногда достаточно для дешифрования всего сообщения (“Пляшущие человечки” Конан Дойля или “Золотой жук” Эдгара По). Поэтому обычно пользуются разными приемами, чтобы затруднить дешифрование.
Для этой цели используют многобуквенную систему шифрования – систему, в которой одному символу отвечает одна или несколько комбинаций двух и более символов. Другой прием – использование нескольких алфавитов. В этом случае для каждого символа употребляют тот или иной алфавит в зависимости от ключа, который связан каким-нибудь способом с самим символом или с его порядком в передаваемом сообщении.
1.3. ТАБЛИЦА ВИЖЕНЕРА В процессе шифрования (и дешифрования) используется таблица Виженера, которая устроена следующим образом: в первой строке выписывается весь алфавит, в каждой следующей осуществляется циклический сдвиг на одну букву. Так получается квадратная таблица, число строк которой равно числу столбцов в алфавите. Чтобы зашифровать какое-нибудь сообщение, поступают следующим образом. Выбирается слово – лозунг и подписывается с повторением над буквами сообщения.
Чтобы получить шифрованный текст, находят очередной знак лозунга, начиная с первого в вертикальном алфавите, а ему соответствующий знак сообщения в горизонтальном.
Пример 4. Таблица 1, составлена из 31 буквы русского алфавита (без букв Ё и Ъ).
Выбираем лозунг – математика. Находим столбец, отвечающий букве "м" лозунга, а затем строку, соответствующую букве "к". На пересечении выделенных столбца и строки находим букву "ц". Так продолжая дальше, находим весь шифрованный текст.
математикаматематикаматема криптографиясер ьезнаянаука
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А
В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б
Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В
Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г
Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д
Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е
З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж
И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З
Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И
К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й
Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К
М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л
Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М
О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н
П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О
Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П
С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р
Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С
У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т
Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У
Х Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф
Ц Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х
Ч Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц
Ш Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч
Щ Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш
Ь Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ
Ы Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь
Э Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы
Ю Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э
Я А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю
Наконец, к сообщению можно применять несколько систем шифрования.
1.4. МОДИФИЦИРОВАННЫЙ ШИФР ЦЕЗАРЯ
Аббат Тритемеус – автор первой печатной книги о тайнописи ( г.) – предложил несколько шифров и среди них шифр, который можно считать усовершенствованием шифра Цезаря. Этот шифр устроен так. Все буквы алфавита нумеруются по порядку (от 1 до 31 в русском варианте).Затем выбирают какое-нибудь слово, называемое "ключом", и подписывают под сообщением с повторением.
Чтобы получить шифрованный текст, складывают номер очередной буквы с номером соответствующей буквы ключа. Если полученная сумма больше 31, то из нее вычитают 31. В результате получают последовательность чисел от 1 до 31. Вновь заменяя числа этой последовательности соответствующими буквами, получают шифрованный текст. Разбиваем этот текст на группы одной длины, получают шифрованное сообщение.
Пример 5. Выбираем ключевое слово "Пособие". Составляем сообщение "сессия начинается в конце семестра" сессия начина етсявк онцесе местра Шифруем, разбиваем текст на группы длины 6, и получаем шифрованное сообщение:
Чтобы получить шифрованный текст, складывают номер очередной буквы с номером соответствующей буквы ключа. Если полученная сумма больше 33, то из нее вычитают 33. В результате получают последовательность чисел от 1 до 33. Вновь заменяя числа этой последовательности соответствующими буквами, получают шифрованный текст. Разбивал этот текст на группы одной длины (например, по 5), получают шифрованное сообщение.
Если под ключом шифра понимать однобуквенное слово “В” (в русском варианте), то мы получим шифр Цезаря.
Пример 6. Для сообщения из примера 5, получим:
фиффлв ргьлрг ихфввн трщифи пифхуг 1.5. ОДНОРАЗОВЫЙ БЛОКНОТ Почти все используемые на практике шифры характеризуются как условно надежные, поскольку они могут быть раскрыты в принципе при наличии неограниченных вычислительных возможностей. Абсолютно надежные шифры нельзя разрушить даже при наличии неограниченных вычислительных возможностей. Доказательство существования и единственности абсолютно надежного шифра получил К.Шеннон с помощью разработанного им теоретико-информационного метода исследования шифров.
Таким образом, единственный абсолютно надежный шифр, который используется на практике, это так называемый одноразовый блокнот, в основе которого лежит та же идея, что и шифре Цезаря. Рассмотрим его основную идею.
В русском варианте число символов расширенного алфавита, т.е.
совокупности букв, а также знаков препинания и пробела между словами, равно 44. Занумеровав все символы расширенного алфавита числами от до 43, можно рассматривать любой передавамый текст, как последовательность {an} чисел множества А={0,1,2,…,43}. Имея случайную последовательность {cn} из чисел множества А той же длины что и передаваемый текст (ключ), складываем по модулю 44 число an передаваемого текста с соответствующим числом cn ключа получим последовательность {bn} знаков шифрованного текста.
Чтобы получить передаваемый текст, можно воспользоваться тем же ключом:
У двух абонентов, находящихся в секретной переписке, имеются два одинаковых блокнота, составленных из отрывных страниц, на каждой из которых напечатана таблица со случайными числами или буквами, т.е.
случайная последовательность чисел из множества А. Таблица имеет только две копии: одна используется отправителем, другая – получателем.
Отправитель свой текст шифрует указанным выше способом при помощи первой страницы блокнота. Зашифровав сообщение, он уничтожает использованную страницу и отправляет его второму абоненту. Получатель шифрованного текста расшифровывает его и также уничтожает использованный лист блокнота. Нетрудно видеть, что одноразовый шифр нераскрываем в принципе, так как символ в тексте может быть заменен любым другим символом и этот выбор совершенно случаен.
2. ДИОФАНТОВЫ УРАВНЕНИЯ
2.1. ДИОФАНТОВО УРАВНЕНИЕ ПЕРВОЙ СТЕПЕНИ
Рассмотрим задачу отыскания целочисленного решения уравнения:где наибольший общий делитель (НОД) a и m равен 1, т.е. НОД(a,m)=1, a>0, m>0.
Для решения этой задачи число a/m обращают в конечную цепную дробь при помощи алгоритма Евклида:
Цепная дробь имеет вид: a/m = [q0,q1,q2,…qk], а последовательности {Pn} и {Qn} числителей и знаменателей подходящих дробей к цепной дроби определяются рекуррентно:
Их вычисление удобно оформлять в виде таблицы:
Но известно, что PkQk-1-Pk-1Qk=(-1)k-1 и a/m = Pk/Qk. Следовательно А так как НОД(a,m)=1, то Pk = a, Qk = m. Поэтому Другими словами, пара (x,y), где x=(-1)k-1Qk-1; y=(-1)k-1Pk-1, являются целочисленным решением уравнения (2.1).
2.2. РЕШЕНИЕ СРАВНЕНИЯ ПЕРВОЙ СТЕПЕНИ
Чтобы найти решение сравнения ax1(mod m), где НОД(a,m)=1, обычно пользуются алгоритмом Евклида, и тогда x(-1)k-1Qk-1(mod m),, где Qk-1 – знаменатель предпоследней подходящей дроби разложения a/m в цепную дробь, или теоремой Ферма-Эйлера, которая утверждает, что если НОД(a,m)=1, то где (m) – функция Эйлера.Следовательно Пример 7. Решить сравнение Действительно, k=10; x(-1)942889 (mod 190116)= -42889 (mod 190116) = = 147227(mod 190116); (7283*147227-1)/ 190116=