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

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

  1. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    Если можно, проверьте в своих программах результат шифрования в режиме простой замены абстрактной строки, например, 0x1F1F1F1F2B2B2B2B со следующими ключевыми элементами:
    Ключ:
    0x931A21D5 key0
    0xDB56279F key1
    0x8E9A6321 key2
    0xFE3087A3 key3
    0xF5A68268 key4
    0x2255452B key5
    0xA179C1AB key6
    0xACDDFDC4 key7

    Таблица замен (в 16-ричном виде):
    k1 1 2 3 4 5 6 7 8 9 A B C D E F 0
    k2 2 3 4 5 6 7 8 9 A B C D E F 0 1
    k3 3 4 5 6 7 8 9 A B C D E F 0 1 2
    k4 4 5 6 7 8 9 A B C D E F 0 1 2 3
    k5 5 6 7 8 9 A B C D E F 0 1 2 3 4
    k6 6 7 8 9 A B C D E F 0 1 2 3 4 5
    k7 7 8 9 A B C D E F 0 1 2 3 4 5 6
    k8 8 9 A B C D E F 0 1 2 3 4 5 6 7

    Эти значения взяты из файлов Винокурова KEY.KEY и CHANGTBL.CHT. Будем считать, что порядковая нумерация элементов в его файлах именно такая, как приведена здесь (ключ key0-key7, таблица замен k1-k8).
    У Винокурова при выполнении строки
    GOST32.EXE /kkey.key /cCHANGTBL.CHT es 1.txt 2.txt
    результат равен 0x273B85ED861E01BA

    Если у кого получился такой же результат, то можно попросить в режиме отладки выписать все промежуточные результаты вплоть до основных шагов?
     
  2. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    kapger
    участвую в эксперименте. Мне тоже интересна моя реализация. Тест Винокура не смог запустить- может не очень старался. Сейчас введу твои данные, скажу, что на выходе. Я- автор этого топика, и мне уважаемый olegras разъяснял что и как там. Так я и сделал. Это соответствует чему? Что у Винокура? Просто мысль немного потерял уже.
     
  3. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    С данными вводными, вроде не ошибся при вводе результат другой-
    F900E2B51D1421D9

    обратно этот же результат расшифровывается к исходному как надо.
     
  4. kapger

    kapger New Member

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

    Локальный вопрос следующий: любая собственная реализация алгоритма ГОСТ 28147 (например, Ваша) должна на выходе давать то же самое, что и другая реализация (например, моя или любого другого человека) при одинаковых начальных условиях: входное значение для шифрования, ключ и таблица замен. Давайте, чтобы не выдумывать лишнего, берем за входное значение для шифрования, ключ и таблицу замен значения, указанные в предыдущем посте. Режим - простая замена.

    Причем, даже если выходные значения у нас с Вами и совпадут, то можно ли быть уверенными в том, что мы с Вами не сделали одну и ту же ошибку по тексту программы? Так что жду Вашего значения, полученного на выходе простой замены...
     
  5. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    kapger
    Я так полагаю, последний абзац- это ко мне относился?
    На этом сайте был прекрасный пример от Evil's interrupt по реализации ГОСТА по шагам. У меня с ним все совпало. У Винокура все не так очевидно и наглядно как там. Для начинающего.

    Я же вроде остаивл своё значение по простой замене? Не понял вопроса.
     
  6. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    А что мешает в качестве теста взять векторы данных из реализации ГОСТ 28147-89 в ГОСТ 34.11-94 ?
     
  7. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    вот например первые 4 тестовых вектора :

    все 4 раза шифруем блок из всех 000000000000...

    K1=0x733D2C20 65686573 74746769 79676120 626E7373 20657369 326C6568 33206D54
    K2=0x110C733D 0D166568 130E7474 06417967 1D00626E 161A2065 090D326C 4D393320
    K3=0x80B111F3 730DF216 850013F1 C7E1F941 620C1DFF 3ABAE91A 3FA109F2 F513B239
    K4=0xA0E2804E FF1B73F2 ECE27A00 E7B8C7E1 EE1D620C AC0CC5BA A804C05E A18B0AEC

    R1=0x42ABBCCE 32BC0B1B
    R2=0x5203EBC8 5D9BCFFD
    R3=0x8D345899 00FF0E28
    R4=0xE7860419 0D2A562D

    другие в тексте ГОСТа 34.11 дальше
     
  8. kapger

    kapger New Member

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

    Ваш итог F900E2B51D1421D9
    Мой итог E9E99D391CE5E699
    А у Винокурова 273B85ED861E01BA
    Где правда? :)
    И у меня тоже совпала обратная расшифровка и получилось исходное 1F1F1F1F2B2B2B2B...
     
  9. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    А можно поподробнее про векторы данных из реализации ГОСТ 28147-89 в ГОСТ 34.11-94 и где их взять?
     
  10. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    kapger
    там 32 раза прогоняется от 1-8 1-8 1-8, потом от 8-1 ключи. Так оно? Или это полсе первого цикла прогона?
    Может имеет смысл сравнить результат после первого прогона?
     
  11. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    Так оно. После всех 32 циклов. Давайте сравнивать.
     
  12. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    kapger
    В самом стандарте ГОСТ 34.11-94, т.к. там применяется ГОСТ 28147-89 и есть пошаговые вектора данных (я привел первые 4 из них выше).
    Если нет официальных сканов - можно посмотреть в Википедии :
    http://ru.wikipedia.org/wiki/%D0%93%D0%9E%D0%A1%D0%A2_%D0%A0_34.11-94
    (см. раздел "Шифрующее преобразование E")
     
  13. kapger

    kapger New Member

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

    То есть если мы будем шифровать исходное значение 0x00000000 00000000
    с ключом K1=0x733D2C20 65686573 74746769 79676120 626E7373 20657369 326C6568 33206D54
    (элементы в нем расположены как k0, k1... k7 или наоборот?)
    то в итоге должны получить R4=0xE7860419 0D2A562D ?
    А какая таблица замен в этом случае? Или я чего то не понимаю?
     
  14. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    Итак, цикл 32-3
    ключ к [0]
    один раз прошелся по алгоритму. результат
    4B1E16B21F1F1F1F

    Теперь результат прогнал ещё 7 раз с оставшимися ключами, т.е. исходные данные прогнал последовательно с ключами 0-7
    22B20B62C23048E0

    ЧТО сошлось из этого?
     
  15. OLS

    OLS New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2005
    Сообщения:
    322
    Адрес:
    Russia
    kapger
    Возьмите сканы официальной версии : http://slil.ru/27745916
    Там есть узлы замен и некоторые другие подробности
     
  16. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    metcenger
    цикл 32-3
    ключ k0=931A21D5
    один раз прошелся по алгоритму. результат
    2B2B2B2B4B1E16B2

    Кто не прав? :)
     
  17. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    сейчас гляну, подожди
     
  18. metcenger

    metcenger New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2008
    Сообщения:
    87
    сразу видна твоя ошибка- у нас данные

    0x1F1F1F1F, // L
    0x2B2B2B2B, // R

    согласен?

    преобразование начинается с правой части. Согласен?
    тогда почему в твоем результате она не преобразована?
    исправь это. может дальше ещё что будет.
     
  19. kapger

    kapger New Member

    Публикаций:
    0
    Регистрация:
    18 фев 2009
    Сообщения:
    135
    OLS
    Спасибо! Сканы взял и почитал...

    Итак...
    =========================================================================
    "ТЕСТ реализации ГОСТ 28147-89 (В РЕЖИМЕ ПРОСТОЙ ЗАМЕНЫ)"!

    В "Приложении А" к ГОСТ 34.11-94 указано, что таблица замен для тестовых целей такова:
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    ----------------------------------------------------------------------------------------------
    k1 4 A 9 2 D 8 0 E 6 B 1 C 7 F 5 3
    k2 E B 4 C 6 D F A 2 3 8 1 0 7 5 9
    k3 5 8 1 D A 3 4 2 E F C 7 6 0 9 B
    k4 7 D A 1 0 8 9 F E 4 6 C B 2 5 3
    k5 6 C 7 1 5 F D 8 4 A 9 E 0 3 B 2
    k6 4 B A 0 7 2 1 D 3 6 8 5 9 C F E
    k7 D B 4 1 3 F 5 9 0 A E 7 6 8 2 C
    k8 1 F D 0 5 7 A 4 9 2 3 E 6 B 8 C

    Тестовые ключи таковы:
    (причем порядок расположения элементов в каждом из этих ключей: k7, k6, ... ,k0 - это я понял экспериментально)
    K1=0x733D2C20 65686573 74746769 79676120 626E7373 20657369 326C6568 33206D54
    K2=0x110C733D 0D166568 130E7474 06417967 1D00626E 161A2065 090D326C 4D393320
    K3=0x80B111F3 730DF216 850013F1 C7E1F941 620C1DFF 3ABAE91A 3FA109F2 F513B239
    K4=0xA0E2804E FF1B73F2 ECE27A00 E7B8C7E1 EE1D620C AC0CC5BA A804C05E A18B0AEC

    Теперь с помощью этой таблицы замен и (по очереди) каждого из четырех ключей шифруем одну и ту же исходную последовательность, состоящую из одних нолей: 0x00000000 00000000

    В результате должны получить (в соответствии с каждым из ключей) следующее зашифрованное значение (В РЕЖИМЕ ПРОСТОЙ ЗАМЕНЫ):
    R1=0x42ABBCCE 32BC0B1B
    R2=0x5203EBC8 5D9BCFFD
    R3=0x8D345899 00FF0E28
    R4=0xE7860419 0D2A562D

    Конец теста режима простой замены.
    =========================================================================

    У меня именно это и получилось! :)
     
  20. kapger

    kapger New Member

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

    0x1F1F1F1F, // L - согласен (в тексте Винокурова это N2)
    0x2B2B2B2B, // R - согласен (в тексте Винокурова это N1)

    А дальше должно быть вот так:
    вход: 1F1F1F1F 2B2B2B2B, ключ k0=931A21D5
    N2=1F1F1F1F, N1=2B2B2B2B
    S=(N1+k)mod2^32=2B2B2B2B+931A21D5=BE454D00
    S= замена BE454D00 на 35AA8021
    S=ROL11(35AA8021) = ROL11(00110101101010101000000000100001) = 01010100000000010000100110101101 =540109AD
    S=(S+N2)mod2=540109AD+1F1F1F1F=4B1E16B2
    N2=N1=2B2B2B2B, N1=S= 4B1E16B2
    выход: 2B2B2B2B 4B1E16B2

    Проверяй...