stringtranslate.com

Модульная мультипликативная обратная

В математике , особенно в области арифметики , модульное мультипликативное обратное целое число 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 , то линейное сравнение axb (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, например

так как 10 делит 32 − 2 = 30, и
так как 10 делит 111 − 1 = 110.

Некоторые из десяти классов конгруэнтности относительно этого модуля:

и

Линейное сравнение 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 для всех ji, чтобы оставить только желаемое a−1
я
.

Более конкретно, алгоритм выглядит следующим образом (все арифметические действия выполняются по модулю m ):

  1. Вычислите префиксные произведения для всех in .
  2. Вычислить b−1
    н
    с использованием любого доступного алгоритма.
  3. Для i от n до 2 вычислить
    • а−1
      я
      = б−1
      я
      b i −1
      и
    • б−1
      я −1
      = б−1
      я
      а я
      .
  4. Наконец ,−1
    1
    = б−1
    1
    .

Можно выполнять умножения в древовидной структуре, а не линейно, используя параллельные вычисления .

Приложения

Нахождение модульной мультипликативной инверсии имеет множество применений в алгоритмах, которые опираются на теорию модульной арифметики. Например, в криптографии использование модульной арифметики позволяет выполнять некоторые операции быстрее и с меньшими требованиями к памяти, в то время как другие операции становятся более сложными. [13] Обе эти функции могут быть использованы с выгодой. В частности, в алгоритме RSA шифрование и дешифрование сообщения выполняется с использованием пары чисел, которые являются мультипликативными инверсиями относительно тщательно выбранного модуля. Одно из этих чисел становится общедоступным и может использоваться в быстрой процедуре шифрования, в то время как другое, используемое в процедуре дешифрования, хранится скрытым. Определение скрытого числа из общедоступного числа считается вычислительно невыполнимым, и именно это заставляет систему работать для обеспечения конфиденциальности. [14]

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

  1. Используйте расширенный алгоритм Евклида для вычисления k −1 , модульного мультипликативного обратного числа k mod 2 w , где w — число бит в слове. Это обратное число будет существовать, поскольку числа нечетные, а модуль не имеет нечетных множителей.
  2. Для каждого числа в списке умножьте его на k −1 и возьмите наименее значимое слово результата.

На многих машинах, особенно без аппаратной поддержки деления, деление — более медленная операция, чем умножение, поэтому этот подход может дать значительное ускорение. Первый шаг относительно медленный, но его нужно сделать только один раз.

Модульные мультипликативные обратные числа используются для получения решения системы линейных сравнений, которое гарантируется китайской теоремой об остатках .

Например, система

X ≡ 4 (мод 5)
X ≡ 4 (мод 7)
X ≡ 6 (мод 11)

имеет общие решения, так как 5,7 и 11 являются попарно взаимно простыми . Решение дается формулой

X = t1 (7 × 11) × 4 + t2 (5 × 11 ) × 4 + t3 (5 × 7) × 6

где

t 1 = 3 — модульное мультипликативное обратное число 7 × 11 (mod 5),
t 2 = 6 — это модульное мультипликативное обратное число 5 × 11 (mod 7) и
t 3 = 6 — модульное мультипликативное обратное число 5 × 7 (mod 11).

Таким образом,

X = 3 × (7 × 11) × 4 + 6 × (5 × 11) × 4 + 6 × (5 × 7) × 6 = 3504

и в его уникальной сокращенной форме

X ≡ 3504 ≡ 39 (мод 385)

поскольку 385 является НОК чисел 5,7 и 11.

Кроме того, модульная мультипликативная обратная величина играет важную роль в определении суммы Клостермана .

Смотрите также

Примечания

  1. ^ Розен 1993, стр. 132.
  2. ^ Шумахер 1996, стр. 88.
  3. ^ Стинсон, Дуглас Р. (1995), Криптография / Теория и практика , CRC Press, стр. 124–128, ISBN 0-8493-8521-0
  4. ^ Трапп и Вашингтон 2006, стр. 164−169.
  5. ^ Мориарти, К.; Калиски, Б.; Йонссон, Дж.; Раш, А. (2016). PKCS #1: Спецификации криптографии RSA. раздел 2.2. doi : 10.17487/RFC8017 . RFC 8017. Получено 21 января 2017 г.
  6. ^ Часто используются и другие обозначения, включая [ a ] и [ a ] m .
  7. ^ Айрленд и Розен 1990, стр. 32
  8. ^ Шоуп, Виктор (2005), Вычислительное введение в теорию чисел и алгебру, Cambridge University Press, Теорема 2.4, стр. 15, ISBN 9780521851541
  9. ^ Розен 1993, стр. 121
  10. ^ Айрленд и Розен 1990, стр. 31
  11. ^ Томас Коши. Элементарная теория чисел с приложениями, 2-е издание. ISBN 978-0-12-372487-8 . С. 346. 
  12. ^ Брент, Ричард П.; Циммерманн , Пол (декабрь 2010 г.). "§2.5.1 Несколько инверсий одновременно" (PDF) . Современная компьютерная арифметика. Кембриджские монографии по вычислительной и прикладной математике. Том 18. Cambridge University Press. С. 67–68. ISBN 978-0-521-19469-3.
  13. ^ Трапп и Вашингтон 2006, стр. 167
  14. ^ Трапп и Вашингтон 2006, стр. 165

Ссылки

Внешние ссылки