powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Криптографический покер
156 сообщений из 156, показаны все 7 страниц
Криптографический покер
    #39583821
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос возник. Возможно ли реализовать карточную игру покер (холдем) таким образом, чтобы можно было обеспечить полную защиту (понятное дело, криптографическую) процесса игры от подтасовки и мухлежа?

Дано:

1. Игровой сервер — серверное приложение игры
2. Игроки (от 2-10) — приложение игрового клиента

Условия:

1. Игроки получают по 2 карты из рандомно перетасованной колоды
2. На стол выкладывается от 3 до 5 карт из той же колоды
3. Ни сервер, ни другие игроки не могут знать или хоть как-то вычислить какие карты у других игроков, до окончания игры
4. Ни сервер, ни другие игроки не должны знать, какие карты выбраны из колоды, кроме выложенных на стол
5. Раздача карт ведётся из одной колоды, так, чтобы игроков не оказалось два пиковых туза
6. Ни один игрок не может, пользуясь незнанием других игроков, изменить свои карты на желаемые

Интересует не конкретно реализация покера, а именно возможные алгоритмы.

Есть идеи? :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39583833
Pu4koff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У каждого игрока есть постоянная пара ключей. Закрытый лежит на сервере и не известен другим игрокам, открытый - только у конкретного игрока, в процессе игры никак по сети не гоняются.
При начале игры каждый игрок генерирует себе временную пару ключей. Закрытые ключи пересылаются между игроками, на сервер не отправляются. Используется для обмена данными между игроками, чтобы сервер ничего не перехватил.
Сервер генерирует колоду и каждую карту защищает своей цифровой подписью.
Сервер отправляет колоду, допустим игроку № 1 - И1. Он перетасовывает колоду и рассылает другим игрокам (шифруя временными ключами).
Каждый игрок соответственно перепроверяет, что с колодой всё нормально (цифровая подпись на месте, набор карт правильный) и шифрует её ключами каждого из игроков.
Полученный набор зашифрованных карт пересылается каждым игроком на сервер.
т.е. каждый игрок отправит на сервер табличку, в которой строка - это карта, а столбец - шифровка карты ключом соответствующего игрока.
Сервер перепроверяет, что все игроки прислали одинаковые таблички и никто ничего не подменил.
Еще раз тасует колоду. Для отправки конкретному игроку карта дополнительно шифруется соответствующим постоянным ключом. Соответственно закрытые карты расшифровываются игроком в два этапа: сначала постоянным ключом, а потом - временным.
Открытые карты отправляются как есть и игроки их расшифровывают только своими временными ключами.
Когда игрок вскрывается, сервер рассылает имеющиеся у него шифровки этих карт другим игрокам, те расшифровывают своими ключами и сверяют, что подмены не было и игроку действительно пришла от сервера эта карта.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583834
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Ну, как вариант:

2 колоды: одна на сервере – с картами игроков, вторая у игроков – с номиналами карт.

Игроки согласованно генерируют набор карт [ID –> карта] любым образом и обмениваются ею между собой. Все использованные ID отправляются на сервер (без номиналов). Сервер собирает колоду из 54х (или сколько там карт) ID, тасует её и раздаёт карты игрокам, часть карт выкладывает на стол. При этом игроки знают свои карты, но не знают карты на столе или карты других игроков, а сервер знает все карты, но не знает их номиналов.

Дальше идёт сама игра как обычно. Когда все ставки закончились и все вскрываются – все игроки отправляют свои колоды (одинаковые!) на сервер, он сверяет их между собой и со своими данными о раздаче, строит расклад с номиналами и рассылает его игрокам. Игроки сверяют расклад со своими картами и подтверждают его.

Раунд завершён.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583835
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpПри этом игроки знают свои карты, но не знают карты на столе или карты других игроков
При этом игроки знают свои карты и карты на столе, но не карты других игроков, разумеется.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583877
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt1. Игроки получают по 2 карты из рандомно перетасованной колоды
2. На стол выкладывается от 3 до 5 карт из той же колоды
3. Ни сервер, ни другие игроки не могут знать или хоть как-то вычислить какие карты у других игроков, до окончания игры
4. Ни сервер, ни другие игроки не должны знать, какие карты выбраны из колоды, кроме выложенных на столС колодой работает игровой сервер, поэтому, в любом случае, игрокам придётся доверять серверу.5. Раздача карт ведётся из одной колоды, так, чтобы игроков не оказалось два пиковых тузаКосяк, который не могут позволить себе ни честный сервер, ни мошеннический. Пренебрегаем возможностью такого мухлежа со стороны сервера.6. Ни один игрок не может, пользуясь незнанием других игроков, изменить свои карты на желаемыеТривиальная электронная подпись раздач сервером.
Надо отчётливо понимать, что никакая "интернет-схема" не защищена от утечек по по побочным каналам.
Она же - игра на одну руку. Таким образом, серверу тоже придётся доверять игрокам.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583900
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКосяк, который не могут позволить себе ни честный сервер, ни мошеннический. Пренебрегаем возможностью такого мухлежа со стороны сервера.

С таким пренебрежением, решение становится банальным и тривиальным.

Basil A. SidorovНадо отчётливо понимать, что никакая "интернет-схема" не защищена от утечек по по побочным каналам.
Она же - игра на одну руку. Таким образом, серверу тоже придётся доверять игрокам.

Ну утечки это уже проблема защиты каналов, я речь про общий алгоритм.

Вот как обмен сообщениями с помощью открытого/закрытого ключа, можно отправлять по открытым каналам. Атака in middle решается с помощью доверенных сертификатов. Но как организовать подобное для игры в покер — пока не понятно.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583923
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pu4koffЗакрытые ключи пересылаются между игроками, на сервер не отправляются. Используется для обмена данными между игроками, чтобы сервер ничего не перехватил.

А зачем обмениваться закрытыми ключами? Может открытыми?


Pu4koffт.е. каждый игрок отправит на сервер табличку, в которой строка - это карта, а столбец - шифровка карты ключом соответствующего игрока.
Сервер перепроверяет, что все игроки прислали одинаковые таблички и никто ничего не подменил.

А как вычислить, что каждый игрок взял себе по карте, которую ОН ЗНАЕТ, но никто больше не знает, и при этом неизвестно, какие карты какой игрок взял, да и вообще, какие конкретно карты были извлечены, чтобы можно было делать предположения?

Известно должно быть только карты, выложенные на стол.

Тут всё бы ничего, если бы из колоды можно было брать любые карты. Но брать можно только из тех, которые другой игрок УЖЕ не взял. Как это вычислить и при этом не раскрыть информацию?


Pu4koffСоответственно закрытые карты расшифровываются игроком в два этапа: сначала постоянным ключом, а потом - временным.
Открытые карты отправляются как есть и игроки их расшифровывают только своими временными ключами.

На самом деле шифровать карту не нужно, нужно шифровать номер карты в перетасованной колоде. Но номер карты, даже шифрованный, позволяет легко вычислить соответствие. А если этого не делать, то у игроков может оказаться по одной и той же карте.

Проблема именно здесь. Непонятно как решать.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583924
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpИгроки согласованно генерируют набор карт [ID –> карта] любым образом и обмениваются ею между собой.

Но это означает, что любой игрок может вступить в сговор с сервером и таким образом сообща, раскрыть все карты на руках других игроков. Это может быть игрок, который управляет сервером (типа игрок от казино). Т.е. это не решает поставленную задачу. :(
...
Рейтинг: 0 / 0
Криптографический покер
    #39583926
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представим себе реальную ситуацию:

1. Колода карт лежит на столе
2. Все видят эту колоду карт, её нельзя подменить и посмотреть какие там карты
3. Все берут по 2 уникальных карты, количество карт в колоде уменьшается.
4. Никто не знает какие у кого карты, включая крупье, даже если один игрок играет скрытно от казино.

Нужно обеспечить такую же ситуацию, но на уровне приложения. Доверять серверу -- это не решение. Можно выпустить доверенные сертификаты, чтобы исключить атаки men-in-middle. На этом всякое доверие заканчивается.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583941
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слышал, что абсолютно честное (поскольку децентрализованное) казино на блокчейне уже реализовано. Кажется даже не на отдельном блокчейне, а в виде контракта в Эфириуме...
...
Рейтинг: 0 / 0
Криптографический покер
    #39583942
Pu4koff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttPu4koffЗакрытые ключи пересылаются между игроками, на сервер не отправляются. Используется для обмена данными между игроками, чтобы сервер ничего не перехватил.

А зачем обмениваться закрытыми ключами? Может открытыми?

Это я налажал везде и напутал открытые с закрытыми. 2 часа ночи - они такие :)

У меня получается косяк в том, что сервер может сговориться с конкретным игроком и отправлять ему карты до тех пор, пока не придут нужные.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583943
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttalekcvpИгроки согласованно генерируют набор карт [ID –> карта] любым образом и обмениваются ею между собой.
Но это означает, что любой игрок может вступить в сговор с сервером и таким образом сообща, раскрыть все карты на руках других игроков. Это может быть игрок, который управляет сервером (типа игрок от казино). Т.е. это не решает поставленную задачу. :(
В ТЗ не было пункта про исключение сговора игроков с сервером.

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

Пользуясь вашим примером: т.к. игроки не видят друг-друга и крупье, игроку от казино никто не может помешать сговориться с крупье, чтобы тот подглядывал в раздаваемые карты.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583958
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpВ ТЗ не было пункта про исключение сговора игроков с сервером.

Напрямую не было :) Но это следует из того, что ни сервер ни любой из игроков не должен знать какие карты были выбраны из колоды.


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

Расклад не обязательно должен быть одинаковый для всех. Единственное что важно, это уникальность выбранных карт.

alekcvpПользуясь вашим примером: т.к. игроки не видят друг-друга и крупье, игроку от казино никто не может помешать сговориться с крупье, чтобы тот подглядывал в раздаваемые карты.

У меня есть решение, которое мне лично не нравится, так как не отвечает условиям задачи полностью.

Сервер тасует колоду, разбивает на N кучек, соответственно количеству игроков, каждый игрок выбирает по 2 карты из своей кучки. Таким образом сервер знает из какого набора выбраны карты, хотя не знает какие именно. И это позволяет рассчитывать вероятность победы для любого из игроков.

Можно упростить задачу.

