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