- •Требования к алгоритмам шифрования
- •Симметричные криптосистемы
- •Блочные шифры
- •Сеть Файстеля
- •Общая характеристика гост 28147-89
- •Ключевая информация
- •Основной шаг криптопреобразования
- •Базовые циклы криптографических преобразований.
- •Основные режимы шифрования
- •Выработка имитовставки к массиву данных
- •Криптографическая стойкость гост 28147-89
- •Общая схема алгоритма.
- •Rijndael (aes). Основные параметры
- •Rijndael. Общая схема
- •Нелинейное преобразование
- •Выработка ключевых элементов
- •Основные требования к алгоритмам асимметричного шифрования
- •Криптоанализ алгоритмов с открытым ключом
- •Основные способы использования алгоритмов с открытым ключом
- •Алгоритм обмена ключами Диффи-Хеллмана
- •Протокол генерации ключей алгоритма Диффи-Хеллмана
- •Алгоритм rsa
- •Электронная подпись rsa
- •Алгоритм ЭльГамаля
- •Требования к хэш-функциям
- •Функция sha-1
- •Функция хэширования гост р 34.11 – 94
- •Электронная цифровая подпись
- •Прямая и арбитражная цифровые подписи
- •Симметричное шифрование, арбитр не видит сообщение:
- •Шифрование открытым ключом, арбитр не видит сообщение:
- •Российский стандарт цифровой подписи гост 34.10
- •Код аутентичности сообщения
Rijndael (aes). Основные параметры
Название/статус |
Rijndael, AES. Федеральный стандарт шифрования США. Утвержден министерством торговли в качестве стандарта 4 декабря 2001 года, решение вступило в силу с момента опубликования в федеральном реестре (06.12.01). |
||||||||||||||||||||||
Время/место разработки |
1997 год, Бельгия. |
||||||||||||||||||||||
Авторы |
Йоан Дамен (Joan Daemen) Винсент Раймен (Vincent Rijnmen) |
||||||||||||||||||||||
Архитектура |
"Квадрат". |
||||||||||||||||||||||
Параметры |
|
||||||||||||||||||||||
Патент |
Не запатентован |
||||||||||||||||||||||
Особенности |
1. Так как алгоритм может быть сформулирован в терминах всего лишь двух операций, - побитового суммирования по модулю 2 и индексированного извлечения из памяти, выполняемых над байтами, - он может быть эффективно реализован на любых компьютерных платформах от младших микроконтроллеров до суперпроцессоров. В силу тех же причин, а также потому что архитектура алгоритма допускает высокую степень параллелизма, он может быть также эффективно реализован в аппаратуре. В конечном итоге именно приведенные выше факторы вкупе с высокой стойкостью алгоритма предопределили его победу в конкурсе на место нового стандарта. 2. Прямое и обратное преобразования в шифре имеют одинаковую алгоритмическую структуру и различаются константами сдвига, ключевыми элементами, узлами замен и константами умножения. |
||||||||||||||||||||||
Замечания |
В качестве стандарта принят вариант шифра только с размером блока 128 бит. Число раундов шифрования определяется в зависимости от размера блока и ключа по следующей таблице:
Иными словами, из двух размеров выбирается максимальный, и если он равен 128 бит, то используется 10 раундов, если 192 бита, то 12, и если 256 - то 14 раундов шифрования. |
||||||||||||||||||||||
Rijndael. Общая схема
Шифр Rijndael выполнен в архитектуре "Квадрат" (Square), получившей свое название от первого построенного в соответствии с ее принципами криптоалгоритма. В Rijndael блоки открытых и зашифрованных данных, соответственно Tо и Tш, представляются в виде массивов из 16, 24 или 32 байтов:
Tо = (t1, t2,...,tN) Tш = (t'1, t'2,...,t'N) | t | = | t' | = 8, N {16, 24, 32} - количество байтов в матрице.
В соответствии с использованными архитектурными принципами в ходе криптографических преобразований исходный и зашифрованный блоки данных, а также все промежуточные результаты процесса шифрования интерпретируются как матрицы байтов размером 4 n, откуда получаем n = N/4, n {4, 6, 8}. Матрицы заполняются байтами входного блока (открытых данных при зашифровании и зашифрованных данных при расшифровании соответственно) по столбцам сверху вниз и слева направо, и в точно таком же порядке извлекаются байты из матрицы-результата:
|
|
t |
t5 |
... |
tN-3 |
|
|
|
t'1 |
t'5 |
... |
t'N-3 |
|
|
|
T |
= |
t2 |
t6 |
... |
tN-2 |
|
T' |
= |
t'2 |
t'6 |
... |
t'N-2 |
|
|
|
|
|
t3 |
t7 |
... |
tN-1 |
|
|
|
t'3 |
t'7 |
... |
t'N-1 |
|
|
|
|
|
t4 |
t8 |
... |
tN |
|
|
|
t'4 |
t'8 |
... |
t'N |
|
|
|
Т
К1
F
X1
K2
F
X2
...
KR
F'
XR
KR+1
T' |
i=2..R
|
||||||||||||||
Рис. 8.3. Схема преобразования Рис. 8.4. Схема алгоритма цикла
данных - цикл шифрования шифрования
Схема преобразования данных при зашифровании показана на рисунке 8.3, схема соответствующего алгоритма - на рисунке 8.4.
На рисунках использованы следующие обозначения: T, T' - открытый и зашифрованный блоки данных соответственно; ki - i-ый ключевой элемент; F, F' - регулярное нелинейное преобразование и преобразование последнего раунда соответственно; Xi - промежуточное состояние шифруемого блока после прибавления i-того ключевого элемента.
Как видно из рисунков 8.3 и 8.4, процесс зашифрования состоит из чередующихся прибавлений ключевых элементов к блоку данных и нелинейного преобразования этого блока:
T' = EK(T ) = kR+1 F'(kR F(kR-1 ... F(k2 F(k1 T))...)).
Добавление материала ключа в каждом раунде производится операцией XOR.
-
a00
a01
a02
a03
k00
k01
k02
k03
b00
b01
b02
b03
a10
a11
a12
a13
k10
k11
k12
k13
=
b10
b11
b12
b13
a20
a21
a22
a23
k20
k21
k22
k23
b20
b21
b22
b23
a30
a31
a32
a33
k30
k31
k32
k33
b30
b31
b32
b33
Рис.8.5. Схема добавления материала ключа
Число R раундов шифрования переменное и зависит от размера блока данных. Прибавление ключевых элементов, которым начинается и заканчивается процесс шифрования, а также некоторые другие операции раундового преобразования выполняется побайтно в конечном поле Галуа GF(28), полевой операцией сложения в нем является побитовое суммирование по модулю 2. Соответственно, каждый ключевой элемент является байтовой матрицей того же самого размера, что и блок данных. За один раунд шифрования преобразуется полный блок данных, а не его часть, как в сетях Фейстеля. На последнем раунде функция нелинейного преобразования отличается от аналогичной функции, используемой в остальных раундах - это сделано для обеспечения алгоритмической эквивалентности прямого и обратного преобразований шифрования.
Процесс расшифрования блока данных алгоритмически идентичен процессу его зашифрования и, следовательно, рисунки 8.3 и 8.4 также справедливы и для него, если через T обозначить блок зашифрованных данных, а через T' - открытых.

1