Как модульная арифметика защищает данные: лекция Анкура Мойтры в MIT

MIT OpenCourseWare 1,7 тыс. 1 ч 18 мин 12 мин 17.12.2025
Главное

В лекции MIT OpenCourseWare профессор Анкур Мойтра раскрывает фундаментальные принципы модульной арифметики и её неожиданные применения в современных компьютерных науках. Отталкиваясь от привычных школьных правил деления, спикер демонстрирует, как «часовая математика» обеспечивает безопасность в криптографии и эффективность при передаче данных. Основной сюжет занятия строится вокруг алгоритмов поиска наибольшего общего делителя, доказательства ключевых теорем теории чисел и разбора концепций с нулевым разглашением.

⏰ Что такое модульная арифметика и «часовая математика» 0:00

Модульную арифметику проще всего определить как математику взаимосвязей между числами. Некоторые базовые проявления этой системы знакомы каждому со времён начальной школы. Например, всем известно, что сложение чётного и нечётного чисел всегда даёт нечётный результат, а сумма двух чётных чисел всегда чётна. Профессор Анкур Мойтра подчёркивает, что эти элементарные правила представляют собой не что иное, как арифметику по модулю 2.

Суть данного подхода заключается в том, что при вычислениях учитываются исключительно остатки, получаемые при делении на заданное число. Для формализации этого принципа вводится базовое математическое определение. Два целых числа $a$ и $b$ называются сравнимыми по модулю $n$, если их разность делится на $n$ без остатка. Математически это записывается в виде выражения:

$$a \equiv b \pmod n$$

В повседневной жизни модульную арифметику часто называют «часовой математикой». Если представить циферблат часов, то числа в такой системе ведут себя циклично. Главным инструментом для работы с остатками выступает классический алгоритм деления (следствие деления «уголком»). Согласно этому правилу, для любого целого числа $a$ и строго положительного делителя $n$ существует единственная пара целых чисел $q$ (частное) и $r$ (остаток), удовлетворяющая равенству:

$$a = qn + r$$

При этом остаток $r$ строго ограничен: он должен быть не меньше 0 и строго меньше делителя $n$, то есть находиться в диапазоне от 0 до $n - 1$. Это базовое ограничение помогает структурировать вычисления и переходить от бесконечного ряда целых чисел к конечному набору остатков.

📜 Ключевая лемма и правила умножения по модулю 4:31

Для полноценного использования модульной арифметики необходимо доказать важную лемму. Утверждение гласит, что выражение $a \equiv b \pmod n$ истинно тогда и только тогда, когда остаток от деления $a$ на $n$ в точности равен остатку от деления $b$ на $n$. Профессор Мойтра предлагает разобрать доказательство этой эквивалентности в обоих направлениях, чтобы продемонстрировать строгость математического аппарата.

Сначала доказывается обратное утверждение. Если предположить, что остатки равны, то числа можно представить в виде:

$$a = qn + r$$ $$b = q'n + r$$

При вычитании одного уравнения из другого остатки $r$ взаимно уничтожаются. В результате получается выражение $a - b = (q - q')n$. Поскольку разность частных $(q - q')$ является целым числом, разность $a - b$ оказывается кратна $n$, что полностью соответствует определению сравнимости по модулю.

Прямое утверждение доказывается аналогично, методом от противного. Предполагается, что $a$ и $b$ сравнимы, но имеют разные остатки $r$ и $r'$. Разность чисел приобретает вид:

$$a - b = (q - q')n + (r - r')$$

