В режиме шифрования CBC происходит «сцепливание» всех блоков сообщения по шифротексту. Как это достигается - видно из рисунка 4, иллюстрирующего этот режим шифрования.
Рисунок 4 - Режим шифрования сцепление блоков по шифротексту.
Как видно из рисунка в алгоритме шифрования на вход функции CIPHK каждый раз подается результат суммирования по модулю 2 открытых данных очередного блока сообщения и выходных данных функции CIPHK для предыдущего блока. Поскольку выходные данные функции CIPHK для очередного блока идут прямо на выход алгоритма CBC, то есть являются шифротекстом этого блока и одновременно поступают на вход этой же функции для зашифрования последующего блока, то говорят, что происходит сцепление блоков по шифротексту. Первый блок открытых данных суммируется с вектором инициализации, речь о котором пойдет ниже. Пока же достаточно понимать, что этот вектор инициализации становится известен как отправителю, так и получателю в самом начале сеанса связи (поэтому зачастую его называют просто вектором инициализации, синхропосылкой). Расшифрование происходит, соответственно, в обратном порядке - сначала к шифротексту применяют функцию CIPH-1K, а затем суммируют с предыдущим блоком шифротекста для получения на выходе алгоритма очередного блока открытого текста. Первый блок открытого текста, опять же, восстанавливается с помощью вектора инициализации. Таким образом весь алгоритм может быть выражен в виде уравнений следующим образом:зашифрование:
В уравнениях приняты следующие обозначения:- вектор инициализации (на рисунке - Initialization Vector);j - очередной, j-ый блок открытого текста;j - очередной, j-ый блок шифротекста.