- •Классификация современных симметричных алгоритмов.
- •Клод Шеннон
- •Методы, с помощью которых разработчики блочных криптоалгоритмов добиваются одновременного выполнения этих трех условий с очень большой долей достоверности.
- •Итеративные блочные шифры
- •Сеть Фейстеля
- •Различные реализации шифра Фейстеля отличаются следующими параметрами.
Методы, с помощью которых разработчики блочных криптоалгоритмов добиваются одновременного выполнения этих трех условий с очень большой долей достоверности.
Все действия, производимые над данными блочным криптоалгоритмом, основаны на том факте, что преобразуемый блок может быть представлен в виде целого неотрицательного числа из диапазона, соответствующего его разрядности. Так, например, 32-битный блок данных можно интерпретировать как число из диапазона 0..4'294'967'295. Кроме того, блок, разрядность которого обычно является "степенью двойки", можно трактовать как несколько независимых неотрицательных чисел из меньшего диапазона (рассмотренный выше 32-битный блок можно также представить в виде 2 независимых чисел из диапазона 0..65535 или в виде 4 независимых чисел из диапазона 0..255).
Над этими числами блочным криптоалгоритмом и производятся по определенной схеме следующие действия (слева даны условные обозначения этих операций на графических схемах алгоритмов) :
Биективные математические функции |
||
|
Сложение |
X'=X+V |
|
Исключающее ИЛИ |
X'=X XOR V |
|
Умножение по модулю 2N+1 |
X'=(X*V) mod (2N+1) |
|
Умножение по модулю 2N+1 |
X'=(X*V) mod (2N+1) |
Битовые сдвиги |
||
|
Арифметический сдвиг влево |
X'=X SHL V |
|
Арифметический сдвиг вправо |
X'=X SHR V |
|
Циклический сдвиг влево |
X'=X ROL V |
|
Циклический сдвиг вправо |
X'=X ROR V |
Табличные подстановки |
||
|
S-box (англ. substitute) |
X'=Table[X,V] |
В качестве параметра V для любого из этих преобразований может использоваться:
фиксированное число (например, X'=X+125)
число, получаемое из ключа (например, X'=X+F(Key))
число, получаемое из независимой части блока (например, X2'=X2+F(X1))
Последний вариант используется в схеме, названной по имени ее создателя сетью Фейштеля (нем. Feistel).
Последовательность выполняемых над блоком операций, комбинации перечисленных выше вариантов V и сами функции F и составляют "ноу-хау" каждого конкретного блочного криптоалгоритма.
Характерным признаком блочных алгоритмов является многократное и косвенное использование материала ключа. Это диктуется в первую очередь требованием невозможности обратного декодирования в отношении ключа при известных исходном и зашифрованном текстах. Для решения этой задачи в приведенных выше преобразованиях чаще всего используется не само значение ключа или его части, а некоторая, иногда необратимая (небиективная) функция от материала ключа. Более того, в подобных преобразованиях один и тот же блок или элемент ключа используется многократно. Это позволяет при выполнении условия обратимости функции относительно величины M сделать функцию необратимой относительно ключа K.
Поскольку операция зашифровки или расшифровки отдельного блока в процессе шифрования пакета информации выполняется многократно (иногда до сотен тысяч раз), а значение ключа и, следовательно, функций Vi(Key) остается неизменным, то иногда становится целесообразно заранее однократно вычислить данные значения и хранить их в оперативной памяти совместно с ключом. Поскольку эти значения зависят только от ключа, то они в криптографии называются материалом ключа. Необходимо отметить, что данная операция никоим образом не изменяет ни длину ключа, ни криптостойкость алгоритма в целом. Здесь происходит лишь оптимизация скорости вычислений путем кеширования (англ. caching) промежуточных результатов. Описанные действия встречаются практически во многих блочных криптоалгоритмах и носят название расширение ключа (англ. key scheduling)
