Ментальный покер - Mental poker - Wikipedia

Ментальный покер это общее название для набора криптографический проблемы, связанные с честной игрой на расстоянии без необходимости доверенная третья сторона. Этот термин также применяется к теории окружающие эти проблемы и их возможные решения. Название происходит от карточная игра покер это одна из игр, к которым относится этот вид проблем. Подобные проблемы, описываемые как двухпартийные игры, принадлежат Блюму. подбрасывать монету на расстоянии, Проблема миллионеров Яо, и Рабина не обращая внимания на передачу.

Проблему можно описать так: «Как можно разрешить доступ к определенной информации только авторизованным участникам, не используя доверенного арбитра?» (Устранение доверенной третьей стороны позволяет избежать проблемы с попыткой определить, можно ли доверять третьей стороне, а также может сократить требуемые ресурсы.)

В покере это можно перевести так: «Как мы можем убедиться, что никто из игроков не складывает колоду или не смотрит на карты других игроков, когда мы сами тасуем колоду?». В физической карточной игре это было бы относительно просто, если бы игроки сидели лицом к лицу и наблюдали друг за другом, по крайней мере, если можно исключить возможность обычного мошенничества. Однако, если игроки не сидят в одном месте, а находятся в разных местах, и передают всю колоду между собой (используя почтовый Почта, например), это внезапно становится очень трудным. И для электронных карточных игр, таких как онлайн-покер, где механика игры скрыта от пользователя, это невозможно, если только используемый метод не позволяет какой-либо стороне обмануть, манипулируя электронной «колодой» или ненадлежащим образом наблюдая за ней.

Было предложено несколько протоколов для этого, первый Ади Шамир, Рон Ривест и Лен Адлеман (создатели ЮАР протокол шифрования).[1] Этот протокол был первым примером того, как две стороны проводят безопасные вычисления, а не безопасную передачу сообщений, используя криптографию; позже из-за утечки частичной информации в исходном протоколе это привело к определению семантическая безопасность к Шафи Гольдвассер и Сильвио Микали. Концепция многопользовательского ментального покера была введена в Моти Юнг Книга «Криптопротоколы» 1984 года.[2] Позже этот район превратился в то, что известно как безопасные многосторонние вычисления протоколы (для двух сторон, а также для нескольких сторон).

Перетасовка карт с использованием коммутативного шифрования

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

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

Алгоритм

Алгоритм перетасовки карт с использованием коммутативного шифрования будет следующим:

  1. Алиса и Боб договариваются об определенной «колоде» карт. На практике это означает, что они согласовывают набор чисел или других данных, так что каждый элемент набора представляет собой карту.
  2. Алиса выбирает ключ шифрования A и использует его для шифрования каждой карты в колоде.
  3. Алиса тасует карты.
  4. Алиса передает зашифрованную и перемешанную колоду Бобу. При наличии шифрования Боб не может знать, какая карта какая.
  5. Боб выбирает ключ шифрования B и использует его для шифрования каждой карты зашифрованной и перетасованной колоды.
  6. Боб тасует колоду.
  7. Боб передает дважды зашифрованную и перетасованную колоду обратно Алисе.
  8. Алиса расшифровывает каждую карту, используя свой ключ A. Это по-прежнему оставляет шифрование Боба на месте, поэтому она не может знать, какая карта какая.
  9. Алиса выбирает по одному ключу шифрования для каждой карты (A1, А2и т. д.) и шифрует их по отдельности.
  10. Алиса передает колоду Бобу.
  11. Боб расшифровывает каждую карту, используя свой ключ B. Это по-прежнему оставляет индивидуальное шифрование Алисы на месте, хотя он не может знать, какая карта какая.
  12. Боб выбирает по одному ключу шифрования для каждой карты (B1, B2и т. д.) и шифрует их по отдельности.
  13. Боб возвращает колоду Алисе.
  14. Алиса публикует колоду для всех, кто играет (в данном случае только Алиса и Боб, хотя о расширении см. Ниже).

Колода перемешана.

Этот алгоритм может быть расширен для произвольного количества игроков. Игроки Кэрол, Дэйв и так далее, нужно только повторить шаги 2-4 и 8-10.

