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

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

Обмен информационными сообщениями осуществляется в три этапа:

1) отправитель передает получателю ключ (в случае с несколькими получателями и отправителями у каждой пары абонентов должен быть свой ключ, отличный от ключей других пар);

2) отправитель, используя ключ, зашифровывает сообщение, которое пересылается получателю;

3) получатель получает сообщение и расшифровывает его.

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

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

Гаммирование — наложение на открытые данные гаммы шифра (случайной или псевдо- случайной последовательности единиц и нулей) по определенному правилу. Обычно используется «исключающее ИЛИ», называемое также «сложением по модулю 2» и реализуемое в ассемблерных программах командой XOR. Для расшифровывания та же гамма накладывается на зашифрованные данные.

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

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

1) шифры перестановки

2) шифры замены

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

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

Шифры замены делятся на две группы:

1) моноалфавитные (код Цезаря)

2) полиалфавитные (шифр Вигенера, цилиндр Джефферсона, диск Уотстоуна, Enigma).

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

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

Блочное шифрование можно осуществлять двояко:

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

2) с обратной связью. Обычно ОС организуется так: предыдущий шифрованный блок складывается по модулю 2 с текущим блоком. В качестве 1–го блока в цепи ОС используется инициализирующее значение. Ошибка в одном бите влияет на 2 блока — ошибочный и следующий за ним.

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