Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000201.doc
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
835.07 Кб
Скачать

2.2. Электронная кодовая книга

Данный режим является электронным аналогом режима, использовавшегося агентами для отправки зашифрованного сообщения ещё в начале XX века. Агент получал блокнот, каждая страница которого содержала уникальную последовательность – код с помощью которого и зашифровывалось сообщение. После использования такая страница вырывалась из блокнота и уничтожалась. При необходимости сообщение дополнялось так, чтоб на вырываемых страничках не оставалось не использованного кода. Принимающая сторона имела копию блокнота, поэтому, при условии синхронного использования страниц такой режим шифрования обеспечивал как зашифрование так и расшифрование сообщений. В ECB использованию одной страницы кодовой книги при зашифровании соответствует применение к входным данным преобразования функцией , а при расшифровании - . Обоим сторонам для того, чтобы синхронизироваться достаточно договориться о значении секретного ключа K . Вобще этот режим является самым простым и первым приходящим на ум способом использования блочного шифра для шифрования сообщений. Он проиллюстрирован на рис.2.1.

Рис.2.1. Режим шифрования электронная кодовая книга – ECB

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

ECB зашифрование: , где j=1…n

ECB расшифрование: , где j=1…n

В уравнениях приняты следующие обозначения:

Pj – очередной, j-ый блок открытого текста (на рис.2 – PLAINTEXT).

Cj – очередной, j-ый блок шифротекста (на рис.2 – CIPHERTEXT).

Таким образом шифрование происходит блоками, соответствующими размеру входных/выходных данных для функций и . Блоки шифруются отдельно и независимо друг от друга, что позволяет делать это параллельно. Это достоинство режима ECB и его простота скрадываются двумя значительными недостатками. Первый – то, что длина сообщения должна быть кратна длине блока входных данных блочного шифра, то есть всё сообщение либо можно разбить на целое число таких блоков, либо необходимо каким-то образом дополнять последний блок не несущими информацию данными. Второй недостаток ещё более существенный. Поскольку при зашифровании очередной блок шифротекста полностью определяется только соответствующим блоком открытого текста и значением секретного ключа K, то одинаковые блоки открытого текста будут преобразовываться в этом режиме в одинаковые блоки шифротекста. А это иногда нежелательно, так как может дать ключ к анализу содержания сообщения. Например, если шифруются данные на жёстком диске, то пустое пространство будет заполнено одинаковыми байтами, оставшимися там от форматирования диска. А значит по шифротексту можно будет догадаться о размере полезной информации на диске. В таких случаях нужно применять другие режимы шифрования.

2.3. Сцепление блоков по шифротексту

В режиме шифрования CBC происходит "сцепливание" всех блоков сообщения по шифротексту.

В алгоритме шифрования на вход функции каждый раз подаётся результат суммирования по модулю 2 открытых данных очередного блока сообщения (PLAINTEXT) и выходных данных (OUTPUT BLOCK) функции для предыдущего блока. Поскольку выходные данные функции для очередного блока идут прямо на выход алгоритма CBC, то есть являются шифротекстом этого блока и одновременно поступают на вход этой же функции для зашифрования последующего блока, то говорят, что происходит сцепление блоков по шифротексту. Первый блок открытых данных суммируется с т.н. вектором инициализации, речь о котором пойдёт ниже. Пока же достаточно понимать, что этот вектор инициализации становится известен как отправителю, так и получателю в самом начале сеанса связи (поэтому зачастую его называют просто синхропосылкой). Расшифрование происходит, соответственно, в обратном порядке – сначала к шифротексту применяют функцию , а затем суммируют с предыдущим блоком шифротекста для получения на выходе алгоритма очередного блока открытого текста. Первый блок открытого текста, опять же, восстанавливается с помощью вектора инициализации. Таким образом весь алгоритм может быть выражен в виде уравнений следующим образом:

CBC зашифрование:

CBC зашифрование:

В уравнениях приняты следующие обозначения:

IV – вектор инициализации (Initialization Vector);

Pj – очередной, j-ый блок открытого текста.

Cj – очередной, j-ый блок шифротекста.

Поскольку в режиме CBC при зашифровании каждая итерация алгоритма зависит от результата предыдущей итерации, то зашифрование сообщения не поддаётся расспараллеливанию. Однако в режиме расшифрования, когда весь шифротекст уже получен, функции вполне можно исполнять параллельно и независимо для всех блоков сообщения. Это даёт значительный выигрыш по времени. В этом режиме стоит остановиться ещё на одной детали. Дело в том, что последний блок шифротекста, который получается на выходе алгоритма режима CBC зависит как от ключа блочного шифра и вектора инициализации, так и (что важнее в данном случае) от всех бит отрытого текста сообщения. А это означает, что этот последний блок шифротекста можно использовать как своего рода идентификатор сообщения. Такой идентификатор не даёт постороннему наблюдателю никакой информации о содержимом всего сообщения в целом, и в то же время, практически однозначно определяет его (сообщение). Более того подделать этот идентификатор без знания ключа шифрования K так же трудно, как и правильно угадать сам ключ. Этот идентификатор широко используется для аутентификации сообщений и отправителей и носит название MAC (Message Authentication Code), в русскоязычной литературе – КАС (код аутентификации сообщения).