Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_Киоки.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2.08 Mб
Скачать

Раздел 4. Сети фейстеля

4.1. Блочные шрифты

4.2 Сеть Фейстеля. Функция F.

4.3. Сети Фейстеля с 4-мя ветвями.

4.4. Шифр RC6

    1. Блочные шрифты

Блочные алгоритмы и шрифты пришли на смену скремблерам в связи с переходом на блочную модель предачи информации в каналах коммерческих информационных сетей вместо традиционной побитной передачи в традиционных телефонных линиях. Блочная предаца ненакладывает ограничений на вид информации. Это могут быть структурирорванные документы, видио, мультимедиа и т.д. Входная (открытая) информация разбивается на блоки фиксированной длины, каждый из которых зашифровывается и расшифровывается самостоятельно с применением одних и тех же ключей (симметричное шифрование). После зашифрования конкатенация зашифрованных блоков блоков образует зашифрованный текст. После расшифрования – конкатенация расшифрованных блоков образует исходный текст. Таким образом, схему работы блочного шифра можно описать функциями зашифрования Z=EnCrypt(X,Key) и расшифрования X=DeCrypt(Z,Key).

Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Исходный (X) и зашифрованный (Z) блоки данных также имеют фиксированную разрядность, равную между собой, но необязательно равную длине ключа.Так в алгоритме DES используются 64-х разрядные блоки, 56 разрядный ключ и 16 раундов преобразования. В российском (и странах СНГ, в том числе РБ) сандарте симметричного шифрования ГОСТ 28147-89 длина блока также 64 разряда, но применяеются 256-разрядный ключ и 32 цикла преобразования,

Блочные шифры являются основой, на которой реализованы практически все криптосистемы. Методика создания цепочек (в простейшем случае конкатенация) из зашифрованных блочными алгоритмами байт позволяет шифровать ими пакеты информации неограниченной длины. Такое свойство блочных шифров, как быстрота работы, используется асимметричными криптоалгоритмами, медлительными по своей природе. Отсутствие статистической корреляции между битами выходного потока блочного шифра используется для вычисления контрольных сумм пакетов данных и в хешировании паролей (будит рассмотрены в следующих лекциях).

Криптоалгоритм именуется идеально стойким, если прочесть зашифрованный блок данных можно только перебрав все возможные ключи, до тех пор, пока сообщение не окажется осмысленным. Так как по теории вероятности искомый ключ будет найден с вероятностью 1/2 после перебора половины всех ключей, то на взлом идеально стойкого криптоалгоритма с ключом длины N потребуется в среднем 2N-1 проверок. Таким образом, в общем случае стойкость блочного шифра в основном зависит от длины ключа и возрастает экспоненциально с ее ростом. Даже предположив, что перебор ключей производится на специально созданной многопроцессорной системе, в которой число процессоров равно числу протонов содержащихся в планете Земля и благодаря ее диагональному параллелизму на проверку 1 ключа уходит только 1 такт в микросекунду, то на взлом 256 битного ключа потребуется не менее 1010 лет! Естественно, все сказанное относится только к идеально стойким шифрам.

Кроме этого условия к идеально стойким криптоалгоритмам применяется еще одно очень важное требование, которому они должны обязательно соответствовать. При известных исходном и зашифрованном значениях блока ключ, которым произведено это преобразование, можно узнать также только полным перебором. Ситуации, в которых постороннему наблюдателю известна часть исходного текста встречаются повсеместно. Это могут быть стандартные надписи в электронных бланках, фиксированные заголовки форматов файлов, довольно часто встречающиеся в тексте длинные слова или последовательности байт. В свете этой проблемы описанное выше требование не является ничем чрезмерным и также строго выполняется стойкими криптоалгоритмами, как и первое.

Таким образом, на функцию стойкого блочного шифра Z=EnCrypt(X,Key) накладываются следующие условия:

  1. Функция EnCrypt должна быть обратимой.

  2. Не должно существовать иных методов прочтения сообщения X по известному блоку Z, кроме как полным перебором ключей Key.

  3. Не должно существовать иных методов определения каким ключом Key было произведено преобразование известного сообщения X в сообщение Z, кроме как полным перебором ключей.

Рассмотрим методы, с помощью которых разработчики блочных криптоалгоритмов добиваются одновременного выполнения этих трех условий с очень большой долей достоверности.

Все действия, производимые над данными блочным криптоалгоритмом, основаны на том факте, что преобразуемый блок может быть представлен в виде целого неотрицательного числа из диапазона, соответствующего его разрядности. Так, например, 32-битный блок данных можно интерпретировать как число из диапазона 0…4 294 967 295. Кроме того, блок, разрядность которого обычно является "степенью двойки", можно трактовать как несколько независимых неотрицательных чисел из меньшего диапазона (рассмотренный выше 32-битный блок можно также представить в виде 2 независимых 16-ти битных чисел из диапазона 0..65535 или в виде 4 независимых 8-ми битных чисел из диапазона 0..255).

Над этими числами блочным криптоалгоритмом и производятся по определенной схеме следующие действия ( слева даны условные обозначения этих операций на графических схемах алгоритмов).

