Структура ГОСТ 28147-89: образующая функция, расширение ключа.
Криптоалгоритм ГОСТ 28147-89 является легендарным и, пожалуй, единственным из официально опубликованных советских блочны шифров.
ГОСТ 28147-89 оперирует 64-битным блоком данных, шифруя его с помощью 256-битного ключа. Структура криптоалгоритма предельно проста- шифр реализует классическую сеть Файштеля из 32 раундов с двумя ветвями. Образующая функция алгоритма:
Общий вид ГОСТ 28147-89
Образующа функция ГОСТ 28147-89
Определив алгор подобным образом, авторы добились очень высокой потенциальной гибкости шифра и структуры ключей. Проблема возникла тогда, когда использовать шифр захотели многочисленные невоенные и даже негосударственные структуры В тексте ГОСТ 28147-89 табличные подстановки не зафиксированы, более того, не приведено даже возможного их примера. Очевидно, что именно табличные подстановки вносят основной вклад в стойкость алгритма: например при наличии в них сильной линейной корреляци шифр становится совершенно беззащитным перед линейным криптоанализом- других нелинейных криптоалгоритмов кроме табличных подстановок, в его структуре просто нет.
ГОСТ 281 47-89: расширение ключа
Расширение ключа производится по очень простой схеме: 256-битный ключ разбивается на восемь З2-битных машинных слов. Они нумеруются с К0 по К7.
32 компоненты материала ключа получаются их применением в следующем порядке:
k[0]...k[32]=К0 К1...К6 К7 К0 К1...К6 К7 К0 К1...К6 К7 К7 К6...К1 К0
В последней четвертой секции 8 машинных слов ключа записываются в обратном порядке. Для дешифрования (по свойству симметричной сети Файштеля) используется тот же код, но с обратным порядком ключей раунда:
К0 К1...К6 К7 К7 К6...К1 К0 К7 К6...К1 К0 К7 К6...К1 К0
Конкурс AES: цели и условия конкурса, алгоритмы шифрования конкурса.
Цели и суловия конкурса
Конкурс АЕS (Advanced Encrypton Standart)- “улучшенный стандарт шифрования” и был проведен под эгидой Национального Институга Стандартизации и Техники (National Institute of Standart- NIST) в 1997-2000 годах.
Требования к новому стандарту были чрезвычайно просты:
Ø шифр должен быть блочным;
Ø шифр должен иметь длину блока, равную 128 битам;
Ø шифр должен поддерживать ключи длинной 128, 192, 256 бит.
NIST представил общественности документ, в котором сравнивались все 15 претендентов и были объявлены 5 финалистов, прошедших во второй этап конкурса. Все критерии, по которым производилось сравнение алгоритмов, были разбиты сотрудниками Института на категории: криптографические и практические характеристики.
Среди наиболее важных криптографических характеристик специалисты NIST указывали:
Ø стойкость к известным на момент проведения конкурса криптографическим атакам;
Ø максимально возможное упрощение алгоритма (в большинстве случаев- уменьшение количества раундов), при котором шифр все еще остается стойким к известным криптоатакам;
Ø отсугствие слабых ключей;
Ø стойкость к криптоатакам, специфичным для применяемых в шифе схем и криптоопераций;
Ø отсутствие корреляций между данными или ключом и временем, требуемым на операции шифрования/дешифрования;
Ø отсутствие корреляций между данными или ключом и мощностью, потребляемой аппаратным или программным устройством, реализующим шифр;
Ø отсутствие необоснованно сложных преобразований и “необъяснимых” констант (что дает некоторый шанс исключить недокументированные свойства шифра, известные только разработчикам);
Ø применение в структуре алгоритма традиционных криптосхем (парадигм) и частей уже опубликованных ранее алгоритмов, позволяющее принять во внимание результаты анализа этих схем за гораздо более длительный промежуток, чем год проведения конкурса.
К наиболее важным практическим аспектам жюри отнесло:
Ø оптимизацию по скорости выполнения кода (в первую очередь, на 32-, 8- и 16-разрядных архитектурах ЭВМ);
Ø активное использование для ускорения вычислений ресурсов оперативной памяти, если таковые имеются в наличии на исполняющем прогшрамму компьютере;
Ø возможность оптимизации по размеру кода (для хранения в ПЗУ «слабых» микросхем и в других запоминающих устройствах с ограниченными ресурсами);
Ø возможность распараллеливания кода (естественно без потерь в криптостойкости);
Ø идентичность кода и времени исполнения процедур шифрования и дешифрования;
Ø сложность и затраты времени на процедуру создания материала ключа;
Ø характер зависимости скорости работы алгоритма от размера используемого ключа (128, 192 и 256 бит).