Начнем с того, что я имею в виду под криптографическим случайным маяком (RB).
RB — это протокол между некоторыми сторонами, которые вместе генерируют случайное значение, так что:
- эти стороны не доверяют друг другу
- результат является публично проверяемым (любой может убедиться, что результат правильно сгенерирован протоколом)
- Результат непредвзят: ни одна из сторон не может повлиять на результат.
- результат непредсказуем: ни один орган не может предсказать следующий результат на основе текущего выхода.
Первое интуитивно понятное решение — «фиксация и раскрытие», которое не работает!
каждый выбирает секретное случайное значение $s_i$ и совершить его, то во втором раунде они раскрывают свои секреты.
Результат является случайным, непредсказуемым и публично проверяемым, но не беспристрастным.
Злоумышленник может просто подождать, пока каждый орган раскроет свою тайну, затем она решит, хорошо ли ей раскрыть свою тайну, или нет, и она может отказаться от раскрытия своей тайны.
Затем есть несколько решений, основанных на функции случайной задержки или пороговой криптографии (для меня наиболее понятное решение основано на пороговой подписи BSL от компании Dfinity).
Где же в криптографии это можно использовать? почему Random Oracle (+ Fiat-Shamir) не хватает?
Я понимаю, что это может быть полезно в приложениях, где вызов должен быть неизвестен в специальных временных метках.
Например, если хранилище данных хочет доказать, что на отметке времени $t$ у него все еще есть данные, он должен использовать вызов, сгенерированный RB на отметке времени $t$ и дайте доказательство, основанное на этой задаче. В противном случае он может сам сгенерировать вызов (например, с помощью RO), удалить данные и с отметкой времени $t$ утверждает, что у него есть данные, потому что он может генерировать доказательство на основе данных и задачи.
Но если нет метки времени, я действительно не вижу смысла использовать RB вместо RO. Я думаю, что для приложений без меток времени RO более практичен.
Итак, правильно ли я понимаю? Я все еще вижу некоторые документы, которые используют вывод RB в качестве задачи (или просто для случайной генерации), а не используют RO (хотя понятие времени отсутствует), и я не знаю, почему!