В качестве параметра функции V для любого из этих преобразований может использоваться:

  1. фиксированное число (например, X'=X+125);

  2. число, получаемое из ключа (например, X'=X+F(Key));

  3. число, получаемое из независимой части блока (например,

  4. X2'=X2 F(X1,Key).

Последний вариант используется в схеме, названной по имени ее создателя сетью Фейстеля (нем. Feistel).

Последовательность выполняемых над блоком операций, комбинации перечисленных выше вариантов V и сами функции F и составляют "ноу-хау" каждого конкретного блочного криптоалгоритма.

Характерным признаком блочных алгоритмов является многократное использование материала ключа. Это диктуется в первую очередь требованием невозможности обратного декодирования в отношении ключа при известных исходном и зашифрованном текстах.

Поскольку операция зашифрования или расшифрования отдельного блока в процессе кодирования пакета информации выполняется многократно (иногда до сотен тысяч раз), а значение ключа и, следовательно, функций Vi(Key) остается неизменным, то иногда становится целесообразно заранее однократно вычислить данные значения и хранить их в оперативной памяти совместно с ключом. Поскольку эти значения зависят только от ключа, то они в криптографии называются материалом ключа. Необходимо отметить, что данная операция никоим образом не изменяет ни длину ключа, ни криптостойкость алгоритма в целом. Здесь происходит лишь оптимизация скорости вычислений путем кеширования (англ. caching) промежуточных результатов. Описанные действия встречаются во многих блочных криптоалгоритмах и носят название расширение ключа.

Блочные шрифты представляют собой криптоситему, которая осуществляет шифрование информации представленной в двоичном виде блоками фиксированной длины, например равной n бит. Последний блок если длина шифруемого текста не кратна n дополняется двоичным вектором (1,0,0,...,0). Этот способ позволяет распознать присоединенный двоичный вектор и отбросить его при дешифровке.

Таблица 3.7

Биективные математические функции

Сложение

X'=X+V

Исключающее ИЛИ

X'=X XOR V

 

Умножение по модулю 2N+1

X'=(X*V) mod (2N+1)

Умножение по модулю 2N

X'=(X*V) mod (2N)

Битовые сдвиги

Арифметический сдвиг влево

X'=X SHL V

Арифметический сдвиг вправо

X'=X SHR V

Циклический сдвиг влево

X'=X ROL V

Циклический сдвиг вправо

X'=X ROR V

Табличные подстановки

S-box (англ. substitute)

X'=Table[X,V]

Таким образом в блочных криптосистемах, любое сообщение M можно представить в виде последовательности (конкатенации - |) n-битовых подблоков

M = M1|M2|...|Mi|...|Mm.

Блочные шрифты не налагают строгого соответсвия длин исходного текста и зашифрованного текста, которая может быть больше. В то же время наибольшее распространение получили шрифты, в которых размер блоков совпадает и равен n. В этом случае шифрование задает на множестве двоичных цифр исходного блока MJ = x0, x1,..., xi,... x2**n-1 некоторую подстановку Ek(MJ) = Ek(x1), Ek(x2),...,Ek(xi),..., Ek(x2**n-1 ), где Ek(xi)-функция шифрования по ключу k.

Функция шифрования Ek(MJ) ставит в соответствие блоку иcходного текста Mj криптограмму Сj (здесь j –номер блока)

Сj = Ek(MJ).

Если в шифре используется ключ длиной k бит, то этот шифр задает не более 2k различных подстановок, в то время как для блока длиной n число вожможных подстановок равно 2n.

Аналогично с увеличением длины блока n резко уменьшается вероятность путем частотного криптоанализа (частота появления букв языка) раскрыть исходное сообщнние. Минимальной сравнительно безопасной длиной блока n принято считать значение 64. При разработке американского стандарта DES было выбрано именно это значение.

Проектирование стойких блочных шрифтов связано с применением нелинейных преобразований, обладающих высокими свойствами рассеивания и перемешивания.

Перемешиванием называется распрострвнение влияния одного символа открытого (исходного) текста на некоторое множество символов шифротекста. Это порождает лавинный эффект – распространение влияния каждого бита исходного текста на все биты шифрованного выходного текста.

Рассеиванием называется шифрующее преобразование, нарушающее взаимосвязи статистических характеристик входного и выходного текстов, тем самым обеспечивающее маскировку статистических свойств исходного сообщения.

В составных (композиционных) шифрах последовательно используется ряд простых шрифтов, каждый из которых обеспечивает или рассеивание или перемешивание.

Секретный ключ может использоваться при выполнении процедур какого либо одного типа, или при выполнении процедур нескольких типов.

Простейший композиционный алгоритм блочного шифрования показан на рис. 4.1. Подстановки представлены блоками подстановок S сравнительно малого размера (4- х или 8-ми битовые подблоки входного сообщения, преобразовываемые в соответствии с таблицей подстановки), T –операции перестановки (перемешивания) битов, L – операция линейного преобразования . Операция L осуществляет смешивание щифруемых данных на каждом раунде преобразования R с соответствующим секретным ключом K1, K2,...,KR..

Рассмотренный шифр относится к итеративным шрифтам, в которых шифрование осуществляется как многократное выполнение процедуры преобразования (раунд шифрования), представляющей собой композициютрех разнотипных простых преобразований,например подстановки (S), перестановки (T) и линейные преобразования (L).

Кроме того, в разных раундах используются разные ключи (K1, K2,...,KR), называемые раундовыми ключами.

При аппаратной реализации процедуры S, T, L, а также, шифрование и расшифровка будут выполняться различными блоками алгоритма или различными электронными схемами.

Ключ Key является параметром блочного криптоалгоритма и представляет собой некоторый блок двоичной информации фиксированного размера. Исходный (X) и зашифрованный (Z) блоки данных также имеют фиксированную разрядность, равную между собой, но необязательно равную длине ключа.Так в алгоритме DES используются 64-х разрядные блоки, 56 разрядный ключ и 16 раундов преобразования. В российском (и странах СНГ, в том числе РБ) сандарте симметричного шифрования ГОСТ 28147-89 длина блока также 64 разряда, но применяеются 256-разрядный ключ и 32 цикла преобразования,