Блочный шифр TEA
Рассмотрим один из самых простых в реализации, но признанно стойких
криптоалгоритмов
TEA (Tiny Encryption Algorithm).
Параметры алгоритма :
Размер блока 64 бита.
Длина ключа 128 бит.
В алгоритме использована сеть Фейштеля с двумя ветвями в 32 бита каждая.
Образующая функция F обратима.
Сеть Фейштеля несимметрична из-за использования в качестве операции наложения
не исключающего "ИЛИ", а арифметического сложения.
Ниже приведен код криптоалгоритма на языке программирования PASCAL.
type TLong2=array[0.. 1] of longint;
TLong2x2=array[0.. 1] of TLong2;
const Delta=$9E3779B9;
var key:TLong2x2;
procedure EnCryptRouting(var data);
var y,z,sum:longint; a:byte;
begin
y:=TLong2(data)[0];z:=TLong2(data)[1];sum:=0;
for a:=0 to 31 do
begin
inc(sum,Delta);
inc(y,((z shl 4)+key[0,0]) xor (z+sum) xor ((z shr 5)+key[0,1]));
inc(z,((y shl 4)+key[1,0]) xor (y+sum) xor ((y shr 5)+key[1,1]));
end;
TLong2(data)[0]:=y;TLong2(data)[1]:=z
end;
Схема работы алгоритма приведена на рисунке 1.
Рис.1.
Отличительной чертой криптоалгоритма TEA
является его размер. Простота
операций, отсутствие табличных подстановок и оптимизация под 32-разрядную
архитектуру процессоров позволяет реализовать его на языке ASSEMBLER
в предельно малом объеме кода. Недостатком алгоритма является некоторая
медлительность, вызванная необходимостью повторять цикл Фейштеля 32
раза (это необходимо для тщательного "перемешивания данных" из-за отсутствия
табличных подстановок).
Назад | Содержание
| Вперед