WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
Raiden
Создатель Хулио Кастро, Хавьер Олабарриэта
Создан 2006 г.
Опубликован 2006 г.
Размер ключа 128 бит
Размер блока 64 бит
Число раундов 16
Тип Сеть Фейстеля

Raiden — блочный алгоритм шифрования типа «Сеть Фейстеля», представленный в 2006 году группой авторов во главе с Хулио Кастро (англ. Julio César Hernández Castro). Алгоритм разработан с использованием генетического программирования и основан на идеях блочного шифра TEA, который широко известен благодаря сочетанию компактного кода, простой и запоминающейся структуре и высокой скорости выполнения. Поскольку в последнее время алгоритм TEA был признан уязвимым к ряду атак, авторами была предложена, по их мнению, равноценная замена алгоритму, предположительно свободная от уязвимостей и лишь немного уступающая в скорости.

Шифр Raiden, полностью повторяя структуру алгоритма TEA, зашифровывает блок размером 64 бита, имеет два 32-битных подблока, 128-битный секретный ключ и выполняет по умолчанию 16 полных раундов, каждый из которых имеет два раунда сети Фейстеля. Структура шифра позволяет использование 32-х и более раундов.

Т.к. это блочный шифроалгоритм, где длина блока 64-бит, а длина данных может быть не кратна 64-битам, значения всех байтов дополняющих блок до кратности в 64-бит устанавливается в 0x01 .

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

Алгоритм, в отличие от TEA, фактически не был исследован криптоаналитиками на данный момент. По заявлению авторов, 16 полных раундов алгоритма имеют уровень безопасности, равный 32 полным раундам алгоритма TEA, при этом не имея уязвимостей исходного алгоритма. Важнейшим отличием от шифра TEA является расширенное ключевое расписание. В то время, как алгоритм TEA предусматривает лишь сложение переменной с константой 0x9e3779b9 , Raiden использует ключевое расписание, близкое к ГПСЧ, трансформирует ключ и генерирует подключи для каждого раунда. Шифр успешно проходит тексты Diehard, Sexton и ENT.[1]

Пример кода на языке C

Алгоритм Raiden так же довольно прост в реализации, которая занимает лишь несколько строк кода. Как и TEA, алгоритм основан на операциях с 32-разрядным беззнаковыми числами (unsigned long).

void raiden_encode(const u32 key[4], const u32 data[2], u32 result[2])
{
	u32 b0 = data[0], b1 = data[1], k[4] = {key[0],key[1],key[2],key[3]}, sk;
	int i;

	for (i = 0; i < 16; i++)
	{
		sk  = k[i%4] = ((k[0]+k[1])+((k[2]+k[3])^(k[0]<<(k[2] & 0x1F))));
		b0 += ((sk+b1)<<9) ^ ((sk-b1)^((sk+b1)>>14));
		b1 += ((sk+b0)<<9) ^ ((sk-b0)^((sk+b0)>>14));
	}
	result[0] = b0;
	result[1] = b1;
}


void raiden_decode(const u32 key[4], const u32 data[2], u32 result[2])
{
   	u32 b0 = data[0], b1 = data[1], k[4] = {key[0],key[1],key[2],key[3]}, subkeys[16];
	int i;

	for (i = 0; i < 16; i++) subkeys[i] = k[i%4] = ((k[0]+k[1])+((k[2]+k[3])^(k[0]<<(k[2] & 0x1F))));

	for (i = 15; i >= 0; i--)
	{
		b1 -= ((subkeys[i]+b0)<<9) ^ ((subkeys[i]-b0)^((subkeys[i]+b0)>>14));
		b0 -= ((subkeys[i]+b1)<<9) ^ ((subkeys[i]-b1)^((subkeys[i]+b1)>>14));
	}
	result[0] = b0;
  	result[1] = b1;
}

См. также

Примечания


Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии