kapger единственное, уверен, что прав тут? В соответствии с ГОСТ пункт 3.1.4 Заполнение накопителя N4 суммируется по модулю (2^32-1) в сумматоре СМ4 с константой C1 из накопителя N6, результат записывается в N4. Заполнение накопителя N3 суммируется по модулю 2^32 в сумматоре СМ3 с константой C2 из накопителя N5, результат записывается в N3. По Винокурову это блок 2 на рисунке 4. По Винокурову в N4 у нас находится S0=S0+C1, а в N4 у нас находится S1=S1+C2. Для простоты я не указываю в этих формулах правила суммирования. Обратите внимание: в N3 и N4 у нас сейчас зашифрованная синхропосылка единожды суммированная с константами! Слишком накручено по- моему... проверка через 5 минут будет
kapger да, все сошлось ))) можно не расписывать было, а сразу приводить гаммы. На этом конец? Или выясним, почему у Винокурова не тот результат? И меня ещё пока терзают сомнения по поводу правильности нашей гаммы... больно уж закручено в описании все. Я бы это проще описал...
metcenger Проверяем две первые гаммы для ТРЕТЬЕГО варианта синхропосылки. Таблица замен берется из сообщения №79 данной темы. Ключ шифрования используем один из тех, что описаны в этом же сообщении №79, а именно: K1=0x733D2C20 65686573 74746769 79676120 626E7373 20657369 326C6568 33206D54 (порядок расположения элементов в ключе: k7, k6, ... ,k0) Синхропосылка в открытом виде 0x2566CB8DF34836FC. Шаги по выработке гаммы №1: 1. Шифруем синхропосылку по циклу 32-З с указанными ключевыми данными, результат равен FEFEFEFD4DA15E7C. 2. Входное значение для генерации гаммы FEFEFEFD4DA15E7C 3. Выходное значение полученной гаммы 000000024EA25F7D 4. Зашифрованное значение полученной гаммы, которое и используется для наложения гаммы на открытые данные - гамма равна 663E9BBA74AB6A4D Шаги по выработке гаммы №2: 1. Входное значение для генерации гаммы 000000024EA25F7D 2. Выходное значение полученной гаммы 010101064FA3607E 3. Зашифрованное значение полученной гаммы, которое и используется для наложения гаммы на открытые данные - гамма равна ED1BF48A532734A7
metcenger Сами выяснить вряд ли сможем... Я в асме - полный ноль. Если только уважаемый OLS заинтересуется и нам поможет в этом! Надо проанализировать полностью файлы-исходники Винокурова... Меня тоже терзают сомнения... Но, так как у нас двоих совпало, а со стороны участников этой темы возражений не последовало, то будем считать, что мы правы... А насчет проще... Встретимся лет через 40 в РАН, там между делом и придумаем новый ГОСТ Проверяй третью синхропосылку...
Вчера ради интереса запускал винокуровские утилиты gost32 и xgost32. Командная строка вида: Код (Text): gost32 es /kфайл_ключа /cфайл_таблицы файл_с_входными данными файл_с_выходными_данными Давал на вход различные ключи и таблицы, входной файл содержал 8 нулевых байт. Постоянно на выходе получал одно и то же значение: Код (Text): 15 07 3E 4C AF E8 F4 14 Похоже, что эти утилиты входные параметры, касающиеся файла ключа и файла таблицы подстановок, просто игнорируют.
irrona Я, честно говоря, уже сплю на ходу, у нас уже час ночи... Но завтра постараюсь смоделировать и отписаться. Там были какие-то нюансы, насколько я помню...
kapger ))) третья идентична тоже. Все совпало. Какой конкретно файл на асме надо глянуть- я немного в нем понимаю, если, конечно, не закручено в коде так, что не разобраться... Так у него же были вроде как реализации на Си?
kapger ))) не, в РАН мне делать точно нечего, я диссертаций не пишу ))) ... но помечтать, конечно можно ))) Мне просто интересно стало как работает шифр, вот и увлекся изучением, так, для себя больше.
irrona Попытался смоделировать ситуацию. Исходный текст содержал 8 нулевых байт, как и у Вас. - взял абстрактные файл ключей и таблицу замен, получил 27 3B 85 ED 86 1E 01 BA - изменил один байт в файле ключей, получил: 5C 4A 1B 3D F2 44 55 8E - поменял местами два байта в таблице замен, получил: 5D 14 4F CD AA 1F 2F 4E Так что не могу с Вами согласиться... Давайте разбираться подробнее. Какие имена файлов (по моему какая-то засада была с именами файлов, не соответствующими формату "8.3") ключей и таблицы замен? Какой размер этих файлов? Попробуйте привести эти файлы здесь. А нет ли какого сообщения об ошибке при выполнении операции шифрования? Изменяется ли дата и время модификации выходного файла?
metcenger Какой конкретно, сказать точно не могу - там очень много файлов http://www.enlight.ru/crypto/articles/vinokurov/__gost.htm Если есть желание и возможности, то вперед! Давай протестируем по шагам точно также, как мы тестировали нас друг с другом...
Ну что? Народ, похоже, несколько выдохся... Все молчат и думают? metcenger Не слабо пообщались участники темы между собой? За период с 8-го числа по 19-е число в этой теме выдано около 200 сообщений!
И есть еще одно предложение ко всем участникам темы... Во-первых, видно, что тема очень актуальная! И если мы с вами через полгода отойдем от этой темы, то вопросы реализации ГОСТа будут еще долго будоражить головы других участников... Во-вторых, может мы с вами сделаем статью, в которой изложим все то, что мы выяснили в этой теме и что было несколько непонятного и неясного, особенно в случае с гаммированием? Ну и опубликуем ее в соавторстве в каком-либо ВАКовском журнале... Вам приятно будет, а мне - лишний плюсик в копилку публикаций для будущей диссертации... Я почти готов начать. Кто пойдет в компанию?
ВАКовский журнал это не пропустит, т.к. здесь нет научной новизны - исключительно решение инженерной задачи. Максимум, что можно Вам посоветовать - вопросы оптимизации (по скорости / по размеру кода / по занимаемой оперативной памяти) именно под Вашу аппаратную платформу. К сожалению, ГОСТ 28147-89 имеет не самую интересную для задач оптимизации структуру, так что и тут на мой взгляд результаты станут не настолько интересными, чтобы их стоило публиковать как научную статью. Лучше оформите это хорошим мануалом с понятными картинками и обозначениями и выложите в сети на крупных серверах по ИТ-тематике - после тиражирования их читают сотни и тысячи людей.
OLS Согласен с Вашими доводами... Спасибо! Вопрос ко всем участникам: Ну а по тестированию своей реализации с реализацией Винокурова с подробным разбором его файлов на асме мы как? Продолжать будем? Кто возьмется?
kapger Насчет статьи- я тоже думал, так как нету в сети от и до, да ещё разжевано чтобы было. Когда меня впервые заинтересовала криптография, купил книжку по ней. Там чуть было про код Цезаря, и... пошли формулы сплошные... Т.е. если писать, то сначала- для чего нужен блочный шифр типа ГОСТа- для гаммы! а гамма- чтобы иметь нереально большой ключ с которым и складывать данные, т.к. один ключ со всеми данными несколько раз подряд нельзя складывать... типа того. Вопрос- где выкладывать? Или если работать собираешься в криптографии, имеет смысл своей странички. Теперь вопрос, правильно ли я понимаю, что данный шифр, и его гамма- имей я хоть миллион гамм подряд, начиная с первой, зная алгоритм, никак я не смогу никакими заходами сбоку шифра, диффиренциальным криптоанализом и прочими, узнать какая будет милллион первая гамма? Т.е. задумано все так, что следующую гамму можно узнать только полным перебором всего ключевого и табличного пространства? Я посчитал, если мой двухядерный современный бук миллиард раз по циклу проходит за 30 минут, что я считаю быстро, то только ключи 2^64 он переберет за миллион с небольшим (относительно ) лет!!! Тем более мне не понятны выпадки Ruptor в сообщ. 33 LOL http://www.wasm.ru/forum/viewtopic.php?id=24074&p=2 а по файлам Винокурова, я выкачал Си вариант, он даже при компиляции ругается на скобку! О чем тут ещё можно говорить?
Я не отказываюсь от анализа ASM-кода, т.к. сам предпочитаю писать подобные вещи (сжатие, шифрование) на ASM-е. Только вопрос - что именно Вас интересует в тех исходниках ? Заставить их "заработать" ?
OLS Интересует провести тестирование своего варианта реализации ГОСТа с вариантом Винокурова в режиме простой замены и с гаммированием с обратной связью. Для чего (главное!) требуется понять в каком порядке и как именно располагать ключевые элементы в файле ключей и в файле таблицы замен. И после этого (возможно по шагам в отладчике) добиться полного схождения результатов своего варианта реализации ГОСТа с вариантом Винокурова для простой замены на примере из ГОСТ 34.11, а в режиме гаммирования можно на том примере, который мы в этой теме обсуждали...