Рейтинг:2

Проверка предсказания будущего

флаг us
svm

Я пытаюсь найти алгоритм, чтобы доказать, что кто-то знает какое-то короткое секретное сообщение (например, какое-то предсказание будущего), прежде чем окончательно раскрыть его.

Например:

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

Я придумал примерно такую ​​схему:

  1. Алиса генерирует длинный случайные строки $р_с, р_р$.

  2. Алиса отправляет $ хэш (r_s . r_p . T) $, и $r_p$ к Бобу.

    Здесь $Т$ прогнозируемая температура (двузначное число).

  3. На следующий день Алиса отправляет $r_s$, и $Т$ Бобу, чтобы он мог теперь убедиться, что Алиса знала $Т$ на шаге 2 доказывается, что Алиса предсказала будущее.

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

Рейтинг:3
флаг es

Ваша схема работает, но нет необходимости иметь $r_p$.

Если вы удалите $r_p$, то важно заранее согласовать разрядность вашего коэффициента ослепления $r_s$ будет, так что обязательство не будет податливым, решив удалить или добавить биты в начало $Т$ при добавлении или удалении битов к тому, что вы позже называете значением вашего ослепляющего фактора $r_s$.

Затем Алиса отправляет $хэш(r_s\mathbin\| T)$ (куда $\mathbin\|$ означает конкатенацию), а позже раскрывает $r_s$ и $Т$. Просто используйте любой криптографически безопасный хэш с уровнем безопасности не менее 128 бит, например SHA256. Используйте не менее 128 бит для $r_s$ и убедитесь, что он равномерно случайный, чтобы предотвратить перебор значений Бобом $r_s$ узнать свой прогноз заранее.

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

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

Вы можете избежать как этой угрозы, так и избежать необходимости заранее согласовывать битовую длину маскирующего фактора, используя один из следующих методов:

  1. Рассчитайте обязательство как хеш (хеш (ослепляющий фактор) $\mathbin\|$ хэш (предсказание)).

  2. Как указывает @kelalaka, используйте HMAC с ослепляющим фактором в качестве ключа. Следовательно, обязательство = HMAC-SHA256 (ослепляющий фактор, прогноз).

svm avatar
флаг us
svm
Да, я перепроверил и теперь вижу, что r_p действительно не нужен. Я пойду с этой схемой. Спасибо!
Рейтинг:1
флаг in
  • $у$ , что, по сути, является лучшей гарантией безопасности, на которую вы можете надеяться.Из этих значений

    $x_i$ , если вы хотите, чтобы схема напоминала ваше первоначальное предложение, вы можете выбрать случайный ненулевой$x_i'$ , и установите ( $a_i = x_i'^{-1}x_i$. На самом деле каждый игрок может сделать это сам, так что это не повлияет на безопасность. Но я не вижу, какую функциональность он вам дает. насколько опасно проверять метку не за постоянное время?Насколько я могу судить, не так много, пока метка является общедоступной, и эта проверка выполняется и не обусловлена ​​проверкой 0x00 байта слева от результата RSA-расшифровки. $c^d\bmod п$. Это применимо независимо от того, поддерживает ли операция расшифровки метки.$я$ , кто знает цену $у$ непосредственно, в наборе игроков. Из вышеизложенного это означает, что все игроки должны сотрудничать, включая игрока.

    $я$

    • , восстановить $у$

      . Но если все игроки решат сотрудничать, им не нужны секретные доли, так как игрок

      $я$

    • имеет секретное значение. Вместо использования схемы обмена секретами игрок $я$ может сначала ничего не отправлять, а потом когда все согласятся восстановить секретное значение

    $у$ $2^{34}$, затем игрок

    $я$ можно просто отправить всем значение $у$ Обмен секретами Шамира может дать вам $t$ -снаружи-$К$ схема, так что плеер $я$ может вычислять значения $x_i$

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

$t$ игроки сотрудничают, эти игроки могут вычислить значения для $a_i$ так что сумма .

$a_ix_i$

для всех взаимодействующих игроков будет равно $у$;

Шамир делится секретом с

Maarten Bodewes avatar
флаг in
Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат] (https://chat.stackexchange.com/rooms/133039/discussion-on-answer-by-kelalaka-verifying-a-prediction-of-the-future).

Ответить или комментировать

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