
- •П.А. Приставка а.А. Ракитский Криптографические методы защиты информации
- •Введение
- •Алгоритм быстрого возведения числа в степень по модулю
- •Элементы теории чисел
- •Система Диффи-Хеллмана
- •Шаг младенца, шаг великана
- •Шифр Шамира
- •Шифр Эль-Гамаля
- •Шифр rsa
- •Шифр Вернама
- •Электронная подпись Криптографическая хэш-функция
- •Подпись rsa
- •Подпись Эль-Гамаля
- •Подпись гост р34.10-94
- •Потоковые шифры
- •Блочные шифры
- •Ментальный покер
- •Алгоритм слепой подписи
- •Заключение
- •Список литературы
- •Криптографические методы защиты информации
Блочные шифры
Теоретические основы
Сеть Фейстеля (Feistel network)
Сеть Фейстеля представляет собой способ преобразования входного блока данных, который используется при построении множества современных шифров. Схемы шифрования и дешифрования входного блока данных в сети Фейстеля приводятся на рис. 1. Приведем далее словесное описание схемы.
Рис. Схемы шифрования и дешифрования блока с использованием сети Фейстеля
Входной блок разбивается на две части одинакового размера - левый (
) и правый (
).
Левая часть изменяется некоторой функцией
с использованием раундового ключа
:
,
Результат операции складывается по модулю 2 с правой частью :
Результат действия будет использован в следующем раунде в качестве левой части
:
Левая часть блока текущего раунда в следующем раунде будет использована в качестве правой части
:
Указанные операции выполняются в течение
раунда. На каждом раунде происходит смена раундового ключа.
В заключительном раунде левая часть итогового блока равна левой части блока раунда. Правая часть итогового блока равна результату сложения по модулю 2 значения функции
с правой частью входного блока текущего раунда.
,
Конкретный вид функции , способ формирования раундового ключ, а также количество раундов определяются конкретным алгоритмом шифрования, который использует сеть Фейстеля для преобразования блоков. Дешифрование блока данных происходит в обратном порядке {\displaystyle x=x\oplus R_{0}.}
Пример.
Дан
входной блок данных, состоящий из 16-ти
разрядов: 0110010111001000. Раундовая функция
,
где
-
левая или правая часть блока, а
– раундовый ключ. Раундовым ключом
является номер раунда. Необходимо
выполнить состоящее из трех раундов
шифрование с помощью сети Фейстеля, а
также соответствующее дешифрование.
Произведем разбиение входного блока данных на две равные части по 8 бит и перейдем для удобства в десятичную систему счисления:
Приведенная ниже таблица содержит описание процесса шифрования.
№ раунда |
Раундовый ключ |
Левая часть блока, |
Правая
часть блока,
|
1 |
1 |
|
|
2 |
2 |
|
|
3 |
3 |
203 |
|
Таким
образом результатом шифрования входного
блока станет последовательность
или
Следующая таблица отображает процесс проведения дешифрования исходного блока.
№ раунда |
Раундовый ключ |
Левая часть блока, |
Правая часть блока, |
3 |
3 |
|
|
2 |
2 |
|
|
1 |
1 |
100 |
|
Таким образом в результате корректного дешифрования был получен исходный блок данных 0110010111001000.
Определение блочного шифра
Блочный
шифр – зависящее от ключа
обратимое преобразование блока
из
двоичных симоволов. Таким образом, если
– это обозначение преобразованного
блока,
– зависящая от ключа
функция преобразования входного блока,
то определение блочного шифра может
быть записано как
Дешифрование определяется как
для
всех
.
Функция
называется обратным шифром.
Функция
,
отвечающая за преобразование блока,
может иметь различную реализацию, однако
в большом количестве современных блочных
шифров (например, Blowfish)
указанные преобразования базируются
на сетях Фейстеля, рассмотренных выше,
либо на подстановочно-перестановочных
сетях (например, AES).
Последовательность раундовых ключей
формируется на на основе ключа
с помощью определенного алгоритма.
Режимы функционирования блочных шифров
При описании преобразований на базе сети Фейстеля, лежащих в основе блочных шифров, предполагалось, что на вход поступает единственный блок. Однаков в реальных случаях сообщение разбивается на последовательность нескольких блоков, порядок обработки которых определяется режимом функционирования блочных шифров. Рассмотрим далее такие режимы функционирования блочных шифров как ECB и CBC.
Режим ECB (Electronic CodeBook)
Исходное сообщение разбивается на последовательность блоков равной длины:
Далее каждый из полученных блоков независимо преобразовывается с помощью функции . Преобразование осуществляется за несколько раундов с использованием в каждом раунде соответствующего раундового ключа. Т.е.
Итоговая криптограмма образуется конкатенацией блоков, полученных в результате преобразований входных данных:
Дешифрование сообщение происходит с помощью функции обратного шифрования, т.е.:
Благодаря независимой обработке блоков, для шифрования в указанном режиме можно реализовывать параллельное преобразование блоков, достигая высокой скорости формирования криптограммы. Однако существенным недостатком режима является то, что для одинаковых блоков из будут получены одинаковые блоки из , т.е. структура криптограммы будет соответствовать структуре оригинального сообщения (см. рис 2).
Режим CBC (Cipher-Block Chaining)
Аналогично предыдущему режиму исходное сообщение разбивается на последовательность блоков равной длины:
Далее, на вход функции последовательно подается результат сложения по модулю 2 текущего блока и результата работы функции , полученного при преобразовани предыдущего блока.
Если
обрабатывается первый блок (т.е. результата
преобразования предыдущего блока еще
нет), то для получения аргумента функции
используется предварительно определенное
значение
.
Итоговая криптограмма образуется конкатенацией блоков, полученных в результате преобразований входных данных:
Дешифрование сообщение происходит с помощью функции обратного шифрования, т.е.:
Данный режим позволяет скрыть структуру исходного сообщения (см. рис 2), однако, в следствие последовательного преобразования блоков исходного сообщения, скорость формирования криптограммы будет ниже, чем у шифрования в режиме ECB.
Рис. 2. Результаты шифрования в режимах ECB и CBC
Задания для практической работы
Для
заданных 8-битных значений
,
раундовой функции
,
где
-
левая или правая часть блока, а
– раундовый ключ, раундового ключа
равного номеру раунда произвести
состоящее из трех раундов шифрование
входных данных и соответствующее
дешифрование.