Релизация AES

Тема в разделе "WASM.CRYPTO", создана пользователем MSoft, 8 июн 2007.

  1. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Здравствуйте, гуру криптографии!
    Хочу написать свою реализацию AES (на ассемблере). Видел много различных реализаций на разных языках и множество описаний, которые только запутывают еще больше. А посему, хочу задать несколько довольно простых вопросов относительно реализации.

    Вопрос 1
    Имеется блок данный длиной 16 байт. Допустим, 123456789ABCDEF0. Этот блок для операции представлен в виде матрицы 4х4. Так вот, как будет выглядеть эта матрица:
    1 2 3 4
    5 6 7 8
    9 A B C
    D E F 0

    или

    1 5 9 D
    2 6 A E
    3 7 B F
    4 8 C 0
    ?
    Я всегда думал, что первый вариант. Однако, в одном иходнике увидел код ShiftRow, сдвигающую строчку циклически влево, которая сдвигала СТОЛБЦЫ циклически влево (а точнее элементы столбцов, а не строк!)

    Вопрос 2
    Аналогичный вопрос по созданию расширенного ключа: в каком виде он "разлогается" в матрицу? Ведь от этого ж зависит результат наложения ключа

    Вопрос 3
    Немного запутанный вопрос... Вобщем, как представляются, к примеру, строки матрицы из блока данных - в виде двордов или в виде простой последовательности из 4-х байт? Поясняю: строчка 1234 в виде последовательности байт выглядит как 1 2 3 4, а в виде дворда - 4 3 2 1. Я конечно подозреваю, что надо в виде последовательности байт хранить, но все-таки хотелось бы уточнить, ведь от этого так же зависит результат сдвига.

    На этом пока все. Следующие вопросы будут по ходу ответов на эти вопросы. Заранее спасибо.
     
  2. CreatorCray

    CreatorCray Member

    Публикаций:
    0
    Регистрация:
    5 авг 2006
    Сообщения:
    201
    Может тебе сишный исходник кинуть - сам почитаешь и ответишь на свои вопросы?
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    я ж говорю, у меня куча исходников, в т.ч. и на си. Проблема в том, что Си я ааще не знаю - только асм. Ладно, кидай, может хоть в нем разберусь (мой_ник_собака_list.ru)
     
  4. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    RTFM FIPS-197
    тут: http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf

    Там есть ответы на все вопросы и даже примеры.
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    то, что надо! спасибо!
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Несмотря даже на официальное описание возник вопрос. В официальном описании написано:

    Если я правильно понял, то раундовая константа определяется по формуле RC=02^(i-1). однако, в различных реализациях я вижу, что при i>8 раундовая константа ксорится на 1Bh.

    Но с другой стороны написано (в описании процедуры умножения):
    Т.е. получается, что, если число после умножения больше 255, то надо еще сделать XOR на 1Bh. Почему же в первой формуле об этом не написано?

    Из всего этого вопрос: при опеределении раундовой константы RC из массива Rcon надо делать XOR на 1Bh или нет?