Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекция № 8. 3. MixColumns (перемешивание)

 

1. SubBytes (замена)

2. ShiftRov (сдвиг)

3. MixColumns (перемешивание)

4. AddRoundKey (сложение с ключом)

 

Замена.

 

 

Возможности отражены в следующей таблице:

Nr Nb = 4 Nb = 6 Nb = 8
Nk = 4      
Nk = 6      
Nk = 8      

Быстродействие не очень снижается.

Nr – число раундов; Nb – число столбцов; Nk – число столбцов в ключе.

Nk = 4 – 128 бит

Nk = 6 – 196 бит

Nk = 8 – 256 бит

 

Описание операции

       
     
     
       
       
       
     
       

 

В′ = АВ С

В′ - выходной столбец.

А – фиксированная матрица. Во всех преобразованиях она не меняется.

С – константа.

               
               
               
               
               
               
               
               

 

 

А =

 

Матрица А является невырожденной матрицей, следовательно, она имеет обратную матрицу. Их число достаточно большое.

При расшифровании известно В′

А-1В′ С = В

1
 
 
 
 
 
 
 

 

С =

 

 

 
 


b0
b1
b2
b3
b4
b5
b6
b7

 

 

В′ =

 

b0
b1
b2
b3
b4
b5
b6
b7
              1
               
               
               
               
               
               
               
1
 
 
 
 
 
 
 
b0
b1
b2
b3
b4
b5
b6
b7

 

 

= *

 

Это нелинейная операция (аффинная).

 

bi, i = от 0 до 7

bi= bi b(i+4)mod8 b(i+5)mod8 b(i+6)mod8 b(i+7)mod8 Ci

b0= b0 b4 b5 b6 b7

b1= b0 b1 b5 b6 b7

b2= b0 b1 b2 b6 b7

b3= b0 b1 b2 b3 b7

b4= b0 b1 b2 b3 b4

b5= b1 b2 b3 b4 b5

b6= b2 b3 b4 b5 b6

b7= b3 b4 b5 b6 b7

Матрица реализуется аппаратно

 

x             a f
    7c                
                   
        ed            
                   
                     
a                    
                   
f                    

x = 5, y = 3

Программным способом можно реализовать в виде этой таблицы, где в каждой клетке – байт.

х – номер строки

у – номер столбца

ed – новый байт

 

Расшифрование производится следующим образом:

b′(x) = a(x)·f(x)mod p(x) g(x)

После выполнения этой операции получаем новую матрицу.

S00 S01 S02 S03
S10 S11 S12 S13
S20 S21 S22 S23
S30 S31 S32 S33

 

 

ShiftRov.

 

S00 S01 S02 S03
S10 S11 S12 S13
S20 S21 S22 S23
S30 S31 S32 S33
S00 S01 S02 S03
S11 S12 S13 S10
S22 S23 S20 S21
S33 S30 S31 S32

 

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

 

MixColumns.

 

Производится смена столбцов. Результат преобразования ставится на прежнее место.

      01
       
       
       

Матрица циркулянта. Проста для реализации.

S0c
S1c
S2c
S3c

       
   
 
вых. столбец
 

 


=

 

 

0≤С≤3

 

      01
       
       
       
S0c
S1c
S2c
S3c

 
 
рассеивание

 


*

 

 

 
 
вх. столбец

 

 


Это можно представить в виде формулы

Soc′ = ({02}· Soc) ({03}· S1c) S2c S3c

S1c′ = Soc ({02}· S1c) ({03}· S2c) S3c

S2c′ = S0c S1c ({02}· S2c) ({03}· S3c)

S3c′ = ({03}· Soc) S1c S2c ({02}· S3c)

 
 


AddRoundKey

 

     
       
       
       
     
       
       
       
       
       
       
       

 

 

           
   
 
 
ключ
 
Исходное состояние для второго раунда
 

 

 


Данная процедура повторяется 10 раундов. Исходное состояние после 10-ого раунда есть выходной шифр. На каждом раунде используется новый ключ (128 бит).

 

Алгоритм расширения ключа

 

  w0   w1   w2   w3   w4       w5   w6   w7   …………..        

128 бит раунд 1 раунд 10

 

Преобразование идет со столбцами

Столбцы с индексами, кратными 4, над которыми преобразование производится иначе, чем над столбцами с индексами, некратными четырем (текущими).

Текущее слово w(i) = w(i-1) w(i-Nk)

Nk = 4,6,8

w(5) = w(4) w(1)

w(6) = w(5) w(2)

Для столбцов с индексами, кратными четырем, вводятся следующие операции:

1. RotWord

2. Subbytes

3. Операция сложения с константой

RotWord – сдвиг 32-разрядного слова.

Subbytes – побайтное изменение на основе ранее изложенной операции B′= AB C

R – константа

Rconst = 2j-1

w(4) j=1

Rconst (i/Nk) = j

W(i) = SubWord (RotWord(w[i-1])) Rconst[i/Nk] w[i-Nk]

 

Требования к алгоритму расширения ключа

1. Обратимость используемых преобразований.

Из любых Nk последовательных слов можно однозначно восстановить весь развернутый ключ. Это достигается за счет простых обратимых операций.

B = A-1B′ C

Матрица А должна быть квадратной и ее определитель не должен быть равен нулю (невырожденная матрица). В этом случае она имеет обратную матрицу.

2. Хорошая скорость на различных типах процессоров.

128 + 128 · 10 = 1408 бит – длина ключевой последовательности, работающей в 10 раундах.

3. Наличие раундовых констант для уменьшения симметричности.

4. Хорошее рассеивание изменений в начальном ключе шифрование на формируемый раундовый ключ.

5. Криптостойкость – отсутствие возможности на основе знаний части бит раундового или начального ключа вычислить значительную часть остальных бит.

6. Достаточная нелинейность для предотвращения полного определения межбитовых зависимостей развернутого раундового ключа на основе знаний таких зависимостей в начальном ключе шифрования.

7. Простота шифрования.

 

Расшифрование

1. Обратное преобразование по раундам с использованием обратного расширения.

Вход для расшифрования – результат 10ого шифра

2. В каждом раунде – тобратное применение операций.

Обратная операция по столбцам

S′ = [CM] · [S]

S = [CM-1] · S′

 

0c 0b 0d 09
  0c 0b 0d
0d   0c 0b
0b 0d   oc
  S

S = *

 

 


 

 

S0c′ = ({0c}· S0c) ({0b}· S1c) ({0d}· S2c) ({09}· S3c)

S1c′ = ({09}· S0c) ({0c}· S1c) ({0b}· S2c) ({0d}· S3c)

S2c′ = ({0d}· S0c) ({09}· S1c) ({0c}· S2c) ({0b}· S3c)

S3c′ = ({0b}· S0c) ({0d}· S1c) ({09}· S2c) ({0c}· S3c)

 

0≤С≤3

<== предыдущая лекция | следующая лекция ==>
Синтез шифров | Алгоритм Blowfish
Поделиться с друзьями:


Дата добавления: 2014-01-15; Просмотров: 364; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.095 сек.