Криптография с открытым ключом
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
? А и В). Злоумышленнику для определения, например, секретного ключа пользователя В необходимо вычислить XВ = Inda, Q (YB), иначе YВ = a XВ mod Q.
2.Асимметричная криптографическая система (система с двумя ключами, схема шифрования с открытым ключом). Отправитель и получатель используют разные ключи. Здесь ключи зашифрования и расшифрования различны и секретность сообщения основана на сложности вычисления ключа по некоторой производной от него информации, которая в открытом виде передается по каналу связи.
3.Закрытый ключ. Это закрытая (секретная) половина криптографической пары, используемая при шифровании с применением открытых ключей. Закрытые ключи обычно используются при расшифровке симметричных ключей сеансов, создании цифровых подписей и расшифровке данных, зашифрованных соответствующим открытым ключом.
4.Индекс b по основанию a, рассматриваемому по модулю p (иначе дискретный логарифм). Ind a,p (b) или показатель степени i, при котором b = aimod p, где 0 i (p-1).
3. Лабораторная работа 3. КриптографиЯ с открытым ключом.
Метод зашифрования с открытым ключом RSA
В этой лабораторной работе определяются параметры преобразования, необходимые для выполнения алгоритма RSA (выбирается соответствующим образом открытый ключ e, вычисляется соответствующий закрытый ключ d как мультипликативное обратное к e). Далее с использованием этих параметров производятся зашифрование открытого текста (конкретного двухразрядного десятичного числа) и расшифрование этого зашифрованного текста.
Работа состоит из трех заданий.
Задание 1. RSA-0 - подготовка к выполнению алгоритма зашифрования открытого сообщения открытым ключом RSA-1.
Задание 2. RSA-1 - выполнение алгоритма зашифрования открытого сообщения открытым ключом RSA-1.
Задание 3. RSA-2 - выполнение алгоритма расшифрования зашифрованного сообщения секретным ключом RSA-1.
3.1 Теория, криптография с открытым ключом. Метод зашифрования с открытым ключом RSA
Алгоритмы шифрования с открытым ключом зависят от двух ключей: одного ключа для зашифрования и другого ключа, связанного с первым, для расшифрования (слайд 3.2). С точки зрения вычислений, нереально определить ключ расшифрования, зная только используемый крипто-графический алгоритм и ключ зашифрования. В некоторых алгоритмах любой из этих ключей может применяться для зашифрования, а другой - для расшифрования.
Криптографические системы с открытым ключом зависят от некоторой обратимой математической функции со специальными свойствами. Сложность вычисления такого рода функций может зависеть не линейно от числа битов в ключе, а расти более быстро. Поэтому длина ключа должна быть достаточно большой. Однако чем длиннее ключи, тем больше времени требуется для выполнения процессов зашифрования/расшифрования. Поэтому алгоритмы криптографии с открытым ключом в настоящее время, в основном, применяются в управлении ключами и приложениями цифровой подписи. Однако схема Райвеста-Шамира-Адлемана (RSA) стала единственной получившей широкое признание и практически применяемой схемой шифрования с открытым ключом [1]. Эта схема представляет собой блочный шифр, в котором и открытый текст, и шифрованный текст представляются целыми числами из диапазона от 0 до (n-1) для некоторого n.
В данной лабораторной работе мы изучим этот метод шифрования и алгоритмы вычислений, применяемых при реализации этого метода.
Операции зашифрования открытого текста и расшифрования закрытого текста в RSA состоят из операций возведения большого целого числа в большую целую степень по модулю n.
Обобщенная блок-схема генерации ключей, необходимых для алгоритма RSA приводится на рис. 3.1 (слайд 3.3).
Рис. 3.1. Генерация ключей для RSA
На рис. 3.2 (слайд 3.4) приводится блок-схема алгоритмов зашифрования и расшифрования для RSA.
Рис. 3.2. Блок-схема алгоритмов зашифровки и расшифровки для RSA
3.2 Алгоритм RSA
Далее приводятся два примера, поясняющие работу алгоритма RSA.
Пример RSA-0. Выбор целого e, взаимно простого с f(n) и меньшего, чем f(n). А также определение такого d, что de = 1 mod f(n) и d < f(n).
Это подготовительный этап для выполнения алгоритма RSA.
Из таблицы 1 приложения выбираем два простых числа p = 7 и q = 17.
Вычисляем n = p q = 7 17 = 119.
Вычисляем f(n) = (p-1) (q-1) = 6 16 = 96.
Выбираем e по условию, что gcd (e, f(n)) = 1 и 1<e<f(n) Для этого будем пользоваться расширенным алгоритмом Евклида для нахождения наибольшего общего делителя двух чисел, который при определении и уточнении, что таким делителем является 1, выдает и мультипликативное обратное для e по модулю f(n).
gcd (d, f) = gcd (e =5, f(n) = 96) = 1.
Выполняем алгоритм:
X1 = 1, X2 = 0, X3 = 96.
Y1 = 0, Y2 = 1, Y3 = 5.
Y3 0,
Y3 1.
Q = X3/Y3 = 96/5 = 19.
T1 = X1 - Q Y1 = 1 - 19 0 = 1,
T2 = X2 - Q Y2 = 0 - 19 1 = -19,
T3 = X3 - Q Y3 = 96 - 19 5 = 1.
X1 = Y1 = 0,
X2 = Y2 = 1,
X3 = Y3 = 5.
Y1 = T1 = 1,
Y2 = T2 = -19,
Y3 = T3 = 1.
Соотношения:
f