- •Содержание
- •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:=X1X0X2; |
X2:=X2X3shl7(X1); |
X3:=X3X2shl3(X0); |
X0:=X0X1X3; |
X1:=rol1(X1); |
X3:=rol25(X3); |
X3:=rol7(X3); |
X1:=rol31(X1); |
X0:=X0X1X3; |
X3:=X3X2shl3(X0); |
X2:=X2X3shl7(X1); |
X1:=X1X0X2; |
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+3Wj+5Wj+7Gword4(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. Алгоритм