Поскольку $a - b$ делится на $n$, выражение $(r - r')$ также должно делиться на $n$. Однако разность двух остатков, каждый из которых строго меньше $n$, физически может находиться только в строгом интервале от $-n$ до $n$. Единственным числом в этом промежутке, которое делится на $n$, является 0. Следовательно, $r - r' = 0$, и остатки совпадают.

Визуализировать эту концепцию можно с помощью круга, напоминающего циферблат. Например, если расположить на окружности числа от 0 до 6 (модуль 7), то числа 5 и 12 попадут в одну и ту же точку. Число 12 делает один полный оборот вокруг воображаемых часов и останавливается на отметке 5. В модульной арифметике такие числа не различаются и относятся к одному классу эквивалентности.

Операции сложения и умножения по модулю выполняются стандартным образом. Например, если необходимо перемножить числа 10 (сравнимое с 3 по модулю 7) и 12 (сравнимое с 5 по модулю 7), можно пойти двумя путями:

Таким образом, для выполнения арифметических действий реальные значения чисел не имеют значения — важны только их остатки по заданному модулю. Алгебраическую структуру множества остатков по модулю 7 (обозначаемую как $\mathbb{Z}_7$) можно представить в виде таблиц сложения и умножения. В этой структуре сохраняются все привычные свойства обычной арифметики:

🔒 Криптография и доказательства с нулевым разглашением 18:08

Модульная арифметика служит фундаментом для многих разделов компьютерных наук, включая криптографию. Одним из самых ярких и весёлых примеров её применения являются протоколы доказательства с нулевым разглашением (Zero-Knowledge Proofs), концепция которых была разработана именно в Массачусетском технологическом институте (MIT).

Чтобы объяснить суть протокола доступным языком, профессор разыгрывает интерактивную сцену с аудиторией. Представьте ситуацию: двое друзей хотят посмотреть в выходные какой-нибудь «постыдный» фильм (в качестве примера студенты выбрали киноленту «Морбиус», отметив, что она настолько плоха, что стала культовой). Никто из друзей не хочет открыто признаваться в симпатии к этому фильму, опасаясь насмешек в случае несовпадения вкусов. Им нужен способ узнать, взаимен ли их интерес, сохранив при этом «правдоподобное отрицание» на случай отказа.

Для решения этой задачи Анкур Мойтра использует колоду из пяти карт, в которой три карты имеют красную рубашку (или масть), а две — чёрную. Профессор раздаёт двум добровольцам из зала по одной чёрной и одной красной карте, а оставшуюся красную карту кладёт по центру стола. Правила игры следующие:

После того как карты выложены рубашкой вверх, профессор собирает их в единую стопку и просит каждого участника случайно «сдвинуть» (снять) колоду несколько раз. Этот циклический сдвиг аналогичен вращению стрелки на часах. Если оба студента ответили согласием, то в замкнутом цикле окажутся три красные карты подряд. Если хотя бы один ответил отказом, конфигурация изменится, и подряд будут идти максимум две красные карты.

В ходе демонстрации на лекции совпадения не произошло. При вскрытии карт выяснилось, что один студент ответил «да», а второй — «нет». Однако благодаря случайному циклическому сдвигу колоды никто не может определить, кто именно высказался против. Отказавшийся участник сохранил лицо, а механика «часового» смещения обеспечила полную конфиденциальность данных.

🔄 Поиск мультипликативных обратных элементов 23:39

Переходя к более сложным структурам, профессор Мойтра ставит перед аудиторией ключевой вопрос: всегда ли в модульной арифметике для каждого элемента существует мультипликативный обратный элемент?. В обычной математике обратным для числа $x$ является $1/x$, поскольку их произведение равно 1. По модулю $n$ мультипликативным обратным для числа $a$ называется такое число $s$, что их произведение сравнимо с единицей:

$$a \times s \equiv 1 \pmod n$$

Например, если рассматривать вычисления по модулю 7, то для числа 2 обратным элементом будет 4, так как $2 \times 4 = 8 \equiv 1 \pmod 7$. Соответственно, для 4 обратным элементом будет 2. Аналогично, обратным для числа 5 является 3, поскольку $5 \times 3 = 15 \equiv 1 \pmod 7$. Наличие таких пар критически важно для криптографии, где умножение на число используется для «запутывания» (шифрования) секретного сообщения, а умножение на обратный элемент — для его последующего «распутывания» (дешифрования).

Для небольших модулей (например, 7) можно составить полную таблицу умножения и найти единицы в каждой строке. Но если модуль представляет собой гигантское 32-значное число, ручной перебор становится невозможным. Возникает необходимость в математической теории, которая гарантирует существование обратного элемента и указывает эффективный способ его поиска.

Для формулирования этой теории вводится понятие наибольшего общего делителя (НОД) — максимального целого числа, на которое без остатка делятся оба заданных числа $a$ и $b$. Простой и неэффективный способ вычисления НОД заключается в переборе всех чисел от 1 до меньшего из аргументов, однако компьютерные системы древности и современности опираются на гораздо более быстрый метод — алгоритм Евклида.

🧮 Алгоритм Евклида и его расширенная версия 29:54

В основе алгоритма Евклида лежат две структурные леммы. Первая лемма утверждает: если число $b$ больше или равно $a$, то наибольший общий делитель пары $(a, b)$ в точности равен наибольшему общему делителю пары $(a, b - a)$.

Доказательство строится на очевидном факте: если целое число $k$ делит $a$ и делит $b$, то оно обязано делить и их разность $(b - a)$. Из этого логически следует, что любой общий делитель первой пары является делителем и для второй пары, а значит, $\gcd(a, b) \le \gcd(a, b - a)$. Проведя аналогичные рассуждения в обратную сторону (ведь $b = (b - a) + a$), математики получают зеркальное неравенство $\gcd(a, b - a) \le \gcd(a, b)$, что доказывает их полное равенство.

Вторая лемма предлагает сделать качественный шаг вперёд: вместо последовательного вычитания одного числа из другого можно сразу перейти к делению с остатком. Математически это записывается как:

$$\gcd(a, b) = \gcd(a, b \pmod a)$$

Профессор поясняет, что этот шаг представляет собой просто многократное применение первой леммы. Вместо того чтобы отнимать число $a$ по одному разу, мы за один шаг вычитаем сразу $q$ копий числа $a$, сокращая вычисления до минимума. Это даёт колоссальное ускорение: если числа близки, шаг деления мгновенно уменьшает их значения, а если далеки — большее число резко сокращается до размеров остатка.

В качестве живого примера на доске рассчитывается НОД для чисел 46 и 360:

  1. $\gcd(46, 360)$ превращается в $\gcd(46, 38)$, так как $360 \pmod{46} = 38$.
  2. $\gcd(46, 38)$ превращается в $\gcd(8, 38)$, так как $46 \pmod{38} = 8$.
  3. $\gcd(8, 38)$ превращается в $\gcd(8, 6)$, так как $38 \pmod 8 = 6$.
  4. $\gcd(8, 6)$ превращается в $\gcd(2, 6)$, так как $8 \pmod 6 = 2$.
  5. $\gcd(2, 6)$ превращается в $\gcd(2, 0)$, поскольку 6 делится на 2 без остатка.

Алгоритм останавливается, выдавая ответ 2. Чтобы связать этот процесс с поиском обратных элементов, необходимо использовать расширенный алгоритм Евклида. Его суть заключается в ведении дополнительного учёта: на каждом шаге деления математики записывают, какое именно кратное числа было вычтено, выражая промежуточные остатки через линейную комбинацию исходных чисел.

В конечном итоге расширенный алгоритм позволяет найти такие целые коэффициенты $s$ и $t$, при которых выполняется тождество Безу (лемма 3):

$$sa + tb = \gcd(a, b)$$

Данное выражение служит неопровержимым «сертификатом» правильности ответа. Если бы существовал некий делитель $K$, который больше полученного значения НОД, то при делении левой части уравнения на $K$ должно было получиться целое число, однако правая часть равенства сделала бы это невозможным.

Связь с мультипликативным обратным элементом становится очевидной, если рассмотреть пример с числом 4 по модулю 7. Поскольку 7 — простое число, их НОД равен 1. Расширенный алгоритм Евклида позволяет найти коэффициенты для уравнения $4s + 7t = 1$. Если взять это выражение по модулю 7, слагаемое $7t$ обнулится, и мы получим $4s \equiv 1 \pmod 7$. Число $s$ и будет искомым обратным элементом. Данное правило гарантирует: любой элемент имеет мультипликативный обратный элемент тогда и только тогда, когда он взаимно прост с модулем вычислений.

🪙 Загадка о золотых монетах и Китайская теорема об остатках 54:20

В финальной части лекции профессор Мойтра предлагает студентам старинную математическую загадку. Представьте сундук с сокровищами, доверху наполненный золотыми монетами. Известно два факта:

Перед аудиторией ставится задача найти наименьшее возможное количество монет в сундуке. В терминах модульной арифметики эта загадка формулируется как система из двух уравнений с неизвестным числом $n$:

$$n \equiv 4 \pmod 5$$ $$n \equiv 1 \pmod 7$$

Путём несложного подбора можно быстро найти ответ — 29 монет. Однако за этой простой задачей скрывается один из древнейших математических законов — Китайская теорема об остатках, впервые сформулированная китайским математиком Сунь Цзы Суанем в IV веке нашей эры.

Теорема строго утверждает: если числа $a$ и $b$ взаимно просты (их НОД равен 1), то для любых заданных остатков $r$ и $s$ система уравнений имеет ровно одно уникальное решение в диапазоне от 0 до $a \times b - 1$. Между целыми числами из этого интервала и парами возможных остатков существует взаимно однозначное соответствие — биекция. Это можно представить в виде двудольного графа, где каждое число соединено ровно с одной парой остатков.

Доказательство теоремы проводится методом от противного. Предположим, что существуют два разных решения, $x$ и $y$, лежащих в указанном диапазоне, остатки которых совпадают. В таком случае разность $(x - y)$ должна одновременно делиться и на $a$, и на $b$. Поскольку $a$ и $b$ взаимно просты, их произведение $(a \times b)$ также обязано делить разность $(x - y)$. Однако два различных числа, находящихся в границах от 0 до $a \times b - 1$, физически не могут отличаться друг от друга на величину, равную или превышающую их произведение. Полученное противоречие полностью доказывает истинность теоремы.

Для нахождения решения системы уравнений в общем виде применяется пошаговая алгебраическая процедура. Сначала неизвестное число записывается через его деление на один из модулей: $n = kb + t$. Затем к обеим частям равенства применяется операция взятия остатка по второму модулю $a$:

$$kb + t \equiv s \pmod a$$

Путём несложного переноса слагаемых выражение преобразуется к виду $kb \equiv s - t \pmod a$. Чтобы изолировать неизвестную переменную $k$, обе части уравнения умножаются на мультипликативный обратный элемент для $b$ по модулю $a$ (существование которого гарантировано взаимной простотой чисел). Итоговая формула для вычисления коэффициента приобретает законченный вид:

$$k \equiv b^{-1}(s - t) \pmod a$$

📡 Фонтанные коды и раздача контента 1:14:08

В завершение занятия профессор приводит пример практического использования Китайской теоремы об остатках в современных интернет-технологиях, а именно в концепции фонтанных кодов (Fountain Codes), применяемых для стриминга данных.

Представьте огромный файл, содержание которого можно закодировать в виде одного колоссального целого числа $n$. Этот файл одновременно пытаются скачать или посмотреть в режиме онлайн тысячи пользователей (например, в момент выхода нового сезона популярного сериала). Вместо того чтобы отправлять каждому пользователю копию файла целиком, сервер начинает непрерывно транслировать в сеть бесконечный поток маленьких фрагментов — остатков от деления числа $n$ на различные простые числа $a_i$.

Пользовательские устройства улавливают эти сообщения из сети. Согласно принципам Китайской теоремы об остатках, как только устройство соберёт достаточное количество фрагментов, произведение модулей $\prod a_i$ которых превысит размер исходного файла $n$, оно сможет мгновенно восстановить исходный файл целиком.

Этот подход метафорически сравнивается с питьевым фонтанчиком, который непрерывно разбрызгивает капли воды во всех направлениях. Любому человеку достаточно подойти со своей бутылкой и дождаться, пока она наполнится до краёв. При этом абсолютно неважно, какие именно капли попали в бутылку. Точно так же устройствам пользователей при скачивании файла не нужно запрашивать конкретные недостающие пакеты данных — им достаточно набрать любой необходимый объём уникальных остатков из общего потока, чтобы полностью восстановить цифровую информацию.

💬 Цитаты

«Модульная арифметика — это отличный способ добиться многого, особенно в компьютерных науках.»

Анкур Мойтра 18:08

«Вам не нужно доверять моей работе, потому что найденные s и t являются доказательством того, что я нашёл наибольший возможный НОД.»

Анкур Мойтра 48:37
👥 Спикер
🎬 Упомянутые фильмы и сериалы
🔗 Упомянутые сайты и проекты
📖 Термины
Модульная арифметика
Арифметическая система, работающая с остатками от деления чисел на фиксированное число (модуль).
Алгоритм Евклида
Эффективный метод вычисления наибольшего общего делителя (НОД) двух целых чисел через последовательное деление с остатком.
Мультипликативный обратный элемент
Число, которое при умножении на данное число по заданному модулю даёт остаток, равный единице.
Доказательство с нулевым разглашением
Криптографический протокол, позволяющий одной стороне подтвердить истинность утверждения перед другой стороной, не раскрывая никакой дополнительной информации.
Фонтанные коды
Класс кодов стирания, позволяющих восстанавливать исходные файлы из любого достаточного объёма непрерывно передаваемых фрагментов.
📊 Цифры
🗓 Хронология
  1. IV век Китайский математик Сунь Цзы Суань сформулировал утверждение, лёгшее в основу Китайской теоремы об остатках.
Математика и физика Анкур Мойтра модульная арифметика алгоритм Евклида Китайская теорема об остатках фонтанные коды