Безопасные вычисления с несколькими участниками
Этот протокол взят из [1373]. Алиса знает целое число i, а Боб - целое число j. Алиса и Боб вместе хотят узнать, что правильно - i£jили i>j, но ни Алиса, ни Боб не хочет раскрыть свое число партнеру. Этот особый случай безопасных вычислений с несколькими участниками (см. раздел 6.2) иногда называют проблемой миллионера Яо [162, 7].
В приводимом примере предполагается, что iи jвыбираются из диапазона от 1 до 100. У Боба есть открытый и закрытый ключи.
(1) Алиса выбирает большое случайное число x и шифрует его открытым ключом Боба.
c = EB(x)
(2) Алиса вычисляет c-j и посылает результат Бобу.
(3) Боб вычисляет следующие 100 чисел:
yu = DB(c-i+u), для 1£u£100
DB обозначает дешифрирование закрытым ключом Боба.
Он выбирает большое случайное число p. (Размер p должен быть немного меньше x. Боб не знает x, но Алиса может легко сообщить ему размер x.) он вычисляет следующие 100 чисел:
zu = (yu mod p), для 1£u£100
Далее он проверяет, что для всех u¹v
|zu - zм| ³ 2
и что для всех u
0 < zu < p-1
Если это не так, то Боб выбирает другое простое число и пробует снова.
(4) Боб посылает Алисе эту последовательность чисел, соблюдая их точный порядок:
zl, z2, . . . zj, zj+1+1, zj+2+1, . . . z100+1, p
(5) Алиса проверяет, конгруэнтен ли i-ый член последовательности x mod p. Если это так, она делает вывод, что i£j. В противном случае она решает, что i> j.
(6) Алиса сообщает Бобу свои выводы.
Проверка, которую Боб выполняет на этапе (3), должна гарантировать, что ни одно число не появится дважды в последовательности, генерированной на этапе (4). В противном случае, если za= zb,Алиса узнает, что a£ j< b.
Недостатком этого протокола является то, что Алиса узнает результаты вычислений раньше Боба. Ничто не помешает ей завершить протокол на этапе (5), отказавшись сообщать Бобу результаты. Она даже может солгать Бобу на этапе (6).
Пример протокола
Пусть они используют RSA. Открытым ключом Боба является 7, а закрытым - 23. n= 55. Секретное число Алисы, i, равно 4, секретное число Боба, j - 2. (Предположим, что числа i и j могут принимать только значения 1,2, 3 и 4.)
(1) Алиса выбирает x= 39 и c = EB(39)= 19.
(2) Алиса вычисляет c-i=19-4=15. Она посылает 15 Бобу.
(3) Боб вычисляет следующие четыре числа:
y1 = DB{15+l) =26
y2 = DB{15+2) = 18
y3 = DB{15+3) =2
y4 = DB{15+4) = 39
Он выбирает p= 31 и вычисляет:
z1 = (26 mod 31) = 26
z2 = (18 mod 31) =18
z3 = (2 mod 31) = 2
z4 = (39 mod 31) = 8
Он выполняет все проверки и убеждается, что последовательность правильна.
(4) Боб посылает Алисе эту последовательность чисел, соблюдая их порядок:
26, 18, 2+1, 8+1, 31, т.е., 26, 18, 3, 9, 31
(5) Алиса проверяет, конгруэнтно ли четвертое число Xmod p. Так как 9 ¹ 39 (mod 31 ), то i> j.
(6) Алиса сообщает об этом Бобу.
Этот протокол можно использовать для создания намного более сложных протоколов. Группа людей может проводить секретный аукцион по сети. Они логически упорядочивают себя по кругу и, с помощью попарных сравнений, определяют, кто предложил большую цену. Чтобы помешать людям уже изменять сделанные предложения в середине аукциона должен использоваться какой-то протокол вручения битов. Если аукцион проводится по голландской системе, то предложивший наивысшую цену получает предмет за предложенную цену. Если аукцион проводится по английской системе, то он получает предмет за вторую высшую цену. (Это может быть выяснено во время второго круга попарных сравнений.) Аналогичные идеи применимы при заключении сделок, переговорах и арбитраже.
Дата добавления: 2021-01-26; просмотров: 414;