Симметричный алгоритм шифрования

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

Для блочных шифров единицей шифрования является блок из нескольких байтов. Результат шифрования зависит от всех исходных байтов этого блока. Блочное шифрование применяется при пакетной передаче информации и кодировании файлов. Блочные шифры шифруют целые блоки информации (от 4 до 32 байт) как единое целое – это значительно увеличивает стойкость преобразований к атаке полным перебором и позволяет использовать различные математические и алгоритмические преобразования.

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

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

Функция.

С = ЕК (М),
М = DK (C),
где М – исходный (открытый) блок данных;
С – зашифрованный блок данных.

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

Методика создания цепочек из зашифрованных блочными алгоритмами байтов позволяет шифровать ими пакеты информации неограниченной длины. Отсутствие статистической корреляции между битами выходного потока блочного шифра используется для вычисления контрольных сумм пакетов данных и в хэшировании паролей. На сегодняшний день разработано достаточно много стойких блочных шифров.

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

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

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

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

Примечание

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

Примечание

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

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

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

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

Все действия, производимые блочным криптоалгоритмом над данными, основаны на том факте, что преобразуемый блок может быть представлен в виде целого неотрицательного числа из диапазона, соответствующего его разрядности. Например, 32-битовый блок данных можно интерпретировать как число из диапазона 0 – 4294967295. Кроме того, блок, разрядность которого представляет собой «степень двойки», можно трактовать как сцепление нескольких независимых неотрицательных чисел из меньшего диапазона (указанный выше 32-битовый блок можно также представить в виде сцепления двух независимых 16-битовых чисел из диапазона 0 – 65535 или в виде сцепления четырех независимых 8-битовых чисел из диапазона 0 – 255).

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

1. Математические функции:
– сложение X’ = X + V;
– «исключающее ИЛИ» X’ = X xor V;
– умножение по модулю 2N + 1 X’ = (X*V) mod (2N + 1);
– умножение по модулю 2N X’ = (X*V) mod 2N.
2. Битовые сдвиги:
– арифметический сдвиг влево X’ = X shl V;
– арифметический сдвиг вправо X’ = X shr V;
– циклический сдвиг влево X’ = X rol V;
– циклический сдвиг вправо X’ = X ror V.
3. Табличные подстановки:
– S-box (англ. substitute) X’ = Table [X,V].

 

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

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

· число, получаемое из ключа (например, X’ = X + F(K)).

· число, получаемое из независимой части блока (например, X2’ = X2 + F(X1)).

Примечание

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

Сеть Фейстеля.

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

Характерным признаком блочных алгоритмов является многократное и косвенное использование материала ключа. Это определяется в первую очередь требованием невозможности обратного декодирования в отношении ключа при известных исходном и зашифрованном текстах. Для решения этой задачи в приведенных выше преобразованиях чаще всего используется не само значение ключа или его части, а некоторая, иногда необратимая функция от материала ключа. Более того, в подобных преобразованиях один и тот же блок или элемент ключа используется многократно. Это позволяет при выполнении условия обратимости функции относительно величины X сделать функцию необратимой относительно ключа K.

Сетью Фейстеля называется схема (метод) обратимых преобразований текста, при котором значение, вычисленное от одной из частей текста, накладывается на другие части. Сеть Фейстеля представляет собой модификацию метода смешивания текущей части шифруемого блока с результатом некоторой функции, вычисленной от другой независимой части того же блока. Эта методика обеспечивает выполнение важного требования о многократном использовании ключа и материала исходного блока информации. Часто структуру сети выполняют таким образом, чтобы использовать для шифрования и расшифрования один и тот же алгоритм – различие состоит только в порядке использования материала ключа.

На основе сети Фейстеля построены американский стандарт шифрования данных DES и наш ГОСТ 28147-89.