Однонаправленные сумматоры
Существует простая функция однонаправленного сумматоры [116] (см. раздел 4.12.):
A(xi, y) = xi-1y mod n
Числа n(являющееся произведением двух простых чисел) и x0 должны быть заранее согласованы. Тогда суммированием y1, y2 и y3 будет
Это вычисление не зависит от порядка y1, y2 и y3.
Раскрытие секретов "все или ничего"
Этот протокол позволяет нескольким сторонам (для работы протокола нужно не меньше двух участников) покупать различные секреты у одного продавца (см. раздел 4.13) [1374, 1175]. Начнем с определения. Возьмем две строки битов, x и y. Фиксированным битовым индексом (fixed bit index,FBI) x и yназывается последовательность номеров совпадающих битов этих строк.
Например:
x= 110101001011
y = 101010000110
FBI(x, y)= {1, 4, 5, 11}
(Мы читаем биты справа налево, считая нулевым крайний правый бит.)
Теперь вот как выглядит протокол. Алиса будет продавцом. Боб и Кэрол - покупателями. У Алисы есть kn-битовых секретов: S1, S2, . . . Sk. Боб хочет купить секрет Sb, Кэрол - секрет Sc.
(1) Алиса генерирует пару "открытый ключ/закрытый ключ"и сообщает Бобу (но не Кэрол) открытый ключ. Она генерирует другую пару "открытый ключ/закрытый ключ"и сообщает Кэрол (но не Бобу) открытый ключ.
(2) Боб генерирует kn-битовых случайных чисел, B1, B2, . . . Bk, и сообщает их Кэрол. Кэрол генерирует kn-битовых случайных чисел, C1, C2, . . . Ck, и сообщает их Бобу.
(3) Боб шифрует Cb(напомним, он хочет купить секрет Sb) открытым ключом, полученным от Алисы. Он вычисляет FBI для Cb и только что зашифрованного результата. Он посылает этот FBI Кэрол.
Кэрол шифрует Bc(напомним, она хочет купить секрет Sc) открытым ключом, полученным от Алисы. Она вычисляет FBI для Bcи только что зашифрованного результата. Она посылает этот FBI Бобу.
(4) Боб берет каждое из n-битовых чисел B1, B2, . . . Bkи заменяет каждый бит, номера которого нет в FBI, полученном от Кэрол, его дополнением. Он посылает этот новый список n-битовых чисел B'1, B'2, . . . B'kАлисе.
Кэрол берет каждое из n-битовых чисел C1, C2, . . . Ck и заменяет каждый бит, номера которого нет в FBI, полученном от Боба, его дополнением. Она посылает этот новый список n-битовых чисел C'1, C'2, . . . C'k Алисе.
(5) Алиса расшифровывает все C'iзакрытым ключом Боба, получая kn-битовых чисел C"1, C"2, . . . C"k. Она вычисляет SiÅC"i для i= 1, . . . k, и посылает результаты Бобу.
Алиса расшифровывает все B'iзакрытым ключом Кэрол, получая kn-битовых чисел B"1, B"2, . . . B"k. Она вычисляет SiÅB"i для i= 1, . . . k, и посылает результаты Кэрол.
(6) Боб вычисляет Sb, выполняя XOR Cbи b-го числа, полученного от Алисы.
Кэрол вычисляет Sc, выполняя XOR Bcи c-го числа, полученного от Алисы..
Все так сложно. Поясним эти долгие действия на примере.
У Алисы есть для продажи восемь 12-битовых секретов: S1= 1990, S2= 471, S3= 3860, S4= 1487, S5= 2235, S6= 3751, S7= 2546 и S8= 4043. Боб хочет купить S7, а Кэрол - S2.
(1) Алиса использует алгоритм RSA. В диалоге с Бобом она использует следующую пару ключей: n= 7387, e = 5145 и d= 777, а в диалоге с Кэрол - n= 2747, e= 1421 и d= 2261. Она сообщает Бобу и Кэрол их открытые ключи.
(2) Боб генерирует восемь 12-битовых чисел, B1= 743, B2= 1988, B3= 4001, B4= 2942, B5= 3421, B6= 2210, B7=2306 и B8= 222, и сообщает их Кэрол. Кэрол генерирует восемь 12-битовых чисел, C1= 1708, C2 = 711, C3= 1969, C4= 3112, C5 = 4014, C6= 2308, C7 = 2212 и C8= 222, и сообщает их Бобу.
(3) Боб хочет купить S7, поэтому он открытым ключом, выданным Алисой, шифрует C7.
22125145 mod 7387 = 5928
Теперь:
2212 = 0100010100100
5928 = 1011100101000
Следовательно, FBI этих двух чисел равен {0, 1, 4, 5, 6}. Он посылает его Кэрол.
Кэрол хочет купить S2, поэтому она открытым ключом, выданным Алисой, шифрует B2 и вычисляет FBI B2 и результата шифрования. Она посылает Бобу{0, 1, 2, 6, 9, 10}.
(4) Боб берет B1, B2, . . . B8и заменяет каждый бит, индекс которого отсутствует в наборе {0, 1, 2, 6, 9, 10} его дополнением. Например:
B2= 111111000100 = 1988
B'2 = 011001111100 = 1660
Он посылает B'1, B'2, . . . B'8Алисе.
Кэрол берет C1, C2, . . . C8и заменяет каждый бит, индекс которого отсутствует в наборе {0, 1, 4, 5, 6}его дополнением. Например:
C7 = 0100010100100 = 2212
C'7= 1011100101000 = 5928
Она посылает C'1, C'2, . . . C'8Алисе.
(5) Алиса расшифровывает все C'iзакрытым ключом Боба и выполняет XOR результатов с Si. Например, для i= 7:
5928777 mod 7387 = 2212; 2546 Å2212 = 342
Она посылает результат Бобу.
Алиса расшифровывает все B'iзакрытым ключом Кэрол и выполняет XOR результатов с Si. Например, для i= 2:
16602261 (mod 2747) = 1988; 471 Å 1988 = 1555
Она посылает результат Кэрол.
(6) Боб вычисляет S7, выполняя XOR C7и седьмого числа, полученного им от Алисы:
2212 Å 342=2546
Кэрол вычисляет S2, выполняя XOR B2 и второго числа, полученного ей от Алисы.
1988 Å 1555 = 471
Протокол работает для любого количества покупателей. Если Боб, Кэрол и Дэйв хотят купить секреты, Алиса выдает каждому покупателю два открытых ключа, по одному на каждого другого покупателя. Каждый покупатель получает набор чисел от каждого другого покупателя. Затем они выполняют протокол с Алисой для каждого из своих наборов номеров и выполняют XOR всех полученных от Алисы результатов, получая свои секреты. Более подробно это описано в [1374, 1175].
К сожалению, пара нечестных участников могут смошенничать. Алиса и Кэрол, действуя на пару, могут легко понять, какой секрет получил Боб: если они знают FBI Cb и алгоритм шифрования Боба, они могут подыскать такое b, что у Cbбудет правильный FBI. А Боб и Кэрол, действуя вместе, могут легко заполучить все секреты Алисы.
Если вы считаете, что участники честны, можно использовать протокол попроще [389].
(1) Алиса шифрует все секреты RSA и посылает их Бобу:
Ci= Siemod n
(2) Боб выбирает свой секрет Cb, генерирует случайное число r и посылает Алисе.
C'= Cbremod n
(3) Алиса посылает Бобу^
P'= C'dmod n
(4) Боб вычисляетP'
Sb= P'r-1 mod n
Если участники могут жульничать, Боб может доказать с нулевым знанием, что он знает некоторое r, такое что C'= Cbremod n, и хранить в bсекрете, пока Алиса не передаст ему на этапе (3) P' [246).
Дата добавления: 2021-01-26; просмотров: 376;