Рассмотрим каскадный метод построения сложного шифра из исходных простых. Даны два шифра Т1(х, к1) и Т2(у, к2). Шифртекст у получается из открытого текста х композицией отображений Т1 и Т2, то есть
у = Т2(Т1(х, к1), к2).
Ключ шифра – вектор к = (к1, к2), где к1ÎК1, к2ÎК2, К = К1хК2. Разумеется, в Т1 и Т2 согласованы области определения и значений при любых к1ÎК1 и к2ÎК2 и расшифрование происходит применением следующего преобразования:
х = Т1(Т2(у, к2), к1).
Трудоемкость полного перебора равна . Вместе с тем можно сократить перебор, увеличив используемую память. Пусть для известной пары (х, у) ключ (к1, к2) определяется единственным образом. Для всех к1(i) ÎК1, i= 1, …, |К1|, построим таблицу
у1=Т1(х, к1(1))
……………. (5.1)
у|К1|=Т1(х, к1(|К1|)).
Вычисление таблицы (5.1) потребует |К1| операций опробования. Построим следующую таблицу для всех к2(j) ÎК2, j = 1, …, |К2|.
у’1=Т-11(у, к2(1))
……………. (5.2)
у’|К2|=Т-11(у, к2(|К2|)).
Вычисление таблицы (5.2) потребует |К2| операций опробования. Объединим таблицы (5.1) и (5.2) и проведем их упорядочивание в соответствии с некоторым порядком на множестве значений промежуточных шифртекстов. Пара уi = у’j при некоторых (i,j) определяет использованный ключ (к1(i),к2(j)). Для ее нахождения достаточно просмотреть таблицу.
|
|