
- •Оглавление
- •Раздел 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].