вопрос по ГОСТ 28147-89

Тема в разделе "WASM.CRYPTO", создана пользователем metcenger, 18 сен 2008.

  1. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    Я немного не понял о чем идет речь:
    Давай поподробнее...
     
  2. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    kapger
    http://www.wasm.ru/forum/viewtopic.php?id=28853&p=3
    сообщение 68

    3 разных результата. Теперь у нас одинаковые. У Винокурова как?

    ещё, где в официльном ГОСТе, кот. я выкачал из 218 сообщ. при цикле 32-3 вконце есть перестановка нибблов местами? Согласен что нужна, но где она там?

    По гаммированию. Там ещё больше запутано все. Надо взять 64 синхропосылки, первую разбить на N1 N2, зашифровать, скопировать в N3 N4, ...
    потом эти N3 N4 зашифровать, скопировать в N5 N6...
    В общем, можешь доступным языком объяснить как ты это понимаешь и что надо делать?
     
  3. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    А у Винокурова также и осталось - отличное от нашего... Дело в том, что я не знаю в каком порядке расположены ключи в его файлах и элементы в его таблице замен! Если кто-либо сможет разобраться в его файлах на асме и сможет рассказать в каком порядке расположены ключевые элементы в его файлах, то тогда можно и сравнивать... Так что этот вопрос пока открыт.
     
  4. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    А слабо распечатать чертеж номер 2 на страничке 5 и почеркаться на нем, внимательно читая текст? Ну ведь сразу становится всё понятно!

    Ответ:
    Смотрим на странице 6 в самом верху самый первый абзац:
    Если бы вот так почеркались на чертеже, то было бы видно, что в каждом из циклов (кроме 32-го) :
    - это цитата со страницы 4, два последних предложения из предпоследнего абзаца.

    Теперь видно?
     
  5. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    Не, не так... Там одна синхропосылка, просто она так описана так - отдельными 64-мя битами. Так что тут все в порядке! У Винокурова очень все понятно описано, но вот только "первый цикл" выработки гаммы из его чертежа понятен, а дальше - неоднозначность...

    Тогда берем ГОСТ, распечатываем чертеж номер 3 и черкаемся, читая либо текст самого ГОСТа, либо текст с пояснениями из сообщения №205 http://wasm.ru/forum/viewtopic.php?pid=323952#p323952
    Ну я для кого старался и расписывал, если никто и не читал?
     
  6. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    kapger
    не злись )))
    Я все читаю, только проверить не всегда есть время.
    цитата

    Ответ:
    Смотрим на странице 6 в самом верху самый первый абзац:

    В 32 цикле результат из сумматора СМ2 вводится в накопитель N2, а в накопителе N1 сохраняется старое заполнение.

    Корректней было бы, после цикла 32...
    В общем написано по -татарски, можно было бы просто сказать- меняем местами части.

    Завтра уже буду пробовать из сообщ. 205 составить картину что делать. У тебя это понятней расписано все- таки )))
     
  7. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    Вот, молодец!

    Да я не злюсь, я так...
     
  8. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    так а в чем там проблема то ?
     
  9. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    Проблема в том, что я пытался сравнивать свой вариант простой замены, с реализованной в файлах Винокурова, например, в GOST32.EXE. В комплекте файлов Винокурова есть исходники на асме (в котором я все-равно ничего не понимаю, разве что add и adc, да и то благодаря Вашему разъяснению...), есть пример таблицы замен, есть пример ключевого файла. Причем неизвестно в каком порядке в ключевых файлах Винокурова расположены ключевые элементы, чтобы можно было бы их подать в свою функцию и получить аналогичный своему (или отличный) результат. В идеале было бы хорошо, если бы кто смог с этими файлами поработать в режиме отладчика, чтобы можно было найти то место, начиная с которого у нас расхождения в результатах (если итоговый результат разный)...

    И то же самое относится к режиму гаммирования...

    Вот только при опытах с GOST32.EXE в режиме гаммирования без обратной связи обранужена такая странность: если подавать в командной строке синхропосылку в 16-ричном виде длиной четыре 16-ричных символа и менее, то результат шифрования не изменяется. Также если подавать в командной строке синхропосылку в 16-ричном виде длиной девять 16-ричных символов и более, то результат шифрования не изменяется. Может быть имеет место ошибка в файле GOST32.EXE?
     
  10. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    я не видел этих исходников в оригинале - только обработка
    если не трудно - скомпонуй с exe в один архив и залей куда-нибудь ?
     
  11. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    Все здесь: http://www.enlight.ru/crypto/articles/vinokurov/__gost.htm
     
  12. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Можно вопрос :
    где-то на прошлой странице мне показалось, что вы после прибавления констант
    шифруете сам счетчик генератора ПСЧ, т.е.
    в S у вас там например при IV=0
    01010101 01010104
    56DE7A45 06AF73DE
    982BC5A3 4FA9056E
    ...
    а не
    01010101 01010104
    02020202 02020208
    03030303 0303030С
    как должно быть ?
     
  13. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    01010101 01010103
    02020202 02020206
    03030303 03030309
    sorry
     
  14. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    Немного не понял вопрос :)
    Или вопрос уже снят?
     
  15. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    Или вопрос по промежуточным вычислениям в примере из сообщения №200 http://www.wasm.ru/forum/viewtopic.php?pid=323873#p323873 ?

    Давайте проверимся по шагам более подробно...
     
  16. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    Мне не понравился в сообщении 204 шаг 6

    3. Разбиваем S на две 32-х разрядные части: S0 (младшая часть) и S1 (старшая).
    4. Каждую часть вычисляем отдельно, используя вышеуказанные константы:
    S0=S0+C1 (mod 2^32)
    S1=S1+C2-1 (mod (2^32)-1) + 1
    5. Склеиваем S0 и S1 обратно в S.
    6. Шифруем S методом простой замены S=Ц32-з(S).
    7. Читаем 64 бит входных данных и делаем поразрядный xor с нашим S.

    Должно быть так :
    6. TMP=Ц32з(S)
    7. Читаем 64 бит входных данных и делаем поразрядный xor с нашим TMP

    То есть сам вектор S на шаге 6 не должен изменяться
     
  17. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    Согласен. Мне тоже этот шаг был непонятен, как противоречащий ГОСТу.
    Но, сообщение 204 не я писал... К тому же в этом сообщении цитировано сообщение olegras №7 http://www.wasm.ru/forum/viewtopic.php?pid=267083#p267083
    И полновстью с Вами согласен, что:
    За это я и сам бьюсь, например в сообщении №205 http://www.wasm.ru/forum/viewtopic.php?pid=323952#p323952
     
  18. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    kapger
    http://www.wasm.ru/forum/viewtopic.php?id=28853&p=8
    сообщ. 200

    теперь моя вторая гамма тоже совпадает

    проверяемся ещё?

    из всего многообразия описанного в с. 205- надо было просто зациклить кусок кода, начиная с

    ...
    for(i = 0; i < HMBlocks; i++) {
    S0= S0 + C1; //(mod 2^32)
    S1 = ((S1 + C2 - 1) % 0xFFFFFFFF) + 1; //(mod (2^32)-1) + 1

    ...

    вот по сути и весь смысл гаммирования. Никакие переменные N3 N4 вводить не надо, т.к. S0 S1 не изменяются в ходе обратного сложения их в S.
     
  19. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    Вот это многообразие и подробное описание и должно было помочь Вам найти у себя ошибку, а мне - убедиться, что я прав...
    Ну или наоборот :) Но в итоге прийти к единому мнению!

    И переменные N3 N4 не нужно было вводить, они были приведены по тексту ГОСТа и нужны были для понимания...
     
  20. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger

    Проверяем две первые гаммы для ВТОРОГО варианта синхропосылки.

    Таблица замен берется из сообщения №79 данной темы. Ключ шифрования используем один из тех, что описаны в этом же сообщении №79, а именно:
    K1=0x733D2C20 65686573 74746769 79676120 626E7373 20657369 326C6568 33206D54
    (порядок расположения элементов в ключе: k7, k6, ... ,k0)
    Синхропосылка в открытом виде 0x3C934975C61C34AD.

    Шаги по выработке гаммы №1:
    1. Шифруем синхропосылку по циклу 32-З с указанными ключевыми данными, результат равен FEFEFEFC4DA15E7C.
    2. Входное значение для генерации гаммы FEFEFEFC4DA15E7C
    3. Выходное значение полученной гаммы 000000014EA25F7D
    4. Зашифрованное значение полученной гаммы, которое и используется для наложения гаммы на открытые данные - гамма равна BB1B2F0FAEFEA452

    Шаги по выработке гаммы №2:
    1. Входное значение для генерации гаммы 000000014EA25F7D
    2. Выходное значение полученной гаммы 010101054FA3607E
    3. Зашифрованное значение полученной гаммы, которое и используется для наложения гаммы на открытые данные - гамма равна 5B9491C626C5ABCF