Ключи зашифрования и расшифрования в системе rsa
Чтобы зашифровать текст с помощью метода RSA, нам потребуется:
большое число n(=pq), являющееся произведением только двух различных простых чисел p и q. Вопрос, как именно отыскивать очень большие простые числа, весьма уместен. Мы уже сталкивались с этой проблемой раньше, в связи с системой рассылки ключей Диффи-Хеллмана. В общем случае потребуется значительный объем вычислений. Поскольку используемые простые числа в данном случае не могут иметь специального вида, такого как 2p-1, то никаких действительно быстрых методов не найдено. Правда, существует метод нахождения предположительно простых чисел, в котором вероятность простоты числа может быть сделана сколь угодно близкой к единице, т.е. число будет простым почти наверное. (Детали можно найти в М24);
целое число e, называемое ключом зашифрования, не имеющее общих делителей с (p-1)(q-1) и с самим числом n;
Для расшифрования текста, зашифрованного по методу RSA, далее нам понадобится
целое число d, называемое ключом расшифрования, которое удовлетворяет условию
ed1(mod (p-1)(q-1)).
Теперь стоит отметить, что числа e и d симметричны друг относительно друга. Это говорит о том, что если d - ключ расшифрования для e, то e - ключ расшифрования для d. Значение этого факта станет ясно, когда мы будем рассматривать то, каким образом "хозяин" ключа расшифрования d может отвечать своим корреспондентам.
После того, как выбраны n и e, необходимо вычислить число d. Если p и q известны, существует метод нахождения d; но если p и q неизвестны, найти d невозможно. Именно этот факт обеспечивает стойкость системы RSA. Если p и q очень велики (например, более 10200), то найти их за приемлемое время (то есть факторизовать число n) не под силу даже наибыстрейшим компьютерам.
Прежде чем перейти к описанию самого процесса зашифрования, рассмотрим два примера, которые показывают, как найти d по известным значениям p, q и e. В первом примере все величины маленькие; второй пример оперирует несколько большими величинами, хотя они все равно гораздо меньше тех, что подходят для использования в алгоритме шифрования RSA.
Пример 13.1
Найти ключ расшифрования d, если n=91, а ключ зашифрования e=29.
Решение
В качестве первого шага отметим, что 91=713, поэтому, положив p=7 и q=13, получим
(p-1)(q-1)=612=72,
и поскольку число 29 на имеет общих делителей ни с 91, ни с 72, то оно годится в качестве ключа зашифрования по методу RSA. Чтобы найти соответствующий ключ расшифрования d, применяем алгоритм Евклида (он разъяснён в М25). Метод нахождения можно проиллюстрировать следующими шагами:
72=229+14,
29=214+1,
поэтому
1=29-214,
но, как мы видим из первого равенства, 14=72-229, и поэтому
1=29-2(72-229)=529-272, то есть
529=272+1,
откуда
5291(mod 72)
(т.е. 145=144+1), и следовательно, ключ расшифрования d=5.
Это может показаться странным, но метод состоит в том, чтобы с помощью алгоритма Евклида найти наибольший общий делитель ключа зашифрования e и числа (p-1)(q-1). Поскольку e и (p-1)(q-1) не имеют общих делителей, то их наибольший общий делитель равен единице. Если теперь мы "вернемся назад" по шагам алгоритма Евклида от последней строчки к первой, заменяя каждый раз последнее число справа его выражением через оставшиеся числа, то в конце концов получим ключ расшифрования d, определяемый приведенным выше сравнением из пункта (3). Формальное описание метода и альтернативный подход даны в М25.
Пример 13.2 (Немного более реалистичный случай, который мы будем использовать ниже)
Найти ключ расшифрования d, если n=3127, а ключ зашифрования e равен 17.
Решение
Заметим, что n=3127=5359, причем и 53, и 59 - простые числа. Следовательно, значение n годится в качестве модуля для системы RSA, а (p-1)(q-1)= 5258=3016. Далее, поскольку число 17 не имеет общих делителей ни с 3127, ни с 3016, то оно годится в качестве ключа зашифрования. Действуя, как и ранее, то есть по алгоритму Евклида, получаем:
3016=17717+7,
17=27+3,
7=23+1,
откуда
1=7-23,
но из второго равенства сверху следует, что 3=17-27, поэтому
1=7-2(17-27)=57-217,
а из первого равенства следует, что 7=3016-17717, поэтому
1=5(3016-17717)-217=53016-88717,
или
88717-1(mod 3016).
Нам требуется значение d, которое, будучи умножено на 17, даст при делении на 3016 остаток +1. Следовательно, оно равно -887, а не +887. Так как -8872129(mod 3016), то окончательно получаем, что ключ расшифрования d=2129.
(Проверка: 212917=36193=123016+1.)
- Глава 1. Введение 10
- Глава 9. Шифрмашина "Энигма" 130
- Глава 10. Шифрмашина "Хагелин" 152
- Глава 11. После "Энигмы" 172
- Глава 12. Криптография с открытым ключом 179
- Глава 13. Шифрование и Интернет 188
- Предисловие
- Глава 1. Введение Некоторые аспекты безопасности связи
- Шифр Юлия Цезаря
- Несколько основных определений
- Три этапа дешифрования: идентификация, взлом системы и вскрытие ключей.
- Коды и шифры
- Оценка стойкости системы шифрования
- Коды, обнаруживающие и исправляющие ошибки
- Другие методы сокрытия содержания сообщений
- Модульная арифметика
- Модульное сложение и вычитание букв
- Заключение
- Глава 2. От Юлия Цезаря до простой замены Шифры Юлия Цезаря и их вскрытие
- Шифры простой замены
- Вскрытие шифра простой замены
- Частоты встречаемости букв в других языках, кроме английского
- Сколько знаков необходимо для дешифрования простой замены?
- Глава 3. Многоалфавитные системы Усиление системы Юлия Цезаря: шифры Вижанэра
- Вскрытие шифра Вижанэра
- Индикаторы
- Одноключевые сообщения
- Распознавание одноключевых сообщений
- Какой объем текста необходим для дешифрования шифра Вижанэра?
- Цилиндр Джефферсона
- Глава 4. Шифры-головоломки
- Перестановки
- Простая перестановка
- Двойная перестановка
- Другие виды перестановок
- Регулярные перестановочные таблицы
- Нерегулярные перестановочные таблицы
- Оценка стойкости шифров перестановки
- Общая концепция двойного шифрования
- Глава 5. Двухбуквенные шифры
- Замена "монограф-диграф"
- Мдпм-шифры
- Система "диграф-диграф"
- Шифр Плейфера*)
- Расшифрование в системе Плейфера
- Криптоаналитические аспекты системы Плейфера
- Двойной шифр Плейфера
- Глава 6. Коды Характеристики кодов
- Одночастевые и двухчастевые коды
- Код плюс аддитивное шифрование
- Глава 7. Шифры для шпионов
- Шифры-решетки
- Книжные шифры
- Использование книжного шифра
- Частоты встречаемости букв в книжных шифрах
- Вскрытие книжного шифра
- Индикаторы
- Катастрофические ошибки при использовании книжного шифра
- Шифры "агента Гарбо"
- Первый шифр "агента Гарбо"
- Второй шифр "агента Гарбо"
- Одноразовый блокнот
- Глава 8. Получение случайных чисел и букв Случайные последовательности
- Получение случайных последовательностей
- Бросание монеты
- Бросание костей
- Извлечение из урны (по типу лотереи)
- Космические лучи
- Шум от усилителей
- Псевдослучайные последовательности
- Линейные рекурренты
- Использование последовательности двоичных знаков гаммы для шифрования
- Двоичные линейные последовательности как генераторы гаммы
- Криптоанализ линейной рекурренты
- Повышение стойкости двоичной гаммы
- Генераторы псевдослучайных чисел
- Метод срединных квадратов
- Линейные конгруэнтные генераторы
- Глава 9. Шифрмашина "Энигма" Историческая справка
- Первая "Энигма"
- Шифрование с использованием контактных колес
- Шифрование в "Энигме"
- Коммутатор "Энигмы"
- Ахиллесова пята "Энигмы"
- Цепочки индикаторов в "Энигме"
- Выравнивание цепочек
- Идентификация колеса r1 и его угловой установки
- Двойное шифрование в "Энигме"
- "Энигма" Абвера
- Глава 10. Шифрмашина "Хагелин" Историческая справка
- Конструкция шифрмашины «Хагелин»
- Шифрование при помощи шифрмашины "Хагелин"
- Выбор установок барабана в шифрмашине "Хагелин"
- Теоретический объем перебора для шифрмашины "Хагелин"
- Вскрытие установок "Хагелина" по отрезку гаммы
- Дополнительные возможности шифрмашины "Хагелин"
- Смещение
- Определение смещения по шифрованному тексту
- Перекрытия
- Вскрытие шифрмашины "Хагелин" только по шифрованному тексту
- Глава 11. После "Энигмы" sz42 - предтеча электронных машин
- Описание шифрмашины sz42
- Шифрование в машине sz42
- Вскрытие шифрмашины sz42 и определение ее угловых установок
- Модификации шифрмашины sz42
- Глава 12. Криптография с открытым ключом Историческая справка
- Вопросы безопасности
- Защита программ и данных
- Шифрование программ, данных и сообщений
- Задача распределения ключей
- Система ключевого обмена Диффи-Хеллмана
- Стойкость системы Диффи-Хеллмана
- Глава 13. Шифрование и Интернет Обобщение шифра простой замены
- Факторизация больших целых чисел
- Стандартный метод факторизации
- Малая теорема Ферма
- Теорема Ферма-Эйлера (для случая системы rsa)
- Ключи зашифрования и расшифрования в системе rsa
- Процессы зашифрования и расшифрования в системе rsa
- Каким образом хозяин ключей отвечает корреспондентам?
- Американский Стандарт Шифрования Данных (des)*)
- Общие сведения
- Процедура зашифрования
- Процедура расшифрования
- Стойкость des-алгоритма
- Зацепление
- Реализации des-алгоритма
- Совместное использование алгоритмов rsa и des
- Полезное замечание
- После des-алгоритма
- Проверка подлинности сообщения и удостоверение подлинности подписи
- Криптография эллиптической кривой
- Приложение. Математические вопросы Глава 2 м1. Совпадения знаков в алфавитах замены
- М2. Снижение стойкости при использовании взаимно-обратных алфавитов
- M3. Парадокс дней рождения
- Глава 3 м4. Евклидово доказательство бесконечности множества простых чисел
- Глава 6 м5. Последовательность чисел Фибоначчи
- Глава 7 м6. Частота встречаемости букв для книжного шифра
- М7. Одноразовый блокнот дешифровать невозможно
- Глава 8 м8. Частота появления случайных чисел на странице
- М9. Комбинирование двух последовательностей двоичных знаков гаммы, имеющих отклонения
- М10. Последовательность типа Фибоначчи
- М11. Двоичные линейные рекурренты
- M12. Восстановление двоичной линейной рекурренты по отрезку гаммы
- М13. Получение псевдослучайных чисел
- Глава 9 м14. Распайка колёс шифрмашины "Энигма"
- М15. Число возможных отражателей шифрмашины "Энигма"
- М16. Вероятность одноключевых сообщений для "Энигмы"
- М17. Среднее число индикаторов, необходимое для построения полных цепочек
- Глава 10 м18. Число возможных барабанов шифрмашины "Хагелин"
- М19. Максимальная кратность значения зацепления, которая может встретиться при вычислении разности гаммы шифрмашины "Хагелин"
- M20. Определение смещения шифрмашины "Хагелин" с помощью коэффициента корреляции
- Глава 13 m21. (Порядок роста количества простых чисел)
- M22. Вычисление остатка с использованием модульной арифметики
- М23. Доказательство теоремы Ферма-Эйлера
- М24. Нахождение чисел, "предположительно" являющихся простыми
- M25. Алгоритм Евклида
- М26. Эффективность возведения в степень методом последовательного возведения в квадрат
- М27. Число ложных ответов при дешифровании des-алгоритма методом "встречного поиска "
- М28. Криптография эллиптической кривой
- Решения задач Глава 2
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- Глава 7
- Глава 8
- Глава 9
- Глава 10
- Глава 11
- Глава 13
- Литература
- Глава 1
- Глава 2
- Глава 3
- Глава 4
- Глава 5
- Глава 6
- Глава 7
- Глава 8
- Глава 9
- Глава 10
- Глава 11
- Глава 12
- Глава 13