Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
alekcvpРешаемо. Например, для 4х игроковА теперь подумайте, что три участника и крупье - жулики и за пределами протокола обмениваются любой доступной информацией. Я даже молчу что уже исходная постановка "нам пофигу сговор между игроками" полностью ущербна: одна из обязанностей казино - не допускать мошенничества игроков. Сговор (игра команды против одиночного игрока) уже несправедлив, даже если "честное" казино не позволяет жуликам знать больше того, что у них на руках. Хочу видеть протокол, устойчивый к ситуации "все, кроме одного игрока - жулики". P.S. Никто, что ли, не играл в преферанс в чужой компании? Там даже мошенничать не требуется - правила позволяют играть на одну руку и это достаточно сложно доказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 16:32 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
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 каждого игрока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 16:38 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovСговор (игра команды против одиночного игрока) уже несправедлив, даже если "честное" казино не позволяет жуликам знать больше того, что у них на руках. ИМХО эта задача нерешаема. Запретить общение другими каналами между игроками невозможно. Для этого в казино видеокамеры стоят. Думаю надо упростить решаемую задачу до: "перемешать карты так чтобы ни один из участников не знал где какая карта". При этом чтобы каждый участник мог взять карту так, чтобы другие не догадались что это за карта. Мой вариант в два прохода 21108345 эту проблему не решает, ломается легко. Возможно алгоритм alekcvp с CRC решает, но я не понял как он работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 16:48 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima TНе понял эту схему. ID шифруем, но оставляем нешифрованное CRC каждого игрока? Да, я там затупил, не будет работать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 17:00 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
alekcvpВы не видите противоречия в этой фразе? Кто-то должен исключить из колоды взятые карты, т.е. этот кто-то однозначно будет знать какие карты были взяты из колоды, при этом никто не должен знать какие именно карты взяты. При исходном условии что обмен информацией возможен между любыми сущностями за столом - это нерешаемая задача. Чего это сразу не решаемая? Это ещё надо доказать. Во-первых, как перетасовку, так и взятие карт можно распределить между всеми участниками, используя шифрование. Во-вторых, можно использовать криптографическую подпись, чтобы обеспечить достоверность принятых решений. Просто я пока не получается выразить это в виде алгоритма. maytonМы плавно подходим к изобретению блокчейна. Блок-чейн может помочь от подтасовки, но никак не может помочь от раскрытия информации. В ситуации с деньгами, блог-чейн защищает транзакции как раз за счёт распределения информации. Если информацию скрывать то никакой чейн не имеет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 17:19 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Как я понимаю общий принцип решения должен быть таким: т.к. доверия нет никому, то необходимо чтобы любую карту расшифровать мог только тот, у кого она на руках, при этом в расшифровке обязательно должны принимать участие ВСЕ остальные игроки. До чего я додумался на данный момент: 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 мегабайт. Для шифрования используется шифр Вернама (одноразовый блокнот). Вроде уязвимостей пока не вижу, но возможно я что-то упустил. Таким образом задача решаема в теории, но вот практическая реализация... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 17:27 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
alekcvp1. Один игрок генерирует 52 {ID}, шифрует их (каждый своим ключём), перемешивает и передаёт следующему игроку. Список открытых {ID} с номиналами публикуется всем игрокам. alekcvp4. Когда кому-то необходимо расшифровать карту из колоды - он отправляет её по кругу В ТОМ ЖЕ направлении, в котором шифровалась колода. Это необходимо чтобы при сговоре игроков 1 и 2, например, они не могли составить список {ID} - {ID^K1^K2} и узнать карту при расшифровке. Здесь проблема в том, что самый первый игрок по запросу ключа или расшифровки будет знать ID карты (номинал), даже если не будет знать кому именно она досталась. Может быть все игроки поделятся друг с другом своим набором 52x публичных ключей? Вариант «по кругу» самый устойчивый, так как позволяет восстанавливать порядок карт на каждом этапе, не раскрывая это другим участникам. Но вот слабое звено это самый первый участник. :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 17:38 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
hVosttalekcvp1. Один игрок генерирует 52 {ID}, шифрует их (каждый своим ключём), перемешивает и передаёт следующему игроку. Список открытых {ID} с номиналами публикуется всем игрокам. alekcvp4. Когда кому-то необходимо расшифровать карту из колоды - он отправляет её по кругу В ТОМ ЖЕ направлении, в котором шифровалась колода. Это необходимо чтобы при сговоре игроков 1 и 2, например, они не могли составить список {ID} - {ID^K1^K2} и узнать карту при расшифровке. Здесь проблема в том, что самый первый игрок по запросу ключа или расшифровки будет знать ID карты (номинал), даже если не будет знать кому именно она досталась. :( А никто не будет запрашивать у него конкретный ключ. Ему прилетит от 1го до ~140 тысяц зашифрованных {ID}', после чего ему необходимо расшифровать КАЖДЫЙ из них КАЖДЫМ из своих 52х ключей и отправить дальше от 52х до ~7 миллионов расшифрованных {ID}, но при этом каждый их них всё ещё будет зашифрован ключём того игрока, у которого на руках эта карта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 17:52 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
alekcvp5. Следующий игрок расшифровывает эту карту всеми своими ключами и отправляет дальше список из 52х {ID}. Можно разом спалить все 52 ключа если известно что дали на вход и что было на выходе. При игре втроем элементарно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 18:15 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima Talekcvp5. Следующий игрок расшифровывает эту карту всеми своими ключами и отправляет дальше список из 52х {ID}. Можно разом спалить все 52 ключа если известно что дали на вход и что было на выходе. При игре втроем элементарно. Ну значит надо выбрать более стойкий алгоритм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 19:17 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
alekcvpDima Tпропущено... Можно разом спалить все 52 ключа если известно что дали на вход и что было на выходе. При игре втроем элементарно. Ну значит надо выбрать более стойкий алгоритм. Кроме XOR с ключом ничего не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 19:50 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima TКроме XOR с ключом ничего не подходит какие-нибудь повороты в каких-то там пространствах тоже коммутативны, слышал я ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2018, 20:32 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima TИМХО эта задача нерешаема. Запретить общение другими каналами между игроками невозможно. Для этого в казино видеокамеры стоят. Думаю надо упростить решаемую задачу до: "перемешать карты так чтобы ни один из участников не знал где какая карта". При этом чтобы каждый участник мог взять карту так, чтобы другие не догадались что это за карта. Мне кажется мы все время ходим по кругу и решаем одну задачу. А именно как получить "круговой" контроль над карточным столом. Мне кажется в нашей схеме это невозможно. Должен быть кто-то арбитром. Сервером. Или доверительным хранилищем где можно что-то сохранить. Или кто-то должет раздать всем одно приложение (протокол) которому все остальные доверяют. Я-бы начал со следующего. Есть три физических хоста. (А)лиса, (Б)об и (К)ларк. (A,B,C). Они знают IP адреса друг друга. И они решили поиграть в покер. И??... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 01:30 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
maytonИ??...... hVostt хочет исключить доверие всем, включая казино. А доверие это не про IP-адреса и алгоритмы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 01:36 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Остается "колода". Как ей доверять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 01:45 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
maytonОстается "колода". Как ей доверять?Колода находится у крупье в казино, которому мы тоже не доверяем. Я покрутил в голове несколько сценариев и некоторые даже опубликовал, но, всё, что я придумал - принципиально нерабочее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 02:42 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Мой вариант 21108345 нерабочий, т.к. по результату первого прохода можно легко получить общий ключ и узнать где какая карта: берем нешифрованную карту 1, делаем XOR со всеми шифрованными, затем тоже с картой 2, ищем совпавшие результаты - это ключ. Чтобы этого избежать надо разбавить карту мусором, т.е. формат карты должен быть таким чтобы неизвестно было ее исходное бинарное представление. Например: мусор + мусор^карта , где "мусор" случайное число размером с карту. Алгоритм перемешивания такой: 1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты). 2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). ID не шифруется. В остальном работа по алгоритму alekcvp 21107902 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 07:51 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima T1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты). 2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту).Карты замусорены, перемешаны и зашифрованы индивидуальными ключами. Требуется расшифровать первую карту полученного мусора. Какие конкретно ключи для должен предоставить каждый из участников? Идентификаторы не шифруются? А зачем тогда вообще тасовать? Вот этот мусор - идентификатор сорок три, а у нас есть мошенник, который знает, какой карте соответствует и этот идентификатор и все остальные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 08:23 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovТребуется расшифровать первую карту полученного мусора. Какие конкретно ключи для должен предоставить каждый из участников? Для расшифровки игрок запускает карту по кругу, где каждый расшифровывает своим ключом для конкретного ID. Последним расшифровывает сам игрок и узнает что это за карта. Basil A. SidorovИдентификаторы не шифруются? А зачем тогда вообще тасовать? ID это номер ключа которым расшифровывать карту. Тасовать чтобы карты не шли по порядку. Basil A. SidorovВот этот мусор - идентификатор сорок три, а у нас есть мошенник, который знает, какой карте соответствует и этот идентификатор и все остальные. Если у нас один мошенник, то никто не знает какая карта под каким ID. Но если их двое (первый и второй игроки) то они будут знать, т.е. не поможет мой алгоритм. PS Надо обдумать вариант alekcvp 21108634 с добавлением мусора, у него ID шифруется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 08:57 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima T1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты). 2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). а как можно расшифровать после операций 2-3? назначение нового ID каждым игроком позволяет делать запрос ключа, не раскрывая информацию для других участников, это хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 09:08 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Dima TДля расшифровки игрок запускает карту по кругу, где каждый расшифровывает своим ключом для конкретного ID. Последним расшифровывает сам игрок и узнает что это за карта. Может таблица ссылок: A_ID[B_ID[C_ID...]]] ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 09:11 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
hVosttDima T1. Первый игрок перемешивает, добавляет в каждую карту мусор и шифрует своим ключом (один на все карты). 2. Второй игрок перемешивает, проставляет ID и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 3. Третий (и последующие) перемешивает, шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). 4. Первый расшифровывает ключом из п.1 и шифрует каждую карту ключом из блокнота (отдельный ключ на каждую карту). а как можно расшифровать после операций 2-3? назначение нового ID каждым игроком позволяет делать запрос ключа, не раскрывая информацию для других участников, это хорошо ID проставляет только 2-й, остальные используют то что он проставил. Но есть проблема: если первый и второй в сговоре, то они будут знать под каким ID какая карта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 09:16 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
hVosttDima TДля расшифровки игрок запускает карту по кругу, где каждый расшифровывает своим ключом для конкретного ID. Последним расшифровывает сам игрок и узнает что это за карта. Может таблица ссылок: A_ID[B_ID[C_ID...]]] ? Можно, только что это меняет? Допустим A знает соответствие своего ID каждой карте, его ID не шифрован. Проблема не решилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 09:26 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Мне с XOR идея показалась интересной. 1. Каждый участник на раунд придумывает себе XOR ключ. Одна штука. 2. Сервер тасует колоду и показывает её всем участникам. 3. Карты "раздаются" участникам по очереди сверху. 4. Чтобы "открыть" карту участник: 4.1 применяет одноразовый временный XOR 4.2. отправляет по кругу чтобы каждый из участников применил свой постоянный XOR 4.3. к полученному результату опять применяет одноразовый временный XOR 4.4. применяет свой постоянный XOR, и получает правильный номинал карты Чтобы это работало, надо: - применение XOR ключа меняет номинал карты - применив XOR ко всем картам, поменяеются все номиналы карты, но при этом они останутся индивидуальными Что думаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 09:34 |
|
||
|
Криптографический покер
|
|||
|---|---|---|---|
|
#18+
Есть казино, шулеры и игрок. Казино в сговоре с шулерами. Требуется разработать покер, позволяющий сохранить игроку тайну своих карт. Схема возможна, если оставить за казино только публикацию ходов и раздачу зашифрованных карт участникам. Каждый участник умеет создавать последовательности уникальных (псевдо)случайных чисел. В духе плагиаторов назовём их гаммами. Гаммы участников формируются парами. Одна последовательность используется для шифрования (гамма ключей), другая - для идентификации ключей (гамма индексов). Разрядность элементов гаммы кратна разрядности (симметричного) алгоритма шифрования. Казино создаёт колоду в виде (одиночной) гаммы и публикует её. Первый участник тасует колоду, шифрует каждую карту индивидуальным ключом, добавляет индексы и передаёт раздачу следующему. Следующий участник тасует раздачу, шифрует её элементы, добавляет свои индексы и далее по кругу. Раздача, таким образом, состоит из слоёв, где каждый элемент слоя - пара "индекс, шифр предыдущего слоя", а самый первый слой - "индекс, шифр карты". Казино получает от последнего участника растасованную колоду и сдаёт по две карты каждому участнику. Каждый из участников, в обратном порядке, начинает запрашивать ключи шифрования, отправляя индексы владельцу ключей. После первой расшифровки вскрывается очередной слой с очередными индексами и процедура повторяется. Казино, точно так же, вскрывает карты для стола. Если хотя бы один участник честен - он не отдаст больше ключей, чем положено, что не позволит ни шулерам, ни казино вскрыть произвольную карту. Процедуры подписания ходов и сдач, а так же процедура (послеигрового) аудита - не рассматриваются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2018, 09:37 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39584701&tid=1340184]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 406ms |

| 0 / 0 |