Колода представляет собой 16 карт: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Пусть будет 3-ое игроков.
После того, как игроки выбрали по 2 карты, в колоде остаётся 10 карт.
Сервер выбирает произвольные 3-5 карт и публикует их всем игрокам.
Оставшиеся 5 карт серверу тоже не должны быть известны, до окончания игры.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583960
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttОставшиеся 5 карт серверу тоже не должны быть известны, до окончания игры.
Оставшиеся 5 карт в реальном казино известны _миру_, иначе бы их не существовало. В компьютерной игре аналог _мира_ наверное все же игровой сервер?
...
Рейтинг: 0 / 0
Криптографический покер
    #39583963
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRhVosttОставшиеся 5 карт серверу тоже не должны быть известны, до окончания игры.
Оставшиеся 5 карт в реальном казино известны _миру_, иначе бы их не существовало. В компьютерной игре аналог _мира_ наверное все же игровой сервер?

В реальном казино, эти карты лежат в колоде, содержание которой неизвестно. Ну я не беру в расчёт всякие шулерские технологии ))
...
Рейтинг: 0 / 0
Криптографический покер
    #39583967
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ реальном казино, эти карты лежат в колоде, содержание которой неизвестно. Ну я не беру в расчёт всякие шулерские технологии ))
Содержание колоды неизвестно всем участникам, но не "реальному миру", "колода существует в этом мире - мир знает ее содержание" - это ведь логичней чем "колода существует в этом мире и мир не знает ее содержания"?
...
Рейтинг: 0 / 0
Криптографический покер
    #39583983
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНу утечки это уже проблема защиты каналов, я речь про общий алгоритм.Это не утечки по открытым каналам, это сговор.
За столом - четыре игрока. Трое в сговоре и им не важно, кто именно из них выиграет - банк будет поделён на всех. Т.к. увеличение информации улучшает оценку вероятности - вся тройка данными о своих картах.
Мошенникам, в отличие от взломщиков, не требуется вклиниваться в канал между клиентом и сервером - достаточно, утрируя, голубиной почты.

Можете посмотреть "Большой куш", где Гарри Топор принимает данные прямо под носом у совсем не дружественных партнёров.
Вариантов мошенничества, когда каждый игрок у себя дома - вагон и маленькая тележка. Как и способов автоматизировать процесс вычисление оптимальных ходов на всю группу.

P.S. Про мошеннический сервер с двумя тузами даже обсуждать неинтересно: задача мошенника не вылететь из бизнеса, будучи пойманным за руку, а "долго и счастливо" доить простофиль.
С учётом того, что игровой сервер предоставляет платформу, где каждый рискует своими деньгами, а владельцы платформы живут на "входные" или проценты с выигрышей/ставок - совсем непонятно, зачем читерить с пятым тузом.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583989
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЗа столом - четыре игрока. Трое в сговоре и им не важно, кто именно из них выиграет - банк будет поделён на всех. Т.к. увеличение информации улучшает оценку вероятности - вся тройка данными о своих картах.
Мошенникам, в отличие от взломщиков, не требуется вклиниваться в канал между клиентом и сервером - достаточно, утрируя, голубиной почты.

Это допустимо по условиям задачи. Алгоритм должен лишь обеспечивать сокрытие и сохранность информации до момента её раскрытия всем участникам.

Когда трое в сговоре, они могут поделиться информацией о картах друг друга, но не узнать что там у четвёртого.


Basil A. SidorovP.S. Про мошеннический сервер с двумя тузами даже обсуждать неинтересно: задача мошенника не вылететь из бизнеса, будучи пойманным за руку, а "долго и счастливо" доить простофиль.
С учётом того, что игровой сервер предоставляет платформу, где каждый рискует своими деньгами, а владельцы платформы живут на "входные" или проценты с выигрышей/ставок - совсем непонятно, зачем читерить с пятым тузом.

Меня интересует не сколько конкретно именно покера, сколько алгоритм реализации подобной схемы. Я не собираюсь делать очередное онлайн-казино и выбивать из должников деньги
...
Рейтинг: 0 / 0
Криптографический покер
    #39583991
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRСодержание колоды неизвестно всем участникам, но не "реальному миру", "колода существует в этом мире - мир знает ее содержание" - это ведь логичней чем "колода существует в этом мире и мир не знает ее содержания"?

ЯННП )
...
Рейтинг: 0 / 0
Криптографический покер
    #39583994
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttУ меня есть решение, которое мне лично не нравится, так как не отвечает условиям задачи полностью.

Сервер тасует колоду, разбивает на N кучек, соответственно количеству игроков, каждый игрок выбирает по 2 карты из своей кучки. Таким образом сервер знает из какого набора выбраны карты, хотя не знает какие именно. И это позволяет рассчитывать вероятность победы для любого из игроков.
А дополнительной сдачи там нет?.. Т.е. игроки получают карты только один раз?
Потому что если будет ещё хоть одна раздача, то либо надо заново разбивать карты на кучки, а для этого серверу надо узнать какие карты убрать из колоды, либо это уже не "честный" покер получается, когда доступные игроку карты ограничены ещё до раздачи.
...
Рейтинг: 0 / 0
Криптографический покер
    #39583997
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpА дополнительной сдачи там нет?.. Т.е. игроки получают карты только один раз?
Потому что если будет ещё хоть одна раздача, то либо надо заново разбивать карты на кучки, а для этого серверу надо узнать какие карты убрать из колоды, либо это уже не "честный" покер получается, когда доступные игроку карты ограничены ещё до раздачи.

Ну в данном варианте игроки получают карты только один раз. Согласен, что не честный, но пока вариантов больше не напрашивается :(
...
Рейтинг: 0 / 0
Криптографический покер
    #39584003
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЭто допустимо по условиям задачи. Алгоритм должен лишь обеспечивать сокрытие и сохранность информации до момента её раскрытия всем участникам.Асимметричные алгоритмы шифруют на паре "закрытый ключ отправителя - открытый ключ получателя", а расшифровывают на паре "закрытый ключ получателя - открытый ключ отправителя". Таким образом, отправитель не может расшифровать собственное зашифрованное послание.
Проблема в том, что сервер, который тасует и сдаёт колоду, всё равно имеет доступ к содержимому этой колоды - нет принципиальной разницы между хитромудрым алгоритмом и простым доверием "честному серверу".

В целом, наверное, можно попробовать такой вариант:
0. Доверенная сторона генерирует растасованную колоду, шифрует пары "карта - ЭП" индивидуальными ключами и заверяет всю колоду-цепочку ЭП;
1. Колода (список шифрованных пар, заверенный ЭП) публикуется сервером, который делает начальную раздачу и последующие выдачи карт;
2. Игрок, получив карты , запрашивает у доверенной стороны индивидуальные ключи и вскрывает то, что ему пришло.
3. Раздача сервера, запросы и вскрытия игроков подписываются личными ЭП.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584012
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

серверу нужны хелперы - генераторы, тасовщики, раздатчики и т.д.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584013
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, при такой постановке задачи и сервер не нужен.
Ведь что такое сервер, по-факту, в обычной игре? Это некая доверенная сторона, которая хранит и обрабатывает часть информации, доступа к которой игроки иметь не должны.

Однако, если мы допускаем что игрок (или несколько) могут иметь "сговор" с сервером и доступ к его информации, то алгоритм, который будет исключать такую ситуацию, будет прекрасно работать и в том случае, если сервером изначально будет один из игроков (можно считать что он изначально "сговорился" с сервером). Таким образом такой игре сервер и не нужен.

И вообще, мне кажется, что если решение этой задачи и существует, то это некий децентрализованный алгоритм.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584022
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Криптографический покер
    #39584033
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXS https://dao.casino/ И ваш пост и сайт - квинтэссенция "массового блокчейна": короткая фигня непонятно о чём и куча какой-то внутренней деятельности, понятной только посвящённым.

P.S. Описание-то алгоритма где отыскивать? В мешанине перекрёстных ссылок на разную малопонятную фигню? Выцеживать из коротеньких блогопостов?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584036
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВопрос возник. Возможно ли реализовать карточную игру покер (холдем) таким образом, чтобы можно было обеспечить полную защиту (понятное дело, криптографическую) процесса игры от подтасовки и мухлежа?
Поскольку подтасовка и мухлеж - не являются терминами из области It - то им надо дать какое-то определение.

У меня во первых возникает мысль что нужно.
1) Описать правила игры
2) Описать протокол взаимодействия сервера и клиента (допустим это JSON через веб-сокет браузера)
и описать методы которыми клиент может оперировать.
3) Еще рез пересмотреть методы и выбросить из них все ненужные или избыточные или
приводящие к неоднозначному действию.
4) Использовать secured random generator на сервере для тасовки колоды.
5) Использовать протоколы типа SSL для взаимодействия с бэкендом.

Я думаю - Profit.

Все остальные советы КМК будут повторять обычные рекомендации по веб-безопасности.
Патчить. Регулярно наблюдать логи действий. Исключать атаки типа man-in-the-middle.

Но главный пункт - это (2) и (3). Я думаю что они - ключевые в вопросах инфо-безопасности
приложения. Они - это зона ответственности разработчика. Все остальное - типовое.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584065
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПоскольку подтасовка и мухлеж - не являются терминами из области It - то им надо дать какое-то определение.

Ну речь идёт только о технической стороне вопроса обеспечения честной игры. Конечно, игроки могут объединиться, но это им не должно давать возможности раскрыть карты других игроков, даже если в махинации будет участвовать владелец сервера.

maytonУ меня во первых возникает мысль что нужно.

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


maytonНо главный пункт - это (2) и (3). Я думаю что они - ключевые в вопросах инфо-безопасности
приложения. Они - это зона ответственности разработчика. Все остальное - типовое.

— Какую ногу резать, правую или левую?
— Я думаю, надо обеспечить стерильность, инструменты должны быть достаточно острые..

:)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584067
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttигроки могут объединиться, но это им не должно давать возможности раскрыть карты других игроков, даже если в махинации будет участвовать владелец сервера.Как я уже отмечал - сервер имеет доступ к колоде, а значит защита от манипуляций на стороне сервера - технически невозможна.
Можно отдать серверу растасованную колоду, но принципально это ничего не меняет - придётся доверять другому участнику.

