Криптография для карточной игры P2P

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

Основная проблема, как я вижу, заключается в том, что каждый игрок имеет несколько стопок карт (взять колоду, текущую руку и сбросить колоду). Для любого из игроков должно быть невозможно изменить состав этих стопок, кроме случаев, когда это разрешено правилами игры (т. Е. Вытягивание или сброс карт), при этом игроки не должны знать, что находится в стопках их или их оппонента.

Я чувствую как будто для этого должен быть какой-то способ использовать что-то вроде криптографии с открытым ключом, но я продолжаю находить дыры в своих схемах. Может ли кто-нибудь предложить протокол или указать мне ресурсы по этой теме?

[Изменить] Итак, я подумал об этом еще немного, и вот идея, которую я придумал. Если сможешь проткнуть в нем какие-нибудь дыры, дайте мне знать.

Во время тасования у игрока есть стопка карт, значение которых ему известно. Они принимают эти значения, присоединяют к каждому случайную соль и затем хешируют их. Они записывают соли и передают хеш-коды своему противнику.

Противник объединяет свою собственную соль, снова хеширует, затем перемешивает хеши и передает колоду обратно исходному игроку.

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

18
задан HostileFork 8 October 2012 в 03:33
поделиться