Шифрование паролей в СУБД Oracle

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
DES - достаточно старый алгоритм. Его основные недостатки - это малая длина ключа и малая длина блока. Малая длина ключа позволяет сейчас осуществить полный перебор ключей за относительно небольшое время (несколько часов, максимум несколько дней). Малая длина блока делает этот шифр уязвимым к коллизиям.

На сегодняшний день общепризнанно минимальной длиной ключа для симметричных алгоритмов является 128 бит, а размер блока 256 бит. (На этот счет имеются работы автора данной статьи [журнал Конфидент 3/98, 6/98] и в )

Стойкость несимметричных алгоритмов используемых в Oracle (RSA, Diffie-Hellman) основывается на задаче факторизации больших чисел, поэтому минимальная граница для них совершенно другая - 2048 бит, а лучше 4096.


Содержание раздела