P.S. Что вы так носитесь с "исключением доверия" - любой банк имеет техническую возможность произвольно менять состояние счетов клиентов, но, обычно, не возникает принципиальных проблем доверять банку крупные суммы денег.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584068
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov2. Игрок, получив карты , запрашивает у доверенной стороны индивидуальные ключи и вскрывает то, что ему пришло.

Если запрашиваются ключи для конкретных карт, информация вскрывается для доверенной стороны. Т.е. уже не алгоритм является основой доверия, а некая сторона, что нарушает всю концепцию.

Если запрашиваются все ключи, то шифрование становится бессмысленным.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584069
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПроблема в том, что сервер, который тасует и сдаёт колоду, всё равно имеет доступ к содержимому этой колоды - нет принципиальной разницы между хитромудрым алгоритмом и простым доверием "честному серверу".

Нет, проблема в другом. Ключевая проблема -- необходимо исключить уже взятые каждым игроком карты из колоды таким образом, чтобы это было до конца игры не известно, какие именно карты были взяты.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584070
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosсерверу нужны хелперы - генераторы, тасовщики, раздатчики и т.д.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584071
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЭто некая доверенная сторона, которая хранит и обрабатывает часть информации, доступа к которой игроки иметь не должны.

С доверенной стороной вообще всё упрощается до тривиального уровня.

Представьте себе зашифованный обмен сообщений: вы отправляете своё сообщение «доверенной стороне», она его шифрует и отправляет вам. Вы отправляете пакет собеседнику, он отправляет зашифрованный пакет «доверенной стороне», и получает расшифрованное сообщение.

Ни о какой конфиденциальности в данном случае говорить не приходится.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584072
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли запрашиваются ключи для конкретных карт, информация вскрывается для доверенной стороны. Т.е. уже не алгоритм является основой доверия, а некая сторона, что нарушает всю концепцию.Понимаете в чём дело ...
Гораздо проще пройти сертификацию на отсутствие незадекларированных возможностей (НДВ) и аттестацию рабочих мест, нежели пытаться изобразить работу в недоверенной среде. Для хомячка или маленького стартапа - задача неподъёмная, но это уже их проблемы.
Существуют отработанные методики защиты от внешних нарушителей и они достаточно просты для реализации только техническими средствами. Хотя и в этих случаях требуются всяческие регламенты типа "не записывать пароли на листочки" и т.п. организационных мер.
Но вот лично мне сложно представить защиту от внутренних нарушителей без использования организационных мер, которые отодвигают технические мероприятия на второй план.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584073
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напрашивается примерно такое решение:

1. Сервер тасует колоду, подписывает и высылает подпись всем игрокам.
2. Каждый игрок берёт 2 рендомные карты, т.е. выбирает 2 индекса (n1, n2) из серии 0..51 (в колоде 52 карты), подписывает с солью выбранные индексы, отправляет подпись на сервере (соль пока сохраняется в секрете).
3. Сервер раскрывает игрокам содержание всей колоды, что скрывается за каждым индексом, каждый игрок проверяет полученную ранее от сервера подпись.
4. Далее следует игровой процесс:
5. Сервер выбирает рендомно 3 индекса для первых 3-х карт и сообщает о них игрокам, игроки уже знают что означает каждый индекс.
6. Происходит стандартная игра со ставками и проч.
7. Сервером выбирается 4-ый индекс для выкладки на стол 4-ой карты.
8. Сервером выбирается 5-ый индекс для выкладки на стол 5-ой карты.

Конец игры:

1. Игроки раскрывают серверу индексы своих карт + соль, чтобы сервер убедился в достоверности за счёт полученной ранее подписи от каждого игрока.

Всё вроде выглядит неплохо, кроме того, что индексы могут пересечься, и я не вижу способов этого избежать, не раскрыв никому информации раньше времени :(
...
Рейтинг: 0 / 0
Криптографический покер
    #39584075
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хвост. Давай зайдем с другой стороны.

Ты смоделируй возможную атаку. И мы обсудим как ее устранить.

Ато получается здесь обсуждаем как защититься от шума электронов в кристаллической решетке
или солнечных бурь.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584076
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНо вот лично мне сложно представить защиту от внутренних нарушителей без использования организационных мер, которые отодвигают технические мероприятия на второй план.

Никто не говорит про отсутствие организационных мер :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584078
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Ну я же сказал. Владелец «доверенного» сервера вступает в сговор с любым из игроков, или с реальными игроками играет засланный казачок от владельца сервера. Т.е. какой-то игрок получает режим GOD-mode, знает какие карты у всех игроков на руках.

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

Меня интересует, можно ли обеспечить защищённую игру не прибегая к доверенной стороне. Потому что доверенная сторона — это и есть критическая уязвимость во всей системе.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584079
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonАто получается здесь обсуждаем как защититься от шума электронов в кристаллической решетке
или солнечных бурь.

Да вроде тут всё очевидно. Все решения пока сводятся к доверенной стороне. А задача как раз таки сводится к тому, как избежать необходимости в доверии какой-то стороне, кроме доверия к алгоритму.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584080
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt1. Сервер тасует колоду, подписывает и высылает подпись всем игрокам.
2. Каждый игрок берёт 2 рендомные картыУже ошибка - крупье сдаёт карты из растасованной колоды - никакой случайности.
Если выбирать случайные индексы, то колоду можно и не тасовать.
Второй косяк - раз уж сервер тасовал колоду, то ему конечную раскладка известна априори.

Собственно, в реальном казино именно крупье играет роль доверенной стороны - иначе очередной игрок и сдавал бы карты.
Наличие крупье позволяет:
1. Исключить шулерство со стороны игроков;
2. Претензии к раздаче предъявляются конкретному участнику схемы игры, что сильно упрощает разбор конфликтных ситуаций.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584081
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли выбирать случайные индексы, то колоду можно и не тасовать.

Нельзя не тасовать. Так как с известным порядком карт, каждый игрок может выбрать конкретные карты, имитируя рендом.


Basil A. SidorovВторой косяк - раз уж сервер тасовал колоду, то ему конечную раскладка известна априори.

Известно. Но неизвестно, что было выбрано из колоды каждым игроком.


Basil A. SidorovСобственно, в реальном казино именно крупье играет роль доверенной стороны - иначе очередной игрок и сдавал бы карты.

В реальном казино роль доверенной стороны играют глаза игроков. Они видят колоду карт, перевёрнутую рубашкой вверх. Если вы когда-нибудь увидите в каком-нибудь казино, как крупье раздаёт карты, доставая их откуда-то из-под стола, расскажите мне :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584082
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttmayton,

Ну я же сказал. Владелец «доверенного» сервера вступает в сговор с любым из игроков, или с реальными игроками играет засланный казачок от владельца сервера. Т.е. какой-то игрок получает режим GOD-mode, знает какие карты у всех игроков на руках.

Мне кажется нам здесь надо поставить точку. Вернуться на начало топика и обсуждать
совершенно другую тему.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584083
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttА задача как раз таки сводится к тому, как избежать необходимости в доверии какой-то стороне, кроме доверия к алгоритму.Нет проблем с алгоритмами - есть проблема с постановкой.
А постановка получается следующей: на начальном этапе один из участников имеет полную информацию - как сделать так, чтобы участник забыл о том, что ему уже известно.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584085
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВ реальном казино роль доверенной стороны играют глаза игроков.Глаза игроков играют роль аудита.
Крупье - именно, что доверенная сторона.

P.S. В телевизионных трансляциях фокусов Арутюна Акопяна мой отец замечал его манипуляции. Мне это не удавалось.
Зашибись из меня "доверенная сторона", если я на тривиальный аудит не способен.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584086
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМне кажется

вот с этим согласен :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584087
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНет проблем с алгоритмами - есть проблема с постановкой.
А постановка получается следующей: на начальном этапе один из участников имеет полную информацию - как сделать так, чтобы участник забыл о том, что ему уже известно.

ну это тоже самое, но в профиль.

Basil A. SidorovГлаза игроков играют роль аудита.
Крупье - именно, что доверенная сторона.

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

но до того, как придумали асимметричное шифрование тоже не знали, как можно вести переписку, которую невозможно скомпрометировать. для защиты от аттак men-in-middle требуется всего лишь доверие к сертификату, что не даёт возможности доверенной стороне расшифровать сообщения.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584088
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНельзя не тасовать. Так как с известным порядком карт, каждый игрок может выбрать конкретные карты, имитируя рендом.Если игрокам нельзя доверять, то нельзя и доверять им выбор карт. Более того - выбор карт игроком прямо нарушает правила игры.
При этом на стороне доверенного сервера не имеет значения будут ли карты выбраны последовательно из уже растасованной колоды или сервер будет случайно выбирать карты из упорядоченной последовательности.
То, что реальный крупье сначала тасует колоду - не более чем техническая особенность, связанная со сложностью ручной генерации случайной последовательности за один раз.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584090
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли игрокам нельзя доверять, то нельзя и доверять им выбор карт. Более того - выбор карт игроком прямо нарушает правила игры.

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


Basil A. SidorovПри этом на стороне доверенного сервера не имеет значения будут ли карты выбраны последовательно из уже растасованной колоды или сервер будет случайно выбирать карты из упорядоченной последовательности.

случайность должна быть распределённая :) если кто-то один будет в одно рыло принимать все решения, все дальнейшие манипуляции бессмысленны.

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

если бы игроки брали карты из разложенного веера, суть игры бы не поменялась ни на йоту.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584091
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttиграя онлайн подобный аудит невозможен. я допускаю, что поставленная задача невыполнима без доверенной стороны.Собственно онлайн-казино и являются такой доверенной стороной. Вы или доверяете казино или не играете в нём. Это как хвост ослика Иа.но до того, как придумали асимметричное шифрование тоже не знали, как можно вести переписку, которую невозможно скомпрометировать.Я вас умоляю. Изобретение асимметричных шифров никак не решает проблему доверия.
А инфраструктура удостоверяющих центров как раз предполагает априорное доверие некоторым участникам. PGP-шная сеть доверия ничем особым не отличается от PKI.

P.S. Систему признаков "работа под контролем" придумали до появления рАзвитых вариантов машинного шифрования.
Просто потому, что борьба с дезинформацией требуется вне зависимости от необходимости шифрования самих данных.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584094
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли бы игроки брали карты из разложенного веера, суть игры бы не поменялась ни на йоту.Поменялась бы - возникает возможность конфликта между выбором двух и более игроков.
Чтобы исключить конфликты между игроками - используют арбитров и правила арбитража.
В том числе - в технике: любые протоколы обмена на общей шине содержат механизмы арбитража.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584095
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

