Модульный мультипликативный обратный
В математике , особенно в области арифметики , модульное мультипликативное обратное целое число a представляет собой целое число x произведение ax конгруэнтно такое, что 1 относительно модуля m . [ 1 ] В стандартных обозначениях модульной арифметики это сравнение записывается как
это сокращенный способ записи утверждения о том, что m делит (нацело) количество ax − 1 , или, другими словами, остаток после деления ax на целое число m равен 1. Если a действительно имеет обратный модуль m , то существует представляют собой бесконечное число решений этого сравнения, образующих класс сравнения по этому модулю. Более того, любое целое число, которое конгруэнтно 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 является решением линейного сравнения
Предыдущий результат говорит, что решение существует тогда и только тогда, когда НОД( a , m ) = 1 , то есть a и m должны быть относительно простыми (т.е. взаимно простыми). Более того, когда это условие выполняется, существует ровно одно решение, т. е. когда оно существует, модульное мультипликативное обратное единственное: [ 8 ] Если b и b' оба модулярные мультипликативные инверсии относительно модуля 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 , которые являются относительно простыми с m .
В общем кольце с единицей не каждый элемент имеет мультипликативный обратный , а те, у которых он есть, называются единицами . Поскольку произведение двух единиц является единицей, единицы кольца образуют группу , группу единиц кольца и часто обозначаемую R. × если R — имя кольца. Группа единиц кольца целых чисел по модулю m называется мультипликативной группой целых чисел по модулю m и изоморфна приведенной системе вычетов. В частности, он имеет порядок (размер), .
В случае, когда m — простое число , скажем , p , тогда и все ненулевые элементы имеют мультипликативные обратные, поэтому является конечным полем . В этом случае мультипликативная группа целых чисел по модулю p образует циклическую группу порядка p − 1 .
Пример
[ редактировать ]Для любого целого числа , это всегда так является модульным мультипликативным обратным числом по модулю , с . Примеры: , , и так далее.
В следующем примере используется модуль 10: Два целых числа конгруэнтны по модулю 10 тогда и только тогда, когда их разница делится на 10, например
- так как 10 делит 32 - 2 = 30, и
- так как 10 делит 111 - 1 = 110.
Некоторые из десяти классов сравнения по этому модулю:
- и
Линейное сравнение 4 x ≡ 5 (по модулю 10) не имеет решений, поскольку целые числа, конгруэнтные 5 (т. е. те, которые находятся в ) все нечетны, а 4 x всегда четно. Однако линейное сравнение 4 x ≡ 6 (mod 10) имеет два решения: x = 4 и x = 9 . НОД (4, 10) = 2 и 2 не делят 5, но делят 6.
Поскольку НОД(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 и считается очень быстрым и, как правило, более эффективным, чем его альтернатива — возведение в степень.
Используя теорему Эйлера
[ редактировать ]В качестве альтернативы расширенному алгоритму Евклида теорема Эйлера может использоваться для вычисления обратных модулей. [ 11 ]
Согласно теореме Эйлера , если a взаимно просто с m , то есть НОД( a , m ) = 1 , то
где — это полная функция Эйлера . Это следует из того, что а принадлежит мультипликативной группе × тогда и только тогда, когда a взаимно просто с m . Следовательно, модульный мультипликативный обратный можно найти напрямую:
В частном случае, когда m — простое число, а модульное обратное имеет вид
Этот метод обычно медленнее, чем расширенный алгоритм Евклида, но иногда используется, когда уже доступна реализация модульного возведения в степень. Некоторые недостатки этого метода включают в себя:
- Значение должно быть известно, и наиболее эффективное известное вычисление m факторизации требует . Широко распространено мнение, что факторизация является вычислительно сложной проблемой. Однако расчет простая факторизация m . является простым, когда известна
- Относительная стоимость возведения в степень. Хотя его можно реализовать более эффективно с помощью возведения в степень по модулю большие значения m , когда задействованы , это наиболее эффективно вычисляется с помощью метода приведения Монтгомери , который сам по себе требует модульного обратного модуля m , который и должен был быть рассчитан в первое место. Без метода Монтгомери стандартное двоичное возведение в степень , которое требует деления по модулю m на каждом шаге, является медленной операцией, когда m велико.
Одним из заметных преимуществ этого метода является отсутствие условных ветвей, которые зависят от значения a , и, таким образом, значение a , которое может быть важным секретом в криптографии с открытым ключом , может быть защищено от атак по побочному каналу . По этой причине стандартная реализация Curve25519 использует этот метод для вычисления обратного значения.
Несколько инверсий
[ редактировать ]Можно вычислить обратное к нескольким числам a i по модулю общего m с помощью одного вызова алгоритма Евклида и трех умножений на каждый дополнительный вход. [ 12 ] Основная идея состоит в том, чтобы сформировать произведение всех a i , инвертировать его, а затем умножить на j чтобы для всех j ≠ i, оставить только желаемое a. −1
я .
Более конкретно, алгоритм (все арифметические действия выполняются по модулю m ):
- Вычислить префиксные продукты для всех я ≤ n .
- Вычислить б −1
n с использованием любого доступного алгоритма. - Для i от n до 2 вычислите
- а −1
я = б −1
я б я -1 и - б −1
я -1 = б −1
к а к .
- а −1
- , Наконец −1
1 = б −1
1 .
Можно выполнять умножения в древовидной структуре, а не линейно, используя параллельные вычисления .
Приложения
[ редактировать ]Поиск модульного мультипликативного обратного имеет множество приложений в алгоритмах, основанных на теории модульной арифметики. Например, в криптографии использование модульной арифметики позволяет выполнять некоторые операции быстрее и с меньшими требованиями к хранению, в то время как другие операции становятся более трудными. [ 13 ] Обе эти особенности можно использовать с пользой. В частности, в алгоритме RSA шифрование и дешифрование сообщения выполняется с использованием пары чисел, которые являются мультипликативными обратными по отношению к тщательно выбранному модулю. Один из этих номеров является общедоступным и может использоваться в процедуре быстрого шифрования, тогда как другой, используемый в процедуре расшифровки, остается скрытым. Определение скрытого номера по общедоступному номеру считается невозможным с вычислительной точки зрения, и именно это заставляет систему работать над обеспечением конфиденциальности. [ 14 ]
В качестве другого примера в другом контексте рассмотрим задачу точного деления в информатике, где у вас есть список нечетных чисел размером в слово, каждое из которых делится на k , и вы хотите разделить их все на k . Одно из решений заключается в следующем:
- Используйте расширенный алгоритм Евклида для вычисления k −1 , модульный мультипликативный обратный k mod 2 В , где w — количество бит в слове. Это обратное будет существовать, поскольку числа нечетные, а модуль не имеет нечетных множителей.
- Для каждого числа в списке умножьте его на k −1 и возьмите наименее значимое слово результата.
На многих машинах, особенно на тех, у которых нет аппаратной поддержки деления, деление — более медленная операция, чем умножение, поэтому этот подход может дать значительное ускорение. Первый шаг относительно медленный, но его нужно сделать только один раз.
Модульные мультипликативные обратные используются для получения решения системы линейных сравнений, которое гарантируется китайской теоремой об остатках .
Например, система
- Х ≡ 4 (по модулю 5)
- Х ≡ 4 (по модулю 7)
- Х ≡ 6 (по модулю 11)
имеет общие решения, так как 5,7 и 11 попарно взаимно просты . Решение дается
- X = t1 (7 × 11) × 4 + t2 (5 × 11) × 4 + t3х
где
- t 1 = 3 — модульное мультипликативное обратное число 7 × 11 (mod 5),
- t 2 = 6 — модульное мультипликативное обратное число 5 × 11 (по модулю 7), а
- t 3 = 6 — модульное мультипликативное число, обратное 5 × 7 (по модулю 11).
Таким образом,
- Икс = 3 × (7 × 11) × 4 + 6 × (5 × 11) × 4 + 6 × (5 × 7) × 6 = 3504
и в его уникальной уменьшенной форме
- Х ≡ 3504 ≡ 39 (мод. 385)
поскольку 385 — это НОК 5,7 и 11.
Кроме того, модульное мультипликативное обратное число занимает видное место в определении суммы Клоостермана .
См. также
[ редактировать ]- Инверсивный конгруэнтный генератор - генератор псевдослучайных чисел, использующий модульные мультипликативные инверсии.
- Рациональная реконструкция (математика)
Примечания
[ редактировать ]- ^ Розен 1993 , с. 132.
- ^ Шумахер 1996 , с. 88.
- ^ Стинсон, Дуглас Р. (1995), Криптография / Теория и практика , CRC Press, стр. 124–128, ISBN 0-8493-8521-0
- ^ Трапп и Вашингтон, 2006 , стр. 164–169.
- ^ Мориарти, К.; Калиски, Б.; Йонссон, Дж.; Раш, А. (2016). «PKCS #1: Спецификации криптографии RSA, версия 2.2» . Рабочая группа по интернет-инжинирингу RFC 8017 . Рабочая группа по интернет-инжинирингу . Проверено 21 января 2017 г.
- ^ Часто используются и другие обозначения, в том числе [ a ] и [ a ] m .
- ^ Ирландия и Розен 1990 , с. 32
- ^ Шуп, Виктор (2005), Вычислительное введение в теорию чисел и алгебру , издательство Кембриджского университета, теорема 2.4, стр. 15, ISBN 9780521851541
- ^ Розен 1993 , с. 121
- ^ Ирландия и Розен 1990 , с. 31
- ^ Томас Коши. Элементарная теория чисел с приложениями , 2-е изд. ISBN 978-0-12-372487-8 . С. 346.
- ^ Брент, Ричард П .; Циммерманн, Пол (декабрь 2010 г.). «§2.5.1 Сразу несколько инверсий» (PDF) . Современная компьютерная арифметика . Кембриджские монографии по вычислительной и прикладной математике. Том. 18. Издательство Кембриджского университета. стр. 67–68. ISBN 978-0-521-19469-3 .
- ^ Трапп и Вашингтон 2006 , с. 167
- ^ Трапп и Вашингтон 2006 , с. 165
Ссылки
[ редактировать ]- Ирландия, Кеннет; Розен, Майкл (1990), Классическое введение в современную теорию чисел (2-е изд.), Springer-Verlag, ISBN 0-387-97329-Х
- Розен, Кеннет Х. (1993), Элементарная теория чисел и ее приложения (3-е изд.), Аддисон-Уэсли, ISBN 978-0-201-57889-8
- Шумахер, Кэрол (1996). Глава нулевая: Фундаментальные понятия абстрактной математики . Аддисон-Уэсли. ISBN 0-201-82653-4 .
- Траппе, Уэйд; Вашингтон, Лоуренс К. (2006), Введение в криптографию с теорией кодирования (2-е изд.), Прентис-Холл, ISBN 978-0-13-186239-5
Внешние ссылки
[ редактировать ]- Вайсштейн, Эрик В. «Модульная инверсия» . Математический мир .
- Гевара Васкес, Фернандо представляет решенный пример решения мультипликативного обратного по модулю с использованием алгоритма Евклида.