- •Требования к алгоритмам шифрования
- •Симметричные криптосистемы
- •Блочные шифры
- •Сеть Файстеля
- •Общая характеристика гост 28147-89
- •Ключевая информация
- •Основной шаг криптопреобразования
- •Базовые циклы криптографических преобразований.
- •Основные режимы шифрования
- •Выработка имитовставки к массиву данных
- •Криптографическая стойкость гост 28147-89
- •Общая схема алгоритма.
- •Rijndael (aes). Основные параметры
- •Rijndael. Общая схема
- •Нелинейное преобразование
- •Выработка ключевых элементов
- •Основные требования к алгоритмам асимметричного шифрования
- •Криптоанализ алгоритмов с открытым ключом
- •Основные способы использования алгоритмов с открытым ключом
- •Алгоритм обмена ключами Диффи-Хеллмана
- •Протокол генерации ключей алгоритма Диффи-Хеллмана
- •Алгоритм rsa
- •Электронная подпись rsa
- •Алгоритм ЭльГамаля
- •Требования к хэш-функциям
- •Функция sha-1
- •Функция хэширования гост р 34.11 – 94
- •Электронная цифровая подпись
- •Прямая и арбитражная цифровые подписи
- •Симметричное шифрование, арбитр не видит сообщение:
- •Шифрование открытым ключом, арбитр не видит сообщение:
- •Российский стандарт цифровой подписи гост 34.10
- •Код аутентичности сообщения
Нелинейное преобразование
Нелинейное преобразование F матрицы данных состоит из трех шагов: замены байтов матрицы на новые значения, циклического сдвига строк матрицы влево, умножения матрицы данных слева на постоянную матрицу-циркулянт M:
Последовательная схема преобразования данных показана на рисунках 8.6, 8.7, 8.8.
Побайтовая замена.
-
a00
a01
a02
a03
S - box
b00
b01
b02
b03
a10
a 11
a12
a13
b10
b11
b12
b13
a20
a21
a22
a23
b20
b21
b22
b23
a30
a31
a32
a33
b30
b31
b32
b33
Рис.8.6. Схема побайтовой замены матрицы
В ходе побайтовой замены каждый байт матрицы данных заменяется на новое значение того же размера, индексируя общий для всех байтов вектор замен S 8-в-8 бит:
aij = S[bij], 1 ≤ i ≤ 4, 1 ≤ j ≤ n,
где n - число столбцов матрицы данных - 4, 6 или 8.
Сдвиг строк в двумерном массиве на различные смещения.
В ходе данной операции каждая строка матрицы данных, кроме первой, циклически сдвигается влево на определенное число позиций, зависящее от номера строки и от размера блока данных:
-
a00
a01
a02
a 03
нет сдвига
a00
a01
a02
a03
a10
a11
a12
a13
циклический сдвиг на1
a11
a12
a13
a10
a20
a21
a22
a 23
циклический сдвиг на 2
a22
a23
a20
a21
a30
a31
a32
a 33
циклический сдвиг на 3
a33
a30
a31
a32
Рис.8.7. Cдвиг строк в двумерном массиве на различные смещения.
Умножение на постоянную матрицу.
Н
02 03 01 01
01 02 03 01
01 01 02 03
03 01 01 02
М =
При выполнении матричного умножения операции сложения и умножения элементов обеих матриц выполняются в конечном поле GF(28). Матрица M является циркулянтом: каждая ее строка получается циклическим сдвигом предыдущей строки вправо на один элемент. Элементы матрицы выбраны таким образом, чтобы свести к минимуму трудоемкость операции умножения: в ней присутствуют лишь небольшие по значению числа 01, 02 и 03, половина элементов - единичные, т.е. реального умножения выполнять для них не требуется. Этим самым обеспечивается высокая эффективность возможных реализаций этой операции.
-
a00
a01
a02
a03
М
b00
b01
b02
b03
a10
a11
a12
a 13
b10
b11
b12
b13
a20
a21
a22
a23
b20
b21
b22
b23
a30
a31
a32
a33
b30
b31
b32
b33
Рис. 8.8. Умножение на матрицу -циркулянт