я так понял, у вас совершенно нет никаких идей по поводу решения поставленной задачи, поэтому вы и взялись убеждать меня в том, что доверенная сторона -- это хорошо и так правильно? :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584096
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovПоменялась бы - возникает возможность конфликта между выбором двух и более игроков.
Чтобы исключить конфликты между игроками - используют арбитров и правила арбитража.
В том числе - в технике: любые протоколы обмена на общей шине содержат механизмы арбитража.

про возможность конфликта я и говорю, это ключевая проблема в предложенном мною алгоритме, и я не знаю как её решить. пока :)

может кто-то что-то предложит.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584097
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя так понял, у вас совершенно нет никаких идей по поводу решения поставленной задачиИдей у меня - как у того попа из анекдота про дохнущих кур.
Проблема в том, что все идеи получаются как в рассказе Булычёва "Восемнадцать раз": "Где им взять устрицу - я могу подсказать, но где они возьмут лимонный сок?"
...
Рейтинг: 0 / 0
Криптографический покер
    #39584098
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 52 "слота", каждый игрок приписывает каждому слоту некоторое число, шифрует с некоторым значением ключа и публикует свои 52 зашифрованных числа. Пусть, например, игроков 4, тогда в каждом слоте лежит по 4 зашифрованных числа.

При этом должна быть придумана "система", обеспечивающая то, что из каждых 4-х чисел "складывалось" ровно одно уникальное "итоговое число" (номинал карты).

Слоты - это колода. Если игрок "взял карту" (слот), то остальные игроки отдают ему свои ключи от этого слота. И он, имея свой собственный (последний) ключ, узнаёт все числа (относящиеся к этому слоту) и "складывает" из них "номинал карты", которая у него на руках.

А когда он "открывает" эту карту, то объявляет всем все ключи, так что этот номинал этой карты становится всем очевиден.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584099
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovИдей у меня - как у того попа из анекдота про дохнущих кур.
Проблема в том, что все идеи получаются как в рассказе Булычёва "Восемнадцать раз": "Где им взять устрицу - я могу подсказать, но где они возьмут лимонный сок?"

не смог нагуглить анекдот про дохнущих кур...
...
Рейтинг: 0 / 0
Криптографический покер
    #39584100
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSЕсть 52 "слота", каждый игрок приписывает каждому слоту некоторое число, шифрует с некоторым значением ключа и публикует свои 52 зашифрованных числа. Пусть, например, игроков 4, тогда в каждом слоте лежит по 4 зашифрованных числа.

При этом должна быть придумана "система", обеспечивающая то, что из каждых 4-х чисел "складывалось" ровно одно уникальное "итоговое число" (номинал карты).

Слоты - это колода. Если игрок "взял карту" (слот), то остальные игроки отдают ему свои ключи от этого слота. И он, имея свой собственный (последний) ключ, узнаёт все числа (относящиеся к этому слоту) и "складывает" из них "номинал карты", которая у него на руках.

А когда он "открывает" эту карту, то объявляет всем все ключи, так что этот номинал этой карты становится всем очевиден.

С ключами затея интересная, сам думаю вокруг этого, и уже подобные предложения были.
Но я не понял про «систему», можно конкретней?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584101
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttне смог нагуглить анекдот про дохнущих кур...Крестьянин, у которого дохнут куры, спрашивает у попа совета.
В несколько итераций получает рекомендации разной степени анекдотичности.
Когда крестьянин перестаёт спрашивать новых советов, поп интересуется - как дела.
К. - Сдохли куры, батюшка ...
П. - Жаль, у меня ещё столько идей было ...
...
Рейтинг: 0 / 0
Криптографический покер
    #39584102
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, так я вот тоже не могу придумать эту систему (на ночь глядючи-то). Что-то типа банального смещения (по модулю 52) ... но как обеспечить уникальность результата (чтобы номиналы разных карт не "склеивались")?..
...
Рейтинг: 0 / 0
Криптографический покер
    #39584103
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovП. - Жаль, у меня ещё столько идей было ...



отличный анекдот, только куры тут никакие не дохнут, задача является разминкой для ума
...
Рейтинг: 0 / 0
Криптографический покер
    #39584104
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXShVostt, так я вот тоже не могу придумать эту систему (на ночь глядючи-то). Что-то типа банального смещения (по модулю 52) ... но как обеспечить уникальность результата (чтобы номиналы разных карт не "склеивались")?..

чтобы сообразить для каждого слота такую комбинацию, и чтобы в целом весь набор представлял собой уникальную последовательность, надо знать результат вычисления комбинации, что сводит на нет идею :(
...
Рейтинг: 0 / 0
Криптографический покер
    #39584105
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

первый вклад в слот - это просто случайно перемешанные числа от 1 до 52.

Остальные - уникальные случайный (для каждого вклада каждого игрока в каждый слот) вектор преобразования, типа:
если 1 то 45
если 2 то 26
...
если N то M
...
если 52 то 13.

Ха-ха, всего-то.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584106
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttLRСодержание колоды неизвестно всем участникам, но не "реальному миру", "колода существует в этом мире - мир знает ее содержание" - это ведь логичней чем "колода существует в этом мире и мир не знает ее содержания"?

ЯННП )
Хм... а что тут непонятного? Существование в каком-то мире какого-то объекта равнозначно знанию этого мира об этом объекте во всех возможных деталях. Т.е., если мир чего-то не знает о некотором объекте, то, вероятней всего, этого объекта не существует (в этом мире). Вполне приемлемая (в т.ч. и для программиздоф) аксиома. (Соответственно, для любой цомпутерной игры не может быть объекта, о котором чего-то не знает "сервер", иначе такой объект - вне игры)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584107
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... или не ха-ха. Я пошёл спать.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584110
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не вижу способа обойтись без доверенного узла, но можно попробовать вынести этот узел за пределы игровой схемы.
Сервер растасовывает колоду, шифрует каждую карту индивидуальным ключом и отдаёт следующему участнику, который произвольным образом перетасовывает колоду и снова шифрует каждый элемент индивидуальным ключом. Ну и так далее по цепочке.
В такой схеме достаточно одного добросовестного участника в кольце, чтобы исключить мошенничество со стороны всех остальных - для расшифровки очередной карты требуются ключи всех участников.
Доверенный узел требуется, чтобы идентифицировать участников и таким узлом (сюрприз) может быть удостоверяющий центр.

P.S. Кстати, именно такая схема и была, если не ошибаюсь в той книжке, которую мне было лень искать
...
Рейтинг: 0 / 0
Криптографический покер
    #39584111
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRХм... а что тут непонятного? Существование в каком-то мире какого-то объекта равнозначно знанию этого мира об этом объекте во всех возможных деталях. Т.е., если мир чего-то не знает о некотором объекте, то, вероятней всего, этого объекта не существует (в этом мире). Вполне приемлемая (в т.ч. и для программиздоф) аксиома. (Соответственно, для любой цомпутерной игры не может быть объекта, о котором чего-то не знает "сервер", иначе такой объект - вне игры)

Сервер может использоваться для шифрованной переписки и не знать содержание мессаджей.
Не работает ваша теория.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584112
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСервер растасовывает колоду, шифрует каждую карту индивидуальным ключом и отдаёт следующему участнику, который произвольным образом перетасовывает колоду и снова шифрует каждый элемент индивидуальным ключом. Ну и так далее по цепочке.
В такой схеме достаточно одного добросовестного участника в кольце, чтобы исключить мошенничество со стороны всех остальных - для расшифровки очередной карты требуются ключи всех участников.

Если каждый следующий участник перетасовывает колоду, как потом запросить ключи у всех участников? Нужен какой-то постоянный идентификатор для каждой позиции. А идентификатор сводит на нет перетасовку.

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

Basil A. SidorovДоверенный узел требуется, чтобы идентифицировать участников и таким узлом (сюрприз) может быть удостоверяющий центр.

Это удовлетворяет условиям задачи, удостоверяющий центр идентифицирует участников, и при этом не имеет полных знаний о игровой ситуации.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584117
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли каждый следующий участник перетасовывает колоду, как потом запросить ключи у всех участников?Это как раз достаточно тривиально - в схеме без доверенного центра всё равно требуется аудит результатов.
Я опустил вполне тривиальные вещи, более полная схема выглядит так:
До начала игры все участники вырабатывают нужное число индивидуальных ключей шифрования, подписывают всю цепочку и отправляют (только подпись) на сервер. Сервер публикует весь пакет, заверенный собственной подписью.
Сервер генерирует начальную растасовку, шифрует каждый элемент индивидуальным ключом и публикует (только) электронную подпись начального распределения.
Каждый из игроков подписывает опубликованные сервером данные и отправляет их обратно на сервер. Сервер подписывает и публикует весь блок данных.
К этому моменту у нас есть:
1. Набор индивидуальных ключей шифрования у каждого участника. Корректность использования каждым участником данных из набора можно будет проверить постфактум;
2. Электронная подпись начальной растасовки, которую видели все участники.

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

После окончания игры публикуется всё, что "было на руках": вскрытые последовательности индивидуальных ключей шифрования позволяют любому игроку проверить корректность всех шагов тасовки независимо от остальных, а электронные подписи позволяют удостовериться в авторстве действия и, при технической возможности - во времени его совершения.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584118
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет - фигню придумал.
Как только мы переставили карты - неизвестно какой ключ использовать для расшифровки очередного элемента.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584120
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, как ни крути - а сервер должен быть доверенным элементом.
Просто потому, что доверять игрокам - ещё хуже
...
Рейтинг: 0 / 0
Криптографический покер
    #39584121
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, без оценки криптографической стойкости, получается такой вариант.
Сервер генерирует длинную гамму (число карт, умноженное на двойной-четверной размер ключа шифрования).
Сервер генерирует начальную последовательность карт, дополняет нулевыми битами до двойного-четверного размера ключа шифрования, замешивает с гаммой по исключающему и независимо шифрует каждый блок. Если не ошибаюсь, это CBC (режим шифроблокнота).
Расширение разрядности и смешение с гаммой делается, чтобы избежать подбора по словарю.

