При шифровании с симметричным ключом обе
стороны должны иметь ключ в распоряжении.
Для шифрования и дешифровки используется
один и тот же ключ. Опять возникает
проблема с передачей ключа другой
стороне, но у нее есть очень
эффективное решение - для передачи
симметричных ключей использовать криптографию
с открытым ключом.
Главное требование к шифрованию с
симметричным ключом – криптостойкость.
Криптостойкость – способность
противостоять криптоанализу, т.е. попытке
расшифровать текст, не обладая ключом.
Различают несколько типов
криптоаналитических атак.
В одном случае в распоряжении
криптоаналитика находится только
зашифрованный текст. Этот тип атаки бывает
успешен в редких случаях, когда
криптографический алгоритм слаб, и в
распоряжении криптоаналитика большое
количество зашифрованных данных. Примеры
слабых алгоритмов – xor, шифрование по
короткой таблице соответствий (например,
‘a’ соответствует ‘b’, ‘b’ соответствует
‘c’ и т.д.)
Атака с шифрованным и чистым текстом –
случай, когда в распоряжении
криптоаналитика имеется кусок
нешифрованного текста и соответствующий
ему кусок шифрованного. Атака с
возможностью выбора чистого текста –
случай, когда криптоаналитик имеет
возможность зашифровать любой текст, какой
только захочет.
Частный случай – адаптивная атака с
возможностью выбора – криптоаналитик
может многократно выбирать куски текста,
которые хочет зашифровать, в зависимости от
результатов анализа прошлых кусков.
Криптографический алгоритм должен быть
устойчив ко всем этим типам атак. В
коммерческих продуктах используются
исключительно алгоритмы, которые давно
опубликованы и не обнаружили слабых мест.
Остановлюсь подробнее на RC5 и DES.
Оба механизма шифрования относятся к так
называемым «блочным» шифрам. Это означает,
что информация шифруется блоками
определенного размера – в отличие от «поточных»
шифров, которые шифруют информацию
посимвольно. Блочные шифры позволяют
использовать такой метод, как
перемешивание, изменение порядка
информации в зависимости от ее самой. Это
значительно затрудняет криптографические
атаки.
RC5 создан в 1994 г. одним из создателей
алгоритма RSA. Из ключа создается таблица,
использующаяся в кодировке и декодировании
сообщений, размер таблицы зависит от
параметра шифрования, так называемого
числа раундов. Сейчас над взломом RC5, вернее,
над взломом _одного_ конкретного ключа RC5
работает проект www.distributed.net,
привлекший тысячи мощных вычислительных
систем всего мира. В качестве рекламной
акции за взлом RC5 опять-таки обещана большая
сумма, которую distributed net в конце концов
получит.
Далее, блоки шифруются и дешифруются с
использованием только этой таблицы.
Размер блока RC5 – 8 байт. Блок разбивается на
два четырехбайтовых числа, a и b. Далее к ним
плюсуют первый и второй элемент таблицы
шифрования. Далее выполняется такой цикл (куски
исходного кода взяты из библиотеки crypto++):
for(unsigned i=0; i<r; i++)
{
a = rotlMod(a^b,b) + sptr[2*i+0];
b = rotlMod(a^b,a) + sptr[2*i+1];
}
Функция rotlMod сдвигает циклически влево
первый аргумент на число бит, равное
второму. Потом к числу плюсуется нужный
элемент таблицы шифрования. Цикл
повторяется число раз, соответствующее
количеству раундов. После того, как цикл
отработал все раунды, полученные a и b
скрепляются в один блок. Это и есть
зашифрованные с помощью RC5 числа.
Аналогично работает расшифровка.
for (unsigned i=0; i<r; i++)
{
sptr-=2;
b = rotrMod(b-sptr[1], a) ^ a; -
сдвиг вправо
a = rotrMod(a-sptr[0], b) ^ b;
}
b -= sTable[1]; - уменьшение b и a на первые два
элемента таблицы шифрования.
a -= sTable[0];
Как ни странно, после шифрования, а затем
дешифровки с помощью одной и той же таблицы
шифрования получается исходное число 🙂
DES – Data Encryption Standart, федеральный стандарт для
шифрования данных, разработан еще в 1970 г.
Используется 8ми байтовый блок данных и 56-битовый
ключ. Приспособлен для шифрования с помощью
«железа», т.е. аппаратного обеспечения.
Однако программная реализация достаточно
сложна (порядка 15 kb на c++), и разбираться не
будет.
-
Как устроен реестр в Win2K
Ты, конечно же, отлично знаешь, что такое реестр и чему он служит и, наверняка, не раз пол… -
PGP в Linux
PGP (Pretty Good Privacy) - криптографическое приложение для обеспечения защиты и аутентиф… -
-
Crypt от Microsoft: призрак Большого Брата
Еще один проект, призванный откровенно насрать пользователю, претворяет в жизнь любимая на… -
E-mail троян #3
Сразу оговорюсь для г-на майора и "интернациональной" бригады г-на касперского (г-на - это… -
Обзор HTTP идентификации
Протокол HTTP 1.x имеет встроенный механизм проверки правильности имени пользователя/парол…
-
Криптография #1: несимметричные ключи
Криптография решает проблему защиты информации от перехвата противником в момент ее переда… -
Убираем рекламу из рассылки
У меня есть своя рассылка на maillist.ru, называется она "Сетевая Безопасность" … -
Рассылка без рекламы
У меня есть своя рассылка на maillist.ru, называется она "Сетевая Безопасность" … -
Шифруемся
Дарова, кулхацкер! Вот ты и подрос в профессиональном плане, перестал юзать чужие кульные … -
Виртуальные частные сети
Виртуальные частные сети (VPN) привлекают пристальное внимание как провайдеров сетевых у… -