Симметричные алгоритмы шифрования можно разделить на две категории: блочные и потоковые. В потоковых алгоритмах символы (байты или биты) исходного текста шифруются последовательно. Классическим примером является одноразовый блокнот или шифр простой замены. В блочных шифрах единицей шифрования является блок (последовательность бит фиксированной длины), который преобразуется в блок зашифрованного текста такой же длины. Как отмечалось выше, большинство современных симметричных алгоритмов шифрования относятся к категории блочных шифров.
«тайных ходов». Однако за годы попыток взлома этого алгоритма слабости S-матриц так и не были выявлены.
Существует четыре основных режима работы блочных шифров, которые предназначены для их оптимального применения в самых различных областях.
1. Режим электронной шифровальной книги (ECB). Наиболее простой и естественный способ. Текст разбивается на блоки и каждый блок шифруется с одним и тем же ключом. Основной недостаток подхода заключается в том, что одинаковые блоки будут одинаково зашифровано, что снижает защиту в случае больших объемов шифруемой информации.
2. Режим сцепления шифрованных блоков (CBC). Каждый блок открытого текста перед шифрованием объединяется с помощью операции XOR с предыдущим блоком зашифрованного текста. Первый блок объединяется с некоторым заранее заданным инициализационным вектором. В результате одинаковые блоки открытого текста в зашифрованном виде будут различаться.
3. Режим шифрованной обратной связи (CFB). Похож на предыдущий, но основное назначение состоит в том, чтобы превратить блочный шифр (например, DES с дли-ной блока 64 бита) в потоковый, т.е. шифрующий по одному символу (размером, например, j = 8 бит). Идея заключается в том, что изначально 64-битовый буфер заполняется значением инициализационного вектора (известного отправителю и получателю), которое шифруется ключом K. Из полученного результата выбираются старшие (левые) j бит, которые объединяются с помощью XOR с первым символом открытого текста. Получаем первый зашифрованный символ. Далее содержимое буфера сдвигается на j бит влево, а в самый младшие (правые) j бит записывается зашифрованный символ. Система готова к шифрованию следующего символа.
4. Режим обратной связи по выходу (OFB). Аналогичен предыдущему, но в младшие j бит буфера после сдвига помещается не зашифрованный символ, а j сташих бит результата шифрования (т.е. до их объединения с символом открытого текста). Та-кой режим более устойчив к помехам (сбой при передаче одного символа зашифрованного текста не будет влиять на результаты дешифрования других символов).
Скремблеры
Одним из распространенных потоковых алгоритмов шифрования является скремб-лер. Скремблерами называются программные или аппаратные реализации алгоритма, по-зволяющего шифровать побитно непрерывные потоки информации. Сам скремблер пред-ставляет из себя набор бит, изменяющихся на каждом шаге по определенному алгоритму. После выполнения каждого очередного шага на его выходе появляется шифрующий бит – либо 0, либо 1, который накладывается на текущий бит информационного потока опера-цией XOR.
Рассмотрим пример простого скремблера. Он задается двумя битовыми последовательностями равной длины, одна из которых называется ключом (начальной последовательностью), а вторая собственно скремблером (часто вторая последовательность является фиксированной для конкретной аппаратной или программной реализации, а ключ выбирается как в обычном симметричном шифровании). Чем больше длина ключа (и скремблера), тем более надежным будет алгоритм.
Начальная последовательность (ключ) накладывается на скремблер, представляю-щий собой маску: выбираются только те биты последовательности, позициям которых со-ответствует единица в скремблере. Далее выбранные биты складываются между собой операцией XOR. Получается новый бит, который записывается в начало (слева) ключа. Последний (правый) бит ключа становится первым символом кодирующей последовательности и отбрасывается. Таким образом, происходит сдвиг ключа и генерация одного бита. Этот бит накладывается на первый бит исходного текста операцией XOR и получается первый бит зашифрованного текста. После этого цикл повторяется.
Пусть необходимо зашифровать сообщение 00111 скремблером 101 с ключом 011. Вычисляется сумма по модулю 2 первого и третьего бита ключа: 1 ⊕ 1 = 0. Этот бит становится новым первым битом ключа, а последний бит ключа (1) становится битом шифрующей последовательности. Вычисляем первый бит зашифрованного текста: 1 ⊕ 0 = 1. Далее повторям процесс, но уже с ключом 101. Шифрование всего сообщения показано на рисунке.

Рис. 9. Скремблирование последовательности 00111 скремблером 101 с ключом 011






