Проблема дискретного логарифма


Существует большое простое число p и генератор g. Алиса хочет для конкретного x найти такое e, для которого

geº x(mod p)

Это трудная проблема, и Алисе не хватает вычислительных мощностей для вычисления результата. У Боба есть такие возможности - он представляет правительство, или мощный вычислительный центр, или еще какую-нибудь влиятельную организацию. Вот как Алиса может получить помощь Боба, не раскрыв ему x[547, 4]:

(1) Алиса выбирает случайное число r, меньшее p.

(2) Алиса вычисляет

x'= xgrmod p

(3) Алиса просит Боба решить

ge'º x'(mod p)

(4) Боб вычисляет e' и посылает его Алисе.

(5) Алиса восстанавливает e, вычисляя

e= (e' - r) mod (p - 1)

Аналогичные протоколы для проблем квадратичных остатков и примитивных корней приведены в [3, 4]. (См. также раздел 4.8.)

Бросание "честной" монеты

Следующие протоколы позволяют Алисе и Бобу бросать честную монету в сети передачи данных (см. раздел 4.9) [194]. Это пример бросания монеты в колодец (см. раздел 4.10). Сначала только Боб узнает результат броска и сообщает его Алисе. Затем Алиса может проверить, что Боб сообщил правильный результат броска.

Бросание "честной" монеты с помощью квадратных корней

Подпротокол бросания честной монеты:

(1) Алиса выбирает два больших простых числа, pи q, и посылает их произведение nБобу.

(2) Боб выбирает случайное положительное целое число r, меньшее n/2. Боб вычисляет

z = r2mod n

и посылает z Алисе.

(3) Алиса вычисляет четыре квадратных корня z(mod n). Она может сделать это, так как она знает разложение n на множители. Назовем их +x, -x, +y и -y. Обозначим как x' меньшее из следующих двух чисел:

xmod n

-xmod n

Аналогично, обозначим как y' меньшее из следующих двух чисел:

ymod n

-ymod n

Обратите внимание, что r равно либо x',либо y'.

(4) Алиса делает пытается угадать, какое из значений равно r - x' или y', и посылает свою догадку Бобу.

(5) Если догадка Алисы правильна, результатом броска монеты является "орел", а если неправильна - "решка". Боб объявляет результат броска монеты.

Подпротокол проверки:

(6) Алиса посылает pи q Бобу.

(7) Боб вычисляет x' и y' и посылает их Алисе.

(8) Алиса вычисляет r.

У Алисы нет возможности узнать r, поэтому она действительно угадывает. Она на этапе (4) сообщает Бобу только один бит своей догадки, не давая Бобу получить и x', и y'. Если Боб получит оба этих числа, он сможет изменить rпосле этапа (4).

Бросание "честной" монеты с помощью возведения в степень по модулю p

В этом протоколе в качестве однонаправленной функции используется возведение в степень по модулю простого числа p [1306]:

Подпротокол бросания честной монеты:

(1) Алиса выбирает простое число p так, чтобы множители p-1 были известны, и среди них было по крайней мере одно большое простое число.

(2) Боб выбирает два примитивных элемента, hи t, в GF(p). Он посылает их Алисе.

(3) Алиса убеждается, что hи tявляются примитивными элементами, и затем выбирает случайное число x, взаимно простое с p-1. Затем она вычисляет одно из двух значений:

y= hxmod p, или y= txmod p

Она посылает yБобу.

(4) Боб пытается угадать, вычислила Алиса yкак функцию h или как функцию t, и посылает свое предположение Алисе.

(5) Если догадка Боба правильна, результатом бросания монеты является "орел", в противном случае - "решка". Алиса объявляет результат броска монеты.

Подпротокол проверки:

(6) Алиса раскрывает Бобу значение x. Боб вычисляет hxmod p и txmod p, убеждаясь, что Алиса играла честно и проверяя результат броска. Он также проверяет, что x и p-1 - взаимно простые числа.

Чтобы Алиса могла смошенничать, она должна знать два целых числа, xи x', для которых выполняется hxºtx' mod p. Для того, чтобы узнать эти значения, ей нужно вычислить:

logth =x'x-1mod p-1 и logth =xx'-1mod p-1.

Это трудные проблемы.

Алиса смогла бы сделать это, если бы она знала logth, но Боб выбирает hи tна этапе (2). У Алисы нет другого способа кроме, как попытаться вычислить дискретный логарифм. Алиса может также попытаться смошенничать, выбрав x, которое не является взаимно простым с p-1, но Боб обнаружит это на этапе (6).

Боб может смошенничать, если hи tне являются примитивными элементами в поле in GF(p), но Алиса сможет легко проверить это после этапа (2), так как ей известно разложение p-1 на простые множители.

Удачным в этом протоколе является то, что если Алиса и Боб захотят бросить несколько монет, он7и смогут использовать одни и те же значения p, h и t. Алиса просто генерирует новое x, и протокол продолжается с этапа (3).

Бросание "честной" монеты с помощью целых чисел Блюма

В протоколе бросания монеты можно использовать челые числа Блюма.

(1) Алиса генерирует целое число Блюма n, случайное x, взаимно простое с n, x0= x2mod n и x1= x02mod n. Она посылает Бобу n и x1.

(2) Боб угадывает, четным или нечетным является x0.

(3) Алиса посылает x Бобу.

(4) Боб проверяет, что nявляется целым числом Блюма (Алиса нужно передать Бобу множители nи доказательства того, что они являются простыми, или выполнить некоторый протокол с нулевым знанием, убеждающий Боба, что n- это целое число Блюма), и что x0= x2mod n и x1= x02mod n. Если все проверки выполняются, и Боб угадал правильно, он выигрывает бросок.

Это важно, чтобы nбыло числом Блюма. Иначе Алиса сможет найти такое x'0, что x'02mod n = x02mod n=x1, где x'0 также является квадратичным остатком. Если бы x0 был четным, а x'0 - нечетным (или наоборот), Алиса могла бы мошенничать.



Дата добавления: 2021-01-26; просмотров: 460;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.