Игрок, получивший шифрованную последовательность, перетасовывает её (режим шифрования позволяет), шифрует результат своим ключом и отправляет следующему участнику по кругу.

Схема исключает мошенничество при наличии хотя бы одного добросовестного игрока, но требует перетасовки остатка колоды на каждом раунде: как минимум один участник получает все ключи и может расшифровать всю колоду.

Схема аудита игры, в целом, сохраняется и особого рассмотрения не требует.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584123
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovкак минимум один участник получает все ключи и может расшифровать всю колоду... что ставит крест на схеме без доверенного центра.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584138
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Можно! ))
...
Рейтинг: 0 / 0
Криптографический покер
    #39584151
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игроки могут вступить в сговор друг с другом и дискредитировать онлайн казино.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584165
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чуйка подсказывает, что решение есть, но, возможно, каждому из игроков придётся сгенерировать ~ 52! (факториал) шифроключей
...
Рейтинг: 0 / 0
Криптографический покер
    #39584191
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttViPRosсерверу нужны хелперы - генераторы, тасовщики, раздатчики и т.д.



даже в детских сказках карту разрезали на несколько частей и депонировали в разные хранилище
серверов должно быть несколько - у каждого своя ответственность и свои знания
...
Рейтинг: 0 / 0
Криптографический покер
    #39584204
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы плавно подходим к изобретению блокчейна.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584206
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНет, проблема в другом. Ключевая проблема -- необходимо исключить уже взятые каждым игроком карты из колоды таким образом, чтобы это было до конца игры не известно, какие именно карты были взяты.
Вы не видите противоречия в этой фразе? Кто-то должен исключить из колоды взятые карты, т.е. этот кто-то однозначно будет знать какие карты были взяты из колоды, при этом никто не должен знать какие именно карты взяты. При исходном условии что обмен информацией возможен между любыми сущностями за столом - это нерешаемая задача.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584257
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttLRХм... а что тут непонятного? Существование в каком-то мире какого-то объекта равнозначно знанию этого мира об этом объекте во всех возможных деталях. Т.е., если мир чего-то не знает о некотором объекте, то, вероятней всего, этого объекта не существует (в этом мире). Вполне приемлемая (в т.ч. и для программиздоф) аксиома. (Соответственно, для любой цомпутерной игры не может быть объекта, о котором чего-то не знает "сервер", иначе такой объект - вне игры)

Сервер может использоваться для шифрованной переписки и не знать содержание мессаджей.
Не работает ваша теория.
Тогда что мы здесь обсуждаем? Используйте сервер для обмена информацией между участниками игры с реальной колодой в реальном казино - и будет вам счастье)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584291
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSчуйка подсказывает, что решение есть, но, возможно, каждому из игроков придётся сгенерировать ~ 52! (факториал) шифроключейn! ~ n^n (нижняя граница). log2(52^52) ~ 5,5*52 (нижняя граница) ~= 280 (нижняя граница).
2^280 ... Петабайт, напомню - 2^50.
Я уже молчу, что сами ключи закончатся гораздо раньше, но такое подмножество будет сильно проблематично записать типичному датацентру, ориентированному на хранение данных. Про время генерации и чтения - скромно помолчу.

P.S. Вот неужели трудно сделать примитивную оценку, чтобы не вываливать всякий бред тогда, когда без этого можно обойтись?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584297
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

да хоть Фруктобайт ... я высказал свою интуицию о том, что принципиальное решение может быть продемонстрировано где-то там.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584305
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSда хоть Фруктобайт ... я высказал свою интуицию о том, что принципиальное решение может быть продемонстрировано где-то там.Моё физическое образование даёт чёткий такой критерий ...
Да, физика занимается моделями , но это модели реального мира. Аналогичный "критерий разумности" обязан быть в любой инженерной дисциплины.
Программист (это инженерная дисциплина) может использовать заумную математику, включая ту, которую он не очень понимает, но программист не вправе игнорировать пределы аппаратных ограничений. Особенно, когда речь идет о ресурсах среднестатистичиеских граждан, а не о ресурсах государства, решающего стратегическую задачу.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584307
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

насколько я успеваю следить за веткой, тут пока идёт обсуждение вопроса о том, возможно ли в принципе построение криптопокера. А не "физическая" реализация.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584356
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSнасколько я успеваю следить за веткой, тут пока идёт обсуждение вопроса о том, возможно ли в принципе построение криптопокераОно и в принципе невозможно.
Хотите опровергнуть - предложите вариант. Может просто разъяснить алгоритм работы дао.казино.
Всё, что было предложено требовало или доверенной стороны или арбитра, что суть - тоже самое.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584385
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

я не утверждал, что дао.казино решило поставленную здесь задача. И сам я про него знаю только из прессы. Вот интервью с их СЕО (да вы и сами, наверное, его уже нашли в Яндексе, если искали): https://forklog.com/ceo-dao-casino-nasha-osnovnaya-zadacha-sozdat-ekosistemu-dlya-vseh-uchastnikov-rynka/
...
Рейтинг: 0 / 0
Криптографический покер
    #39584405
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а просветите меня, господа, существуют ли коммутативные способы шифрования? То есть такие, что Ш1(Ш2(х)) = Ш2(Ш1(х))?

Если да, то: первый участник шифрует названия карт, тасует колоду и отправляет её второму. Тот тоже шифрует, тасует и выкладывает на стол. В результате ни один не знает, что означают "надписи" на картах.

Когда первый берёт карту, то второй расшифровывает её своим шифром, но при этом не узнаёт её номинал. А первый -- уже дорасшифровывает и узнаёт номминал.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584423
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ш1 и ш2 это раунды шифрования.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584439
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSа просветите меня, господа, существуют ли коммутативные способы шифрования? То есть такие, что Ш1(Ш2(х)) = Ш2(Ш1(х))?
Два одноразовых блокнота и тупо xor.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584442
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSа просветите меня, господа, существуют ли коммутативные способы шифрования? То есть такие, что Ш1(Ш2(х)) = Ш2(Ш1(х))?
Есть, если данные не участвуют в шифровании.
Код: sql
1.
(A^B)^C = A^(B^C)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584443
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шифрование и т.д. в этой задаче вторично
...
Рейтинг: 0 / 0
Криптографический покер
    #39584444
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван FXSЕсли да, то: первый участник шифрует названия карт, тасует колоду и отправляет её второму. Тот тоже шифрует, тасует и выкладывает на стол. В результате ни один не знает, что означают "надписи" на картах.
Если эти двое в сговоре, то ничто не мешает им по другому каналу обменяться информацией по порядку карт в колоде.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584455
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати да, эта идея, походу будет работать:

1. Генерируется последовательность карт (52 GUID, например). Соответствие GUID-номинал публикуется всем в открытом виде.

2. Игрок перемешивает эту последовательность и шифрует одноразовым блокнотом, после чего передаёт следующему.

3. После того как она вернётся к первому игроку – он вытаскивает из неё две карты и снова передаёт их «по кругу» для расшифровки.

4. Когда эти две карты вернутся к нему он расшифровывает две свои карты, после чего передаёт оставшуюся колоду следующему в неизменном виде и тот вытаскивает две своих карты.

5. В конце кто-то таким же образом вытаскивает 5 карт на стол, отличие только в том, что он расшифровывает их первым.

В итоге не может быть задвоения карт и каждый знает только свои карты, а для того чтобы узнать карты другого игрока или содержимое колоды сговориться должны ВСЕ участники игры, что не имеет смысла.

Т.к. для шифрования используется одноразовый блокнот и примитивный XOR, то ни у какого игрока нет шансов расшифровать карту или колоду не имея все ключи. Единственное замечание: все действия каждого игрока (включая его блокнот) должны быть зашифрованы сессионным ключем при помоща какого-нибудь AES и опубликованы одновременно с самим действием, чтобы по окончанию раунда можно было провести синхронизацию и убедиться в отсутствии жульничества (например выписывания себе желаемой карты, вместо реальной расшифровки пришедшей - а вдруг прокатит?..).
...
Рейтинг: 0 / 0
Криптографический покер
    #39584460
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp5. В конце кто-то таким же образом вытаскивает 5 карт на стол, отличие только в том, что он расшифровывает их первым.
Последний может отдать на стол свою карту, а получше из колоды оставить себе.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584473
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpТ.к. для шифрования используется одноразовый блокнот и примитивный XOR
Шифр легко ломается: берем шифрованную карту К и открытую К', делаем К^К' и получаем ключ шифрования.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584514
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Talekcvp5. В конце кто-то таким же образом вытаскивает 5 карт на стол, отличие только в том, что он расшифровывает их первым.
Последний может отдать на стол свою карту, а получше из колоды оставить себе.
Не может. Как я уже сказал, все действия параллельно публикуются в зашифрованном виде для проверки после раунда. Т.к. к этому моменту он уже выбрал свои две карты, то они (пока ещё в зашифрованном виде) уже опубликованы, и такой подлог вскроется при аудите сразу после завершения раунда.

Dima TalekcvpТ.к. для шифрования используется одноразовый блокнот и примитивный XOR
Шифр легко ломается: берем шифрованную карту К и открытую К', делаем К^К' и получаем ключ шифрования.
Что такое "одноразовый блокнот" в курсе? Сделав К^К' мы получим только ключ для этой карты . А зачем он нам нужен, если мы её и так уже знаем?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584521
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЕсли эти двое в сговоре, то ничто не мешает им по другому каналу обменяться информацией по порядку карт в колоде.сколько игроков, столько и "слоёв", конечно. Если четверо - Ш1(Ш2(Ш3(Ш4(х))))
...
Рейтинг: 0 / 0
Криптографический покер
    #39584526
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpDima Tпропущено...

Шифр легко ломается: берем шифрованную карту К и открытую К', делаем К^К' и получаем ключ шифрования.
Что такое "одноразовый блокнот" в курсе? Сделав К^К' мы получим только ключ для этой карты . А зачем он нам нужен, если мы её и так уже знаем?
Тогда надо какой-то идентификатор чтобы при расшифровке узнать какой ключ для какой карты использовать. Тот кто первый шифрует, тот будет знать где какая карта.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584536
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpЧто такое "одноразовый блокнот" в курсе? Сделав К^К' мы получим только ключ для этой карты Если каждую карту шифровать индивидуальным кодом, то колоду нельзя тасовать - неизвестно, какой код потребуется, когда понадобится "следующая карта". А если за столом всего один честный участник и мы не знаем, кто это - тасовать колоду должны все.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584538
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТогда надо какой-то идентификатор чтобы при расшифровке узнать какой ключ для какой карты использовать. Тот кто первый шифрует, тот будет знать где какая карта.... что автоматически делает требует доверия к этому участнику.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584560
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант - раздача с шифрованием в 2 прохода:
1. Каждый участник придумывает свой ключ (один для всех карт), шифрует им и перемешивает. Затем каждой карте присваивается ID.
2. Каждый участник расшифровывает ключом из п.1 и шифрует каждую карту отдельным ключом, в соответствии с ID.

