Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗахКриптология курс лекций 2 - копия.docx
Скачиваний:
5
Добавлен:
24.09.2019
Размер:
5 Мб
Скачать
☆

МатематическаямодельалгоритмаRijndael

БайтыможнорассматриватькакэлементыконечногополяGF(28)-

многочленыстепенинеболее7

а7х7+а6х6+а5х5+а4х4+а3х3+а2х2+а1х1+а0х0,

которыемогутбытьзаданыстрокойкоэффициентов

{а7,a6,a5,a4,а3,а2,а1,a0},аi{0,1},i0,7.

Например,байтувдвоичномвиде110010112(илиcb16)ставитсявсоответствиемногочленх7+х6+х3+х+1.

В раундах шифрования используются 32-битные слова,представленныеввидемногочленовa(х)скоэффициентамиаiGF(28)

размеромвбайт,i0,3:

а(х)=а3х3+а2х2+а1х+a0.

ОперациясложениямногочленовскоэффициентамиизGF(28).Сложениедвухмногочленова(х)иb(х)скоэффициентамиизGF(28)заключаетсявпоразрядномсложениипооперацииXORкоэффициентовпринеизвестныходинаковойстепени:

а(х)+b(х)=(а3b3)х3+(а2b2)х2+(а1b1)х+(a0b0).

Призаданииполиномовввиде4-байтовыхсловсложениезаключаетсявпоразряднойоперацииXORвсехразрядовскладываемыхслов.

ОперацияумножениямногочленовскоэффициентамиизGF(28).

Пустьперемножаются2многочлена

а(х)=а3х3+a2х2+а1х+a0иb(х)=b3х3+b2х2+b1х+b0.

Результатомумноженияс(х)=а(х)?b(х)будетмногочлен

c(х)=c6x6+c5x5+c4x4+c3x3+c2x2+c1x+c0,где

c0=a0b0,

c1=a1b0a0b1,

с2=а2b0а1b1a0b2,

с3=а3b0a2b1а1b2a0b3,

с4=а3b1а2b2a1b3,

с5=а3b2а2b3,

с6=а3b3.

Для того чтобы результат умножения мог быть представлен 4-

байтовымсловом,егонормируютпомодулю-многочленомстепенинеболее4-многочленом

x4+1.

Результатомd(x)умножениядвухмногочленовпомодулюх4+1

d(x)=a(x)?b(х)mod(х4+1)

будетмногочлен

d(x)=d3x3+d2x2+d1x+d0,гдеd0=a0b0a3b1a2b2a1b3,d1=a1b0a0b1a3b2a2b3,d2=a2b0a1b1a0b2a3b3,

d3=a3b0a2b1a1b2a0b3,

Иливматричнойформе:

d0

a0a3a2a1

b0

d

aa

aa

b

11

0 3 2

1.

d2

a2a1a0a3

b2

d3

a3a2a1a0

b3

Многочленb(х)=b3x3+b2x2+b1x+b0(biGF(28),

i0,3)можно

умножитьнахпомодулюх4+1следующимобразом.Умножениеаналогичноциклическомусдвигукоэффициентовbiвлево,всторонустаршейстепениb(х):

(х?b(х))mod(х4+1)=b2x3+b1x2+b0x+b3.

РаундпреобразованияалгоритмаRijndael

RIJNDAELвыполняетсериюоднотипныхраундовпреобразованияшифруемогоблока.Шифруемыйблокиегопромежуточныесостояниявходепреобразованияпредставляютсяввидеквадратнойматрицы.Раундсостоитизчетырехпоследовательновыполняемыхшагов(рис.4.2):

1)заменабайтовS[](SubBytes)-каждыйбайтблокаданныхзаменяетсяновымзначениемпофиксированнойматрицезамены;

2)побайтовыйциклическийсдвигR(ShiftRows)встрокахматрицы:i-ястрокациклическисдвигаетсянаi-1байтоввлево,а1-ястроканеизменяется;

3)матричноеумножениеM?[](MixColumns)-байты,представленныеввидемногочленовнадполемGF(28),умножаютсянафиксированныймногочлентретьейстепениg(x)помодулюx4+1;

4)сложениесраундовымключом(AddRoundKey)-выполнениеоперациипоразрядногоисключающегоили(XOR)байтовстекущейчастью

ключаалгоритма.

k0

1-ыйраунд X0

2-ойраунд

S[]

S[]

R M?[]

R M?[]

X1 k1

X2 k2

………

………

10

10-ыйраунд k10 X

S[] R

Рис.4.2.СхемапреобразованияданныхалгоритмомRIJNDAELсдлинойключав128бит

X-входнойблокданных;

XiиXi+1-преобразуемыйблокнавходеивыходеi-гораунда,i0,10;

ki-ключевойэлементi-гораунда.

В10-мраундеоперацияM?[]отсутствует.Преобразование SubBytes (1-ый шаг раунд

шифрования/расшифрования)являетсянелинейнойзаменойбайт,выполняемойдлякаждогобайтавходныхданных.SubBytesвыполняетследующиепреобразованиявходногобайта:

1)вычисляетсяобратныйэлемент(раздел3.4)отвходногобайтапо

операцииумножениявполеGF(28);принимается,что0остается0;

2)выполняетсяаффинноепреобразованиенадбитамивходногобайта:

b'0

1 0

0 0 1

1 1 1

b0

1



b'1

b'2

1 1

1 1

0 0 0

1 0 0

1 1 1

0 1 1

b1

b2

1

0



b'3

b'4

1 1

1 1

1 1 0 0

1 1 1 0

0 1

0 0

b3

b4

0,

0



b'5

0 1

1 1 1 1

0 0

b5

1

b

b 

'6

0 0 1

1 1 1 1

0 6 1

b'7

0 0

0 1 1

1 1 1

b7

0

гдеbiиb'i-исходноеипреобразованноезначениеi-гобита,

i0,7.

Аффинноепреобразованиеможнозаписатьввидеуравнения:

b'i=bib(i+4)mod8b(i+5)mod8b(i+6)mod8b(i+7)mod8b(i+4)mod8ci,

гдеc0=c1=c5=c6=1,c2=c3=c4=c7=0.

ВпреобразованииMixColumns(3-ойшаграунда)входныебайтырассматриваютсякакмногочленынадGF(2n)иумножаютсяпомодулюx4+1

намногочленg(x)вида

g(x)='03'x3+'01'x2+'01'x+'02'.

Операциюумноженияможнопредставитьвматричномвидекак

s'0c

02030101

s0c

s'

01020301

s

1c

1c

s'2c

01010203

s2c,

s'3c

03010102

s3c

гдеsicиs’ic-i-ыебайтывходногоивыходногодвойныхслов,

c-номердвойногословавшифруемомтексте.

Вопросыдлясамопроверки.

i0,3,

1. Какими достоинствами и недостатками обладает алгоритм

RIJNDAEL?

2.КакиеестьмодификацииалгоритмаRIJNDAEL?

3.Поясните,какиеоперациинадконечнымиполямииспользуютсяв

алгоритмеRIJNDAEL?