Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gruppa_903a_proekt.doc
Скачиваний:
50
Добавлен:
10.02.2015
Размер:
23.8 Mб
Скачать

Звездова 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):=(x032C q0,x132q1,x232q2,x332q3)}.

Обратное преобразование имеет вид:

SubKey[Q](X)º{(x0,x1,x2,x3):=(x032q0,x132q1,x232q2,x332q3)}.

В преобразованиях 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],x232S0[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],x232 S0[b],(x332 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:=x032x3;

if i=1 Ú i=5 then x0:=x032x1;

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:=x032x3;

if i=3 Ú i=7 then x0:=x032x1;

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:=x032x1;

if i=0 Ú i=4 then x0:=x032x3;

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:=x032x1;

if i=2 Ú i=6 then x0:=x032x3}}.

Функция 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),x132L,x232M,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,x232M,x332L);

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,x132L,x232M,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,x232M,x332L)}}.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]