Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шнайер - Прикладная криптография.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
10.13 Mб
Скачать

Вычисления с зашифрованными данными Проблема дискретного логарифма

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

ge x (mod p)

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

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

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

x' = xgr mod p

  1. Алиса просит Боба решить

ge' x' (mod p)

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

  2. Алиса восстанавливает 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 = r2 mod n

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

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

x mod n

-x mod n

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

y mod n

-y mod n

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

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

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

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

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

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

  3. Алиса вычисляет 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 = hx mod p, или y = tx mod p

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

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

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

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

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

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

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

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

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

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

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