Недопонимание шага MixColumns - PullRequest
       9

Недопонимание шага MixColumns

5 голосов
/ 04 февраля 2009

У меня проблема с пониманием шага MixColumns, описанного здесь .

Я знаю о диффузии, и все это имеет смысл до того места, где говорится, что каждый столбец рассматривается как полином и умножается по модулю на GF (2 ^ 8).

НО .. Умножение в GF (2 ^ 8). Хотя домен все тот же, он не обратим из-за мод .... и он должен быть обратим, потому что в этом весь смысл.

Что касается первого бита, мой подход заключается в использовании A, B, C и D в качестве 4-х байтов столбца и A1, A2, ..., A8 в качестве битов, а E, F, G и H. в качестве выходных байтов. Я собирался установить

E = A1,B2,C3,D4,A5,B6,C7,D8
F = D1,A2,B3,C4,D5,A6,B7,C8
G = C1,D2,A3,B4,C5,D6,A7,B8
H = B1,C2,D3,A4,B5,C6,D7,A8

И, таким образом, он обратим, один к одному, линейный и распределительный

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

Я правильно понял? Я борюсь с математикой и пытаюсь понять, что нужно сделать, чтобы преобразовать ее в логику.

Ответы [ 2 ]

6 голосов
/ 25 сентября 2009

MixColumns, вероятно, самая сложная часть для AES, но мне было интересно поработать над математикой и посмотреть, откуда пришли цифры. Я подробно описал это в своем блоге " Руководство по рисунку на палочке к расширенному стандарту шифрования (AES) ". В частности, посмотрите на Акт 4, Сцена 16. Я также поместил реверс этого на лист кроватки в следующей сцене (17). Если у вас есть дополнительные вопросы, не стесняйтесь оставлять комментарии к этому сообщению или здесь.

4 голосов
/ 17 июня 2009

Умножение в MixColumns действительно обратимо и не по модулю 256. samiam.org / mix-column.html содержит хорошее объяснение шага MixColumns, а samiam.org / galois.html отлично объясняет, как выполнять арифметику в конечной области AES.

...