Т.о. в п.2 будет неизвестно какая карта шифруется.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584561
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovalekcvpЧто такое "одноразовый блокнот" в курсе? Сделав К^К' мы получим только ключ для этой карты Если каждую карту шифровать индивидуальным кодом, то колоду нельзя тасовать - неизвестно, какой код потребуется, когда понадобится "следующая карта". А если за столом всего один честный участник и мы не знаем, кто это - тасовать колоду должны все.

Решаемо. Например, для 4х игроков:

Карты создаются в виде: {ID}, шифруются по кругу в виде {{ID, CRC1}^K1, CRC2}^K2, CRC3}^K3, CRC4}^K4}, после шифрования колоды запоминается кто её зашифровал последний (N). При этом ключи для всех 52х карт сохраняются.
Когда надо расшифровать карту, то просто начинают с игрока N и идут обратно по кругу, каждый игрок расшифровывает текущую карту всеми ключами по-очереди пока не совпадёт CRC. Для того чтобы остальные игроки не могли подобрать ключ шифрования перебором - для CRC использовать какой-нибудь хэш с солью в виде того же самого ключа.

И да, если карта на руках у игрока N3, например, то он в свою очередь расшифровывает не всю карту, а только блоки CRC1, CRC2 и CRC3, после чего передаёт её дальше. А саму карту он расшифровывает последним.

При таком подходе тасовать зашифрованные карты может кто угодно и сколько угодно раз.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584577
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpРешаемо. Например, для 4х игроковА теперь подумайте, что три участника и крупье - жулики и за пределами протокола обмениваются любой доступной информацией.

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

Хочу видеть протокол, устойчивый к ситуации "все, кроме одного игрока - жулики".

P.S. Никто, что ли, не играл в преферанс в чужой компании?
Там даже мошенничать не требуется - правила позволяют играть на одну руку и это достаточно сложно доказать.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584582
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpBasil A. Sidorovпропущено...
Если каждую карту шифровать индивидуальным кодом, то колоду нельзя тасовать - неизвестно, какой код потребуется, когда понадобится "следующая карта". А если за столом всего один честный участник и мы не знаем, кто это - тасовать колоду должны все.

Решаемо. Например, для 4х игроков:

Карты создаются в виде: {ID}, шифруются по кругу в виде {{ID, CRC1}^K1, CRC2}^K2, CRC3}^K3, CRC4}^K4}, после шифрования колоды запоминается кто её зашифровал последний (N). При этом ключи для всех 52х карт сохраняются.
Когда надо расшифровать карту, то просто начинают с игрока N и идут обратно по кругу, каждый игрок расшифровывает текущую карту всеми ключами по-очереди пока не совпадёт CRC. Для того чтобы остальные игроки не могли подобрать ключ шифрования перебором - для CRC использовать какой-нибудь хэш с солью в виде того же самого ключа.

И да, если карта на руках у игрока N3, например, то он в свою очередь расшифровывает не всю карту, а только блоки CRC1, CRC2 и CRC3, после чего передаёт её дальше. А саму карту он расшифровывает последним.

При таком подходе тасовать зашифрованные карты может кто угодно и сколько угодно раз.
Не понял эту схему. ID шифруем, но оставляем нешифрованное CRC каждого игрока?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584590
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСговор (игра команды против одиночного игрока) уже несправедлив, даже если "честное" казино не позволяет жуликам знать больше того, что у них на руках.
ИМХО эта задача нерешаема. Запретить общение другими каналами между игроками невозможно. Для этого в казино видеокамеры стоят.

Думаю надо упростить решаемую задачу до: "перемешать карты так чтобы ни один из участников не знал где какая карта". При этом чтобы каждый участник мог взять карту так, чтобы другие не догадались что это за карта.

Мой вариант в два прохода 21108345 эту проблему не решает, ломается легко. Возможно алгоритм alekcvp с CRC решает, но я не понял как он работает.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584600
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе понял эту схему. ID шифруем, но оставляем нешифрованное CRC каждого игрока?
Да, я там затупил, не будет работать :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584617
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpВы не видите противоречия в этой фразе? Кто-то должен исключить из колоды взятые карты, т.е. этот кто-то однозначно будет знать какие карты были взяты из колоды, при этом никто не должен знать какие именно карты взяты. При исходном условии что обмен информацией возможен между любыми сущностями за столом - это нерешаемая задача.

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


maytonМы плавно подходим к изобретению блокчейна.

Блок-чейн может помочь от подтасовки, но никак не может помочь от раскрытия информации. В ситуации с деньгами, блог-чейн защищает транзакции как раз за счёт распределения информации. Если информацию скрывать то никакой чейн не имеет смысла.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584619
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как я понимаю общий принцип решения должен быть таким: т.к. доверия нет никому, то необходимо чтобы любую карту расшифровать мог только тот, у кого она на руках, при этом в расшифровке обязательно должны принимать участие ВСЕ остальные игроки.

До чего я додумался на данный момент:

1. Один игрок генерирует 52 {ID}, шифрует их (каждый своим ключём), перемешивает и передаёт следующему игроку. Список открытых {ID} с номиналами публикуется всем игрокам.
2. Каждый следующий игрок снова шифрует каждый {ID} отдельным ключём и снова перемешивает их.
3. ВСЕ игроки сохраняют ВСЕ 52 ключа.
4. Когда кому-то необходимо расшифровать карту из колоды - он отправляет её по кругу В ТОМ ЖЕ направлении, в котором шифровалась колода. Это необходимо чтобы при сговоре игроков 1 и 2, например, они не могли составить список {ID} - {ID^K1^K2} и узнать карту при расшифровке.
5. Следующий игрок расшифровывает эту карту всеми своими ключами и отправляет дальше список из 52х {ID}.
6. Каждый следующий игрок расшифровывает ВСЕ полученные {ID}' ВСЕМИ своими ключами и отправляет дальше список из N*52 {ID}.
7. Последний игрок расшифровывает каждый ID из получившегося списка размером (для 5 игроков) в 52^(5-1) = 7311616 ID каждым своим ключём по-очереди, до тех пор пока не получит допустимый ID из колоды.

В результате при размере ID карты в 16 байт (UUID, для исключения коллизий при расшифровке), размер рассылаемых данных для расшифровки одной карты составит на ~120 мегабайт.

Для шифрования используется шифр Вернама (одноразовый блокнот).

Вроде уязвимостей пока не вижу, но возможно я что-то упустил.

Таким образом задача решаема в теории, но вот практическая реализация...
...
Рейтинг: 0 / 0
Криптографический покер
    #39584628
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp1. Один игрок генерирует 52 {ID}, шифрует их (каждый своим ключём), перемешивает и передаёт следующему игроку. Список открытых {ID} с номиналами публикуется всем игрокам.
alekcvp4. Когда кому-то необходимо расшифровать карту из колоды - он отправляет её по кругу В ТОМ ЖЕ направлении, в котором шифровалась колода. Это необходимо чтобы при сговоре игроков 1 и 2, например, они не могли составить список {ID} - {ID^K1^K2} и узнать карту при расшифровке.

Здесь проблема в том, что самый первый игрок по запросу ключа или расшифровки будет знать ID карты (номинал), даже если не будет знать кому именно она досталась.

Может быть все игроки поделятся друг с другом своим набором 52x публичных ключей? Вариант «по кругу» самый устойчивый, так как позволяет восстанавливать порядок карт на каждом этапе, не раскрывая это другим участникам. Но вот слабое звено это самый первый участник.

:(
...
Рейтинг: 0 / 0
Криптографический покер
    #39584635
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttalekcvp1. Один игрок генерирует 52 {ID}, шифрует их (каждый своим ключём), перемешивает и передаёт следующему игроку. Список открытых {ID} с номиналами публикуется всем игрокам.
alekcvp4. Когда кому-то необходимо расшифровать карту из колоды - он отправляет её по кругу В ТОМ ЖЕ направлении, в котором шифровалась колода. Это необходимо чтобы при сговоре игроков 1 и 2, например, они не могли составить список {ID} - {ID^K1^K2} и узнать карту при расшифровке.

Здесь проблема в том, что самый первый игрок по запросу ключа или расшифровки будет знать ID карты (номинал), даже если не будет знать кому именно она досталась.

:(

А никто не будет запрашивать у него конкретный ключ. Ему прилетит от 1го до ~140 тысяц зашифрованных {ID}', после чего ему необходимо расшифровать КАЖДЫЙ из них КАЖДЫМ из своих 52х ключей и отправить дальше от 52х до ~7 миллионов расшифрованных {ID}, но при этом каждый их них всё ещё будет зашифрован ключём того игрока, у которого на руках эта карта.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584644
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp5. Следующий игрок расшифровывает эту карту всеми своими ключами и отправляет дальше список из 52х {ID}.
Можно разом спалить все 52 ключа если известно что дали на вход и что было на выходе. При игре втроем элементарно.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584673
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Talekcvp5. Следующий игрок расшифровывает эту карту всеми своими ключами и отправляет дальше список из 52х {ID}.
Можно разом спалить все 52 ключа если известно что дали на вход и что было на выходе. При игре втроем элементарно.
Ну значит надо выбрать более стойкий алгоритм.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584685
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpDima Tпропущено...

Можно разом спалить все 52 ключа если известно что дали на вход и что было на выходе. При игре втроем элементарно.
Ну значит надо выбрать более стойкий алгоритм.
Кроме XOR с ключом ничего не подходит.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584701
Иван FXS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TКроме XOR с ключом ничего не подходит
какие-нибудь повороты в каких-то там пространствах тоже коммутативны, слышал я ...
...
Рейтинг: 0 / 0
Криптографический покер
    #39584752
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИМХО эта задача нерешаема. Запретить общение другими каналами между игроками невозможно. Для этого в казино видеокамеры стоят.

Думаю надо упростить решаемую задачу до: "перемешать карты так чтобы ни один из участников не знал где какая карта". При этом чтобы каждый участник мог взять карту так, чтобы другие не догадались что это за карта.

Мне кажется мы все время ходим по кругу и решаем одну задачу. А именно как получить "круговой"
контроль над карточным столом. Мне кажется в нашей схеме это невозможно. Должен быть кто-то
арбитром. Сервером. Или доверительным хранилищем где можно что-то сохранить. Или кто-то должет
раздать всем одно приложение (протокол) которому все остальные доверяют.

Я-бы начал со следующего. Есть три физических хоста. (А)лиса, (Б)об и (К)ларк. (A,B,C).
Они знают IP адреса друг друга. И они решили поиграть в покер.

И??...
...
Рейтинг: 0 / 0
Криптографический покер
    #39584754
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ??...... hVostt хочет исключить доверие всем, включая казино.
А доверие это не про IP-адреса и алгоритмы ...
...
Рейтинг: 0 / 0
Криптографический покер
    #39584755
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Остается "колода". Как ей доверять?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584761
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОстается "колода". Как ей доверять?Колода находится у крупье в казино, которому мы тоже не доверяем.
Я покрутил в голове несколько сценариев и некоторые даже опубликовал, но, всё, что я придумал - принципиально нерабочее.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584778
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой вариант 21108345 нерабочий, т.к. по результату первого прохода можно легко получить общий ключ и узнать где какая карта: берем нешифрованную карту 1, делаем XOR со всеми шифрованными, затем тоже с картой 2, ищем совпавшие результаты - это ключ.

Чтобы этого избежать надо разбавить карту мусором, т.е. формат карты должен быть таким чтобы неизвестно было ее исходное бинарное представление.
Например: мусор + мусор^карта , где "мусор" случайное число размером с карту.

Алгоритм перемешивания такой:
1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты).
2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).

