Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Rijndael S-бокс представляет собой окно подстановки ( таблица поиска ) используется в шифре Rijndael, которую Advanced Encryption Standard криптографический (AES) , алгоритм основан на. [1]

Передний S-бокс [ править ]

S-блок отображает 8-битный вход c в 8-битный выход s = S ( c ) . И вход, и выход интерпретируются как полиномы над GF (2) . Сначала вход отображается в его мультипликативный обратный в GF (2 8 ) = GF (2) [ x ] / ( x 8 + x 4 + x 3 + x + 1) , конечное поле Rijndael . Ноль, как тождество, отображается на себя. Это преобразование известно как S-box Nyberg в честь его изобретателя Кайсы Ниберг . [2] Затем мультипликативное обратное преобразование преобразуется с помощью следующего аффинного преобразования :

где [ s 7 ,…, s 0 ] - это выход S-блока, а [ b 7 ,…, b 0 ] - мультипликативный инверсный вектор.

Это аффинное преобразование представляет собой сумму нескольких поворотов байта как вектора, где сложение - это операция XOR:

где b представляет собой мультипликативную инверсию, является побитовым оператором XOR , является побитовым циклическим сдвигом влево , а константа 63 16 = 01100011 2 дается в шестнадцатеричном формате .

Эквивалентная формулировка аффинного преобразования:

где s , b и c - 8-битные массивы, c - 01100011 2 , а нижние индексы указывают ссылку на индексированный бит. [3]

Другой эквивалент:

[4] [5]

где полиномиальное умножение и принимать в виде битовых массивов.

Обратный S-образный блок [ править ]

Обратный S-образный блок - это просто S-образный блок, работающий в обратном направлении. Например, обратный S-блок для b8 16 равен 9a 16 . Он вычисляется путем вычисления сначала обратного аффинного преобразования входного значения, а затем обратного мультипликативного преобразования. Обратное аффинное преобразование выглядит следующим образом:

Обратное аффинное преобразование также представляет собой сумму нескольких поворотов байта как вектора, где сложение - это операция XOR:

где - побитовый оператор XOR , - побитовый круговой сдвиг влево , а константа 5 16 = 00000101 2 дается в шестнадцатеричном формате .

Критерии дизайна [ править ]

S-box Rijndael был специально разработан для обеспечения устойчивости к линейному и дифференциальному криптоанализу. Это было сделано путем минимизации корреляции между линейными преобразованиями входных / выходных битов и в то же время минимизации вероятности распространения разности.

S-блок Rijndael может быть заменен шифром Rijndael [1], который устраняет подозрение на наличие бэкдора, встроенного в шифр, который использует статический S-блок. Авторы утверждают, что структура шифра Rijndael должна обеспечивать достаточную устойчивость к дифференциальному и линейному криптоанализу, если используется S-блок со «средними» свойствами распространения корреляции / разности.

Пример реализации на языке C [ править ]

Следующий код C вычисляет S-блок:

#include  <stdint.h>#define ROTL8 (x, shift) ((uint8_t) ((x) << (shift)) | ((x) >> (8 - (shift))))void  initialize_aes_sbox ( uint8_t  sbox [ 256 ])  { uint8_t  p  =  1 ,  q  =  1 ;/ * инвариант цикла: p * q == 1 в поле Галуа * / do  { / * умножение p на 3 * / p  =  p  ^  ( p  <<  1 )  ^  ( p  &  0x80  ?  0x1B  :  0 );/ * делим q на 3 (равно умножению на 0xf6) * / q  ^ =  q  <<  1 ; д  ^ =  д  <<  2 ; q  ^ =  q  <<  4 ; q  ^ =  q  &  0x80  ?  0x09  :  0 ;/ * вычисляем аффинное преобразование * / uint8_t  xformed  =  q  ^  ROTL8 ( q ,  1 )  ^  ROTL8 ( q ,  2 )  ^  ROTL8 ( q ,  3 )  ^  ROTL8 ( q ,  4 );Sbox [ р ]  =  xformed  ^  0x63 ; }  while  ( p  ! =  1 );/ * 0 - особый случай, так как у него нет обратного * / sbox [ 0 ]  =  0x63 ; }

Ссылки [ править ]

  1. ^ a b "Блочный шифр Rijndael" (PDF) . Проверено 11 ноября 2013 .
  2. ^ Ниберг К. (1991) Совершенные нелинейные S-блоки . В: Дэвис Д.В. (ред.) Достижения в криптологии - EUROCRYPT '91. EUROCRYPT 1991. Lecture Notes in Computer Science, vol 547. Springer, Berlin, Heidelberg.
  3. ^ «Расширенный стандарт шифрования» (PDF) . FIPS PUB 197: официальный стандарт AES . Федеральный стандарт обработки информации . 2001-11-26 . Проверено 29 апреля 2010 .
  4. ^ Йорг Дж Буххольц (2001-12-19). «Реализация в Matlab стандарта Advanced Encryption Standard» (PDF) .
  5. ^ Цзе Цуй; Люшэн Хуанг; Хун Чжун; Чинчен Чанг; Вэй Ян (май 2011 г.). «Улучшенный S-блок AES и анализ его производительности» (PDF) .