- •Постановка задачи
- •Обзор современного состояния темы
- •Выбор алгоритмов и атак
- •Критерии выбора алгоритмов
- •Выбор симметричных алгоритмов шифрования
- •Выбор алгоритмов шифрования с открытым ключом
- •Выбор алгоритмов цифровой подписи
- •Выбор криптографических атак
- •Описание использованных криптографических алгоритмов
- •Симметричные алгоритмы шифрования
- •Алгоритм гост
- •Асимметричные алгоритмы шифрования
- •Алгоритмы цифровой подписи
- •Алгоритм гост
- •Описание использованных атак
- •Атака на общий модуль против алгоритмаRsa
- •Атака на выбранный шифртекст против алгоритмаRsa
- •Атака против алгоритмаDsa
- •Особенности реализации алгоритмов
- •Управление ключами
- •Генерация ключей
- •Хранение ключей
- •Длина ключа
- •Особенности реализации асимметричных алгоритмов
- •Модульная арифметика
- •Представление многозначных чисел
- •Сложение многозначных чисел
- •Умножение многозначных чисел
- •Деление многозначных чисел
- •Особенности реализации симметричных алгоритмов
- •Дополнение сообщений
- •Подключи и таблицы подстановки для алгоритмаBlowfish
- •Режим использования блочных шифров
- •Проектирование интерфейса
- •Сценарии использования программы
- •Пошаговое выполнение симметричных алгоритмов
- •Пошаговое выполнение асимметричных шифров
- •Пошаговое выполнение алгоритмов цифровой подписи
- •Демонстрация работы атак
- •Оценка скорости работы алгоритма
- •Структура диалога
- •Архитектура программы
- •Использование объектов-функций
- •Использование потоков
- •Использование генераторов ключей
- •Структура модулей
- •Заключение
- •Список литературы
Выбор алгоритмов цифровой подписи
Программа курса содержит 2 алгоритма электронной цифровой подписи: RSAиDSA. Кроме того, решено добавить алгоритм цифровой подписи Эль-Гамаля и алгоритм стандарта ГОСТ Р 34.10 – 94. Стойкость всех этих алгоритмов, кромеRSA, основана на вычислительной сложности решения задачи дискретного логарифмирования. Российский алгоритм цифровой подписи приведен, чтобы учащийся мог сравнить российскую разработку с западными аналогами.
В качестве хеш-функции выбран алгоритм SHA, т.к. значение этой функции имеет длину 160 бит, что в настоящее время делает практически невозможной атаку путем простого подбора сообщений. Стандарт цифровой подписиDSSтребует использовать этот алгоритм [6].
Выбор криптографических атак
Демонстрация возможных атак особенно важна при изучении криптографии, т.к. это помогает избежать типичных ошибок при использовании алгоритма. Это и будет основным критерием при выборе атак, т.к. в программе курса об атаках не говорится.
Возможные виды нападений на криптосистемы можно разделить на несколько групп [2]:
Нападения на криптографические алгоритмы.
Нападения, связанные с нарушением протокола.
Нападения, основанные на нарушении механизмов функционирования криптосистемы.
Нападения на криптографические алгоритмы связаны с решением сложных математических задач, например, дискретного логарифмирования, когда модуль - большое простое число, или разложения большого числа на множители. Проведение таких атак требует реализации достаточно сложных алгоритмов. При большой длине ключа это также требует больших вычислительных ресурсов. Поэтому атаки первой группы в работе рассматриваться не будут.
Атаки, основанные на нарушении механизмов функционирования криптосистемы, являются наиболее многообразными и осуществляются очень часто. К ним относятся, например, перехват секретного ключа аппаратными или программными средствами, подмена открытого ключа в базе данных, навязывание ложного открытого ключа. Механизм проведения таких атак сильно зависит от конкретной криптосистемы, поэтому в данной работе эти атаки также рассматриваться не будут.
К нападениям, связанным с нарушением протокола относятся, например, повторения подписанных сообщений, задерживание сообщений. В данной работе основное внимание будет уделено атакам, которые возможны благодаря неправильному использованию алгоритма в том или ином протоколе.
Описание использованных криптографических алгоритмов
Симметричные алгоритмы шифрования
Blowfish
Описание алгоритма взято из [2]. Длина ключа может составлять от 64 до 448 бит. Длина обрабатываемого блока – 64 бита. В алгоритмах шифрования/дешифрования используется несколько массивов подключей: массив 32-битовых подключей K1,K2,…,K18и четыре последовательности 32-битовых подключей, каждая из которых содержит 256 элементов,
Q0(1),Q1(1), …,Q255(1);
Q0(2),Q1(2), …,Q255(2);
Q0(3),Q1(3), …,Q255(3);
Q0(4),Q1(4), …,Q255(4).
Последовательности Q(i)используются для задания функцииF(X), гдеX– 32-битовый аргумент. При заданномXвычисление этой функции производится следующим образом. 32-битовое словоXпредставляется в виде конкатенации 8-битовых слов:X=x3|x2|x1|x0.
Затем производится вычисление:
F(X) = {[(Qx3(1) +Qx2(2))mod232]Qx1(3)} +Qx0(4)(mod232).
Последовательности Q(i)фактически задают большую таблицу отображения входных 32-битовых подблоков в выходные 32-битовые подблоки.
Алгоритм шифрования
Вход: 64-битовый блок открытых данных T=L|R, представленный в виде конкатенации 32-битовых подблоковLиR.
Установить счетчик i = 1.
Преобразовать подблок Lи вычислить текущее значение переменнойV:
L := L Ki;
V := F(L).
Преобразовать подблок R:
R := R V.
Если i= 16, то перейти к шагу 7.
Прирастить i:=i+1 и переставить подблокиRиL:
W := R; R := L; L := W.
Перейти к шагу 2.
Преобразовать подблок R:
R := R K17.
Преобразовать подблок L:
L := L K18.
Выход: 64-битовый блок зашифрованного текста L|R.
Алгоритм дешифрования
Вход: 64-битовый блок зашифрованного текста C=L|R.
Преобразовать подблок R:
R := R K17.
Преобразовать подблок L:
L := L K18.
Установить счетчик i = 16.
Вычислить текущее значение переменной Vи преобразовать подблокR:
V := F(L);
R := R V.
Преобразовать подблок L:
L := L K17-i.
Если i=1, то перейти к шагу 9.
Переставить подблоки RиL:
W := R; R := L; L := W.
i:=i-1 и перейти к шагу 4.
Выход: блок открытого текста L|R.