При шифровании с симметричным ключом обе
стороны должны иметь ключ в распоряжении.
Для шифрования и дешифровки используется
один и тот же ключ. Опять возникает
проблема с передачей ключа другой
стороне, но у нее есть очень
эффективное решение - для передачи
симметричных ключей использовать криптографию
с открытым ключом.
 
Главное требование к шифрованию с
симметричным ключом – криптостойкость.
Криптостойкость – способность
противостоять криптоанализу, т.е. попытке
расшифровать текст, не обладая ключом.
Различают несколько типов
криптоаналитических атак.
 
В одном случае в распоряжении
криптоаналитика находится только
зашифрованный текст. Этот тип атаки бывает
успешен в редких случаях, когда
криптографический алгоритм слаб, и в
распоряжении криптоаналитика большое
количество зашифрованных данных. Примеры
слабых алгоритмов – 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++), и разбираться не
будет.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии