stringtranslate.com

Rijndael S-box

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

S-образный ящик вперед

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

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

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

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

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

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

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

[4] [5]

где — полиномиальное умножение и , взятых как битовые массивы.

Обратный S-бокс

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

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

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

Критерии проектирования

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

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

Пример реализации на языке C

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

#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 ; q ^= q << 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 [ p ] = xformed ^ 0x63 ; } while ( p != 1 );        /* 0 — особый случай, поскольку он не имеет обратного */ sbox [ 0 ] = 0x63 ; }  

Ссылки

  1. ^ ab "Блочный шифр Rijndael" (PDF) . Получено 11 ноября 2013 г.
  2. ^ Nyberg K. (1991) Perfect indirect S-boxes. В: Davies DW (ред.) Advances in Cryptology – EUROCRYPT '91. EUROCRYPT 1991. Lecture Notes in Computer Science, т. 547. Springer, Берлин, Гейдельберг
  3. ^ "Расширенный стандарт шифрования" (PDF) . FIPS PUB 197: официальный стандарт AES . Федеральный стандарт обработки информации . 2001-11-26 . Получено 2010-04-29 .
  4. ^ Йорг Дж. Бухгольц (19 декабря 2001 г.). «Реализация расширенного стандарта шифрования в Matlab» (PDF) .
  5. ^ Цзе Цуй; Люшен Хуан; Хун Чжун; Чинчен Чан; Вэй Ян (май 2011 г.). "Улучшенный S-box AES и анализ его производительности" (PDF) . Архивировано из оригинала (PDF) 2016-03-04.