- •Федеральное агенство по образованию Государственное образовательное учреждение высшего профессионального образования «Санкт-Петербургский государственный электротехнический университет» («лэти»)
- •Введение
- •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. Заключение
- •Список литературы
3. Алгоритмы шифрования с открытым ключом
Для демонстрации особенностей алгоритмов шифрования с открытым ключом выбраны два алгоритма: алгоритм шифрования RSAи схема шифрования Эль-Гамаля. Оба эти алгоритма, особенно первый, распространены очень широко. Цель демонстрации - показать учащемуся, что стойкость асимметричных алгоритмов основана на вычислительной сложности решения какой-либо задачи [3]. Стойкость алгоритмаRSAоснована на вычислительной сложности разложения числа на два больших простых множителя, а стойкость алгоритма Эль-Гамаля – на вычислительно сложной задаче дискретного логарифмирования. Последняя заключается в том, чтобы для заданных целых чиселgиMи простого числаpнайтиx, такой чтоgxM(modp).
3.1. Алгоритм rsa
Описание алгоритма приведено в [3].
Открытый ключ:
n=pq, гдеpиq– простые числа, которые должны оставаться в секрете
e– число взаимно простое с (p-1)(q-1)
Секретный ключ:
d=e-1mod((p-1)(q-1))
Алгоритм шифрования:
разделить открытый текст на блоки таким образом, чтобы каждый блок можно было представить в виде числа меньшего, чем n
получить блоки зашифрованного текста, c, из блоков открытого текстаm:c=memodn
Алгоритм дешифрования:
m=cdmodn
3.2. Алгоритм Эль-Гамаля
Описание алгоритма приведено в [3].
Открытый ключ:
p– простое число, которое может совместно использоваться несколькими лицами
g<p- число, которое может совместно использоваться несколькими лицами
y=gxmodp
Секретный ключ:
x<p
Алгоритм шифрования:
разделить открытый текст на блоки таким образом, чтобы каждый блок можно было представить в виде числа меньшего, чем p
для каждого блока открытого текста mвыбрать случайным образом числоk, взаимно простое сp-1
шифрованным текстом для блока mбудет пара чиселa=gk modp,b=ykMmodp
Алгоритм дешифрования:
m=(b/(ax))modp
4. Алгоритмы цифровой подписи
Для демонстрации алгоритмов электронной цифровой подписи выбраны алгоритмы RSAиDSA, а также алгоритм цифровой подписи Эль-Гамаля и алгоритм стандарта ГОСТ Р 34.10 – 94. Стойкость всех этих алгоритмов, кромеRSA, основана на вычислительной сложности решения задачи дискретного логарифмирования. Российский алгоритм цифровой подписи приведен, чтобы сравнить российскую разработку с западными аналогами.
В качестве хеш-функции выбран алгоритм SHA, т.к. значение этой функции имеет длину 160 бит, что в настоящее время делает практически невозможной атаку путем простого подбора сообщений. Стандарт цифровой подписиDSSтребует использовать этот алгоритм [6].
4.1. Схема rsa
Описание алгоритма приведено в [2]. Открытый и секретный ключи те же, что и при шифровании RSA. Перед подписью сообщения или его дайджеста, его надо разбить на блоки, каждый из которых надо представить в виде числа, меньшего чемn. Получение подписи числаm:
s=mdmodn.
Процедура проверки подписи s, соответствующей сообщениюm:
m’ =semodn.
Если m’=m, то сообщениеmпризнается подписанным пользователем, который предоставил ранее открытый ключe.
4.2. Схема dsa
Описание алгоритма приведено в [6].
Открытый ключ:
p– простое число, которое может быть общим для группы пользователей
q– простое число, которое делитp-1 и может быть общим для группы пользователей
g=h(p-1)/qmodp, гдеh<p-1 иh(p-1)/qmodp>1.gможет быть общим для группы пользователей
y=gxmodp
Закрытый ключ:
x<q
Алгоритм генерации подписи:
выбрать случайным образом число k:k<q
подписью сообщения Mбудет пара чисел:
r= (gk mod p) mod q
s= (k-1(H(m)+xr))modq
где H(m) – результат применения хеш-функции к сообщениюm
Алгоритм проверки подписи:
w=s-1 mod q
u1=(H(m)*w) mod q
u2=(rw) mod q
v=((gu1*yu2) mod p) mod q
если v=r, то сообщениеmпризнается подписанным пользователем, который предоставил ранее открытый ключy
В стандарте цифровой подписи DSS[6] определено, что длина числаpдолжна составлять от 512 бит до 1024 бит, длина числаq– 160 бит. Эти требования связаны с тем, что при таких длинах достигается достаточная вычислительная стойкость. Но алгоритм цифровой подписи будет работать, даже если используются числаpиqдругой длины.
Стандарт DSSопределяет, что в качестве хеш-функции надо использоватьSHA.