Luby-Rackoff

Майкл Любы (Michael Luby) и Чарльз Ракофф (Charles Rackoff) показали, что Каш не является безопасным [992]. Рассмотрим два одноблочных сообщения: АВ и АС. Если криптоаналитику известны открытый текст и шифротекст первого сообщения, а также первая половина открытого текста второго сообщения, то он может легко вычислить все второе сообщение. Хотя такое вскрытие с известным открытым текстом работает только при определенных условиях, оно представляет собой главную проблему в безопасности алгоритма.

Ее удается избежать при помощи трехэтапного алгоритма шифрования [992,1643,1644]. Он использует три различных хэш-функции: Яь Я2 и Я3. Дальнейшие исследования показали, что Нх может совпадать с Я2, или Я2 может совпадать с Я3, но не одновременно [1193]. Кроме того, Яь Я2 и Я3 не могут быть основаны на итераци­ях одной и той же базовой функции [1643]. В любом случае при условии, что Щк,х) ведет себя как псевдослу­чайная функция, трехэтапная версия выглядит следующим образом:

(1) Разделите ключ на две половины: К, и Кг.

(2) Разделите блок открытого текста на две половины: L0 и R0.

(3) Объедините К, и L0 и выполните хэширование. Выполните XOR результата хэширования с R0, получая Rx: Ri= R0 © H(Kh L0)

(4)Объедините ^ifilH выполните хэширование. Выполните XOR результата хэширования с U, получая U LX=U® ЩКГ, 7?0

(5) Объедините К, и Lx и выполните хэширование. Выполните XOR результата хэширования с Rb получая R2: R2= Rl © ЩК,, L^

(6) Объедините U и R2, получая сообщение.