
- •Содержание
- •Crypton v1.0
- •Алгоритм зашифрования
- •Алгоритм расшифрования
- •Алгоритм зашифрования
- •Алгоритм расшифрования
- •Loki 91 и 97.
- •Serpent
- •Звездова mars
- •Алгоритм зашифрования
- •Алгоритм расшифрования
- •Генерация раундовых подключей
- •Noekeon
- •Алгоритм зашифрования
- •Rijndael
- •Skipjack
- •Алгоритм зашифрования
- •Алгоритм расшифрования
- •TwoFish
- •Алгоритм зашифрования
- •Алгоритм расшифрования
- •Гост 28147-89
- •Blowfish
- •Camellia
- •Алгоритм зашифрования
- •6 Раундов
- •6 Раундов
- •6 Раундов
- •4. Режимы использования блочных шрифтов
- •2. Функции хеширования
- •2.1. Ключевые функции хеширования
- •2.2. Бесключевые функции хеширования
- •3 А. Схемы эцп с использованием дискретных логарифмов в простом конечном поле
- •Предисловие
- •Введение
- •1 Область применения
- •2 Нормативные ссылки
- •3 Термины, определения и обозначения
- •3.1 Термины и определения
- •3.2 Обозначения
- •4 Общие положения
- •5 Значения параметров
- •5.1 Инициализационные векторы
- •5.2 Нелинейное биективное преобразование множества двоичных векторов
- •5.3 Перестановка байт
- •6 Преобразования
- •Государственный Стандарт Российской Федерации
- •Введение
- •1 Область применения
- •2 Нормативные ссылки
- •3 Определения и обозначения
- •3.1 Определения
- •3.2 Обозначения
- •4. Общие положения
- •5. Математические соглашения
- •5.1. Математические определения
- •5.2. Параметры цифровой подписи
- •5.3. Двоичные векторы
- •6. Основные процессы
- •6.1. Формирование цифровой подписи
- •6.2. Проверка цифровой подписи
- •Приложение а (справочное) Дополнительные термины в области эцп
- •Приложение б (справочное) Контрольный пример
- •Б.2. Процесс формирования цифровой подписи (алгоритм I)
- •4.Датчики псевдослучайных последовательностей (чисел)
- •4.1. Алгоритм rc4
Serpent
Криптоалгоритм
Serpent (Змея) 1,
авторами которого являются, шифрует
128‑битовые блоки открытых данных под
управлением ‑битового
секретного ключа. (Допускается
использование более короткого ключа –
в этом случае он расширяется до требуемого
размера добавлением одной битовой
единицы и необходимого числа битовых
нулей.) Число раундов шифрования равно
.
Serpent
оперирует со ‑битовым
блоком данных
,
представленным в виде четырех
‑битовых
слов:
,
,
,
).
Биты
в словах индексируют от
до
,
в
‑битовом
блоке −
от
до
,
а в
‑битовом
ключе – от
до
.
В словах принят прямой (little-endian) порядок
байтов (младший байт размещен слева,
занимая младшую адресную позицию).
Алгоритм
шифрования представляет собой вариант
общей ‑сети
(подстановочно-перестановочной),
построенной по схеме
:
“key-addition-substitution-linear transformation” −
прибавление ключевого элемента −
подстановка −
линейное преобразование. В качестве
криптографических операций используются
только табличные подстановки и следующие
операции над
-битовыми
словами
и
:
– побитовое сложение по модулю
слов
и
;
– сдвиг битов слова
влево на
позиций;
– циклический сдвиг
влево на
позиций;
(отметим,
что ,
).
Таблица
1. Преобразования
и
в Serpent
|
|
X0:=rol13(X0); |
X2:=rol10(X2); |
X2:=rol3(X2); |
X0:=rol27(X0); |
X1:=X1 |
X2:=X2 |
X3:=X3 |
X0:=X0 |
X1:=rol1(X1); |
X3:=rol25(X3); |
X3:=rol7(X3); |
X1:=rol31(X1); |
X0:=X0 |
X3:=X3 |
X2:=X2 |
X1:=X1 |
X0:=rol5(X0); |
X2:=rol29(X2); |
X2:=rol22(X2). |
X0:=rol19(X0). |
Таблица
2. Таблица
замены в Serpent (в
‑ичном
представлении)
|
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
a |
b |
c |
d |
e |
f |
|
3 |
8 |
f |
1 |
a |
6 |
5 |
b |
e |
d |
4 |
2 |
7 |
0 |
9 |
c |
|
f |
c |
2 |
7 |
9 |
0 |
5 |
a |
1 |
b |
e |
8 |
6 |
d |
3 |
4 |
|
8 |
6 |
7 |
9 |
3 |
c |
a |
f |
d |
1 |
e |
4 |
0 |
b |
5 |
2 |
|
0 |
f |
b |
8 |
c |
9 |
6 |
3 |
d |
1 |
2 |
4 |
a |
7 |
5 |
e |
|
1 |
f |
8 |
3 |
c |
0 |
b |
6 |
2 |
5 |
4 |
a |
9 |
e |
7 |
d |
|
f |
5 |
2 |
b |
4 |
a |
9 |
c |
0 |
3 |
e |
8 |
d |
6 |
7 |
1 |
|
7 |
2 |
c |
5 |
8 |
4 |
6 |
b |
e |
9 |
1 |
f |
d |
3 |
a |
0 |
|
1 |
d |
f |
0 |
e |
8 |
2 |
b |
7 |
4 |
c |
a |
9 |
3 |
5 |
6 |
Преобразование
и обратное к нему преобразование
,
определённые в табл. 1, выполняются над
‑битовым
блоком
,
,
,
),
представленным в виде четырех
‑битовых
слов
,
,
,
.
Табличные
подстановки ,
,
,…,
,
применяются к
‑битовым
блокам
,
,…,
),
представленным в виде массива из
полубайтов (полубайт −
четыре бита): каждый из полубайтов
заменяется на соответствующий полубайт
согласно табл. 2.
Например, для блока
|
15ab503B 12436578 9af0d84e f1e2c3d2 |
имеем: |
|
|
f9249084 f8c8693d 12e07dc5 e05ba87b. |
Преобразование
– это перестановка битов в блоке
:
бит
перемещается в позицию
,
где
,
,
,…,
.
Обратная перестановка
перемещает бит
в позицию
,
,
,…,
.
В
алгоритмах зашифрования и расшифрования
используются ‑битовые
раундовые подключи
,
,…,
,
генерируемые на основе
‑битового
секретного ключа
с использованием
‑битовых
переменных
,
,…,
:
W[0..7]:=K;
for i:=0 to 32 do {
for j:=0 to 3 do {
Wj+8:=rol11(WjWj+3
Wj+5
Wj+7
G
word4(4i+j))};
Ki:=P(S(11-i) mod 8(W[8..11]));
W[0..7]:=W[4..11]}.
Здесь
G=$9e3779b9
– дробная часть отношения золотого
сечения (
в
‑ичном
представлении;
−
‑байтовое
слово со значением
.
Алгоритм зашифрования
Вход:
B
– ‑битовый
блок открытых данных.
C:=IP(B);
for
i:=0 to
30 do
C:=L(Simod8(CKi));
C:=S7(CK31)
K32;
C:=FP(C).
Выход:
C
−
‑битовый
блок шифртекста .
Алгоритм расшифрования
Вход:
C
−
‑битовый
блок шифртекста.
B:=IP(C);
B:=S7-1(BK32)
K31;
for
i:=30 downto
0 do
B:=S-1imod8(L-1(B))Ki;
B:=FP(B).
Выход:
B
−
‑битовый
блок открытых данных.
зарипов
Криптоалгоритм
,
авторами которого являются
и
,
шифрует
-битовые
(
-байтовые)
блоки открытых данных под управлением
секретного ключа, длина которого может
составлять
,
или
битов.
Обозначим
через
множество байтов (т.е.
,
если отождествить
‑битовый
байт
с числом
,
а через
– множество
‑байтовых
векторов
.
В алгоритме используются следующие функции:
Функция
определяется как
Здесь
и
– байты, интерпретируемые как элементы
конечного поля
,
где
(
– примитивный многочлен, поэтому в
качестве
можно взять байт
).
Функция
определяется как
где
символ ⨁
обозначает побитовое сложение байтов
()
по модулю
.
Функция
определяется как
Функции
и
определяются как
Функции
и
:
определяются как
,
Функция
определяется как
Функция
определяется рекурсивно:
,
,
,
где
,
Алгоритм
шифрования Magenta
построен в соответствии со схемой
Фейстеля (см. рис. 1). Для блока данных
и раундового подключа
результат одного “раунда Фейстеля”
определен как
где
Magenta
предусматривает использование
-байтовых
секретных ключей
c
,
или
.
Раундовые подключи Кi
определяются как
для
,
для
,
для
,
где
.
Алгоритм состоит из 6 или 8 раундов в зависимости от длины ключа К. Результат зашифрования блока открытых данных XÎВ16 определяется как
где
,
а функция
определяется как
Преобразование
инволютивно:
.
Другими словами,
.
Замечание. Авторы определяют преобразование зашифрования как
;
в
этом случае обратное преобразование
имеет вид: K=(
.
Рис.
1. Алгоритм