Фишка для ГОСТа


Идея тут посетила, возможно, что прорабатывали ранее..

Сделать двойной фейстель для алгоритмов по типу ГОСТ89, т.е. обрабатывать данные и параллельно ключи.

Примерно так:
x ^=FF((y +K[i]), x);
y ^=FF((x +K[j]), y);
K[i] ^=FF((y +K[j]), x);
K[j] ^=FF((x +K[i]), y);
т.е. получаем потоковый шифр, варианты использования:
-как обычное шифрование в потоковом режиме, входное значение меняет поток ключей (аналог IV),выходное использовать для XOR с данными.
-как хеш, если использовать конечное состояние ключей. +добавить длину сообщения.
-как вариант условной "губки", ключи накопительные. по сути, не должно быть "слабых" ключей, ключи всегда меняются.
-это уже не ГОСТ, а просто идея.

Реализация идеи здесь: https://yadi.sk/d/V2Jd4evKrPcYQg




Комментарии
— Onix (17/08/2019 08:20, исправлен 30/08/2019 20:14)   

Добавка:
по ссылке выше выложил пример реализации более полный.


Добавка, конструкция вида:
K[i] ^= x^= FF(y+K[i])
K[j] ^= y^= FF(x+K[j])
тоже не плохо работает и быстрей.

— Onix (12/09/2019 07:33, исправлен 15/09/2019 09:52)   

Если довести данную схему до варианта аналогичному RC4, то получается так:


но наверное проблемы будут теже, то и у RC4, хотя может быть и по другому.


Зато получился последовательный алгоритм.


update: пример генерации
https://yadi.sk/d/7ZX4vKiYjy9hcA