как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами? |
Основы теории чисел
1.6 Квадратичные вычеты
Определение. Число называется квадратичным вычетом по модулю
, если сравнение
имеет решение при некотором целом
, если сравнение
не имеет решений, то
называют квадратичным невычетом.
1.6.1 Символ Лежандра-Якоби
Определение. Символ Лежандра определяется следующим образом:
![\left(\frac{a}{p}\right)=\left\{\begin{array}{rl}0,& \text{если $a$ делится на $p$};\\1,& \text{если $a$ - квадратичный вычет}~(mod \ p);\\-1,& \text{если $a$ - квадратичный невычет}~(mod \ p).\end{array}\right](/sites/default/files/tex_cache/9797ed8c050e75b6353f5b274b1a62bf.png)
Следующие свойства используются для вычисления символа Лежандра:
- Квадратичный закон взаимности: если
,
- нечетные простые числа, то
Пример 1.36 Найти случайный квадратичный невычет по модулю .
Решение. Будем выбирать числа случайно, и тестировать их с помощью символа Лежандра.
Пусть выбранное нами случайное число оказалось 51:
![\left(\frac{51}{449}\right)=\left[\text{по свойству 3}\right]=\left(\frac{3}{449}\right)\left(\frac{17}{449}\right)=\left[\text{по свойству 5}\right]=\\{\left(-1\right)}^{\frac{448 \cdot 2}{4}}\left(\frac{449}{3}\right){\left(-1\right)}^{\frac{448 \cdot 16}{4}}\left(\frac{449}{17}\right)=\left[\text{по свойству 2}\right]=\left(\frac{2}{3}\right)\left(\frac{7}{17}\right).](/sites/default/files/tex_cache/0d1b8799413213521e28c844f203d984.png)
По свойству 1,
![\left(\frac{2}{3}\right)={2}^{\frac{3-1}{2}}=-1mod3.](/sites/default/files/tex_cache/9ae41e02f681105f13766124c91b5861.png)
Далее,
![\left(\frac{7}{17}\right)={\left(-1\right)}^{\frac{16 \cdot 6}{4}}\left(\frac{17}{7}\right)=\left(\frac{3}{7}\right)={\left(-1\right)}^{\frac{6 \cdot 2}{4}}\left(\frac{7}{3}\right)=-\left(\frac{1}{3}\right)=-1.](/sites/default/files/tex_cache/2642bc59e07ee8a2b94e3b7e40b3fca6.png)
Итак, 51 - квадратичный вычет по модулю 449. Выберем другое число. Пусть выпало число 34.
![\left(\frac{34}{449}\right)=\left(\frac{2}{449}\right)\left(\frac{17}{449}\right)={\left(-1\right)}^{\frac{{449}^{2}-1}{8}}\left(\frac{17}{449}\right)=\left(\frac{17}{449}\right)=\left(\frac{449}{17}\right)=\\ \left(\frac{7}{17}\right)=-1.](/sites/default/files/tex_cache/a45fb542a86f706fc6665965d65bace3.png)
Следовательно, число 34 является квадратичным вычетом по модулю 449.
Очевидным недостатком символа Лежандра является необходимость иногда применять свойство 3, требующее факторизации числа. Обобщение числа Лежандра, символ Якоби, который определяется для произвольного числа и нечетного числа
, где числа
- простые не обязательно различные числа, лишен этого недостатка.
По определению,
![\left(\frac{a}{n}\right)=\left(\frac{a}{{p}_{1}}\right) \cdot \left(\frac{a}{{p}_{2}}\right){\dots}\left(\frac{a}{{p}_{k}}\right).](/sites/default/files/tex_cache/8caef5535440fc8964804fc98b0e6cd9.png)
Поскольку при простом символ Якоби равен символу Лежандра, одинаковое обозначение не введёт нас в заблуждение. Отметим, что символ Якоби не является полным аналогом символа Лежандра, т.е. равенство
![\left(\frac{a}{n}\right)=\left\{\begin{array}{rl}0,& \text{если $a$ не взаимно просто с } n;\\1,& \text{если $a$ - квадратичный вычет}~(mod n);\\-1,& \text{если $a$ - квадратичный невычет}~(mod n)\end{array}\right.](/sites/default/files/tex_cache/8df32eaccd898dcbece51ea2c876becb.png)
в общем случае не выполняется.
Свойства символа Якоби:
- Квадратичный закон взаимности: если
,
- нечетные числа, то
Повторим наши вычисления из примера с помощью символа Якоби:
![\left(\frac{51}{449}\right)={\left(-1\right)}^{\frac{448 \cdot 50}{4}}\left(\frac{449}{51}\right)=\left(\frac{41}{51}\right)={\left(-1\right)}^{\frac{50 \cdot 40}{4}}\left(\frac{51}{41}\right)=\left(\frac{10}{41}\right)=\\\left(\frac{2}{41}\right)\left(\frac{5}{41}\right)={\left(-1\right)}^{\frac{{41}^{2}-1}{8}}{\left(-1\right)}^{\frac{40 \cdot 4}{2}}\left(\frac{41}{5}\right)=1 \cdot 1 \cdot \left(\frac{1}{5}\right)=1.](/sites/default/files/tex_cache/6fdaf58fd043431eec60abfb4483d029.png)
1.6.2 Извлечение квадратного корня по модулю
В некоторых криптографических алгоритмах требуется извлечение квадратного корня в кольце вычетов.
Задача нахождения квадратного корня по произвольному составному модулю сводится к задаче нахождения квадратного корня по простому модулю с помощью китайской теоремы об остатках. Для последней задачи существует много различных подходов. Один из них, алгоритм Тонелли-Шенкса, мы рассмотрим ниже.
Пусть , где
- нечетное число,
- произвольный квадратичный невычет. Положим
и будем искать корень
в виде:
![x={a}^{\frac{q+1}{2}} \cdot {c}^{{\alpha }_{0}+2{\alpha }_{1}+4{\alpha }_{2}+{\dots}}.](/sites/default/files/tex_cache/bab6353e9c0c87bdd0a4d8b2f6e6a631.png)
Подставив в равенство выражение для
. Поскольку
![{\left({c}^{2{\alpha }_{1}+4{\alpha }_{2}+{\dots}}\right)}^{{2}^{s-1}}={z}^{q \cdot {2}^{s}({\alpha }_{1}+2{\alpha }_{2}+{\dots})}={z}^{(p-1)({\alpha }_{1}+2{\alpha }_{2}+{\dots})}=1~(mod \ p),](/sites/default/files/tex_cache/27abf1368ee987e52eb12bffd7429d1c.png)
то получим:
![{a}^{\frac{p-1}{4}} \cdot {a}^{{2}^{s-2}} \cdot {z}^{\frac{p-1}{2} \cdot {\alpha }_{0}}={a}^{{2}^{s-2}}~(mod \ p).](/sites/default/files/tex_cache/2783e0f3b2a97c50c6d98e3e08add707.png)
Далее, заметим, что , так как
- квадратичный невычет, а
, так как
- квадратичный вычет. Поэтому
есть корень из единицы, и может быть либо 1, либо
. В первом случае берём
, во втором
. В результате мы получаем:
![{a}^{\frac{p-1}{4}}{c}^{{{2}^{s-2}\alpha }_{0}}=1 \ mod \ p](/sites/default/files/tex_cache/4fc292206be9047b2d3618f8f838eac9.png)
Теперь в равенство подставим выражение для
и получим:
![{a}^{\frac{p-1}{8}}{a}^{{2}^{s-3}}{z}^{\frac{p-1}{4}{\alpha }_{0}+\frac{p-1}{2}{\alpha }_{1}}={a}^{{2}^{s-3}}~(mod \ p).](/sites/default/files/tex_cache/ff0335065f212af359487d6ca9c0ca94.png)
Аналогично предыдущему, , а
является корнем из единицы и может быть либо 1, либо
. В первом случае берём
, во втором
. Рассматривая аналогично равенства
,
,
,
, мы найдём все коэффициенты
.
Данная идея реализуется алгоритмом Тонелли-Шенкса [2]:
Вход: - простое число,
- квадратичный вычет по модулю
.
Выход: число такое, что
.
- Выбрать произвольный квадратичный невычет
.
- Вычислить
.
- Положить
,
,
,
.
- Если
, положить
и завершить работу.
- Найти мультипликативный порядок
числа
.
- Положить
,
,
,
,
,
.
- Положить
и перейти к шагу 4.
Отметим, что на каждом шаге числа и и
имеют мультипликативный порядок степень двойки, причем на каждом шаге он понижается, поэтому алгоритм задан корректно. Для нахождения порядка
на шаге 5 нужно последовательно возводить его в степень.
Алгоритм Тонелли-Шенкса не позволяет находить корень по -примарному модулю. Для решения этой задачи нам потребуется следующая идея. Если
не делится на
, и мы вычислили
- корень из
по модулю
, то корень
из
по модулю
можно искать в виде
. Тогда мы получим:
![{x}^{2}={x}_{0}^{2}+2p{t}_{1}{x}_{0}+{p}^{2}{t}_{1}^{2}=a ~(mod {p}^{2}).](/sites/default/files/tex_cache/db6b96f7108c23d9f4243a1a96727c41.png)
Поскольку делится на
, то имеем:
![\frac{{x}_{0}^{2}-a}{p}+2{t}_{1}{x}_{0}=0~(mod \ p^{2}).](/sites/default/files/tex_cache/63cb71057fe9de591f5636c282618d33.png)
Отсюда находим
![{t}_{1}={t'}_{1}+p{t}_{2},\ {t'}_{1}=\frac{-{{x}_{0}^{2}-a}}{p} \cdot \left({\left(2{x}_{0}\right)}^{-1}~(mod \ p)\right),\ {x}_{1}={x}_{0}+p{t'}_{1}.](/sites/default/files/tex_cache/759e3b6081343d12e7a77bba964db39e.png)
Отметим, что ,
. Тогда имеем:
![{x}^{2}={x}_{1}^{2}+2{p}^{2}{t}_{2}{x}_{1}+{p}^{4}{t}_{2}^{2}=a~(mod {p}^{2}).](/sites/default/files/tex_cache/2768cd824786d9266b50580f7350a130.png)
Поскольку делится на
, то имеем:
![\frac{{x}_{1}^{2}-a}{{p}^{2}}+2{t}_{2}{x}_{1}=0~(mod {p}^{2}).](/sites/default/files/tex_cache/59e5e77c8c2fc47680279cd7cb3236a2.png)
Отсюда находим
![{t}_{2}={t'}_{2}+{p}^{2}{t}_{3},\ {t'}_{2}=\frac{-{{x}_{1}^{2}-a}}{{p}^{2}} \cdot \left({\left(2{x}_{1}\right)}^{-1}~(mod \ p)\right),\ {x}_{2}={x}_{1}+{p}^{2}{t'}_{2}.](/sites/default/files/tex_cache/2c0d3584ef68c6a4e4516d41303e869b.png)
Продолжая последовательность по описанному принципу, мы найдём
Если делится на
, имеем:
![{x}^{2}={a'}{p}^{v}+r{p}^{m},](/sites/default/files/tex_cache/adad80de5baa6cdaba1c660009fe6b7f.png)
и делится на
. Следовательно, решение есть тогда и только тогда, когда
делится на четную степень
, поэтому далее можем писать:
![{x}^{2}={a'}{p}^{2k}+r{p}^{m},\ x={p}^{k}\widetilde{x}.](/sites/default/files/tex_cache/bfee89e5106fdd9add67b4369a808319.png)
В этом случае два решения находим из уравнения
. Найдём остальные решения
из уравнения:
![{p}^{2k}{\widetilde{x}}^{2}\pm 2{p}^{2k}\widetilde{x}b+{{p}^{2k}b}^{2}={p}^{2k}{a'}+l{p}^{m}.](/sites/default/files/tex_cache/e0e5d591b8a040bb54f4fd117fcd9d72.png)
Далее,
![\pm 2{p}^{2k}\widetilde{x}b+{p}^{2k}{b}^{2}=\left(l-r\right){p}^{m}.](/sites/default/files/tex_cache/2702324fa7679147c777f17dcb386b48.png)
Поскольку не делится на
, то
делится на
, и
делится на
. Наоборот, если
- кратное числа
, и
, то
. Тогда корнями исходного уравнения будут
и только они.
Теперь зная, как извлекать квадратный корень по примарному модулю, можно извлекать квадратный корень по произвольному модулю. Из китайской теоремы об остатках следует, что тогда и только тогда, когда
для всех
.
Пример 1.37 Найти квадратный корень из по модулю
.
Имеем: . Делим обе части на 9. Тогда:
Для нахождения используем вышеописанный алгоритм.
Отсюда .
Пример 1.38 Найти квадратный корень из по модулю
.
Поскольку , имеем:
,
. Из этих уравнений находим
(из предыдущего примера) и
. Из полученных двенадцати систем уравнений по китайской теореме об остатках имеем:
![x=255,417,339,501,444,39,528,123,66,228,150,312.](/sites/default/files/tex_cache/2c76346d23e72157df90d8ba5c45322e.png)
Список литературы
- Харин Ю.С., Берник В.И., Матвеев Г.В. Математические основы криптологии - Минск: БГУ, 1999. - 319 с.
- Shanks, D. Five Number-theoretic Algorithms // Proceedings of the Second Manitoba Conference on Numerical Mathematics, 1973. - p. 51-70