Как безопасно раздавать карты?

Dec 03 2020

Из-за определенной пандемии мне было интересно, существует ли какой-либо криптографический способ удаленной раздачи карт без того, чтобы дилер мог их знать и не требуя для этого доверять серверу. Мои первые побуждения были связаны с разделением секретов и доказательствами с нулевым разглашением, но это, вероятно, даже не связано ... Некоторые первые мысли:

Учитывая стек $S$ из $N$ открытки, $n$ будет раздаваться в каждую руку $H_i, i\in\{1,2,...,p\}$ из $p$ игроки со следующими требованиями:

  1. $N\ge n\cdot p$ (очевидно)
  2. После того, как карта была взята, она не может быть взята и кем-либо еще, т. Е. $$\forall i\neq j: H_i\cap H_j = \{\}$$
  3. Никто не должен иметь возможность определять, какие карты есть у кого-то еще и какие остались в стопке. Таким образом, просто передать зашифрованное состояние мешка для перетасовки недостаточно. Может быть, каждый должен внести некоторую зашифрованную случайность, которая во втором раунде используется для определения розданных карт?
  4. В какой-то момент нужно суметь доказать, что конкретная карта § в данный момент находится в руке.

Есть ли какой-нибудь метод, который может этого добиться?


§ Я полагаю, что блокчейн можно использовать для отслеживания смены местами карт позже.

Ответы

1 ModalNest Dec 03 2020 at 01:18

Я думаю, вы ищете «мысленный покер» .

Вот видео, на котором Рон Ривест специально обсуждает, как раздавать карты через почту / Интернет.

Статья здесь тоже может быть хорошей прочтением (от создателей RSA).