Урок 6. Идея RSA
Криптография
Диффи–Хеллман позволяет договориться о секрете. А RSA идёт дальше: он даёт каждому два ключа — один открытый, чтобы тебе писали, и один закрытый, чтобы читать мог только ты. Именно на RSA (и его родственниках) держатся банки, мессенджеры и электронные подписи. Сегодня ты соберёшь работающий RSA из маленьких чисел своими руками.
🎯 Что ты узнаешь
- Почему перемножить два простых легко, а разложить обратно — трудно.
- Что такое открытый и закрытый ключи.
- Как устроено шифрование и дешифрование в RSA.
- Соберёшь маленький, но настоящий пример и проверишь его.
📖 Разбираемся в теме
Односторонняя дверь
Перемножить два простых числа проще простого: . А теперь наоборот — тебе дали число 33 и просят найти множители. Для 33 легко. Но если дать произведение двух 200-значных простых, то разложить его обратно не сможет ни один суперкомпьютер за время жизни Вселенной.
📌 Запомни: RSA стоит на асимметрии: умножать простые легко, а раскладывать произведение (факторизовать) — трудно. Это «односторонняя дверь»: пройти в одну сторону просто, обратно — почти нельзя.
Открытый и закрытый ключ
У каждого человека есть пара ключей:
- Открытый ключ — его можно публиковать где угодно. Им шифруют сообщения тебе.
- Закрытый ключ — только твой, хранится в тайне. Только им можно расшифровать.
Это как почтовый ящик: щель для писем видна всем (открытый ключ, любой бросит письмо), а ключ от дверцы — только у тебя (закрытый ключ).
Как строят ключи
- Берут два простых и , считают .
- Считают (это «функция Эйлера» от n; для нас — просто число).
- Выбирают открытую экспоненту , взаимно простую с .
- Находят закрытую экспоненту — обратный к по модулю (из урока 4!): .
- Открытый ключ: пара .
- Закрытый ключ: число .
Шифрование и дешифрование
Сообщение — это число (меньше ). Тогда:
Магия в том, что возведение сначала в степень , а потом в степень возвращает исходное число — потому что и подобраны как взаимно обратные по модулю .
Собираем настоящий пример
Возьмём совсем маленькие простые:
- , → .
- .
- Выберем . Проверим: — годится.
- Найдём : нужно . Перебираем: . Значит .
Итак: открытый ключ , закрытый ключ .
Зашифруем число :
, значит .
Расшифруем :
Считаем по шагам (с остатками): , а , значит . Тогда , и , то есть .
Получили обратно 2 — исходное сообщение! ✅ RSA работает.
💡 Проверим шифр ещё на паре чисел (открытый ключ (33,7), закрытый d=3):
- : , обратно . ✅
- : , обратно . ✅
Зачем это в интернете
Когда ты заходишь на сайт банка, он присылает тебе свой открытый ключ. Твой браузер шифрует им секрет — и расшифровать его сможет только банк своим закрытым ключом. Никто по дороге, даже провайдер, прочитать не может. Так работает защищённое соединение (https), в котором RSA и его родня играют главную роль.
🤔 А знаешь ли ты? Буквы RSA — это фамилии трёх учёных: Ривест, Шамир и Адлеман, опубликовавших схему в 1977 году. Позже выяснилось, что похожую идею несколькими годами раньше придумал британский математик Клиффорд Кокс, но его работа была засекречена разведкой и вышла на свет лишь в 1997-м.
⚠️ Наш пример с ломается мгновенно: любой сразу увидит, что , и вычислит . Безопасность появляется только при огромных и . Маленькие числа мы взяли, чтобы всё можно было посчитать на бумаге.
✍️ Разбор примера
Задача: с открытым ключом и закрытым зашифруй число и расшифруй результат обратно.
Шифрование: .
- (256 = 7·33 + 25)
- .
- (400 = 12·33 + 4), затем .
Значит .
Дешифрование: .
- , затем .
Получили 4 — исходное число. ✅
📝 Задачи
Во всех задачах, где не сказано иное, используй ключи из урока: , , .
- Чему равны и , если , ? Покажи вычисление.
- Проверь, что и действительно взаимно обратны по модулю (то есть ).
- Зашифруй число открытым ключом .
- Расшифруй результат из задачи 3 закрытым ключом и убедись, что получил обратно 8.
- Зашифруй число . (Тут будет забавный результат — приглядись к нему.)
- Возьми другие простые: , . Найди и .
- Почему сообщение обязательно должно быть меньше ?
- Со звёздочкой. Объясни своими словами, что именно делает RSA безопасным: почему, зная открытый ключ , злоумышленник всё равно не может найти ?