Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методическое пособие 371

.pdf
Скачиваний:
6
Добавлен:
30.04.2022
Размер:
1.05 Mб
Скачать

Рис. 10. Принципиальная схема 3-разрядного S-блока

Рис. 11. Принципиальная схема 8-разрядного P-блока

S-блок (S-box)

Блок подстановок (S-блок) состоит из дешифратора,

преобразующего

n-разрядный

двоичный

сигнал

в

 

29

 

 

 

одноразрядный сигнал по основанию , системы коммутаторов внутренних соединений (всего возможных соединений ) и шифратора, переводящего сигнал из одноразрядного -ричного в n-разрядный двоичный. Анализ n-разрядного S-блока при большом n крайне сложен, однако реализовать такой блок на практике очень сложно, так как число возможных соединений крайне велико (). На практике блок подстановок используется как часть более сложных систем.

Вобщем случае S-блок может иметь несовпадающее число входов/выходов, в этом случае в системе коммутации от каждого выхода дешифратора может идти не строго одно соединение, а 2 или более или не идти вовсе. То же самое справедливо и для входов шифратора.

Вэлектронике можно непосредственно применять приведённую схему (рис. 10), в программировании же генерируют таблицы замены (табл. 2). Оба этих подхода являются эквивалентными, то есть файл, зашифрованный на компьютере, можно расшифровать на электронном устройстве

инаоборот.

Таблица 2 Таблица замены для приведённого 3-разрядного S-блока

 

№ комбинации

 

0

 

1

 

2

 

3

 

4

 

5

 

6

 

7

 

 

 

 

 

 

 

 

 

 

Вход

000

001

010

011

100

101

110

111

 

 

 

 

 

 

 

 

 

 

 

Выход

011

000

001

100

110

111

010

101

P-блок (P-box)

Блок перестановок всего лишь изменяет положение цифр и является линейным устройством. Этот блок может иметь очень большое количество входов-выходов, однако в силу линейности систему нельзя считать криптоустойчивой. Криптоанализ ключа для n-разрядного P-блока проводится путём подачи на вход n-1 различных сообщений, каждое из

30

которых состоит из n-1 нуля («0») и 1 единицы («1») (или наоборот, из единиц и нуля).

Циклический сдвиг

Можно показать, что циклический сдвиг является частным случаем P-блока (рис. 12).

В простейшем случае (сдвиг на 1 бит), крайний бит отщепляется и перемещается на другой конец регистра или шины. В зависимости от того какой бит берётся, правый или левый, сдвиг называется вправо или влево (табл. 3). Сдвиги на большее число бит можно рассматривать, как многократное применение сдвига на 1.

Рис. 12. Циклический сдвиг влево на 3 разряда 8-битной шины

Таблица 3 Циклический сдвиг на m бит для n-разрядного входа (m < n)

Направ-

Порядок

 

ление

следования битов

Порядок следования битов после сдвига

сдвига

до сдвига

 

влево

 

 

вправо

 

 

31

Сложение по модулю

Обозначение операции — (A + B) mod — это остаток от деления суммы A + B на , где A и B — складываемые числа.

Можно показать, что сложение двух чисел по модулю представляется в двоичной системе счисления, как S-блок, у которого на вход подаётся число A, а в качестве системы коммутации S-блока используется циклический сдвиг влево на

Bразрядов.

Вкомпьютерной технике и электронике операция сложения, как правило, реализована как сложение по модулю , где m — целое (обычно m равно разрядности машины). Для получения в двоичной системе A + B mod достаточно сложить числа, после чего отбросить разряды начиная с m-того и старше.

Умножение по модулю

Обозначение операции — (A * B) mod — это остаток от деления произведения A * B на , где A и B — перемножаемые числа.

В персональных компьютерах на платформе x86 при перемножении двух m-разрядных чисел получается число разрядностью 2*m. Чтобы получить остаток от деления на нужно отбросить m старших бит.

Достоинства и недостатки

Достоинства:

Простота аппаратной реализации на современной электронной базе; Простота программной реализации в силу того, что

значительная часть функций поддерживается на аппаратном уровне в современных компьютерах (например, сложение по модулю 2, сложение по модулю

, умножение по модулю , и т. д.); Хорошая изученность алгоритмов на основе сетей Фейстеля.

32

Недостатки:

За один раунд шифруется только половина входного блока.

1.6.2. Модификации сети Фейстеля

При большом размере блоков шифрования (128 бит и более) реализация такой сети Фейстеля на 32-разрядных архитектурах может вызвать затруднения, поэтому применяются модифицированные варианты этой конструкции. Обычно используются сети с 4 ветвями. На рисунке показаны наиболее распространенные модификации. Также существуют схемы, в которых длины половинок и не совпадают. Они называются несбалансированными.

1.7. SP-Сеть

SP-сеть (Substitution-Permutation network,

подстановочно-перестановочная сеть) — разновидность блочного шифра, предложенная Хорстом Фейстелем. В простейшем варианте представляет собой «сэндвич» из слоёв двух типов, используемых многократно по очереди. Первый тип слоя — P-слой, состоящий из P-блока большой разрядности, за ним идёт второй тип слоя — S-слой, представляющий собой большое количество S-блоков малой разрядности, потом опять P-слой и т. д. Первым криптографическим алгоритмом на основе SP-сети был «Люцифер» (1971). В настоящее время из алгоритмов на основе SP-сетей широко используется AES (Rijndael). Альтернативой SP-сетям являются сети Фейстеля.

