В математике , особенно в области арифметики , модульное мультипликативное обратное целое число a — это целое число x, такое, что произведение ax сравнимо с 1 по модулю m . [1] В стандартной нотации модульной арифметики это сравнение записывается как
что является сокращенным способом записи утверждения, что m делит (нацело) величину ax − 1 , или, другими словами, остаток после деления ax на целое число m равен 1. Если a имеет обратное по модулю m , то существует бесконечное число решений этого сравнения, которые образуют класс сравнения относительно этого модуля. Более того, любое целое число, которое сравнимо с a (т.е. находится в классе сравнения a ), имеет любой элемент класса сравнения x как модульный мультипликативный обратный. Используя обозначение для указания класса сравнения, содержащего w , это можно выразить, сказав, что модульный мультипликативный обратный класс сравнения является классом сравнения, таким что:
где символ обозначает умножение классов эквивалентности по модулю m . [2] Записанная таким образом аналогия с обычным понятием мультипликативной инверсии в наборе рациональных или действительных чисел наглядно представлена, заменяя числа классами конгруэнтности и изменяя бинарную операцию соответствующим образом.
Как и в случае с аналогичной операцией над действительными числами, основное применение этой операции заключается в решении, когда это возможно, линейных сравнений вида
Нахождение модульных мультипликативных обратных чисел также имеет практическое применение в области криптографии , например, в криптографии с открытым ключом и алгоритме RSA . [3] [4] [5] Преимущество компьютерной реализации этих приложений заключается в том, что существует очень быстрый алгоритм ( расширенный алгоритм Евклида ), который можно использовать для вычисления модульных мультипликативных обратных чисел.
Для данного положительного целого числа m два целых числа a и b называются конгруэнтными по модулю m, если m делит их разность. Это бинарное отношение обозначается как,
Это отношение эквивалентности на множестве целых чисел, , а классы эквивалентности называются классами конгруэнтности по модулю m или классами вычетов по модулю m . Пусть обозначает класс конгруэнтности, содержащий целое число a , [6] тогда
Линейная конгруэнция — это модульная конгруэнция вида
В отличие от линейных уравнений над вещественными числами, линейные сравнения могут иметь ноль, одно или несколько решений. Если x является решением линейного сравнения, то каждый элемент в также является решением, поэтому, говоря о числе решений линейного сравнения, мы имеем в виду число различных классов сравнения, которые содержат решения.
Если d — наибольший общий делитель a и m , то линейное сравнение ax ≡ b (mod m ) имеет решения тогда и только тогда, когда d делит b . Если d делит b , то существует ровно d решений. [7]
Модульное мультипликативное обратное целое число a относительно модуля m является решением линейного сравнения
Предыдущий результат говорит, что решение существует тогда и только тогда, когда gcd( a , m ) = 1 , то есть a и m должны быть взаимно простыми (т.е. взаимно простыми). Более того, когда это условие выполняется, существует ровно одно решение, т.е. когда оно существует, модульное мультипликативное обратное является уникальным: [8] Если b и b' являются модульными мультипликативными обратными a относительно модуля m , то
поэтому
Если a ≡ 0 (mod m ) , то gcd( a , m ) = a , и a даже не будет иметь модульного мультипликативного обратного. Следовательно, b ≡ b' (mod m ) .
Когда ax ≡ 1 (mod m ) имеет решение, его часто обозначают следующим образом:
но это можно считать злоупотреблением обозначениями , поскольку это может быть неверно истолковано как обратная величина (которая, в отличие от модульного мультипликативного обратного числа, не является целым числом, за исключением случаев, когда a равно 1 или -1). Обозначение будет правильным, если a интерпретируется как токен, обозначающий класс конгруэнтности , поскольку мультипликативный обратный класс конгруэнтности является классом конгруэнтности с умножением, определенным в следующем разделе.
Отношение конгруэнтности по модулю m разбивает множество целых чисел на m классов конгруэнтности. Операции сложения и умножения могут быть определены для этих m объектов следующим образом: чтобы либо сложить, либо умножить два класса конгруэнтности, сначала выберите представителя (любым способом) из каждого класса, затем выполните обычную операцию для целых чисел над двумя представителями и, наконец, возьмите класс конгруэнтности, в котором лежит результат целочисленной операции, как результат операции над классами конгруэнтности. В символах, с и представляющими операции над классами конгруэнтности, эти определения имеют вид
и
Эти операции четко определены , что означает, что конечный результат не зависит от выбора представителей, сделанного для получения результата.
Классы конгруэнтности m с этими двумя определенными операциями образуют кольцо , называемое кольцом целых чисел по модулю m . Для этих алгебраических объектов используется несколько обозначений, чаще всего или , но несколько элементарных текстов и областей применения используют упрощенное обозначение, когда путаница с другими алгебраическими объектами маловероятна.
Классы конгруэнтности целых чисел по модулю m традиционно назывались классами вычетов по модулю m , что отражает тот факт, что все элементы класса конгруэнтности имеют одинаковый остаток (т. е. «остаток») при делении на m . Любой набор из m целых чисел, выбранных так, что каждый из них происходит из другого класса конгруэнтности по модулю m , называется полной системой вычетов по модулю m . [9] Алгоритм деления показывает, что набор целых чисел {0, 1, 2, ..., m − 1} образует полную систему вычетов по модулю m , известную как наименьшая система вычетов по модулю m . При работе с арифметическими задачами иногда удобнее работать с полной системой вычетов и использовать язык конгруэнтности, в то время как в других случаях точка зрения классов конгруэнтности кольца более полезна. [10]
Не каждый элемент полной системы вычетов по модулю m имеет модульную мультипликативную обратную, например, ноль никогда не имеет. После удаления элементов полной системы вычетов, которые не являются взаимно простыми с m , то, что остается, называется сокращенной системой вычетов , все элементы которой имеют модульные мультипликативные обратные. Число элементов в сокращенной системе вычетов равно , где — функция Эйлера тотиента , т. е. число положительных целых чисел, меньших m , которые являются взаимно простыми с m .
В общем кольце с единицей не каждый элемент имеет мультипликативную обратную , и те, которые имеют, называются единицами . Поскольку произведение двух единиц является единицей, единицы кольца образуют группу , группу единиц кольца и часто обозначаются как R ×, если R — имя кольца. Группа единиц кольца целых чисел по модулю m называется мультипликативной группой целых чисел по модулю m и изоморфна приведенной системе вычетов. В частности, она имеет порядок (размер), .
В случае, если m — простое число , скажем, p , то и все ненулевые элементы имеют мультипликативные обратные, таким образом, является конечным полем . В этом случае мультипликативная группа целых чисел по модулю p образует циклическую группу порядка p − 1 .
Для любого целого числа всегда имеет место модульное мультипликативное обратное по отношению к модулю , так как . Примерами являются , , и так далее.
В следующем примере используется модуль 10: два целых числа сравнимы по модулю 10 тогда и только тогда, когда их разность делится на 10, например
Некоторые из десяти классов конгруэнтности относительно этого модуля:
Линейное сравнение 4 x ≡ 5 (mod 10) не имеет решений, поскольку все целые числа, сравнимые с 5 (т. е. те, что в ), нечетные, а 4 x всегда четное. Однако линейное сравнение 4 x ≡ 6 (mod 10) имеет два решения, а именно, x = 4 и x = 9 . НОД(4, 10) = 2 , и 2 не делит 5, но делит 6.
Так как gcd(3, 10) = 1 , то линейное сравнение 3 x ≡ 1 (mod 10) будет иметь решения, то есть будут существовать модульные мультипликативные обратные числа 3 по модулю 10. Фактически, 7 удовлетворяет этому сравнению (т. е. 21 − 1 = 20). Однако другие целые числа также удовлетворяют сравнению, например, 17 и −3 (т. е. 3(17) − 1 = 50 и 3(−3) − 1 = −10). В частности, каждое целое число из будет удовлетворять сравнению, так как эти целые числа имеют вид 7 + 10 r для некоторого целого числа r и
делится на 10. Это сравнение имеет только один класс решений сравнения. Решение в этом случае можно было бы получить, проверив все возможные случаи, но для больших модулей понадобятся систематические алгоритмы, и они будут даны в следующем разделе.
Произведение классов конгруэнтности и может быть получено путем выбора элемента из , скажем, 25, и элемента из , скажем, −2, и наблюдения того, что их произведение (25)(−2) = −50 находится в классе конгруэнтности . Таким образом, . Сложение определяется аналогичным образом. Десять классов конгруэнтности вместе с этими операциями сложения и умножения классов конгруэнтности образуют кольцо целых чисел по модулю 10, т.е. .
Полная система вычетов по модулю 10 может быть множеством {10, −9, 2, 13, 24, −15, 26, 37, 8, 9}, где каждое целое число находится в другом классе конгруэнтности по модулю 10. Единственная наименьшая система вычетов по модулю 10 — это {0, 1, 2, ..., 9}. Приведенная система вычетов по модулю 10 может быть {1, 3, 7, 9}. Произведение любых двух классов конгруэнтности, представленных этими числами, снова является одним из этих четырех классов конгруэнтности. Это означает, что эти четыре класса конгруэнтности образуют группу, в данном случае циклическую группу порядка четыре, имеющую либо 3, либо 7 в качестве (мультипликативного) генератора. Представленные классы конгруэнтности образуют группу единиц кольца . Эти классы конгруэнтности являются именно теми, которые имеют модульные мультипликативные обратные.
Модульное мультипликативное обратное число по модулю m можно найти с помощью расширенного алгоритма Евклида.
Алгоритм Евклида определяет наибольший общий делитель (НОД) двух целых чисел, скажем, a и m . Если a имеет мультипликативную обратную по модулю m , этот НОД должен быть равен 1. Последнее из нескольких уравнений, полученных алгоритмом, может быть решено для этого НОД. Затем, используя метод, называемый «обратной подстановкой», можно получить выражение, связывающее исходные параметры и этот НОД. Другими словами, можно найти целые числа x и y , удовлетворяющие тождеству Безу ,
Переписано, это
то есть,
Итак, была вычислена модульная мультипликативная обратная величина a . Более эффективной версией алгоритма является расширенный алгоритм Евклида, который с помощью вспомогательных уравнений сокращает два прохода по алгоритму (обратную подстановку можно рассматривать как проход по алгоритму в обратном направлении) до одного.
В нотации O большой этот алгоритм выполняется за время O(log 2 ( m )) , предполагая, что | a | < m , и считается очень быстрым и, как правило, более эффективным, чем его альтернатива — возведение в степень.
В качестве альтернативы расширенному алгоритму Евклида для вычисления модульных обратных величин можно использовать теорему Эйлера. [11]
Согласно теореме Эйлера , если a взаимно просто с m , то есть gcd( a , m ) = 1 , то
где — функция Эйлера . Это следует из того факта, что a принадлежит мультипликативной группе × тогда и только тогда, когда a взаимно просто с m . Следовательно, модульная мультипликативная обратная может быть найдена напрямую:
В частном случае, когда m — простое число, а модульное обратное число задается формулой
Этот метод обычно медленнее, чем расширенный алгоритм Евклида, но иногда используется, когда реализация для модульного возведения в степень уже доступна. Некоторые недостатки этого метода включают:
Одним из заметных преимуществ этого метода является то, что нет никаких условных ветвей, которые зависят от значения a , и, таким образом, значение a , которое может быть важным секретом в криптографии с открытым ключом , может быть защищено от атак по сторонним каналам . По этой причине стандартная реализация Curve25519 использует этот метод для вычисления инверсии.
Можно вычислить обратное число нескольких чисел a i по общему модулю m с помощью одного вызова алгоритма Евклида и трех умножений на каждый дополнительный вход. [12] Основная идея состоит в том, чтобы сформировать произведение всех a i , инвертировать его, а затем умножить на a j для всех j ≠ i, чтобы оставить только желаемое a−1
я.
Более конкретно, алгоритм выглядит следующим образом (все арифметические действия выполняются по модулю m ):
Можно выполнять умножения в древовидной структуре, а не линейно, используя параллельные вычисления .
Нахождение модульной мультипликативной инверсии имеет множество применений в алгоритмах, которые опираются на теорию модульной арифметики. Например, в криптографии использование модульной арифметики позволяет выполнять некоторые операции быстрее и с меньшими требованиями к памяти, в то время как другие операции становятся более сложными. [13] Обе эти функции могут быть использованы с выгодой. В частности, в алгоритме RSA шифрование и дешифрование сообщения выполняется с использованием пары чисел, которые являются мультипликативными инверсиями относительно тщательно выбранного модуля. Одно из этих чисел становится общедоступным и может использоваться в быстрой процедуре шифрования, в то время как другое, используемое в процедуре дешифрования, хранится скрытым. Определение скрытого числа из общедоступного числа считается вычислительно невыполнимым, и именно это заставляет систему работать для обеспечения конфиденциальности. [14]
В качестве другого примера в другом контексте рассмотрим задачу точного деления в информатике, где у вас есть список нечетных чисел размером с слово, каждое из которых делится на k , и вы хотите разделить их все на k . Одно из решений следующее:
На многих машинах, особенно без аппаратной поддержки деления, деление — более медленная операция, чем умножение, поэтому этот подход может дать значительное ускорение. Первый шаг относительно медленный, но его нужно сделать только один раз.
Модульные мультипликативные обратные числа используются для получения решения системы линейных сравнений, которое гарантируется китайской теоремой об остатках .
Например, система
имеет общие решения, так как 5,7 и 11 являются попарно взаимно простыми . Решение дается формулой
где
Таким образом,
и в его уникальной сокращенной форме
поскольку 385 является НОК чисел 5,7 и 11.
Кроме того, модульная мультипликативная обратная величина играет важную роль в определении суммы Клостермана .