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

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

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

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

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

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

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

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

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

Существует простая функция однонаправленного сумматоры [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}

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

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

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

  2. Боб генерирует k n-битовых случайных чисел, B1, B2, . . . Bk, и сообщает их Кэрол. Кэрол генерирует k n-битовых случайных чисел, C1, C2, . . . Ck, и сообщает их Бобу.

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

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

  1. Боб берет каждое из n-битовых чисел B1, B2, . . . Bk и заменяет каждый бит, номера которого нет в FBI, полученном от Кэрол, его дополнением. Он посылает этот новый список n-битовых чисел B'1, B'2, . . . B'k Алисе.

Кэрол берет каждое из n-битовых чисел C1, C2, . . . Ck и заменяет каждый бит, номера которого нет в FBI, полученном от Боба, его дополнением. Она посылает этот новый список n-битовых чисел C'1, C'2, . . . C'k Алисе.

  1. Алиса расшифровывает все C'i закрытым ключом Боба, получая k n-битовых чисел C"1, C"2, . . . C"k. Она вычисляет Si C"i для i = 1, . . . k, и посылает результаты Бобу.

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

  1. Боб вычисляет 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}.

  1. Боб берет 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 Алисе.

  1. Алиса расшифровывает все 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

Она посылает результат Кэрол.

  1. Боб вычисляет S7, выполняя XOR C7 и седьмого числа, полученного им от Алисы:

2212  342=2546

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

1988  1555 = 471

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

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

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

  1. Алиса шифрует все секреты RSA и посылает их Бобу:

Ci = Sie mod n

  1. Боб выбирает свой секрет Cb, генерирует случайное число r и посылает Алисе.

C' = Cbre mod n

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

P' = C'd mod n

  1. Боб вычисляет P'

Sb = P'r-1 mod n

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