В современных алгоритмах вместо S- и P-блоков используются различные математические или логические функции. Любая двоичная функция может быть сведена к S- блоку, некоторые функции – к P-блоку. Например к P-блоку сводится циклический сдвиг, сам P-блок является частным

33

случаем S-блока. Такие функции, как правило, легко реализуются в аппаратуре, обеспечивая при этом хорошую криптостойкость.

Принцип работы (рис. 13)

Рис. 13. Пример SP-сети с 3 раундами

Шифр на основе SP-сети получает на вход блок и ключ и совершает несколько чередующихся раундов, состоящих из чередующихся стадий подстановки (англ. substitution stage) и стадий перестановки (англ. permutation stage). Для достижения безопасности достаточно одного S-блока, но такой блок будет требовать большого объёма памяти. Поэтому используются маленькие S-блоки, смешанные с P-блоками. Нелинейная

34

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

S-блок (англ. substitution box or S-box) замещает маленький блок входных бит на другой блок выходных бит. Эта замена должна быть взаимно однозначной, чтобы гарантировать обратимость. Назначение S-блока заключается в нелинейном преобразовании, что препятствует проведению линейного криптоанализа. Одним из свойств S-блока является лавинный эффект, т.е. изменение одного бита на входе приводит к изменению всех бит на выходе.

P-блок (англ. permutation box or P-box) — перестановка всех бит: блок получает на вход вывод S-блока, меняет местами все биты и подает результат S-блоку следующего раунда. Важным качеством P-блока является возможность распределить вывод одного S-блока между входами как можно больших S-блоков.

Для каждого раунда используется свой, получаемый из первоначального, ключ. Подобный ключ называется раундовым. Он может быть получен как делением первоначально ключа на равные части, так и каким-либо преобразование всего ключа.

1.8. Криптогрпфическая стойкость

Криптографическая стойкость — способность криптографического алгоритма противостоять криптоанализу. Стойким считается алгоритм, который для успешной атаки требует от противника недостижимых вычислительных ресурсов, недостижимого объёма перехваченных открытых и зашифрованных сообщений или же такого времени раскрытия, что по его истечении защищенная информация будет уже не актуальна, и т. д. В большинстве случаев криптостойкость нельзя математически доказать, можно только доказать уязвимости криптографического алгоритма, либо свести

35

некоторую задачу, которая считается вычислительно сложной, к задаче взлома алгоритма (т.е. доказать, что взлом не легче решения этой задачи).

1.8.1.Типы криптостойких систем шифрования

1.8.1.1.Абсолютно стойкие системы

Доказательство существования абсолютно стойких алгоритмов шифрования было выполнено Клодом Шенноном и опубликовано в работе «Теория связи в секретных системах». Там же определены требования к такого рода системам:

ключ генерируется для каждого сообщения (каждый ключ используется только один раз)

ключ статистически надёжен (то есть вероятности появления каждого из возможных символов равны, символы в ключевой последовательности независимы и случайны)

длина ключа равна или больше длины сообщения

исходный (открытый) текст обладает некоторой избыточностью (что является критерием оценки правильности расшифровки)

Стойкость этих систем не зависит от того, какими вычислительными возможностями обладает криптоаналитик. Практическое применение систем, удовлетворяющих требованиям абсолютной стойкости, ограничено соображениями стоимости и удобства пользования.

Шенноном было доказано, что примером абсолютно стойкого алгоритма является шифр Вернама (одноразовый блокнот). Иными словами, корректное использование шифра Вернама не дает злоумышленнику никакой информации об открытом тексте (любой бит сообщения он может лишь угадать

с вероятностью ).

Достаточно стойкие системы

В основном в криптографических системах гражданского назначения применяются практически стойкие

36

или вычислительно стойкие системы. Стойкость этих систем зависит от того, какими вычислительными возможностями обладает криптоаналитик. Практическая стойкость таких систем базируется на теории сложности и оценивается исключительно на какой-то определенный момент времени и последовательно c двух позиций:

вычислительная сложность полного перебора;

известные на данный момент слабости (уязвимости) и их влияние на вычислительную сложность.

В каждом конкретном случае могут существовать дополнительные критерии оценки стойкости.

1.8.2. Оценка криптостойкости систем шифрования

Начальная оценка

Поскольку атака методом грубой силы (полным перебором всех ключей) возможна для всех типов криптографических алгоритмов, кроме абсолютно стойких «по Шеннону», для вновь созданного алгоритма она может являться единственной существующей. Способы её оценки основываются на вычислительной сложности, которая затем может быть выражена во времени, деньгах, и требуемой производительности вычислительных ресурсов, например, в MIPS. Эта оценка пока является максимальной и минимальной одновременно.

Текущая оценка

Дальнейшее исследование алгоритма с целью поиска слабостей (уязвимостей) (криптоанализ) добавляет оценки стойкости по отношению к известным криптографическим атакам (Линейный криптоанализ, дифференциальный криптоанализ и более специфические) и могут понизить известную стойкость.

Например, для многих симметричных шифров существуют слабые ключи и S-блоки, применение которых снижает криптографическую стойкость.

37

Также важным способом проверки стойкости являются атаки на реализацию, выполняемые для конкретного программно-аппаратно-человеческого комплекса.

Важность длительной проверки и открытого обсуждения

Чем более длительным и экспертным является анализ алгоритма и реализаций, тем более достоверной можно считать его стойкость. В нескольких случаях длительный и внимательный анализ приводил к снижению оценки стойкости ниже приемлемого уровня (например, в черновых версиях FEAL). Недостаточная проверка (по мнению многих криптографов — искусственное ослабление) алгоритма потокового шифрования А5/1 привела к успешной атаке.

38