DES и режим CBC
DES - один из наиболее популярных шифровальных алгоритмов, разработан компанией IBM и Правительством США в 1977 г. для защиты коммерческой информации. Таким образом, DES - поддержанный на государственном уровне симметричный алгоритм.
Алгоритм DES использует случайный 56-битовый ключ шифрования, это означает 256= 72 057 594 037 927 936 возможных ключей, приблизительно 7,2*1017 значений. Размер блока шифрования 64 бит. Открытый текст разбивается на блоки по 64 бит и подается на вход DES, в результате чего получается шифртекст. Алгоритм DES имеет 4 режима работы. Один из них Cipher Block Chaining (CBC).
CBC - это режим шифрования с обратной связью, при котором перед вычислением очередного шифрованного блока открытый текст складывается побитно по модулю 2 с предыдущим шифртекстом. В режиме СВС над открытым текстом и предыдущим шифртекстом выполняется операция XOR и тем самым каждый предыдущий шифрблок используется для модифицирования очередного блока открытого текста.
Если без обратной связи шифрование DES производится так:
Блок 1 | Блок 2 | Блок 3 | Блок 4 |
![]() | ![]() | ![]() | ![]() |
Шифртекст 1 | Шифртекст 2 | Шифртекст 3 | Шифртекст 4 |
где ↓ означает шифрование DES, то в режиме СВС так:
Блок 1 | Блок 2 | Блок 3 | Блок 4 |
![]() | ![]() | ![]() | ![]() |
Шифртекст 1 | Шифртекст 2 | Шифртекст 3 | Шифртекст 4 |
где

В режиме шифрования без обратной связи все одинаковые исходные открытые тексты будут зашифрованы одинаково, что дает возможность противнику угадать открытый текст, даже не прибегая к его расшифровыванию, а просто накапливая шифрблоки и соответствующие им открытые тексты. Сцепление добавляет в блочный шифр механизм обратной связи, и, таким образом, результат шифрования этого блока зависит не только от его значения и значения ключа, но и от предыдущих блоков этого сообщения. При шифровании в режиме СВС одинаковые блоки открытого текста превращаются в различающиеся друг от друга блоки шифртекста только в том случае, если различались предшествующие блоки. Однако два одинаково начинающихся сообщения будут зашифрованы одинаково.
Для того чтобы два одинаковых сообщения после шифрования выглядели по-разному, вводится понятие вектора инициализации, или по-криптографически - синхропосылка. Это и есть та самая «соль», которая делает хеши сообщений непохожими друг на друга:
Синхропосылка | Блок 1 | Блок 2 | Блок 3 | Блок 4 |
![]() | ![]() | ![]() | ![]() | ![]() |
Шифртекст 0 | Шифртекст 1 | Шифртекст 2 | Шифртекст 3 | Шифртекст 4 |
На сегодняшний день общепризнанно минимальной длиной ключа для симметричных алгоритмов является 128 бит, а размер блока 256 бит. (На этот счет имеются работы автора данной статьи [журнал Конфидент 3/98, 6/98] и в )
Стойкость несимметричных алгоритмов используемых в Oracle (RSA, Diffie-Hellman) основывается на задаче факторизации больших чисел, поэтому минимальная граница для них совершенно другая - 2048 бит, а лучше 4096.