Рейтинг:2

Является ли это допустимым изменением порядка инструкций AES?

флаг nl

Я пытаюсь понять реализацию Verilog AES. Я знаю порядок шагов шифрования AES, как показано: введите описание изображения здесь

Однако код, который я вижу, этого не делает. Они делают следующий граф потока: в начале шифрования государство загружается с Ньюстейт или открытый текст. круглый установлен на Максимум и уменьшается каждый раунд.

Затем они выполняют следующий набор операций для каждого раунда, пока круглый достигает 0. Внутренние переменные находятся внутри скобок, а операции без них.

(состояние) -> (sbbi) -> sbox -> (sbbo) -> shift -> (shro) -> mix -> (mxco)

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

если круглый == 0:
    (государство)
если круглый == макс:
    (шро)
еще
    (МХКО)

У меня проблема в том, что я ожидаю увидеть операции Саб, Сдвиг, Ключдобавить для последнего раунда (0 в этом коде). Но это не то, что он делает, и даже брать выходные данные раунда 1 и видеть, что «последний раунд» неверен, поскольку это добавляет двойной ключ.

Maarten Bodewes avatar
флаг in
Можем ли мы предположить, что код AES работает так, как предполагалось (например, против другой реализации/тестовых векторов)? Если я правильно помню, последний раунд AES *немного* отличается, мне интересно, верна ли диаграмма, но у меня сейчас нет времени ее искать.
Tarick Welling avatar
флаг nl
@MaartenBodewes Да, при использовании этого зашифрованный текст проверяется и, следовательно, работает правильно. В последнем раунде предполагается пропустить операцию «Смешать столбцы». Изображение взято из книги «Понимание криптографии» C Paar, и идентичный псевдокод приведен в спецификации AES.
Fractalice avatar
флаг in
Вы уверены, что `round` уменьшается? может это из настроек расшифровки? вы также, вероятно, где-то пропустили ключ добавления (возможно, жестко закодированные битфлипы?). В остальном выглядит законно
Tarick Welling avatar
флаг nl
@Fractalice, ты совершенно прав.Шифрование выполняется в состоянии «KEYSCHED», а не в состоянии «DECRYPT» (которое я интерпретировал как двойное назначение с ужасной меткой). Таким образом, счетчик действительно увеличивается, и поэтому код работает так, как ожидалось.
Maarten Bodewes avatar
флаг in
Кажется, это ответ на вопрос. Если это так, @Fractalice, не могли бы вы ответить на свой комментарий?
Рейтинг:1
флаг in

Вы уверены, что количество раундов уменьшается? Счетчик напоминает настройку расшифровки. Вы также, вероятно, где-то пропустили AddRoundKey. В остальном описание выглядит корректно.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.