Protocol-Design

參與者之間交流有限的硬幣翻轉

  • October 29, 2015

愛麗絲和鮑勃想玩擲硬幣遊戲。如果硬幣正面朝上,愛麗絲獲勝。

他們選擇信任生成隨機信標的獨立第三方(例如 NIST)。只有在隨機信標產生之前沒有通信。生成之後,就可以進行通信了。

愛麗絲有一條只有她知道的消息。結果是 的第一位hash(message, beacon)

  1. 在隨機信標生成之前,Alice 和 Bob 可能無法通信。
  2. 當至少一個人知道結果時,結果不能改變。

通過 (2) 我們避免了 Alice 讀取隨機信標然後更改消息以產生有利於她的不同結果的情況。

一種解決方案可能是讓另一個第三方(不是隨機信標之一)將消息雜湊時間戳記到生成隨機信標之前的某個時間。然後,Alice 不能追溯更改消息。我看到這個解決方案有兩個問題:

  • Alice 可能會在生成隨機信標之前生成多個消息並為它們加上時間戳。然後,在生成隨機信標後,她可以選擇產生有利於她的結果的消息。
  • 我們如何證明時間戳是在隨機信標之前生成的?

這個問題有加密解決方案嗎?這是密碼學中一個常見且研究過的問題,請您指出一些描述和解決此問題的文獻嗎?

正如 fgrieu 所指出的,在隨機信標生成之前,Alice 和 Bob 必須以某種方式達成某種協議。這些技術中的任何一種對你有用嗎?

直接使用隨機信標

他們可以提前同意“如果NIST 隨機信標在 2015 年 11 月 2 日 11:59 發送的第一個隨機位為 0,則 Alice 獲勝,如果該位為 1,則 Bob 獲勝。”

隨機信標允許人們證明隨機數(或從中計算的任何雜湊值)是在某個特定時間後生成的。

使用帶有可信時間戳的 Alice 的消息

有一些方法可以做可信的時間戳來證明 Alice在某個特定時間之前知道一條消息。

他們可以提前同意“在愛麗絲送出一條消息後,將這條消息包含在比特幣區塊鏈中,作為交易的一部分,在 2015 年 11 月 1 日的某個時間從愛麗絲向鮑勃發送少量比特幣,並且然後稍後在2015年 11 月 2 日 11:59的NIST 隨機信標生成一些隨機數據,如果雜湊(消息,信標)的第一位是 0,則 Alice 獲勝,否則 Bob 獲勝。

(如果消息很長,最好只將該消息的雜湊儲存在區塊鏈中作為對該消息的承諾)。

在信標傳輸之前從 Alice 到 Bob 或從 Bob 到 Alice 沒有直接的通信,儘管這個特定的系統需要在信標傳輸之前 Alice 和比特幣系統之間進行一些雙向通信。

Alice 可能會在生成隨機信標之前生成多個消息並為它們加上時間戳。然後,在生成隨機信標後,她可以選擇產生有利於她的結果的消息。

有了這個系統,在信標傳輸之後,Bob 可以很容易地檢查當天的比特幣區塊鏈,看看 Alice 是否試圖通過在當天的幾筆交易中向他發送少量比特幣來作弊,每筆交易都有不同消息的雜湊值. (Bob 甚至可以在信標傳輸之前檢查該區塊鏈,儘管您可以爭辯說這將被視為在信標傳輸之前從 Alice 到 Bob 的消息)。

我們如何證明時間戳是在隨機信標之前生成的?

這是一個難題,但這正是比特幣旨在解決的問題。

引用自:https://crypto.stackexchange.com/questions/30125