- •Содержание
- •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
Звездова mars
Криптоалгоритм Mars2 шифрует 128‑битовые блоки открытых данных под управлением секретного ключа, длина которого может составлять от 128 до 448 битов (с шагом 32).
Структура алгоритма зашифрования представлена на рис.1. Криптографическое преобразование выполняется над 128‑битовым блоком данных X=(x0,x1,x2,x3), представленным в виде массива из четырех 32‑битовых слов, под управлением 40 32‑битовых раундовых подключей k0,k1,…,k39, формируемых на этапе предвычислений на основе секретного ключа.
В алгоритме используются операции над 32‑битовыми словами (с little-endian-порядком байтов, т.е. младший байт расположен слева, занимая младшую адресную позицию) и следующие преобразования над 128‑битовым блоком X=(x0,x1,x2,x3):
Преобразование AddKey[Q], выполняемое под управлением 128‑битового ключа Q=(q0,q1,q2,q3), где qi – 32‑битовые слова, определяется как
AddKey[Q](X)º{(x0,x1,x2,x3):=(x0⊞32C q0,x1⊞32q1,x2⊞32q2,x3⊞32q3)}.
Обратное преобразование имеет вид:
SubKey[Q](X)º{(x0,x1,x2,x3):=(x0⊟32q0,x1⊟32q1,x2⊟32q2,x3⊟32q3)}.
В преобразованиях F[S] и B[S] (см. рис.2) используются две таблицы: S0[0..255] и S1[0..255], каждая из которых состоит из 256 32‑битовых слов(таблицы объединены в одну таблицу S[0..512], так что S0[m]=S[m] и S1[m]=S[m+256] для 0≤m≤255):
F[S](X)º{(a,b,c,d):=
(x0&255,ror8(x0)&255,ror16(x0)&255,ror24(x0)&255);
(Здесь a,b,c,d – байты слова x0, начиная с младшего)
X:=(ror24(x0),(x1Å32 S0[a])⊞32S1[b],x2⊞32S0[c],x3Å32 S1[d])}.
B[S](X)º{(a,b,c,d):=(x0&255,rol8(x0)&255,rol16(x0)&255,rol24(x0)&255);
(Здесь a,b,c,d – младший, старший, третий и второй байты слова x0)
X:=(rol24(x0),x1Å32 S1[a],x2⊟32 S0[b],(x3⊟32 S1[c])Å32 S0[d])}.
Преобразования F-1[S] и B-1[S], обратные к F[S] и B[S], можно представить в виде:
F-1[S](X)º{x1«x3;B[S](X);x1«x3},
B-1[S](X)º{x1«x3;F[S](X);x1«x3}.
FM[S](X)º{
for i:=0 to 7 do {
F[S](X);
if i=0 Ú i=4 then x0:=x0⊞32x3;
if i=1 Ú i=5 then x0:=x0⊞32x1;
X:=(x1,x2,x3,x0)}};
Алгоритм зашифрования
Блок открытых данных |
|
Вход: X=(x0,x1,x2,x3) – блок открытых данных – массив из 4 32‑битовых слов | |||
x0 |
x1 |
x2 |
x3 |
| |
¯ |
¯ |
¯ |
¯ |
|
|
Начальное забеливание: добавление раундовых подключей k0, k1, k2, k3 |
|
Key Addition: AddKey[k0,k1,k2,k3](X); | |||
¯ |
¯ |
¯ |
¯ |
|
|
Начальное смешивание |
|
Forward Mixing: FM[S](X); | |||
¯ |
¯ |
¯ |
¯ |
|
|
Начальное преобразование под управлением раундовых ключей: k4, k5, …, k19 |
|
Forward Keyed Transformation: FKT[k4,k5,…,k19](X); | |||
¯ |
¯ |
¯ |
¯ |
|
|
Концевое преобразование под управлением раундовых ключей: k20, k21, …, k35 |
|
Back Keyed Transformation: BKT[k20,k21,…,k35](X); | |||
¯ |
¯ |
¯ |
¯ |
|
|
Концевое смешивание |
|
Back Mixing: BM[S](X); | |||
¯ |
¯ |
¯ |
¯ |
|
|
Концевое забеливание: вычитание раундовых подключей k36, k37, k38, k39 |
|
Key Subtraction: SubKey[k36,k37,k38,k39](X); | |||
¯ |
¯ |
¯ |
¯ |
|
|
Блок шифртекста |
|
Выход: X – 128‑битовый блок шифртекста | |||
x0 |
x1 |
x2 |
x3 |
|
Рис.1. Алгоритм зашифрования MARS
Преобразования FM[S] и BM[S] (см. рис.3) определяются как
BM[S](X)º{
for i:=1 to 7 do {
if i=2 Ú i=6 then x0:=x0⊟32x3;
if i=3 Ú i=7 then x0:=x0⊟32x1;
B[S](X);
X:=(x1,x2,x3,x0)}}.
Рис.2. Преобразования а) F[S](X) и б) B[S](X)
Следующие преобразования являются обратными по отношению к преобразованиям FM[S] и BM[S]:
FM-1[S](X)º{
for i:=7 downto 0 do {
X:=(x3,x0,x1,x2);
if i=1 Ú i=5 then x0:=x0⊟32x1;
if i=0 Ú i=4 then x0:=x0⊟32x3;
F-1[S](X)}}.
BM-1[S](X)º{
for i:=7 downto 0 do {
X:=(x3,x0,x1,x2); B-1[S](X);
if i=3 Ú i=7 then x0:=x0⊞32x1;
if i=2 Ú i=6 then x0:=x0⊞32x3}}.
Функция E[k,q](x0) с 32‑битовыми параметрами (раундовыми подключами) k, q и 32‑битовым аргументом x0, возвращающая тройку 32‑битовых слов: (L, M, R), которая определена на рис. 4.
Преобразования FKT[q4,q5,…,q19] и BKT[q20,q21,…,q35] с параметрами (раундовыми подключами) q4, …, q19 и q20,..., q35 определяются как (см. рис. 5).
FKT[q4,q5,…,q19](X)º{
for i:=0 to 7 do {
(L,M,R):=E[q 2i+4,q2i+5](x0);
X:=(rol13(x0),x1⊞32L,x2⊞32M,x3Å32 R);
X:=(x1,x2,x3,x0)}};
Рис.3. Преобразования а) FM[S](X) и б) BM[S](X)
BKT[q20,q21,…,q35](X)º{
for i:=8 to 15 do {
(L,M,R):=E[q2i+4,q 2i+5](x0);
X:=(rol13(x0),x1ÅR,x2⊞32M,x3⊞32L);
X:=(x1,x2,x3,x0)}}.
Следующие преобразования являются обратными по отношению к преобразованиям FKT и BKT (с теми же ключевыми параметрами):
FKT-1[q4,q5,…,q19](X)º{
for i:=7 downto 0 do {
X:=(ror13(x3),x0,x1,x2);
(L,M,R):=E[q2i+4,q2i+5](x0);
X:=(x0,x1⊟32L,x2⊟32M,x3ÅR)}};
BKT-1[q20,q21,…,q35](X)º{
for i:=15 downto 8 do {
X:=(ror13(x3),x0,x1,x2);
(L,M,R):=E[q2i+4,q2i+5](x0);
X:=(x0,x1ÅR,x2⊟32M,x3⊟32L)}}.