Во время игры Алиса и Боб будут выбирать карты из колоды, определяя, в каком порядке они помещаются в перетасованную колоду. Когда один из игроков хочет увидеть свои карты, он запрашивает соответствующие ключи у другого игрока. Этот игрок, проверив, что запрашивающий игрок действительно имеет право просматривать карты, передает индивидуальные ключи от этих карт другому игроку. Проверка должна гарантировать, что игрок не пытается запросить ключи для карт, которые не принадлежат этому игроку.

Пример: Алиса выбрала карты с 1 по 5 в перетасованной колоде. Боб выбрал карты с 6 по 10. Боб просит взглянуть на свои карты. Алиса соглашается с тем, что Боб имеет право смотреть карты с 6 по 10, и дает ему свои индивидуальные ключи от карты A.6 к А10. Боб расшифровывает свои карты, используя для этих карт ключи Алисы и свой собственный, B6 в B10. Боб теперь может видеть карточки. Алиса не может знать, какие карты есть у Боба, потому что у нее нет доступа к ключам Боба B.6 в B10 которые необходимы для расшифровки карт.

Слабое место

Используемая схема шифрования должна быть защищена от атаки с использованием известного открытого текста: Боб не должен быть в состоянии определить исходный ключ Алисы A (или его количество, достаточное для того, чтобы позволить ему расшифровать любые карты, которые он не держит) на основе его знания незашифрованных значений карт, которые он вытянул. Это исключает некоторые очевидные схемы коммутативного шифрования, такие как просто XORing каждая карта с ключом. (Использование отдельного ключа для каждой карты даже при первоначальном обмене, иначе сделать эту схему безопасной, не работает, так как карты перемешиваются перед возвратом.)

В зависимости от согласованной колоды этот алгоритм может быть слабым. При шифровании данных некоторые свойства этих данных могут быть сохранены от открытого текста до зашифрованного текста. Это может быть использовано для «пометки» определенных карт. Следовательно, стороны должны согласовать колоду, в которой никакие карты не имеют свойств, сохраняемых при шифровании.

«Набор инструментов для умственных карточных игр» и его реализация

Кристиан Шиндельхауэр описывает сложные протоколы для выполнения и проверки большого количества полезных операций с картами и стопками карт в своей статье 1998 года «Набор инструментов для интеллектуальных карточных игр» [SCH98]. Работа связана с операциями общего назначения (маскирование и разоблачение карт, перемешивание и повторное перемешивание, вставка карты в стопку и т. Д.), Которые делают протоколы применимыми к любой карточной игре. В криптографические протоколы используемые Schindelhauer основаны на квадратичная остаточность, а общая схема по духу аналогична описанному выше протоколу. Правильность операций можно проверить с помощью доказательства с нулевым разглашением, так что игрокам не нужно раскрывать свою стратегию для проверки правильности игры.

Библиотека C ++ libtmcg [STA05] предоставляет реализацию набора инструментов Schindelhauer. Он был использован для реализации безопасной версии немецкой карточной игры. Скат, достигая скромной реальной производительности. В игру Skat играют три игрока с колодой из 32 карт, и поэтому она значительно менее требовательна к вычислениям, чем игра в покер, в которой от пяти до восьми игроков используют полную колоду из 52 карт.

Протокол покера без перемешивания карт

На сегодняшний день подходы ментального покера, основанные на стандартном протоколе Алиса-Боб (см. Выше), не обеспечивают достаточно высокую производительность для онлайн-игры в реальном времени. Требование, чтобы каждый игрок зашифровывал каждую карту, накладывает значительные накладные расходы. В недавней статье Голля [GOL05] описан протокол мысленного покера, который обеспечивает значительно более высокую производительность за счет использования свойств игры в покер для отхода от модели шифрования и перемешивания. Вместо того, чтобы тасовать карты и затем раздавать по мере необходимости, с новым подходом игроки генерируют (зашифрованные) случайные числа на лету, которые используются для выбора следующей карты. Каждую новую карту необходимо сравнивать со всеми уже сданными картами для обнаружения дубликатов. В результате этот метод особенно полезен в играх в стиле покера, в которых количество сдаваемых карт очень мало по сравнению с размером всей колоды. Однако для этого метода необходимо, чтобы все карты, которые уже были розданы, были известны всем, что в большинстве игр в стиле покера было бы лучше его самого.

