- •Оглавление
- •Раздел 1. Математические основы криптографии
- •1.1. Делимость и алгоритм евклида
- •1.1.1 Отношение делимости
- •1.1.2 Использование алгоритма Евклида для решения теоретико-числовых задач криптологии
- •1.1.3 Расширенный метод Евклида
- •1.2. Сравнения
- •1.2.1. Отношение сравнимости
- •1.2.2. Использование свойств сравнений для решения теоретико-числовых задач криптологии
- •Раздел 2. Криптографические системы с открытым ключом
- •2.1. Основные сведения о криптографических системах
- •2.2. Шифрование с использованием криптосистемы rsa
- •2.3. Цифровая подпись в схеме Эль-Гамаль
- •2.4. Обмен информацией с использованием протокола Шамира
- •Раздел 3. Контрольные задания
- •3.1. Программа работы
- •3.2. Примеры выполнения контрольных заданий
- •3.2.1. Шифрование с использованием криптосистемы rsa
- •3.2.2. Цифровая подпись в схеме Эль – Гамаль
- •3.2.3. Обмен информацией с использованием протокола Шамира
- •3.3. Варианты контрольных заданий
- •3.3.1. Шифрование с использованием криптосистемы rsa
- •3.3.2. Цифровая подпись в схеме Эль-Гамаль
- •3.3.3. Обмен информацией с использованием протокола Шамира
- •Библиографический список
2.2. Шифрование с использованием криптосистемы rsa
Одним из первых универсальных (допускающих использование, как для шифрования, так и для цифровой подписи) асимметричных алгоритмов стал разработанный в 1978 г. алгоритм RSA, названный по имени разработчиков – ученых Массачусетского технологического института Рона Ривеста (Ron Rivest), Ади Шамира (Adi Shamir) и Леонарда Адлемана (Leonard Adleman)[5].
Стойкость криптосистемы RSA основывается на сложности задачи факторизации (разложения натурального числа на простые сомножители). Многочисленные попытки криптоанализа, предпринятые с 1978 г., показали корреляцию эмпирических оценок стойкости с оценками, полученными априорно. Данный факт подтверждал предположение о невозможности разработки полиномиального по времени алгоритма факторизации натуральных чисел. Однако в 2002-2003 гг. индийским математикам М. Агравалю (Manindra Agrawal), Н. Каялю (Neeraj Kayal) и Н. Саксена (Nitin Saxena) из Индийского технологического института в Карпуре удалось показать существование полиномиального по времени алгоритма факторизации [6]. Несмотря на невысокие временные характеристики алгоритма (не ставящие в обозримом будущем под сомнение стойкость RSA), сам факт его разработки говорит о возможности создания других, более эффективных алгоритмов, способных эффективно решать задачи криптоанализа систем, основанных на сложности задачи факторизации.
Для генерации используемых в алгоритме ключей применяют два больших простых числа и. Для максимальной безопасностии должны иметь сопоставимую разрядность.
На их основе рассчитывается элемент , такой, что
|
. |
(2.1) |
Затем случайным образом выбирается элемент , такой, чтоиявляются взаимно простыми числами, т.е.
|
. |
(2.2) |
Замечание 1: Здесь и далее - есть функция Эйлера, определяемая из выражения
|
|
Замечание 2: Для вычисления в условиях схемыRSA можно использовать следующее соотношение, справедливость которого очевидна из определения функции Эйлера
|
. |
(2.3) |
Несложно убедиться, что данный метод вычисления имеет сложность порядка двоичных операций[7].
Замечание 3: Скорость работы алгоритма шифрования RSA существенным образом зависит от выбора . На практике наиболее используемыми вариантами являются значения,,. Каждое из этих чисел содержит в двоичном представлении только две единицы, поэтому алгоритм повторного возведения в квадрат позволяет выполнить шифрование достаточно быстро[1].
Пара чисел будет, таким образом являться открытым ключом алгоритма.
Далее с помощью расширенного алгоритма Евклида [1,3] определяется закрытый ключ , такой что:
|
. |
(2.4) |
Другими словами
|
. |
(2.5) |
Важно отметить, что итакже являются взаимно простыми. Числаив дальнейшем не используются, однако они должны быть сохранены в секрете, т.к. их разглашение будет означать вскрытие криптосистемы.
При шифровании сообщение разбивается на блоки фиксированной длины (меньшей, чем). Шифрпреобразование полученных блоковвыполняется согласно выражению
|
. |
(2.6) |
При расшифровке сообщения для каждого зашифрованного блока вычисляется
|
. |
(2.7) |
Для доказательства применимости данного алгоритма достаточно подробно рассмотреть свойства функции Эйлера [4,8].
Стойкость RSA существенным образом зависит от выбора и. Как правило, практическую ценность имеет шифрование с ключами длины порядка сотен бит. Другим важным условием стойкости является требование, чтобы значениебыло по возможности наименьшим [1,7].
В литературе описаны многочисленные модификации схемы RSA, отличающиеся повышенным быстродействием, большей стойкостью и т.д.[1,7,8].