Изменить размер шрифта - +
Квадратичные вычеты обычно являются квадратами двух различных чисел, n² и (– n)² для подходящего n. Однако 0 встречается в списке лишь однажды, потому что –0 = 0.

Составные модули усложняют ситуацию. Теперь одни и те же вычеты иногда могут быть квадратами больше чем двух чисел. К примеру, 1 по модулю 8 встречается четыре раза, как квадрат 1, 3, 5 и 7. Лучший способ разобраться во всем этом – воспользоваться современной абстрактной алгеброй, но имеет смысл взглянуть и на модуль 15. У него два простых множителя: 3 × 5. А вот список квадратов:

 

 

Таким образом, квадратичные вычеты по модулю 15 равны

 

0 = 0²

1 = 1², 4², 11², 14²

4 = 2², 7², 8², 13²

6 = 6², 9²

9 = 3², 12²

10 = 5², 10²

 

Некоторые вычеты возникают один раз, некоторые дважды, некоторые четырежды. Те, которые встречаются в списке меньше четырех раз, являются квадратами чисел, кратных либо 3, либо 5, то есть простым множителям 15. Все остальные числа возникают группами по четыре, где квадраты всех четырех равны.

Это общая закономерность для любого модуля вида pq, где p и q – различные нечетные простые числа. Числа от 0 до pq – 1, не кратные ни p, ни q, разделяются на четверки с равными квадратами. (Это не работает, если одно из простых чисел равно 2: к примеру, 10 = 2 × 5, но мы уже видели, что в этом случае квадраты либо одиноки, либо стоят парами.)

В алгебре мы привыкаем к мысли, что у каждого положительного числа имеется два квадратных корня: один положительный, другой отрицательный. Но в арифметике по модулю pq большая часть чисел (те, что не делятся ни на p, ни на q) имеет по четыре различных квадратных корня.

Этот любопытный факт имеет замечательное приложение, к которому мы и перейдем.

 

Бросание монетки по телефону

 

Предположим, что Алиса и Боб хотят сыграть в бросание монетки с вероятностью того или иного результата 50:50. Как мы уже знаем, Алиса находится в Алис-Спрингс, а Боб – в Боббингтоне. Могут ли они бросать монетку по телефону? Главная загвоздка – та же, что при игре в покер. Если бросает монетку (или проделывает любую другую операцию с равновероятным исходом) Алиса и она же сообщает результат Бобу, то тот никак не может быть уверен, что она говорит правду. Конечно, в наше время они могли бы делать это во время общения по скайпу и наблюдать за бросанием монетки, но даже в этом случае результат можно подделать, сняв заранее несколько бросков и показав собеседнику запись вместо онлайн-трансляции.

Бросание монетки – то же, что игра в покер колодой из двух карт, так что игроки вполне могут воспользоваться методикой, описанной выше. Однако существует и другой элегантный способ достичь того же результата с использованием квадратичных вычетов. Вот как это можно сделать.

Алиса выбирает два больших простых числа p и q. Она держит их в секрете, но отправляет Бобу их произведение n = pq. Вы скажете, что Боб мог бы найти p и q путем разложения n на простые множители, но на сегодняшний день, насколько известно, не существует практичного способа сделать это, если числа p и q достаточно велики – скажем, по 100 знаков в каждом. Даже самым быстрым компьютерам, использующим самые быстрые алгоритмы, понадобилось бы на это время, превышающее время жизни Вселенной. Так что Боб останется в неведении.

Однако существуют очень быстрые способы проверить 100-значное число и узнать, является ли оно простым. Так что Алиса сможет подобрать себе p и q методом проб и ошибок.

Боб выбирает произвольное целое x (mod n), которое держит в секрете.

Если он необычайно педантичен, то может быстро проверить, не является ли x произведением p и q: он не будет делить его на эти числа, поскольку их не знает, но найдет наибольший общий делитель (НОД) чисел x и n через алгоритм Евклида.

Быстрый переход