- •Постановка задачи
- •Обзор современного состояния темы
- •Выбор алгоритмов и атак
- •Критерии выбора алгоритмов
- •Выбор симметричных алгоритмов шифрования
- •Выбор алгоритмов шифрования с открытым ключом
- •Выбор алгоритмов цифровой подписи
- •Выбор криптографических атак
- •Описание использованных криптографических алгоритмов
- •Симметричные алгоритмы шифрования
- •Алгоритм гост
- •Асимметричные алгоритмы шифрования
- •Алгоритмы цифровой подписи
- •Алгоритм гост
- •Описание использованных атак
- •Атака на общий модуль против алгоритмаRsa
- •Атака на выбранный шифртекст против алгоритмаRsa
- •Атака против алгоритмаDsa
- •Особенности реализации алгоритмов
- •Управление ключами
- •Генерация ключей
- •Хранение ключей
- •Длина ключа
- •Особенности реализации асимметричных алгоритмов
- •Модульная арифметика
- •Представление многозначных чисел
- •Сложение многозначных чисел
- •Умножение многозначных чисел
- •Деление многозначных чисел
- •Особенности реализации симметричных алгоритмов
- •Дополнение сообщений
- •Подключи и таблицы подстановки для алгоритмаBlowfish
- •Режим использования блочных шифров
- •Проектирование интерфейса
- •Сценарии использования программы
- •Пошаговое выполнение симметричных алгоритмов
- •Пошаговое выполнение асимметричных шифров
- •Пошаговое выполнение алгоритмов цифровой подписи
- •Демонстрация работы атак
- •Оценка скорости работы алгоритма
- •Структура диалога
- •Архитектура программы
- •Использование объектов-функций
- •Использование потоков
- •Использование генераторов ключей
- •Структура модулей
- •Заключение
- •Список литературы
Алгоритм гост
Этот алгоритм шифрования определен в стандарте ГОСТ 28147-89 [4].
Длина ключа составляет 256 бит. Длина обрабатываемого блока – 64 бита.
Процедуры шифрования и дешифрования соответствуют итеративной схеме Фейстеля, в которой функция F(R,K) задается операцией суммирования по модулю 232, табличными подстановками, выполняемыми над 4-битовыми подблоками, и операцией циклического сдвига влево на 11 бит «11», выполняемой над 32-битовым подблоком.
Табличные подстановки осуществляются следующим образом. Подблок Rпредставляется в виде конкатенации 4-битовых подблоков:R=r7|r6|r5 |r4|r3|r2|r1|r0. Затем над каждым подблокомriвыполняется операция подстановки, задаваемая таблицамиS7,S6, …,S0. Каждая таблица представляет собой некоторую перестановку чисел {0, 1,…, 15}, т.е. таблицаSпредставляется упорядоченным набором 4-битовых чиселs0,s1,…,s15. Обозначим операцию подстановки, выполняемую с помощью таблицыSнад подблокомrкакS(r). Эта операция заключается в замене значенияrна значениеsr, т.е.S(r) =sr. Введем функциюF’(R), задаваемую выражениемF’(R), задаваемую выражениемF’(R) =S7(r7) |S6(r6) | … |S0(r0).
Алгоритм шифрования
Вход: 64-битовый блок исходного текста T, представленный в виде конкатенации двух 32-битовых подблоковLиR:T=L|R.
Установить счетчик i=1.
V := R
вычислить номер выбираемого подключа j:
j = (i-1) mod 8, если i<25,
j = (32-i) mod 8, если i25.
Преобразовать подблок R:
R := (R + Qj) mod 232;
R := F’(R);
R := R 11;
R := R L.
L := V.
Если i≠ 32, тоi:=i+1 и перейти к шагу 2.
Выход: 64-битовый блок шифрованного текста C=L|R.
Алгоритм дешифрования
Вход: 64-битовый блок шифрованного текста C=L|R.
Установить счетчик i =1.
V := L.
Вычислить номер выбираемого подключа j:
j = (i-1) mod 8, если i8,
j = (32-i) mod 8, если i>8.
Преобразовать подблок L:
L := (L+Qj) mod 232;
L := F’(L);
L := L 11;
L := L R.
Преобразовать подблок R:
R := V.
Если i≠ 32, тоi:=i+1 и перейти к шагу 2.
Выход: 64-битовый блок открытого текста T=L|R.
Асимметричные алгоритмы шифрования
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].
Открытый ключ:
p– простое число, которое может совместно использоваться несколькими лицами
g<p- число, которое может совместно использоваться несколькими лицами
y=gxmodp
Секретный ключ:
x<p
Алгоритм шифрования:
разделить открытый текст на блоки таким образом, чтобы каждый блок можно было представить в виде числа меньшего, чем p
для каждого блока открытого текста mвыбрать случайным образом числоk, взаимно простое сp-1
шифрованным текстом для блока mбудет пара чиселa=gk modp,b=ykMmodp
Алгоритм дешифрования:
m=(b/(ax))modp