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

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

(1) Алиса генерирует целое число Блюма п, случайное х, взаимно простое с п, х0 = х2 mod пмх= х02 mod п. Она посылает Бобу и и хь

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

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

(4) Боб проверяет, что и является целым числом Блюма (Алиса нужно передать Бобу множители и и доказа­тельства того, что они являются простыми, или выполнить некоторый протокол с нулевым знанием, убе ве­дающий Боба, что п - это целое число Блюма), и что х0 = х2 mod п и х, = х02 mod п. Если все проверки вы­полняются, и Боб угадал правильно, он выигрывает бросок.

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

23.8 Однонаправленные сумматоры

Существует простая функция однонаправленного сумматоры [116] (см. раздел 4.12.):

А(х„ у) = х,У mod n

Числа п (являющееся произведением двух простых чисел) и х0 должны быть заранее согласованы. Тогда суммированием уъу2и у3 будет

((x/q modnY2 тойп)Уз modn

Это вычисление не зависит от порядка уъу2иу3.

23.9 Раскрытие секретов "все или ничего"

Этот протокол позволяет нескольким сторонам (для работы протокола нужно не меньше двух участников) покупать различные секреты у одного продавца (см. раздел 4.13) [1374, 1175]. Начнем с определения. Возьмем две строки битов, х и у. Фиксированным битовым индексом (fixed bit index, FBI)x и у называется последова­тельность номеров совпадающих битов этих строк.

Например:

х= 110101001011

у= 101010000110

FBI(je,j;) = {1, 4, 5, 11}

(Мы читаем биты справа налево, считая нулевым крайний правый бит .)

Теперь вот как выглядит протокол. Алиса будет продавцом. Боб и Кэрол - покупателями. У Алисы есть к п-битовых секретов: Sh S2, . . . Sk. Боб хочет купить секрет Sb, Кэрол - секрет Sc.

(1) Алиса генерирует пару "открытый ключ/закрытый ключ"и сообщает Бобу (но не Кэрол) открытый ключ. Она генерирует другую пару "открытый ключ/закрытый ключ"и сообщает Кэрол (но не Бобу) открытый ключ.

(2) Боб генерирует к и-битовых случайных чисел, Въ В2, . . . Вк, и сообщает их Кэрол. Кэрол генерирует к 71-битовых случайных чисел, Ch С2, . . . Ск, и сообщает их Бобу.

(3) Боб шифрует Сь (напомним, он хочет купить секрет Sb) открытым ключом, полученным от Алисы. Он вы­числяет FBI для Съ и только что зашифрованного результата. Он посылает этот FBI Кэрол.

Кэрол шифрует Вс (напомним, она хочет купить секрет Sc) открытым ключом, полученным от Алисы. Она вычисляет FBI для Вс и только что зашифрованного результата. Она посылает этот FBI Бобу.

(4) Боб берет каждое из й-битовых чисел Ви В2, . . . Вки заменяет каждый бит, номера которого нет в FBI,
полученном от Кэрол, его дополнением. Он посылает этот новый список й-битовых чисел В, В'2, . . . В'к


Алисе.

Кэрол берет каждое из и-битовых чисел Сь С2, . . . Ск и заменяет каждый бит, номера которого нет в FBI, полученном от Боба, его дополнением. Она посылает этот новый список й-битовых чисел С, С2, . . . С Алисе.

(5) Алиса расшифровывает все С, закрытым ключом Боба, получая к й-битовых чисел С', С"2, . . . С"к. Она
вычисляет S, © С", для i = 1, . . . к, и посылает результаты Бобу.

Алиса расшифровывает все В', закрытым ключом Кэрол, получая к й-битовых чисел В"и В"2, . . . В"к. Она вычисляет St © В", для i = 1, . . . к, и посылает результаты Кэрол.

(6) Боб вычисляет Sb, выполняя XOR Съ и й-го числа, полученного от Алисы.
Кэрол вычисляет Sc, выполняя XOR Вс и с-го числа, полученного от Алисы..

Все так сложно. Поясним эти долгие действия на примере .

У Алисы есть для продажи восемь 12-битовых секретов : & = 1990, S2 = 471, S3 = 3860, S4 = 1487, S5 = 2235, S6 = 3751, S1 = 2546 и S8 = 4043. Боб хочет купить S7, а Кэрол - S2.

(1) Алиса использует алгоритм RSA. В диалоге с Бобом она использует следующую пару ключей : и = 7387, е = 5145 и d = 777, а в диалоге с Кэрол - л = 2747, е = 1421 и а? = 2261. Она сообщает Бобу и Кэрол их от­крытые ключи.

(2) Боб генерирует восемь 12-битовых чисел, Вг= 743, В2= 1988, S3= 4001, Вл= 2942, £5= 3421, £6= 2210, £7=2306 и S8= 222, и сообщает их Кэрол. Кэрол генерирует восемь 12-битовых чисел, d= 1708, С2 = 711, С3= 1969, С4 = 3112, С5 = 4014, С6 = 2308, С7 = 2212 и С8 = 222, и сообщает их Бобу.

(3) Боб хочет купить S7, поэтому он открытым ключом, выданным Алисой, шифрует С7. 22125145 mod 7387 = 5928

Теперь:

2212 = 0100010100100

5928 = 1011100101000

Следовательно, FBI этих двух чисел равен {0, 1, 4, 5, 6}. Он посылает его Кэрол.

Кэрол хочет купить S2, поэтому она открытым ключом, выданным Алисой, шифрует В2 и вычисляет FBI В2 и результата шифрования. Она посылает Бобу {0, 1, 2, 6, 9, 10}.

(4) Боб берет ВъВ2, . . .В%и заменяет каждый бит, индекс которого отсутствует в наборе {0, 1, 2, 6, 9, 10} его
дополнением. Например:

В2= 111111000100 = 1988

В'2 = 011001111100 = 1660

Он посылает В, В'2, . . . В Алисе.

Кэрол берет Сь С2, . . . С8 и заменяет каждый бит, индекс которого отсутствует в наборе {0, 1, 4, 5, 6} его дополнением. Например:

С7 = 0100010100100 = 2212

С"7 = 1011100101000 = 5928

Она посылает С, С2, . . . С Алисе.

(5) Алиса расшифровывает все С, закрытым ключом Боба и выполняет XOR результатов с S,. Например, для
i = 7:

5928777 mod 7387 = 2212; 2546 © 2212 = 342

Она посылает результат Бобу.

Алиса расшифровывает все В', закрытым ключом Кэрол и выполняет XOR результатов с S,. Например,

для i = 2:

16602261 (mod 2747) = 1988; 471 © 1988 = 1555 Она посылает результат Кэрол.

(6) Боб вычисляет S7, выполняя XOR С7 и седьмого числа, полученного им от Алисы:


2212 © 342=2546

Кэрол вычисляет S2, выполняя XOR В2 и второго числа, полученного ей от Алисы.

1988 ©1555 = 471

Протокол работает для любого количества покупателей . Если Боб, Кэрол и Дэйв хотят купить секреты, Али­са выдает каждому покупателю два открытых ключа, по одному на каждого другого покупателя . Каждый поку­патель получает набор чисел от каждого другого покупателя . Затем они выполняют протокол с Алисой для каж­дого из своих наборов номеров и выполняют XOR всех полученных от Алисы результатов, получая свои секр е-ты. Более подробно это описано в [1374, 1175].

К сожалению, пара нечестных участников могут смошенничать. Алиса и Кэрол, действуя на пару, могут лег­ко понять, какой секрет получил Боб: если они знают FBI Cb и алгоритм шифрования Боба, они могут подыскать такое Ъ, что у Сь будет правильный FBI. А Боб и Кэрол, действуя вместе, могут легко заполучить все секреты Алисы.

Если вы считаете, что участники честны, можно использовать протокол попроще [389].

(1) Алиса шифрует все секреты RSA и посылает их Бобу: С, = 5*,е mod n

(2) Боб выбирает свой секрет Сь, генерирует случайное число г и посылает Алисе. С = Cbre mod n

(3) Алиса посылает БобуЛ P' =&mod n

(4) Боб вычисляет Р'

Sb-PYl mod n

Если участники могут жульничать, Боб может доказать с нулевым знанием, что он знает некоторое г, такое что С = Cbre mod п, и хранить в Ъ секрете, пока Алиса не передаст ему на этапе (3) Р' [246).

23.10 Честные и отказоустойчивые криптосистемы