- •1. Общие положения
- •1.2. Когда и зачем нужно защищать информацию?
- •1.3. Язык сообщения
- •1.4. Тайнопись
- •1.5. Коды и их назначение
- •1.6. Криптография и криптоанализ
- •1.7. Основной объект криптографии
- •1.8. Что такое ключ
- •1.9. Атака на шифр. Стойкость шифра
- •1.10. Сложность вскрытия шифра
- •1.11. Принцип Кирхгофа
- •2. Древняя история криптографии
- •3. Современная криптография
- •3.1. Классификация криптографических систем
- •3.2. Основные классы симметричных криптосистем
- •3.3. Шифр замены
- •3.4. Шифр перестановки
- •3.5. Шифр Энигмы
- •4. Блочные шифры
- •4.1. Общие сведения о блочных шифрах
- •4.2. Сеть Фейштеля
- •4.3. Шифр взбивания. Стандарт des
- •4.3.1. Описание алгоритма
- •4.3.2. Анализ эффективности алгоритма
- •4.4. Отечественный стандарт шифрования данных
- •4.4.1. Режим простой замены
- •4.4.2. Режим гаммирования
- •4.4.3. Режим гаммирования с обратной связью
- •4.5. Режимы применения блочных шифров
- •5. Новый криптостандарт блочного шифрования сша
- •5.1. Общие сведения о конкурсе aes
- •5.1.1. Финалист aes – шифр mars
- •5.1.2. Финалист aes – шифр rc6
- •5.1.3. Финалист aes – шифр Serpent
- •5.1.4. Финалист aes – шифр TwoFish
- •5.2. Победитель aes – шифр Rijndael
- •6. Поточные шифры
- •6.1. Регистры сдвига с обратной связью
- •6.2. Шифр a5
- •6.3. Шифр rc4
- •6.4. Шифр seal
- •7. Асимметричные криптосистемы
- •7.1. Общие сведения об асимметричных криптоалгоритмах
- •7.2. Односторонние функции и функции-ловушки
- •7.3. Алгоритм rsa
- •Длина ключа
- •Применение rsa
- •7.4. Криптосистема Эль-Гамаля
- •7.5. Алгоритм Диффи-Хелмана
- •7.6. Механизм распространения открытых ключей
- •7.6.1. Обмен ключами по алгоритму Диффи-Хеллмана
- •8. Сравнительная характеристика шифров
- •9. Электронные цифровые подписи
- •9.1. Постановка задачи
- •9.2. Алгоритмы электронной цифровой подписи
- •9.2.1. Цифровые подписи, основанные на асимметричных криптосистемах
- •9.2.2. Стандарт цифровой подписи dss
- •9.2.3. Стандарт цифровой подписи гост р 34.10-94
- •9.3. Цифровые подписи, основанные на симметричных криптосистемах
- •9.4. Функции хэширования
- •9.4.1. Функция хэширования sha
- •9.4.2. Функция хэширования гост р 34.11-94
- •9.4.3. Функция хэширования md5
- •Библиографический список
- •Оглавление
3.4. Шифр перестановки
Из-за отмеченных особенностей шифр замены в чистом его виде никогда не применяется, а всегда употребляется вместе с перестановкой, например, бит внутри байта. Если после замены символы сообщения превращались во что угодно, но сохраняли в шифровке свое исходное местоположение, то после перестановки символы сообщения еще и расположены где угодно, что надежно защищает шифровку от атак криптолога.
Перестановку можно рассматривать как умножение вектора сообщения на матрицу перестановки бит P с элементами 0 и 1 и размером в длину сообщения в битах. При этом возможны два случая.
1. Перестановка может делаться до наложения на сообщение случайной последовательности:
S' = P t +
В случае если текст в сообщении отсутствует, то в канал связи попадет чистый ключ:
t = 0; S' = P 0 + =
2. Перестановка может делаться после наложения на сообщение случайной последовательности:
S' = P (t + )
В случае если текст отсутствует, в канал связи поступает ключ, шифрованный перестановкой:
t = 0; S' = P (0 + ) = P
Обычно предпочтение отдается второй схеме.
Перестановки необходимы еще и для того, чтобы атака на ключ стала неэффективной.
Если передача идет побайтно, то достаточно переставлять биты внутри байта, чтобы с вероятностью 0.97 исказить его и сделать перехват ключа описанным выше способом невозможным.
Перестановку можно осуществлять отдельными битами (очень дорогой процесс) или группами бит, например, байтами, что программно удобно, хотя и не перемешивает биты полностью. Временная сложность перестановки связана с квадратом числа переставляемых элементов. Поэтому перестановка бит в 64 раза дороже перестановки байт.
Существует множество вычислительных способов перестановок. Например, широко применяется перестановка по номерам N от 0 до L-1 на основе рекуррентного соотношения:
Ni+1 = (K Ni + M) mod L
при выполнении следующих условий:
1) K и M берутся из интервала [1, L-1];
2) M взаимно просто с L;
3) K-1 делится на любой простой делитель L;
4) K-1 делится на 4, если L делится на 4.
Для хорошего запутывания в этом случае приходится делать перестановку несколько раз, меняя случайным образом K и M.
Другая схема перестановки напоминает тасовку карт. Если S=A+B+C – исходный блок текста, переставляемый побайтно, то результатом перестановки будет S'=C+B+A. Разбиение на фрагменты A, B, C делается случайным образом. После нескольких тасовок исходный текст оказывается основательно перемешанным. Эта тасовка в состоянии после многократного повторения осуществить любую перестановку, но число тасовок при этом должно быть очень велико. Для быстрого получения качественной перестановки лучше употреблять перестановку пар:
For i:=1 to N
SWAP arr(i), arr(N*RND)
Next
Перестановка тасовкой удобна, т.к. одиночный ее шаг практически не оставляет ни одного символа на своем месте.
Шифр замены, осложненный перестановкой, представлял собой ранее поколение машинных криптографических преобразований. Он окончательно испортил надежу на вскрытие шифра хитроумными методами отгадывания текста сообщения, оставив взломщикам лишь возможность прямого подбора ключа.
Вскрытие случайной перестановки бит без знания ключа неоднозначно, что не позволяет сколько-нибудь уверенно расшифровать сообщение. Однако по сохранившейся статистике использованных в сообщении символов может дать более или скорее менее уверенные прогнозы о его общем содержании.
