Протокол «Mental Poker» используется для защиты конфиденциальности и интегритета игры в покер двух или более участников без присутствия доверенного лица. Параметры, указанные в задании, относятся к протоколу «Mental Poker» с использованием шифрования Эль-Гамаля (ElGamal).
Для начала, необходимо вычислить открытый ключ каждого абонента. Для этого применяются следующие формулы:
g = p^q mod r
Ключ А:
gA = 23^5 mod 7 = 4
Ключ B:
gB = 23^7 mod 14 = 9
Затем каждый абонент генерирует свой закрытый ключ:
dA = 13
dB = 5
Следующим шагом А генерирует три случайных числа от 1 до 3 и шифрует ими свои карты одной за другой. Далее, используя схему Эль-Гамаля, А отправляет зашифрованные карты B:
Шифрование первой карты:
Выберем случайное число k1=3
Считаем:
α1 = gA^k1 mod r = 4^3 mod 7 = 1
β1 = (gB^k1 * m1) mod r = (9^3 * 1) mod 14 = 11
А отправляет B пару (α1, β1) = (1, 11)
Шифрование второй карты:
Выберем случайное число k2=2
Считаем:
α2 = gA^k2 mod r = 4^2 mod 7 = 2
β2 = (gB^k2 * m2) mod r = (9^2 * 2) mod 14 = 4
А отправляет B пару (α2, β2) = (2, 4)
Шифрование третьей карты:
Выберем случайное число k3=1
Считаем:
α3 = gA^k3 mod r = 4^1 mod 7 = 4
β3 = (gB^k3 * m3) mod r = (9^1 * 3) mod 14 = 12
А отправляет B пару (α3, β3) = (4, 12)
Теперь B может расшифровать полученные от A карты. Для этого он использует свой закрытый ключ и подстановку, указанные в задании:
Первая карта:
m1 = (β1 / α1^dB) mod r = (11 / 1^5) mod 14 = 11
Вторая карта:
m2 = (β2 / α2^dB) mod r = (4 / 2^5) mod 14 = 4
Третья карта:
m3 = (β3 / α3^dB) mod r = (12 / 4^5) mod 14 = 12
Таким образом, B получил карты 11, 4 и 12 соответственно.
Далее, А выбирает одно из двух полученных от B чисел, а затем отправляет Б выбранное им число и загаданное им ранее случайное число k2 для второй карты. В задании указано, что А выбрал второе полученное число, то есть 4.
В итоге, используя подстановку 1,2,(2,1), B может расшифровать загаданное А число k2:
k2 = (α2^cB * β2)^(r-dB) mod r = (2^5 * 4)^(14-5) mod 14 = 10
Теперь мы знаем, что А выбрал второе число и что было загадано для второй карты, и можем определить, какие карты были у А и Б на самом деле.
А разместил карты в следующем порядке: 11, 4, 12. Значит, при выборе второго числа он указал на карту номер 2, то есть на карту со значением 4.
B использовал подстановку 1,2,(2,1), что означает, что он должен выбрать первое число, если А выбрал карту со значением 1, и второе число, если А выбрал карту со значением 2 или 3. А выбрал карту со значением 2, поэтому B должен выбрать второе число.
Таким образом, Б получил карты 5, 11 и 7 соответственно.