(Извините, если это хорошо известно.) Я хотел бы передать какой-то предмет одному из агентов, чтобы агент получил предмет с вероятностью . Существует ли криптографический (или другой) инструмент, позволяющий каждому агенту (и даже каждому наблюдателю) быть уверенным в том, что случайное рисование действительно справедливо?
cr.crypto-security
Гил Калай
источник
источник
Ответы:
Если я понять проблему правильно, по- видимому, количество общественных листать односторонний монету. Кажется, есть много способов сделать это, если вы берете на себя обязательства. Одним из примеров было бы то, чтобы каждая сторона генерировала случайное целое число от 0 до , используя обязательство по битам для публичной фиксации этой строки битов. Затем, как только каждый агент совершил, они все публично раскрывают свое секретное целое число. Тогда выигрышным агентом будет индексированный по сумме целых чисел по модулю . Если хотя бы один агент честен, то переворот должен быть случайным.К к - 1 К
Конечно, одна из проблем заключается в том, что это требует определенных усилий. Информационно-теоретические схемы для битовой привязки невозможны как для классических, так и для квантовых вычислений (хотя Адриан Кент недавно предложил схему, использующую относительность). Тем не менее, безопасное выделение битов может быть достигнуто с вычислительными допущениями.
источник
Как намекают другие пользователи, это хорошо изученная проблема в криптографии. Это называется «подбрасывание монет» и является частным случаем многопартийных вычислений.
Какой протокол выполняет работу, зависит от контекста.
Просто чтобы дать представление о том, насколько тонким он является, протокол «каждый принимает на себя случайные значения», предложенный другим респондентом, небезопасен, если используемая вами схема фиксации является гибкой. Схемы невыполнимых обязательств дают вам безопасный протокол, но их немного сложно спроектировать.
источник
Примечание: пожалуйста, прочитайте комментарии ниже. Этот протокол, похоже, имеет проблемы.
Любой агент может быть уверен, что выбранное случайное число получилось равномерно случайным, выбрав свой собственный вектор равномерно случайным образом. Для того чтобы любой наблюдатель был убежден, он должен верить, что по крайней мере один агент следовал протоколу, но если никто этого не сделал, я полагаю, что никто не хотел начать честную лотерею с самого начала.
источник
Пассивные наблюдатели не могут проверить, что чертеж не был поставлен. Входы в псевдослучайный процесс могут быть выбраны, чтобы дать желаемый результат.
Однако, если наблюдатель может предоставить случайное число, которое, как он знает, является случайным, и убедиться, что другие агенты не изменят свои входные данные впоследствии (потому что они могут компенсировать его эффект своими входными данными), то он может быть уверен, что результат действительно был случайным ,
Это требует схемы обязательств, которую мы не знаем, которая математически доказана как безопасная, но на практике может быть реализована с использованием безопасного хэша (такого как SHA3).
Рассмотрим этот пример:
Я сделал пример реализации. Вы можете увидеть его в прямом эфире здесь: https://mrogalski.eu/cl/ или проверить источники на GitHub .
источник