Raiden (алгоритм)

Поделись знанием:
Перейти к: навигация, поиск
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;
}

См. также

Напишите отзыв о статье "Raiden (алгоритм)"

Примечания

  1. [raiden-cipher.sourceforge.net/ Raiden: An alternative to TEA Block Cipher  (англ.)]


Ссылки

  • [cartman-cipher.narod.ru/mirror/raiden.zip Реализация шифра на языке Delphi]
  • [www.delphisources.ru/files/sources/raznoe/2009-year/raiden-cipher.zip Исходник программы, показывающей пример создания портированного на Delphi блочного шифра Raiden]

Отрывок, характеризующий Raiden (алгоритм)

– Ах, ужас какой! Чему тут смеяться, граф?
Но дамы невольно смеялись и сами.
– Насилу спасли этого несчастного, – продолжала гостья. – И это сын графа Кирилла Владимировича Безухова так умно забавляется! – прибавила она. – А говорили, что так хорошо воспитан и умен. Вот всё воспитание заграничное куда довело. Надеюсь, что здесь его никто не примет, несмотря на его богатство. Мне хотели его представить. Я решительно отказалась: у меня дочери.
– Отчего вы говорите, что этот молодой человек так богат? – спросила графиня, нагибаясь от девиц, которые тотчас же сделали вид, что не слушают. – Ведь у него только незаконные дети. Кажется… и Пьер незаконный.
Гостья махнула рукой.
– У него их двадцать незаконных, я думаю.
Княгиня Анна Михайловна вмешалась в разговор, видимо, желая выказать свои связи и свое знание всех светских обстоятельств.
– Вот в чем дело, – сказала она значительно и тоже полушопотом. – Репутация графа Кирилла Владимировича известна… Детям своим он и счет потерял, но этот Пьер любимый был.
– Как старик был хорош, – сказала графиня, – еще прошлого года! Красивее мужчины я не видывала.
– Теперь очень переменился, – сказала Анна Михайловна. – Так я хотела сказать, – продолжала она, – по жене прямой наследник всего именья князь Василий, но Пьера отец очень любил, занимался его воспитанием и писал государю… так что никто не знает, ежели он умрет (он так плох, что этого ждут каждую минуту, и Lorrain приехал из Петербурга), кому достанется это огромное состояние, Пьеру или князю Василию. Сорок тысяч душ и миллионы. Я это очень хорошо знаю, потому что мне сам князь Василий это говорил. Да и Кирилл Владимирович мне приходится троюродным дядей по матери. Он и крестил Борю, – прибавила она, как будто не приписывая этому обстоятельству никакого значения.
– Князь Василий приехал в Москву вчера. Он едет на ревизию, мне говорили, – сказала гостья.
– Да, но, entre nous, [между нами,] – сказала княгиня, – это предлог, он приехал собственно к графу Кирилле Владимировичу, узнав, что он так плох.
– Однако, ma chere, это славная штука, – сказал граф и, заметив, что старшая гостья его не слушала, обратился уже к барышням. – Хороша фигура была у квартального, я воображаю.
И он, представив, как махал руками квартальный, опять захохотал звучным и басистым смехом, колебавшим всё его полное тело, как смеются люди, всегда хорошо евшие и особенно пившие. – Так, пожалуйста же, обедать к нам, – сказал он.


Наступило молчание. Графиня глядела на гостью, приятно улыбаясь, впрочем, не скрывая того, что не огорчится теперь нисколько, если гостья поднимется и уедет. Дочь гостьи уже оправляла платье, вопросительно глядя на мать, как вдруг из соседней комнаты послышался бег к двери нескольких мужских и женских ног, грохот зацепленного и поваленного стула, и в комнату вбежала тринадцатилетняя девочка, запахнув что то короткою кисейною юбкою, и остановилась по средине комнаты. Очевидно было, она нечаянно, с нерассчитанного бега, заскочила так далеко. В дверях в ту же минуту показались студент с малиновым воротником, гвардейский офицер, пятнадцатилетняя девочка и толстый румяный мальчик в детской курточке.