- •Симметричные шифры
- •1.1 Введение
- •1.2 Криптографическая система
- •1.3 Принципы Керкхоффса
- •Система не должна быть секретной, и если она попадёт в руки противника, это не должно причинить неудобства.
- •1.4 Классификация симметричных шифров
- •1.5 Шифры перестановки
- •1.6 Шифры замены
- •1.6.1 Шифры сдвига
- •1.7 Композиционные шифры
- •1.7.1 Алгебра секретных систем
- •1.7.2 Теория композиционных шифров
- •1.7.3 Сеть Файстеля (Feistel’s network)
- •1.7.4 Sp сети
- •Режимы использования блочных шифров ecb (Electronic Code Book). Режим простой замены
- •Cbc (Cipher Block Chaining). Режим выработки имитовставки
- •Ofb (Output FeedBack). Режим обратной связи по выходу
- •Cfb (FeedBack). Режим гаммирования с обратной связью
- •Ctr (Counter). Режим счетчика
- •Выработка вектора инициализации (IV)
- •Генераторы псевдослучайных последовательностей
- •Криптографические
- •Некриптографические
- •Поточные шифры
- •Абсолютно стойкий шифр
- •Гост 28147-89
Ctr (Counter). Режим счетчика
Этот режим имеет n-битовый счетчик, единственная цель которого – максимизировать период выходной последовательности и нелинейную функцию зашифрования, которая в качестве входа принимает генерируемые счетчиком n-битовые значения, а выдает последовательность γi.
C1 = P1 Ek (IV) при i = 1 Ci = Pi Ek (nonce||i) при i > 1
P1 = C1 Ek (IV) при i = 1 Pi = Ci Ek (nonce||i) при i > 1
Рисунок 2.5 Режим Counter
Преимущества:
-
Алгоритм расшифрования полностью идентичен алгоритму зашифрования.
-
Возможен мгновенный доступ к любой из частей исходного текста, поскольку ключевой блок для нее просчитывается независимо от других блоков.
-
Вычисления ключевых блоков можно выполнять параллельно, что дает колоссальные преимущества в скорости работы.
-
Криптостойкость режима полностью определяется криптостойкостью блочного алгоритма шифрования.
Недостатки:
-
Как и в режиме OFB, необходимо потребовать, чтобы одинаковые Ek и IV не использовались повторно.
Выработка вектора инициализации (IV)
Варианты выбора вектора инициализации:
-
Фиксированный IV. Вообще говоря, этот вариант применять не следует, так как он чреват определенными последствиями:
-
CBC – Два первых совпадающих блока шифруются одинаково.
-
OFB – При использовании одинаковых Ek и IV вырабатываемая ключевая последовательность (гамма-последовательность) будет идентичной.
-
CTR – аналогично OFB.
-
IV - счетчик. Может иметь проблемы, как и у фиксированного IV, в случае компенсации изменений первых блоков исходных текстов значениями счетчиков.
-
Случайный IV. Хороший способ, однако он сопряжен с некоторыми трудностями:
-
Получатель должен знать значение IV.
-
Трудно реализовать качественный генератор случайных чисел.
-
Количество блоков шифрованного текста длиннее на один блок, что существенно сказывается на трафике при передаче большего количества коротких сообщений.
-
Оказия. Этот способ наиболее рентабелен, по моему мнению. Он состоит из следующих действий:
-
Выбрать для каждого из сообщений уникальное число – оказию (Nonce). Для одного ключа необходимо потребовать уникальность оказии для всей системы в целом. Размер оказии должен соответствовать размеру блока задействованного блочного шифра.
-
Зашифровать оказию, получив тем самым вектор инициализации.
-
Зашифровать сообщение с помощью IV.
-
Передать зашифрованный текст и всю необходимую информацию для построения оказии получателем.
-
Генераторы псевдослучайных последовательностей
Рисунок 2.5 Классификация генераторов
Криптографические
Роль нелинейной функции в криптографически стойких генераторах псевдослучайных чисел выполняет криптографическое преобразование Ek. Стойкость генераторов данного типа сводится к стойкости криптографического преобразования Ek, которое основывается на недоказуемом утверждении, что у криптоаналитика не хватит ресурсов для инвертирования данной функции при неизвестном ключе.
Можно
Некриптографические
Конгруэнтные генераторы
Линейными конгруэнтными генераторами являются генераторы
следующей формы:
X (aX b) m n n mod 1 = + − ,
в которых n X –n-й член последовательности, а n−1 X – предыдущий член
последовательности. Переменные a, b и m – постоянные: а – множитель, b –
инкремент и m – модуль. Ключом или затравкой служит значение 0 X .
Период такого генератора не больше, чем m. Если a, b и m подобраны
правильно, то генератор будет генератором с максимальным периодом, и его
период будет равен m. (Например, для линейного конгруэнтного генератора b
должно быть взаимно простым с m).