powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Криптографический покер
25 сообщений из 156, страница 6 из 7
Криптографический покер
    #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
25 сообщений из 156, страница 6 из 7
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Криптографический покер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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