Light-industry-up.ru

Экосистема промышленности

Diamond2

06-10-2023

Diamond2
Создатель:

Майкл Пол Джонсон

Создан:

1995 г.

Опубликован:

1995 г.

Размер ключа:

128 (8-65536) бит с шагом 8 бит

Размер блока:

128 бит

Число раундов:

10 (10-15)

Тип:

Подстановочно-перестановочная сеть

Diamond2 — в криптографии симметричный блочный криптоалгоритм, разработанный Майклом Полом Джонсоном в 1995 году. В алгоритме используется 128-битный блок и ключ произвольной длины, по умолчанию 128 бит.

Содержание

Безопасность

Целью создания шифра была разработка устойчивого ко всем существующим видам атак алгоритма с запасом прочности на длительное время и возможностью использования простого сгенерированного ключа. Размер ключа при этом выбирается в зависимости от необходимого уровня защиты и наличия возможности использовать большой массив ключевого материала. На данный момент существует ряд хэш функций с переменным выходным блоком (к примеру, Skein), которые могут быть использованы для создания ключевого материала длиной более 512 бит. При этом, автор заявляет о 128 битах энтропии, необходимой для надежной защиты. При условии отсутствия специальных видов атак, атака грубой силой против ключа длиной 128 бит будет технически невозможна на существующем оборудовании в обозримом времени. Для этого так же применяется довольно сложная и сравнительно медленная функция расширения и установки ключа. Полагается, что смена ключа будет производиться значительно реже операций зашифровки и расшифровки как в программной, так и аппаратной реализациях. Использование блока длиной 128 бит, не типичной для шифров во время разработки Diamond2, обосновано необходимостью затруднения атак грубой силой с использованием предварительно сгенерированных таблиц.

Несмотря на заявленную близость к идеальному шифру, алгоритм не получил широкого распространения. Хотя шифр был опубликован в 1995 году, за 13 лет не было произведено детальных исследований криптостойкости Diamond2. Фактически, данный блочный шифр используется в некоторых приложениях в качестве одного из дополнительно доступных алгоритмов симметричного шифрования[1], так же шифр реализован в некоторых криптографических библиотеках.

Описание алгоритма

Концепция разработки

  1. Линейные функции и комбинации функций могут часто решаться аналитически способами, которые не очевидны для автора шифра, и должны быть исключены. Это включает стандартные арифметические функции, математику в конечных полях, и Булеву арифметику.
  2. Реверсивные блочные шифры с размером блока n битов могут быть рассмотрены как простой шифр подстановки на алфавите 2n символов, с ключом, который выбирает используемую перестановку.
  3. Простые шифры подстановки могут быть представлены с таблицей поиска или массивом, но практически требуемый массив является слишком большим для практичного размещения в ОЗУ.
  4. Адекватное подмножество таблицы поиска с завышенными размерами может быть моделировано, просто прослаивая раунды подстановки субблоков с разрядными перестановками, которые служат, чтобы распространить функциональные зависимости через границы субблока.


Алгоритм

Блочный шифр Diamond2 состоит из трех основных частей: 1 - ключевое расписание, 2 - шаги подстановки, и 3 - шаги перестановки. Шифрование и расшифровка состоят из n раундов операций подстановки, где n - по крайней мере 10. Каждая операция подстановки берет каждый из 16 входных байтов по 8 битов каждый, и заменяет их другими байтами. Это производится из содержимого массива подстановки на основе позиции байта и числа раунда. Операция ключевого расписания заполняет внутренние массивы подстановки, основанные на ключе. Между каждой подстановкой установленный шаг перестановки использует процесс выборки бит, чтобы сделать каждый байт вывода функцией восьми различных входных байтов. В отличие от DES, каждый раунд изменяет каждый байт входного блока (вместо только половины входного блока). После 5 раундов каждый бит выходного блока - нелинейная функция каждого бита входного блока и каждого бита ключа. Дополнительные раунды после пятого раунда используются, чтобы гарантировать, что вычисление содержимого индивидуальных массивов подстановки будет сложнее, чем атака грубой силой на шифр. Они также служат, чтобы увеличить число возможных функциональных зависимостей от ключа, таким образом делая этот алгоритм ближе к идеальному блочному шифру, и усложняя криптоанализ.

Примечания

  1. Реализация Diamond2 в DarkCrypt TC/GUI

Ссылки

  • The Diamond2 Block Cipher  (англ.)
  • Исходный текст реализации Diamond2 на языке C

Diamond2.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06