- •Федеральное агенство по образованию
- •Часть 1. Основные понятия криптографии
- •1.1. Классификация шифров
- •1.1.1. Классификация по ключевой информации
- •1.1.2. Симметричное/асимметричное шифрование
- •1.1.3. Поточное/блочное шифрование
- •1.2. Термины и определения
- •Часть 2. Симметричная криптография
- •1.1.2. Перестановочные шифры
- •1.1.3. Гаммирование
- •1.2. Порядок выполнения лабораторной работы
- •1.3. Содержание отчета о выполненной работе
- •1.4. Контрольные вопросы
- •2.1. Общие сведения
- •2. 2. Алгоритм шифрования des
- •2.3. Конкурс aes
- •2.4. Краткое описание алгоритма Rijndael
- •2.5. Основы криптоанализа симметричных шифров
- •2.6. Порядок выполнения лабораторной работы
- •2.7. Содержание отчета о выполненной работе
- •2.8. Контрольные вопросы
- •Часть 2. Асимметричная криптография и цифровая подпись Алгоритмы шифрования с открытым ключом Общие сведения
- •3.1. Алгоритм rsa
- •3.2. Алгоритм шифрования Эль Гамаль
- •3.3. Схемы на основе эллиптических кривых
- •3.4. Порядок выполнения лабораторной работы
- •3.5. Содержание отчета о выполненной работе
- •3.6. Контрольные вопросы
- •Лабораторная работа № 4.
- •Общие сведения.
- •3.4. Порядок выполнения лабораторной работы
- •3.5. Содержание отчета о выполненной работе
- •Лабораторная работа № 5 Алгоритмы электронной цифровой подписи
- •5.1. Общие положения
- •5.2. Алгоритм цифровой подписи rsa
- •5.3. Алгоритм цифровой подписи Эль Гамаля
- •5.5. Стандарт цифровой подписи dss
- •5.6. Стандарт цифровой подписи гост р 34.10 – 2001
- •5.7. Порядок выполнения лабораторной работы
- •5.8. Содержание отчета о выполненной работе
- •5.9. Контрольные вопросы
1.1.3. Гаммирование
Гаммирование также является широко применяемым криптографическим преобразованием. Принцип шифрования гаммированием заключается в генерации гаммы шифра с помощью датчика псевдослучайных чисел и наложении полученной гаммы на открытые данные обратимым образом (например, используя сложение по модулю 2).
Процесс дешифрования данных сводится к повторной генерации гаммы шифра при известном ключе и обращении процесса наложения такой гаммы на зашифрованные данные.
Для программной генерации гаммы шифра необходимо воспользоваться датчиком псевдослучайных чисел. Наиболее простым для реализации является генератор линейной конгруэнтной последовательности:
Ti+1= (A. Ti+C) mod m
Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений А и С. Значение mобычно устанавливается равным 2n , где n- длина машинного слова в битах. Датчик имеет максимальный период М до того, как генерируемая последовательность начнет повторяться. По причине, отмеченной ранее, необходимо выбирать числа А и С такие, чтобы период М был максимальным. Как показано Д. Кнутом, линейный конгруэнтный датчик ПСЧ имеет максимальную длину М тогда и только тогда, когда С - нечетное, и А mod 4 = 1.
1.2. Порядок выполнения лабораторной работы
Порядок выполнения лабораторной работы заключается в следующем:
1) ознакомиться с разделами методических указаний к данной лабораторной работе;
2) получить у преподавателя вариант (варианты) заданий на исследование описанных выше шифров;
3) составить контрольный пример;
4) разработать и реализовать заданный(е) алгоритм(ы) шифрования/дешифрования;
5) на контрольном примере проверить правильность работы алгоритмов шифрования и дешифрования;
6) составить отчет.
Примечание. Разнообразие вариантов заданий определяется заданными методами подстановок, перестановок, размерами текстов и прямоугольников, вариантами ключей и т. д.
1.3. Содержание отчета о выполненной работе
Отчет должен содержать следующие разделы:
1. Название и цель работы.
2. Исходные данные.
3. Контрольный пример.
4. Результаты работы программы с различными исходными текстами, ключами и другими параметрами.
5. Ответы на контрольные вопросы.
1.4. Контрольные вопросы
1. Какой шифр называется шифром подстановки?
2. Какой шифр называется шифром перестановки?
3. Какой шифр называется поворотной решеткой?
4. Какой шифр называется шифром вертикальной перестановки?
5. К какому классу шифров относится шифр Цезаря?
Лабораторная работа № 2
Основы блочного шифрования.
Цель работы. Изучение симметричных алгоритмов шифрования, основанных на блочных шифрах
2.1. Общие сведения
Отличительной особенностью блочных шифров является обработка исходного текста по несколько (десятки, сотни) бит, т. е. по блокам. Любой блочный шифр в общем виде представляет собой закон отображения множества входных блоков исходного текста на множество блоков зашифрованного текста рис. 2.1. Кроме того, этот закон очень сильно зависит от секретного ключа шифрования.
В принципе, блочный шифр – это шифр замены над очень большим алфавитом (из десятков и сотен бит). Количество бит в обрабатываемом блоке называется разрядностью блока, количество бит в ключе –размером ключа блока. Наиболее популярная разрядность блока на сегодняшний 64 и 128 бит. Размер ключа – это 128, 192 или 256 бит.
В общем виде процесс блочного шифрования описывается формулой:
Z=EnCript (X, Key),
где X– блок исходного текста,Z – зашифрованный блок,Key– ключ шифрования. Разрядность зашифрованного блока в классических блочных шифрах с разрядностью исходного блока, поэтому за этап собственно шифрования поток данных не увеличивается и не уменьшается в размерах. Дешифрование описывается соответственно формулой
Х=DeCript (Z, Key).
В тех случаях, когда и для шифрования и для дешифрования использeется одна и та же последовательность действий, т. е.EnCript = DeCript = Criptи, соответственно,Cript ( Cript (X, Key), Key) = Xблочный шифр называется абсолютно симметричным.
Основной идеей практически всех блочных шифров является тот факт, что последовательность бит любой длины Q можно представить в виде натурального числа из диапазона [0 … 2Q– 1]. Один и тот же объем данных, разбивая на блоки разными способами, можно представить как в виде большого набора небольших чисел, например от 0 до 15 или от 0до 255, так и в виде нескольких больших чисел, например, из диапазона [0 ….4294967295]. Здесь все зависит от от схемы разбиения потока данных на блоки бит. Вот над этими натуральными числами и производится множество простейших математических и алгоритмических преобразований, т. н. криптопримитивов – из числа тех, которые легко выполняются на современной архитектуре ЭВМ.
Несомненно, что для однозначного дешифрования текста на приемной стороне все преобразования должны быть обратимы. Ни на одном из этапов шифрования из обрабатываемой последовательности не должно происходить "потери" информации. Перечень наиболее часто применяемых преобразований с их уловными обозначениями на схемах приведен в табл. 2.1. .
Таблица 2.1. Основные обратимые криптопримитивы
Операция |
Условные обозначения |
Математическая нотация |
Примечания |
Сложение |
Х' = Х +V |
При переполнении резуль-татом разрядности операндов бит переноса отбрасывается – потери информации при этом не происходит | |
Исключающее "ИЛИ" (XOR) |
X' = X V или X' = X XOR V |
Операция обратима сама себе | |
Умножение по модулю 2N+1 |
|
X' = (X*V) mod (2N+1) |
Данное преобразование обратимо. Сомножитель по известному произведению и другому сомножителю находится по алгоритму Евклида. |
Циклический битовый сдвиг влево |
X' = X ROL V |
Операция является обратной к "циклическому сдвигу вправо" | |
Циклический битовый сдвиг вправо |
X' = X ROR V |
Операция является обратной к "циклическому сдвигу влево"
| |
Произвольная перестановка бит |
|
Данная операция рассчитана в основном на аппаратную реализацию, и поэтому сейчас в значительной степени устарела. | |
Табличная подстановка |
S |
X" = S – Box |X| |
|
С помощью табличных подстановок(англ.Substitute-box–S-box)) реализуются наиболее общие законы изменения данных, зачастую не описываемые ни аналитически, ни алгоритмически.
Таблица 2.2. Основные необратимые криптопримитивы
Операция |
Условные обозначения |
Математическая нотация |
Примечания |
Умножение |
* |
Х' = (Х V) mod(2N) |
Х' = (Х V) mod(2N) |
Остаток (модуль) от деления |
|
X' = X mod V |
X' = X mod V |
Арифметический битовый сдвиг влево |
X' = X SHL V |
X' = X SHL V | |
Арифметический битовый сдвиг вправо |
X' = X SHR V |
X' = X SHR V
| |
Логическое "И" |
|
X' = X AND V |
X' = X AND V |
Логическое "ИЛИ" |
X' = X OR V |
X' = X OR V |
В качестве параметра Vв обратимых и необратимых операциях могут выступать, во-первых, фиксированные числовые константы.
Вторым возможным значением параметра Vявляется материал ключа.Материалом ключаназывается блок данных, вычисленный на основании ключа шифрования и зависящий только от нее. В простейшем случае материалом ключа может выступать сам ключ (если его разрядность совпадает с разрядностью операции) либо произвольная его часть без какой-либо обработки.
Операции, в которых в качестве параметра Vиспользуется материал ключа, называются перемешивание с ключомилидобавлением ключа(никакой связи с арифметическим сложением данный термин не несет). Подобных операций за время шифрования одного блока производится достаточно много. Таким образом, решается одно из главных требований к шифрам – невосстановимость ключа. Действительно, если к блоку данных добавить одну и ту же информацию, но неоднократно и разными способами, то подобная операция будет необратима относительно добавленной информации, хотя обратимость относительно первого операнда остается. Например, пустьХиК– четырехбитные исходное число и ключ соответственно (диапазон возможных значений 0..15 каждого), тогда формула:
Х' = ((X + K) XOR (K + 7)) AND 11112
(нижний индекс показывает систему счисления)
является обратимой относительно X, но необратимой относительно Kпо известной пареХиХ'. Не существует аналитической формулы, выражающейКчерезХиХ'. Конечно, всегда можно составить табличную зависимость, перебрав при известномХ
все К и записав все получившиесяХ', но это легко сделать при нашем гипотетическом примере из 16 возможных значенийК. На практике при же при длине ключа в 128 бит для решения главной задачи не хватит ни ресурсов памяти для хранения, ни, что главное, вычислительных возможностей ЭВМ. Таким образом, многократное добавление материала ключа по сложной схеме является надежным средством защиты блочных шифров от атаки по известным парам открытый/зашифрованный текст.
Третьим возможным значением параметра V являетсязначение, вычисленное от независимой части шифруемого блока. Данный метод лежит в основе схемы блочного шифрования, называемой сетью Файстеля(Feistel network).
Сети являются одной из наиболее распространенных схем блочных шифров. Блочный шифр, построенный по такой схеме, состоит из многократных повторений, называемых циклами или раундами (англ. round), нескольких видов операций, называемых слоями. Разбиение всего процесса шифрования на несколько однотипных слоев позволяет:
- сократить размер программного кода использованием цикла;
- унифицировать "алгоритмическую формулу" шифрования и, как следствие, упростить проверку стойкости шифра к известным видам криптоатак;
- сделать шифр легко усложняемым при необходимости (путем увеличения числа раундов);
- ввести понятие ключей раунда, на которые разбивается весь материал ключа.
Очень популярной схемой блочных шифров является сеть Файстеля.В каждом из ее раундов только по одному слою, т. е. все преобразования однотипны. Однако сама структура преобразования специфична: на какую-либо часть шифруемого блока обратимой операции накладывается значение функции (возможно, необратимой), вычисленное от другой части блока. Классическая структура сети Файстеля приведена на рис. 2.2.
Независимые потоки информации, порожденные из исходного блока, называются ветвями сети.В классической сети их две Величины именуютсяпараметрами сети, обычно их роль играет материал ключа. Функция F называетсяобразующей.Оптимальное число раундов для сети Файстеля К – от 8 до 32. Данная
схема является обратимой. Сеть Файстеля обладает тем свойством, что даже если в качестве образующей функции F будет использовано необратимое преобразование, то и в этом случае вся цепочка будет восстановима. Это происходит вследствие того, что для обратного преобразования сети Файстеля не нужно вычислять функциюF-1— и при дешифрировании вычисляется только прямое значениеF. Обратимость требуется только для операции наложенияF на шифруемую в данном раунде ветвь, поэтому здесь чаще всего применяетсяXOR, реже арифметическое сложение.
Более того не трудно заметить, что сеть Файстеля, в которой для наложения значения Fиспользуется операцияXOR, симметрична. Исключающее ИЛИ обратимо своим же повтором, и потому инверсия последнего обмена ветвей делает возможным раскодирование блока той же сетью Файстеля, но только с обратным порядком параметровVi. Следует отметить, что для обратимости сети Файстеля не имеет значение, является ли число раундов четным или нечетным числом. В большинстве реализаций сети Файстеля прямое и обратное преобразования производятся одним и тем же фрагментом программного кода, оформленного в виде процедуры, которому в качестве параметра передается вектор величинVi либо в исходном, либо в инверсном (для дешифрирования) порядке.