Процессы зашифрования и расшифрования в системе rsa
Для зашифрования сообщения по методу RSA предполагаемому пользователю необходимо знать значение модуля n(=pq) и ключ зашифрования e - эти величины общедоступны. Значения чисел p и q и ключа расшифрования d известны только "хозяину" используемой системы.
Чтобы зашифровать сообщение, посылаемое "хозяину", и которое только он один и сможет прочесть, пользователь должен:
преобразовать буквы сообщения в числа подобно тому, как это показано в таблице 1.1, получая, к примеру, A=00, B=01, ..., Z=25;
если в записи модуля n не более D цифр, разбить числовое представление сообщения на блоки, в каждом из которых не более D цифр; эти блоки обозначим B1,B2, ...;
последовательно зашифровать блоки независимо друг от друга, вычислив
(BI)e(mod n), I=1,2,... - в результате получаются блоки шифрованного текста C1,C2,...
Шифрованное сообщение записывается C1C2... (в виде последовательности чисел, а не букв).
Процедура расшифрования сообщения в точности та же самая, как и при зашифровании, за исключением того, что теперь преобразуются блоки шифрованного текста CI, а на шаге (4) вместо ключа зашифрования e используется ключ расшифрования d. Из способа получения d следует, что
(CI)d=BI ,
или, другими словами, происходит восстановление исходного сообщения.
Пример 13.3
Зашифровать по системе RSA сообщение
COMEXATXNOON
при n=3127 и ключе зашифрования e=17.
Зашифрование
Преобразуем текст в числа обычным образом по таблице 1.1. Поскольку значение модуля (3127) записывается с помощью четырех цифр, разобьем текст на пары букв следующим образом:
CO ME XA TX NO ON
0214 1204 2300 1923 1314 1413
Теперь необходимо вычислить значения, получаемые при возведении каждого из этих шести четырехзначных чисел в 17-ю степень и приведении по модулю 3127. Производить эти вычисления вручную - дело довольно трудоемкое, и поэтому здесь они приведены в деталях только для первого значения, 0214. Остальные значения легко получить при помощи простой компьютерной программы.
Итак, наша задача состоит в том, чтобы вычислить значение (0214)17(mod 3127). Везде, где это возможно в модульных вычислениях такого типа, мы для нахождения степеней исходного числа будем последовательно возводить его в квадрат, а затем перемножим значения соответствующих степеней. Поскольку 16=24, то, действуя таким образом, мы почти вычислим необходимую нам степень. Итак, вычислим следующие степени:
(214)2=45796=143127+20182018(mod 3127),
откуда
(214)4(2018)2=4072324=13023127+970970(mod 3127),
и
(214)8(970)2=940900=3003127+28002800(mod 3127),
откуда
(214)16(2800)2=7840000=25073127+611611(mod 3127).
Окончательно получаем
(214)17214611=130754=413127+25472547(mod 3127).
Итак, 0214 при зашифровании переходит в 2547.
Остальные блоки текста сообщения шифруются точно так же, то есть возведением каждого четырехзначного числа в степень 17 с приведением по модулю 3127. В результате получается шифрованный текст
2547 3064 2831 0063 2027 1928.
Его нельзя преобразовать обратно в буквы, так как на некоторых местах (на самом деле, в большинстве случаев) получаются двузначные числа больше 25.
Для расшифрования этого шифрованного сообщения получатель ("хозяин") возводит каждое четырехзначное число в степень, задаваемую ключом расшифрования, 2129, и приводит результат по модулю 3127. Поскольку
2129=2048+64+16+1=211+26+24+1,
то в ходе вычислений понадобится возвести каждое четырехзначное число в степени 24, 26 и 211 путем последовательного возведения в квадрат с дельнейшим перемножением нужных нам чисел. С использованием метода "последовательного возведения в квадрат" для вычисления 2129-й степени числа понадобится "всего лишь" по 14 операций умножения и деления, в то время как для прямого подсчета "в лоб" их потребуется более 4000. Далее выполнены операции по расшифрованию четвертого четырехзначного блока из приведенного выше шифрованного текста (т.е. 0063), чтобы продемонстрировать , как именно выполняются подсчеты, и чтобы подтвердить, что в данном случае число 2129 действительно является ключом расшифрования.
Необходимо вычислить значение (63)2129 и найти остаток от его деления на 3127. Из сказанного выше следует, что
(63)2129=(63)2048(63)64(63)16(63)1,
и мы переходим к составлению таблицы степеней числа 63 с показателями 2n до значения n=11 путем последовательного возведения в квадрат. Так как (63)2=3969=3127+842, то в строку таблицы для n=2 мы заносим число 842. Продолжая подобным образом, получаем всю таблицу степеней, которая показана в Таблице 13.1.
Таблица 13.1
n | N=2n | (63)N(mod 3127) |
0 | 1 | 63 |
1 | 2 | 842 |
2 | 4 | 2262 |
3 | 8 | 872 |
4 | 16 | 523 |
5 | 32 | 1480 |
6 | 64 | 1500 |
7 | 128 | 1687 |
8 | 256 | 399 |
9 | 512 | 2851 |
10 | 1024 | 1128 |
11 | 2048 | 2822 |
Для вычисления значения (63)2129(mod 3127) теперь перемножаем четыре числа, стоящие в правом столбце напротив значений n=0,4,6 и 11:
(63)21296352315002822.
Поскольку
63523=32949=103127+16791679(mod 3127),
и
15002822=4233000=13533127+21692169(mod 3127),
и наконец,
16792169=3641751=11643127+19231923(mod 3127),
то в результате расшифрования блока 0063 получается значение 1923. Оно преобразуется в пару букв TX, которая на самом деле является четвертым диграфом исходного сообщения.
Эти вычисления, хотя они и утомительны, могут быть выполнены на карманном калькуляторе. Но в реальных приложениях системы RSA используются числа, гораздо большие по порядку величин, и здесь не обойтись без компьютера со специальным программным обеспечением для обработки подобных чисел. И даже с использованием компьютера жизненно необходимым остается применение техники "последовательного возведения в квадрат" ради сокращения числа операций умножения и деления. В типичном приложении системы RSA, где порядок модуля, скорее всего, не меньше 10100, значение ключа зашифрования или расшифрования легко может оказаться близким к 1050. Поскольку числовые блоки придется возводить в эту степень, то о подсчете "в лоб" речи идти не может. С другой стороны, применяя последовательное возведение в квадрат, мы сокращаем число операций умножения и деления до нескольких сотен, что по времени займет не больше нескольких миллисекунд (см. приложение M26).
- Глава 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