Урок 4. Модульная арифметика
Криптография
Ты уже сталкивался с ней в уроке 1, когда буквы «заворачивались» через конец алфавита. Это и есть арифметика остатков — способ считать «по кругу». Именно на ней стоит вся современная криптография, так что этот урок — фундамент для RSA и Диффи–Хеллмана.
🎯 Что ты узнаешь
- Что такое «арифметика часов» и запись по модулю.
- Как складывать и умножать по модулю.
- Что такое обратный элемент по модулю.
- Как быстро возводить в степень по модулю (даже огромную).
📖 Разбираемся в теме
Арифметика часов
Посмотри на циферблат часов. Если сейчас 10 часов и пройдёт 5 часов — будет не 15, а 3 часа. Мы посчитали , а потом «завернулись»: . Часы работают по модулю 12.
📌 Запомни: — это остаток от деления на . Например, , потому что . Число называют модулем.
Говорят, что два числа сравнимы по модулю m, если у них одинаковый остаток. Пишут: (читается «17 сравнимо с 2 по модулю 5»).
Сложение и умножение по модулю
Главное удобство: остаток можно брать в любой момент — хоть в конце, хоть по ходу дела, результат один и тот же.
Пример по модулю 7:
- .
- .
💡 Чтобы не иметь дела с большими числами, бери остаток пораньше. Например, : считаем , тогда . Не пришлось вычислять 216!
Обратный элемент
В обычной арифметике «обратное к 3» — это , потому что . По модулю дробей нет, но идея та же: обратный к a по модулю m — это такое число , что
Найдём обратный к 3 по модулю 7. Перебираем :
- ✅
Значит, обратный к 3 по модулю 7 — это 5. Записывают .
⚠️ Обратный существует не всегда! Он есть тогда и только тогда, когда и взаимно просты (их наибольший общий делитель равен 1). Например, у 2 нет обратного по модулю 4, потому что : сколько ни умножай 2 на что-нибудь, по модулю 4 единицу не получишь.
Обратный элемент — ключевая деталь RSA: именно так закрытый ключ «отменяет» действие открытого.
Быстрое возведение в степень
В криптографии постоянно приходится считать что-то вроде . Умножать 7 само на себя 13 раз долго, а числа получаются гигантские. Есть трюк — возведение в степень через квадраты.
Идея: чтобы получить , разложим показатель по степеням двойки: . Значит
А степени получаются последовательным возведением в квадрат — каждый раз беря остаток, чтобы числа не разрастались.
Посчитаем :
- (256 = 7·33 + 25)
- (625 = 18·33 + 31)
Теперь . Считаем по шагам:
- (775 = 23·33 + 16)
- (112 = 3·33 + 13)
Итог: . ✅
🤔 А знаешь ли ты? Чтобы возвести число в степень с 1000-значным показателем (как в реальном RSA), наивный способ потребовал бы больше умножений, чем атомов во Вселенной. А метод квадратов справляется примерно за пару тысяч умножений — компьютер делает это мгновенно.
✍️ Разбор примера
Задача: найди обратный к 5 по модулю 11.
Ищем , при котором :
- ✅
Ответ: . Проверка: . ✅
📝 Задачи
- Вычисли: .
- Вычисли: .
- Который час покажут часы (модуль 12), если сейчас 9, и пройдёт 20 часов?
- Найди обратный к 4 по модулю 9.
- Объясни, почему у числа 6 нет обратного по модулю 9.
- Вычисли методом квадратов (или как удобнее).
- Вычисли . (Подсказка: посмотри, чему равно , — это сильно упростит дело.)
- Со звёздочкой. Докажи, что если , то и .