- •Методические материалы
- •1. Основные понятия
- •2. Традиционные криптосистемы
- •2.1. Некоторые особенности криптосистем. Примеры традиционных криптосистем
- •2.2. Теоретическая стойкость криптосистем 2
- •2.2.1. Системы с совершенной секретностью
- •2.2.2. Шифр Вернама
- •2.2.3. Элементы теории информации
- •2.2.4. Расстояние единственности шифра с секретным ключом
- •2.3. Современные криптосистемы с секретным ключом 4
- •2.3.1. Основные положения
- •2.3.2. Блоковые шифры
- •2.3.2.1. Общие положения
- •2.3.2.2. Блоковый шифр гост 28147-89
- •2.3.2.3. Режимы функционирования блоковых шифров
- •2.3.3. Потоковые шифры
- •2.3.3.1. Общие положения
- •2.3.3.2. Режим ofb блокового шифра
- •2.3.3.3. Режим ctr блокового шифра
- •2.3.3.4. Алгоритм rc4 6
- •3. Криптосистемы с открытым ключом 7
- •3.1. Основные положения
- •3.2. Криптосистема Диффи-Хеллмана
- •3.3. Шифр Шамира
- •3.4. Шифр Эль-Гамаля
- •3.5. Шифр rsa. Односторонняя функция с "лазейкой"
- •3.6. Цифровая (электронная) подпись
- •3.6.1. Криптографические хеш-функции
- •3.6.2. Цифровая подпись rsa
- •3.6.3. Цифровая подпись на базе шифра Эль-Гамаля
- •3.6.4. Стандарты на цифровую подпись
- •3.7. Криптографические протоколы
- •3.7.1. Протокол для доказательства с нулевым знанием
- •3.7.2. Протокол для поддержки электронных денег
- •Рекомендуемая литература
2.3.3.2. Режим ofb блокового шифра
В режиме OFB (Output FeedBack – обратная связь по потоку) для генерирования псевдослучайной последовательности используется блоковый шифр на основе секретного ключа K и инициализирующего слова Y0. Такой генератор формирует последовательность r-битовых псевдослучайных чисел z1 z2 … zk. Будем считать, как и раньше, что размер блока шифра равен n. Тогда псевдослучайная последовательность генерируется по следующей схеме
Yi = EK(Yi1), zi = [r старших бит числа Yi], i = 1,..., k,
где r – параметр генератора, EK – функция преобразования какого-то блокового шифра.
Таким образом, в данном случае блоковый шифр используется как вспомогательный алгоритм – для генерирования псевдослучайной последовательности z1 z2 … zk.
Если используется стойкий блоковый шифр, то таким способом можно получить криптостойкий генератор, отвечающий сформулированным выше требованиям.
Средний период псевдослучайной последовательности (при случайно выбранных K и Y0) составляет ~r2n1 бит. Кроме того, псевдослучайная последовательность "непредсказуема" для противника, поскольку возможность предсказания zi+1 на основе подпоследовательности z1 z2 … zi означала бы нестойкость блокового шифра по отношению к атаке по известному тексту. Предсказание становится даже более трудной задачей, чем взлом самого блокового шифра, если r < n.
Дешифрование сообщений для рассмотренного шифра может производиться только с начала, так как невозможно получить произвольный элемент последовательности z1 … zk, не вычислив предыдущие элементы. В этом смысле режим OFB подобен режиму CBC. Преимущество режима OFB заключается в том, что последовательность z1 … zk может быть сформирована заранее для того, чтобы быстрее шифровать и дешифровать сообщения по алгоритмам (2.28) и (2.29) в момент их поступления. Это особенно актуально для систем, обрабатывающих данные в режиме реального времени.
2.3.3.3. Режим ctr блокового шифра
Режим CTR (CounTeR – счетчик) похож на режим OFB, но в нем шифруется не предыдущий выход шифра, а просто счетчик, увеличиваемый на каждом шаге на постоянное число (обычно 1). Схема шифрования имеет вид:
Yi = EK(Y0 + i), zi = [r старших бит числа Yi], i = 1,..., k.
При использовании "идеального" блокового шифра режим CTR обеспечивает те же параметры стойкости, что и OFB. Преимущество состоит в том, что любой элемент последовательности z1 … zk может быть вычислен непосредственно. Это дает возможность шифровать и дешифровать фрагменты сообщения независимо друг от друга.
2.3.3.4. Алгоритм rc4 6
Этот алгоритм относится к классу алгоритмов, разработанных специально для потоковых шифров. Генераторы псевдослучайных чисел, построенные с помощью таких алгоритмов, как правило, значительно быстрее генераторов, основанных на применении блоковых шифров.
Алгоритм RC4 работает с n-битовыми словами (обычно n = 8). Все вычисления проводятся по модулю 2n (остаток x mod 2n быстро вычисляется с помощью выделения n младших бит в x).
Алгоритм использует L-словный ключ: K = K0K1...KL1 и генерирует последовательность слов Z = z1 z2 …, конкретный вид которой определяется ключом K.
Состояние генератора задается таблицей S из 2n слов и двух переменных i и j. В каждый момент времени таблица S содержит все возможные n-битовые числа в перемешанном виде. Так как каждый элемент таблицы принимает значения из интервала [0, 2n1], то его можно интерпретировать двояко: либо как элемент таблицы, либо как номер другого элемента таблицы.
Секретный ключ дает только начальное перемешивание чисел в таблице. Такое перемешивание формируется с помощью следующего алгоритма (дан в псевдокодах):
j:=0; S:=(0,1,..., 2n 1);
FOR i = 0,1,..., 2n 1 DO
BEGIN
j:=(j + Si + Ki mod L) mod 2n; {Si – i-й элемент таблицы S}
Sj Si {здесь – операция транспозиции}
END;
i:=0; j:=0.
После этого генератор готов к работе. Генерация очередного псевдослучайного слова zi осуществляется так:
i:=(i + 1) mod 2n;
j:=(j + Si) mod 2n;
Sj Si;
t:=(Si + Sj) mod 2n;
zi :=St.