Алгоритм создания карты требует криптосистемы с двумя ключевыми свойствами. Шифрование E должно быть аддитивно гомоморфный, так что E (c1) + E (c2) = E (c1 + c2). Во-вторых, столкновения должны быть обнаруживаемыми, без раскрытия открытого текста. Другими словами, учитывая E (c1) и E (c2), должна быть возможность ответить, c1= c2, без того, чтобы игроки узнали какую-либо другую информацию (в частности, личности c1 и c2). В Эльгамальское шифрование Схема является лишь одним из примеров хорошо известной системы с этими свойствами. Алгоритм работает следующим образом:

  1. Игроки инициализируют пустой список L который фиксирует используемые карты.
  2. Чтобы раздать карту, каждый игрок вычисляет случайное число. ря в {0, ..., 51} вычисляет E (rя), и издает неподатливый обязательство к E (rя)
  3. Затем игроки публикуют свои фактические E (rя), и может убедиться, что каждый игрок соблюдает свои обязательства
  4. Игроки вычисляют , который производит новую зашифрованную карту E (г *), с
  5. Игроки проверяют, есть ли E (г *) уже в L. Если не, E (г *) раздается соответствующему игроку и добавляется к L. Когда карты необходимо раскрыть, их можно расшифровать совместно.

Таким образом, игрокам нужно только вычислить шифрование для карт, которые фактически используются в игре, плюс некоторые накладные расходы на коллизии, которые невелики, если количество необходимых карт намного меньше размера колоды. В результате эта схема оказывается в 2-4 раза быстрее (по общему количеству модульных возведений в степень), чем самый известный протокол [JAK99], который выполняет полное перемешивание с использованием микс-сети.

Обратите внимание, что генерация случайных чисел является безопасным, пока любой игрок генерирует действительные случайные числа. Даже если к-1 игроки вступают в сговор, чтобы произвести число р*, пока kth игрок честно генерирует случайный , сумма все еще равномерно случайный в {0, 51}.

Если судить по количеству шифрования с одним агентом, алгоритм [GOL05] является оптимальным, когда не происходит коллизий, в том смысле, что любой протокол, справедливый для каждого игрока, должен выполнять как минимум столько же операций шифрования. Как минимум, каждый агент должен зашифровать каждую фактически используемую карту. В противном случае, если какой-либо агент не участвует в шифровании, то этот агент может быть обманут коалицией оставшихся игроков. Неизвестный агенту, не использующему шифрование, другие агенты могут совместно использовать ключи, чтобы позволить им всем узнать значения всех карт. Таким образом, любой подход, основанный на использовании агентов для выполнения шифрования, должен фокусироваться на схемах, которые минимизируют эффект коллизий, если они хотят достичь лучшей производительности.

Лучшая производительность за счет повышения доверия

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

Базовый протокол с использованием двух серверов выглядит следующим образом:

  1. Серверы S1 и S2 зашифровать и перетасовать колоду карт и опубликовать неизменное обязательство перед некоторыми перестановка зашифрованных карт игрокам. Это можно сделать с помощью любого из нескольких хорошо изученных криптографических протоколов.
  2. Игроки вычисляют независимые случайные числа в {0, ..., 51}, которые комбинируются для генерации случайного числа в {0, ..., 51}, как в [GOL05]
  3. Случайное число используется в качестве индекса в случайной перестановке, соответствующий игрок получает «право собственности» на указанную карту, и серверы отправляют этому игроку ключи для считывания значения карты.

В этом протоколе серверы S1 и S2 должны вступить в сговор, чтобы узнать достоинства любых карт. Более того, поскольку игроки в конечном итоге решают, какие карты сдавать, ненадежные серверы не могут влиять на игру в той степени, в какой это возможно в традиционных условиях. онлайн-покер. Схема может быть расширена, чтобы разрешить большее количество серверов (и, таким образом, повысить безопасность), просто путем включения дополнительных серверов в начальное шифрование. Наконец, первый шаг в протоколе может выполняться в автономном режиме, что позволяет предварительно вычислить и кэшировать большое количество перетасованных зашифрованных «колод», что приведет к отличной производительности в игре.

Рекомендации

  1. ^ А. Шамир, Р. Ривест и Л. Адлеман, «Mental Poker», Техническая записка LCS / TM-125, Массачусетский технологический институт, апрель 1979 г. https://apps.dtic.mil/dtic/tr/fulltext/u2/a066331.pdf
  2. ^ Моти Юнг: Криптопротоколы: подписка на открытый ключ, секретная блокировка и многопользовательская игра в ментальный покер (расширенное резюме). CRYPTO 1984: 439-453.

внешняя ссылка