ID не шифруется. В остальном работа по алгоритму alekcvp 21107902
...
Рейтинг: 0 / 0
Криптографический покер
    #39584784
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты).
2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).Карты замусорены, перемешаны и зашифрованы индивидуальными ключами.
Требуется расшифровать первую карту полученного мусора. Какие конкретно ключи для должен предоставить каждый из участников?
Идентификаторы не шифруются? А зачем тогда вообще тасовать?
Вот этот мусор - идентификатор сорок три, а у нас есть мошенник, который знает, какой карте соответствует и этот идентификатор и все остальные.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584796
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТребуется расшифровать первую карту полученного мусора. Какие конкретно ключи для должен предоставить каждый из участников?
Для расшифровки игрок запускает карту по кругу, где каждый расшифровывает своим ключом для конкретного ID. Последним расшифровывает сам игрок и узнает что это за карта.

Basil A. SidorovИдентификаторы не шифруются? А зачем тогда вообще тасовать?
ID это номер ключа которым расшифровывать карту.
Тасовать чтобы карты не шли по порядку.

Basil A. SidorovВот этот мусор - идентификатор сорок три, а у нас есть мошенник, который знает, какой карте соответствует и этот идентификатор и все остальные.
Если у нас один мошенник, то никто не знает какая карта под каким ID. Но если их двое (первый и второй игроки) то они будут знать, т.е. не поможет мой алгоритм.

PS Надо обдумать вариант alekcvp 21108634 с добавлением мусора, у него ID шифруется.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584803
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты).
2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).

а как можно расшифровать после операций 2-3? назначение нового ID каждым игроком позволяет делать запрос ключа, не раскрывая информацию для других участников, это хорошо
...
Рейтинг: 0 / 0
Криптографический покер
    #39584806
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДля расшифровки игрок запускает карту по кругу, где каждый расшифровывает своим ключом для конкретного ID. Последним расшифровывает сам игрок и узнает что это за карта.

Может таблица ссылок:

A_ID[B_ID[C_ID...]]] ?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584810
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDima T1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты).
2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).
4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).

а как можно расшифровать после операций 2-3? назначение нового ID каждым игроком позволяет делать запрос ключа, не раскрывая информацию для других участников, это хорошо
ID проставляет только 2-й, остальные используют то что он проставил. Но есть проблема: если первый и второй в сговоре, то они будут знать под каким ID какая карта.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584813
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDima TДля расшифровки игрок запускает карту по кругу, где каждый расшифровывает своим ключом для конкретного ID. Последним расшифровывает сам игрок и узнает что это за карта.

Может таблица ссылок:

A_ID[B_ID[C_ID...]]] ?
Можно, только что это меняет? Допустим A знает соответствие своего ID каждой карте, его ID не шифрован. Проблема не решилась.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584820
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне с XOR идея показалась интересной.

1. Каждый участник на раунд придумывает себе XOR ключ. Одна штука.
2. Сервер тасует колоду и показывает её всем участникам.
3. Карты "раздаются" участникам по очереди сверху.
4. Чтобы "открыть" карту участник:
4.1 применяет одноразовый временный XOR
4.2. отправляет по кругу чтобы каждый из участников применил свой постоянный XOR
4.3. к полученному результату опять применяет одноразовый временный XOR
4.4. применяет свой постоянный XOR, и получает правильный номинал карты

Чтобы это работало, надо:

- применение XOR ключа меняет номинал карты
- применив XOR ко всем картам, поменяеются все номиналы карты, но при этом они останутся индивидуальными

Что думаете?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584824
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть казино, шулеры и игрок. Казино в сговоре с шулерами.
Требуется разработать покер, позволяющий сохранить игроку тайну своих карт.
Схема возможна, если оставить за казино только публикацию ходов и раздачу зашифрованных карт участникам.

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

Казино создаёт колоду в виде (одиночной) гаммы и публикует её.
Первый участник тасует колоду, шифрует каждую карту индивидуальным ключом, добавляет индексы и передаёт раздачу следующему.
Следующий участник тасует раздачу, шифрует её элементы, добавляет свои индексы и далее по кругу.

Раздача, таким образом, состоит из слоёв, где каждый элемент слоя - пара "индекс, шифр предыдущего слоя", а самый первый слой - "индекс, шифр карты".

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

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

Процедуры подписания ходов и сдач, а так же процедура (послеигрового) аудита - не рассматриваются.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584828
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМожно, только что это меняет? Допустим A знает соответствие своего ID каждой карте, его ID не шифрован. Проблема не решилась.

Ну если у каждого из участников будет отдельная таблица для каждого, а не одна на всех, т.е. открыть позицию в своей таблице через таблицы остальных игроков :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584829
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt1. Каждый участник на раунд придумывает себе XOR ключ. Одна штука.
Ломается элементарно, достаточно иметь шифрованную и нешифрованную колоды. 21109370
...
Рейтинг: 0 / 0
Криптографический покер
    #39584832
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсть казино, шулеры и игрок. Казино в сговоре с шулерами.
Требуется разработать покер, позволяющий сохранить игроку тайну своих карт.
Схема возможна, если оставить за казино только публикацию ходов и раздачу зашифрованных карт участникам.

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

Казино создаёт колоду в виде (одиночной) гаммы и публикует её.
Первый участник тасует колоду, шифрует каждую карту индивидуальным ключом, добавляет индексы и передаёт раздачу следующему.
Следующий участник тасует раздачу, шифрует её элементы, добавляет свои индексы и далее по кругу.

Раздача, таким образом, состоит из слоёв, где каждый элемент слоя - пара "индекс, шифр предыдущего слоя", а самый первый слой - "индекс, шифр карты".

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

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

Процедуры подписания ходов и сдач, а так же процедура (послеигрового) аудита - не рассматриваются.

Процитирую всё, так как ваша постановка задачи мне нравится больше, чем моя :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584837
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima ThVostt1. Каждый участник на раунд придумывает себе XOR ключ. Одна штука.
Ломается элементарно, достаточно иметь шифрованную и нешифрованную колоды. 21109370
Не, еще проще: получив одну любую карту и ее расшифрованный вариант сразу получаем ключ для расшифровки всех карт K^K`.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584841
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе, еще проще: получив одну любую карту и ее расшифрованный вариант сразу получаем ключ для расшифровки всех карт K^K`.

