Diamond2
Diamond2 — в криптографии симметричный блочный криптоалгоритм, разработанный Майклом Полом Джонсоном в 1995 году. В алгоритме используется 128-битный блок и ключ произвольной длины, по умолчанию 128 бит. БезопасностьЦелью создания шифра была разработка устойчивого ко всем существующим видам атак алгоритма с запасом прочности на длительное время и возможностью использования простого сгенерированного ключа. Размер ключа при этом выбирается в зависимости от необходимого уровня защиты и наличия возможности использовать большой массив ключевого материала. На данный момент существует ряд хеш-функций с переменным выходным блоком (к примеру, Skein), которые могут быть использованы для создания ключевого материала длиной более 512 бит. При этом автор заявляет о 128 битах энтропии, необходимой для надёжной защиты. При условии отсутствия специальных видов атак, атака грубой силой против ключа длиной 128 бит будет технически невозможна на существующем оборудовании в обозримом будущем. Для этого также применяется довольно сложная и сравнительно медленная функция расширения и установки ключа. Полагается, что смена ключа будет производиться значительно реже операций зашифровки и расшифровки как в программной, так и в аппаратной реализациях. Использование блока длиной 128 бит, нетипичной для шифров во время разработки Diamond2, обосновано необходимостью затруднения атак грубой силой с использованием предварительно сгенерированных таблиц. Несмотря на заявленную близость к идеальному шифру, алгоритм не получил широкого распространения. Хотя шифр был опубликован в 1995 году, за 13 лет не было произведено детальных исследований криптостойкости Diamond2. Фактически данный блочный шифр используется в некоторых приложениях в качестве одного из дополнительно доступных алгоритмов симметричного шифрования[1], также шифр реализован в некоторых криптографических библиотеках. Описание алгоритмаКонцепция разработки
АлгоритмБлочный шифр Diamond2 состоит из трёх основных частей: 1 — ключевое расписание, 2 — шаги подстановки, 3 — шаги перестановки. Шифрование и расшифровка состоят из n раундов операций подстановки, где n — по крайней мере 10. Каждая операция подстановки берёт каждый из 16 входных байтов по 8 битов каждый и заменяет их другими байтами. Это производится из содержимого массива подстановки на основе позиции байта и числа раунда. Операция ключевого расписания заполняет внутренние массивы подстановки, основанные на ключе. Между каждой подстановкой установленный шаг перестановки использует процесс выборки бит, чтобы сделать каждый байт вывода функцией восьми различных входных байтов. В отличие от DES каждый раунд изменяет каждый байт входного блока (вместо только половины входного блока). После 5 раундов каждый бит выходного блока — нелинейная функция каждого бита входного блока и каждого бита ключа. Дополнительные раунды после пятого раунда используются, чтобы гарантировать, что вычисление содержимого индивидуальных массивов подстановки будет сложнее, чем атака грубой силой на шифр. Они также служат для увеличения числа возможных функциональных зависимостей от ключа, таким образом делая этот алгоритм ближе к идеальному блочному шифру и усложняя криптоанализ. Примечания
Ссылки |