- •Федеральное агенство по образованию Государственное образовательное учреждение высшего профессионального образования «Санкт-Петербургский государственный электротехнический университет» («лэти»)
- •Введение
- •1. Обзор современного состояния темы
- •2. Алгоритмы и атаки, включенные в состав обучающей программы
- •2.1. Критерии отбора алгоритмов
- •2.2. Симметричные алгоритмы шифрования
- •2.3. Описание симметричных криптографических алгоритмов
- •2.3.1. Алгоритм Blowfish
- •2.3.2. Алгоритм гост
- •3. Алгоритмы шифрования с открытым ключом
- •3.1. Алгоритм rsa
- •3.2. Алгоритм Эль-Гамаля
- •4. Алгоритмы цифровой подписи
- •4.1. Схема rsa
- •4.2. Схема dsa
- •4.3. Схема подписи Эль-Гамаля
- •4.4. Алгоритм гост
- •5. Криптографические атаки
- •5.1. Атака на общий модуль против алгоритма rsa
- •5.2. Атака на выбранный шифртекст против алгоритма rsa
- •5.3. Атака против алгоритма dsa
- •6. Особенности реализации алгоритмов
- •6.1. Управление ключами
- •6.1.1. Генерация ключей
- •6.1.2. Хранение ключей
- •6.1.3. Длина ключа
- •6.2. Особенности реализации асимметричных алгоритмов
- •6.2.1. Модульная арифметика
- •6.2.2. Представление многозначных чисел
- •6.2.3. Сложение многозначных чисел
- •6.2.4. Умножение многозначных чисел
- •6.2.5. Деление многозначных чисел
- •6.3. Особенности реализации симметричных алгоритмов
- •6.3.1. Дополнение сообщений
- •6.3.2. Таблицы подстановки для алгоритма шифрования гост 28147-89
- •6.3.3. Подключи и таблицы подстановки для алгоритма Blowfish
- •6.3.4. Режим использования блочных шифров
- •Проектирование интерфейса
- •7.1. Сценарии использования программы
- •7.2. Пошаговое выполнение симметричных алгоритмов
- •7.3. Пошаговое выполнение асимметричных шифров
- •7.4. Пошаговое выполнение алгоритмов цифровой подписи
- •7.5. Демонстрация работы атак
- •7.5.1. Криптоанализ алгоритма rsa на основе выбранного шифртекста
- •7.5.2. Криптоанализ алгоритма rsa для случая общего модуля
- •8. Оценка скорости работы алгоритма
- •9. Структура диалога
- •10. Заключение
- •Список литературы
5. Криптографические атаки
Демонстрация возможных атак особенно важна при изучении криптографии, т.к. это помогает избежать типичных ошибок при использовании алгоритма. Это и будет основным критерием при выборе атак, т.к. в программе курса об атаках не говорится.
Возможные виды нападений на криптосистемы можно разделить на несколько групп [2]:
1. Нападения на криптографические алгоритмы.
2. Нападения, связанные с нарушением протокола.
3. Нападения, основанные на нарушении механизмов функционирования криптосистемы.
Нападения на криптографические алгоритмы связаны с решением сложных математических задач, например, дискретного логарифмирования, когда модуль - большое простое число, или разложения большого числа на множители. Проведение таких атак требует реализации достаточно сложных алгоритмов. При большой длине ключа это также требует больших вычислительных ресурсов. Поэтому атаки первой группы в работе рассматриваться не будут.
Атаки, основанные на нарушении механизмов функционирования криптосистемы, являются наиболее многообразными и осуществляются очень часто. К ним относятся, например, перехват секретного ключа аппаратными или программными средствами, подмена открытого ключа в базе данных, навязывание ложного открытого ключа. Механизм проведения таких атак сильно зависит от конкретной криптосистемы, поэтому в данной работе эти атаки также рассматриваться не будут.
К нападениям, связанным с нарушением протокола относятся, например, повторения подписанных сообщений, задерживание сообщений. В данной работе основное внимание будет уделено атакам, которые возможны благодаря неправильному использованию алгоритма в том или ином протоколе.
Описание использованных атак
5.1. Атака на общий модуль против алгоритма rsa
Предположим, что генерация ключей для группы пользователей происходит следующим образом: всем пользователям дается одно значение n, но разные значенияeиd. ПользовательA хочет послать одно и то же сообщение,m, двум различным пользователям с открытыми ключами (n,e1) и (n,e2). Зашифрованными текстами будут:
c1 =me1modn,
c2=me2modn.
Противник узнал c1иc2, и хочет узнатьm. Чтобы он смог это сделать надо, чтобыe1иe2были взаимно простыми, а чаще всего так и оказывается. Поэтому будем считать, что НОД(e1,e2) = 1. Следовательно, существуют числаrиs, такие чтоr*e1+s*e2=1. Для вычисленияrиsможно воспользоваться расширенным алгоритмом Евклида.
Числа rиsимеют разные знаки. Предположим, чтоrотрицательно. Тогда противник может вычислить (c1-1)-r*c2s=mmodn, т.е. получить открытый текст.
Описание атаки взято из [3].
5.2. Атака на выбранный шифртекст против алгоритма rsa
Пользователю A направлено сообщениеm, зашифрованное его открытым ключом,e. ПротивникE смог получить соответствующий зашифрованный текст,c.Е хочет узнать открытый текст, т.е. получитьm=cdmodn, но он не знает секретного ключаd. ПоэтомуEдействует следующим образом:
Eвыбирает случайным образом числоr:r<n.
Имея открытый ключ A - e, Eвычисляет
x = re mod n
y = xc mod n
t = r-1 mod n.
E добивается, чтобыA подписалyс помощью алгоритмаRSA, т.е. расшифровалy, а затем послал ему результатu=ydmodn.A должен подписать само сообщение, а не его дайджест. Сообщениеyскорее всего будет выглядеть случайным, а на практике иногда приходится подписывать случайные сообщения.
E вычисляет
tu mod n = r-1 yd mod n = r-1 xd cd mod n = cd mod n = m,
т.е. получает открытый текст.
Описание атаки приведено в [3].