поэтому формируется временный XOR, я думал это поможет )
...
Рейтинг: 0 / 0
Криптографический покер
    #39584846
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttDima TНе, еще проще: получив одну любую карту и ее расшифрованный вариант сразу получаем ключ для расшифровки всех карт K^K`.

поэтому формируется временный XOR, я думал это поможет )
Поможет для защиты от других игроков, но если игрок в сговоре с сервером, то не поможет, т.к. сервер видит карту без временного XOR.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584849
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКазино создаёт колоду в виде (одиночной) гаммы и публикует её.
Первый участник тасует колоду, шифрует каждую карту индивидуальным ключом, добавляет индексы и передаёт раздачу следующему.
Следующий участник тасует раздачу, шифрует её элементы, добавляет свои индексы и далее по кругу.
...
Казино получает от последнего участника растасованную колоду и сдаёт по две карты каждому участнику.
Каждый из участников, в обратном порядке, начинает запрашивать ключи шифрования, отправляя индексы владельцу ключей. После первой расшифровки вскрывается очередной слой с очередными индексами и процедура повторяется.

А теперь представим, что игрок который первый получил колоду - шулер. Как только ему придёт запрос на индекс ключа он сразу будет знать какую карту достали из колоды, т.к. у него есть табличка [номинал - индекс].
...
Рейтинг: 0 / 0
Криптографический покер
    #39584852
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpА теперь представим, что игрок который первый получил колоду - шулер. Как только ему придёт запрос на индекс ключа он сразу будет знать какую карту достали из колоды, т.к. у него есть табличка [номинал - индекс].Точно.
Таки, мной внутренний оптимист убедился, что мой внутренний пессимист прав и задача - нереальная: нельзя забыть то, что хочется запомнить.
В общем, я - пас и умываю руки.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584862
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТаки, мной внутренний оптимист убедился, что мой внутренний пессимист прав и задача - нереальная
Тоже склоняюсь в эту сторону. Должен быть хотя бы один участник, которому все будут доверять.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584866
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПоможет для защиты от других игроков, но если игрок в сговоре с сервером, то не поможет, т.к. сервер видит карту без временного XOR.

да не.. содержание перетасованной колоды со всеми номиналами всем известно, также известно какие именно карты из колоды у кого на руках.

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

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

допустим, у нас 3 игрока + сервер: A, B, C + S
у игрока A на руках известные всем карты K0 и K3 (пусть это будут Туз Пик (ТП) и 5 Бубны (5Б))
-- почему K0 и K3, потому что карты раздавались по очереди по одной
теперь игрок А хочет узнать истиные номиналы карт К0 и К3
у него есть свой секретный XOR KEY (AXK) он генерирует Temporary Xor Key (T-AXK)
затем

T0 = K0 XOR T-AXK
T3 = K3 XOR T-AXK

теперь он передаёт T0 и T3 игроку B, он делает следующее:

T0 = T0 XOR BXK (секретный ключ игрока B)
T3 = T3 XOR BXK

он передаёт полученные даныне игроку C:

T0 = T0 XOR CXK (секретный ключ игрока C)
T3 = T3 XOR CXK

он передаёт серверу

T0 = T0 XOR SXK (секретный ключ сервера)
T3 = T3 XOR SXK

сервер возвращает игроку А, игрок теперь может получить номинал карты:

T0 = T0 XOR T-AXK XOR AXK
T3 = T3 XOR T-AXK XOR AXK

теперь T0 и T3 -- истиные номиналы карт

в конце игры все XOR ключи вскрываются, чтобы убедиться, что небыло мухлежа

выяснить какой у кого секретный ключ, не представляется возможным :)
...
Рейтинг: 0 / 0
Криптографический покер
    #39584874
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

это может быть не XOR, а банальный сдвиг индекса 0..51 с переполнением, т.е. 51 + 2 = 1 )) число сдвига и есть тот самый Key
...
Рейтинг: 0 / 0
Криптографический покер
    #39584875
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. Key можно применить "туда" и "обратно"
...
Рейтинг: 0 / 0
Криптографический покер
    #39584877
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Код: sql
1.
T0` = T0 XOR T-AXK XOR BXK XOR CXK XOR SXK XOR T-AXK


T0' это расшифрованное значение.

Теперь простейшее преобразование
Код: sql
1.
T0` XOR T0 = BXK XOR CXK XOR SXK = SUPERKEY


или
Код: sql
1.
T0` = T0 XOR SUPERKEY


далее можно так делать
Код: sql
1.
T3` = T3 XOR SUPERKEY
...
Рейтинг: 0 / 0
Криптографический покер
    #39584881
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чуть напутал с терминологией, мои Tx это твои Kx, а Tx` - твои Tx.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584888
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
T0` = T0 XOR T-AXK XOR BXK XOR CXK XOR SXK XOR T-AXK XOR AXK



ты забыл кое-что :)


Dima TТеперь простейшее преобразование
Код: sql
1.
T0` XOR T0 = BXK XOR CXK XOR SXK = SUPERKEY



ну вот здесь и вопрос, собственно, как избежать возможности получить SUPERKEY? может использовать индивидуальную СОЛЬ на каждом этапе?
...
Рейтинг: 0 / 0
Криптографический покер
    #39584890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

если бы можно было сформировать такую последовательность M, что исходная последовательность K XOR M давала бы уникальную последовательность, то можно было бы говорить о 52-х XOR-ключах, тогда никакой SUPERKEY вычислить невозможно
...
Рейтинг: 0 / 0
Криптографический покер
    #39584893
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt
Код: sql
1.
T0` = T0 XOR T-AXK XOR BXK XOR CXK XOR SXK XOR T-AXK XOR AXK



ты забыл кое-что :)

Да, не дописал.

hVosttну вот здесь и вопрос, собственно, как избежать возможности получить SUPERKEY?
Только отказаться от
hVostt1. Каждый участник на раунд придумывает себе XOR ключ. Одна штука.
т.к. SUPERKEY это XOR ключей всех участников. И его достаточно чтобы расшифровать любую карту. Отдельно ключ каждого участника не нужен.

hVosttможет использовать индивидуальную СОЛЬ на каждом этапе?
Не готов сходу сказать поможет ли это, но убирание соли надо будет делать в порядке, обратном ее добавлению. И чем-то это напоминает схему с ID и персональным ключом для каждого ID
...
Рейтинг: 0 / 0
Криптографический покер
    #39584894
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну вот здесь и вопрос, собственно, как избежать возможности получить SUPERKEY? может использовать индивидуальную СОЛЬ на каждом этапе?
Использовать вместо XOR алгоритм, основанный на преобразовании ID' = ID^K mod B. Они тоже коммутативные, но получить ключ даже зная исходный и зашифрованный текст на порядки сложнее. Только вот какой конкретно алгоритм использовать - я не знаю.
...
Рейтинг: 0 / 0
Криптографический покер
    #39584899
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

В принципе, можно попробовать код Шамира, при этом каждый по-очереди зашифровывает всю колоду ключём Cn, а потом расшифровывает требуемую карту ключём dn. Но вот будет ли он работать при таком использовании я не скажу на 100%, т.к. теоретическая математика - не моё :(
...
Рейтинг: 0 / 0
Криптографический покер
    #39584902
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Криптографический покер
    #39584905
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да... как мы все вместе до этого и дошли, всё сводится к коммутативному шифрованию. нужна крипто-XOR функция, которая не позволяет вычислить ключ ))
...
Рейтинг: 0 / 0
Криптографический покер
    #39585347
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Резюмирую статью о "Ментальном покере" из вики.
Исходные данные прежние: казино, шулеры и игрок. Казино в сговоре с шулерами, но не с игроком.
Требуется коммутативный алгоритм шифрования (слабый вариант - исключающее или). В данном конкретном случае исключающее или может подойти.
Участники умеют формировать уникальные последовательности (псевдо)случайных чисел большой разрядности. Контроль качества чисел оставляем "за схемой". Назовём последовательность гаммой, а её элементы - ключами.

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

Казино формирует гамму колоды и публикует электронную подпись гаммы.
Все участники, включая казино, формируют собственные гамму из пятидесяти четырёх ключей (два общих и 52 индивидуальных).
Электронные подписи собственной гаммы каждый участник отправляет казино, которое публикует все записи (включая собственную), заверив их электронной подписью.

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

"По-моему, так" (ц) Винни-Пух, голосом Е.Леонова.
...
Рейтинг: 0 / 0
Криптографический покер
    #39585351
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТребуется коммутативный алгоритм шифрования (слабый вариант - исключающее или). В данном конкретном случае исключающее или может подойти.Не подойдёт - шулеры слева и справа от честного игрока сделают исключающее или над своими колодами и получат общий ключ честного игрока, а значит - выяснят его тасовку.
Нужен коммутативный алгоритм, для которого нет обратной операции, но тут я уже не копенгаген.
...
Рейтинг: 0 / 0
Криптографический покер
    #39585360
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ан нет, XOR - подходит.
Поправка к алгоритму - размер общих ключей равен размеру колоды. Принцип абсолютно стойкого шифра - ключ равен длине сообщения.
В этом случае шулеры не смог восстановить общий ключ честного игрока.
Думаю, что для реальных ситуаций хватит и 64-разрядных (псевдо)случайных чисел, которые что-нибудь типа Рутокен/Jacarta/Gemalto может выдавать по десятку-другому за секунду.
...
Рейтинг: 0 / 0
Криптографический покер
    #39585363
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ёрш твою медь ...
Если размер общего ключа равен размеру колоды, то после тасовки нельзя снять общие ключи предыдущих участников.
В общем - лично я не знаю подходящего алгоритма.

P.S. Вот уж точно: "У меня ещё много идей было ..."
...
Рейтинг: 0 / 0
Криптографический покер
    #39585395
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

а чем плохо то решение, что упоминается в вики?
A Toolbox for Mental Card Games and its ImplementationChristian Schindelhauer describes sophisticated protocols to both perform and verify a large number of useful operations on cards and stacks of cards in his 1998 paper [SCH98]. The work is concerned with general-purpose operations (masking and unmasking cards, shuffling and re-shuffling, inserting a card into a stack, etc.) that make the protocols applicable to any card game.
LibTMCG is a C++ library for creating secure and fair online card games.

Другой вопрос, что задачу ТСа это вряд ли решит...
hVosttДано:

1. Игровой сервер — серверное приложение игры
2. Игроки (от 2-10) — приложение игрового клиента
...Ни сервер, ни другие игроки не могут знать или хоть как-то вычислить...
Разве что у каждого игрока будет свой собственный софт, поддерживающий (публичный) протокол игры...
...
Рейтинг: 0 / 0
Криптографический покер
    #39585433
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКазино тасует колоду, шифрует общим ключом и передаёт по кругу.
Очередной участник тасует колоду, шифрует общим ключом и передаёт дальше по кругу.
Казино получает снова получает колоду, расшифровывает её (снимает свой общий ключ) и шифрует каждую карту индивидуальными ключами.
Казино шифрует колоду вторым общим ключом и передаёт по кругу.
Зачем второй раз шифровать всю колоду? Сняв своё общее шифрование казино всё равно уже не сможет узнать карты, потому что в данный момент они уже зашифрованы игроками. Точно так же этого не смогут сделать и игроки, т.к. когда будет снят последний общий ключ - на каждой карте будет уже полный набор индивидуальных.

Я прикинул код Шамира (с маленькими ключами) - вроде подходит, при соблюдении одного условия: расшифровываться карты должны в том же порядке в котором шифровались.
...
Рейтинг: 0 / 0
Криптографический покер
    #39585475
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LRа чем плохо то решение, что упоминается в вики?А как же самостоятельно изобретение велосипеда?
...
Рейтинг: 0 / 0
Криптографический покер
    #39585483
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovLRа чем плохо то решение, что упоминается в вики?А как же самостоятельно изобретение велосипеда?



это святое!
...
Рейтинг: 0 / 0
Криптографический покер
    #39585593
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttэто святое!
Слишком грубый монтаж.
...
Рейтинг: 0 / 0
Криптографический покер
    #39585748
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovLRа чем плохо то решение, что упоминается в вики?А как же самостоятельно изобретение велосипеда?
На самом деле очевидно же, что у решения из вики есть фатальный недостаток .
...
Рейтинг: 0 / 0
156 сообщений из 156, показаны все 7 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Криптографический покер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]