它是什麼類型的承諾計劃?
我有一個任務,我必須評估一個承諾計劃。我已經在這裡檢查了幾個問題,但他們沒有幫助我:(我希望有人能夠幫助我。
我有什麼?
$ commit_H $ - 完美隱藏和計算綁定
$ commit_B $ - 完美綁定和計算隱藏
這是 $ commit_1(m) $ 一步步。
$ commit_1(m) $ :
- 計算 $ (c_H, d_h) := commit_H(m) $
- 計算 $ (c_B, d_B) := commit_B(c_H) $
- 輸出 $ (c_B, (d_B, d_H)) $
第一個問題是這是否是一個承諾計劃。我的回答是肯定的,因為我們有一個承諾( $ c_B $ ) 和開放值 $ (d_B, d_H) $ .
如何開啟承諾? $ open(open(c_B, d_B), d_H) $
我希望到目前為止這是正確的。現在是我不知道的部分。我必須決定它是什麼類型的承諾。是 B 型(完美結合)還是 H 型(完美隱藏)。
我的第一個想法是它具有完美的約束力。為了證明這一點,我使用了矛盾。
矛盾:存在一個算法A,使得
$ ((x_1),(x_2)) \leftarrow A(1^n) ~~(x_1 \neq x_2) $
$ commit(x_1) = commit(x_2) $
$ commit_B(commit_H(x_1)) = commit_B(commit_H(x_2)) $
$ commit_B(c_{H1}) = commit_B(c_{H2}) $
這將是一個矛盾,因為 $ commit_B $ 完美結合。
下一步將表明它不是完全隱藏的,因為我認為它是 B 型。
這就是我卡住的地方。 $ commit_B $ 沒有完全隱藏,這意味著計算不受約束的攻擊者將能夠解除第一部分( $ commit_B(c_H) $ ),但會卡在第二部分( $ commit(m) $ ),因為它完全隱藏。
我的問題是,我做錯了什麼?我是不是誤會了什麼?有人可以幫我嗎?
謝謝
編輯:感謝雨披的回答,我得到了以下解決方案。它還沒有完成,因為我不確定它。如果有人甚至雨披在必要時可以糾正,那就太好了。
承諾方案 $ commit_1(m) $ 是類型 $ H $ . 這意味著,它將完美地隱藏和計算綁定。
我想展示三件事:
- 完美隱藏
- 計算綁定
- 不完美結合
我想從數字 3 開始 - 沒有完美結合。
$ commit_H $ 不完全具有約束力,這意味著 $ \exists m_1, m_2; m_1 \neq m_2 $ 這樣
$ c_{H1}=commit_H(m_1)=commit_H(m_2)=c_{H2} $ .
$ \implies commit_B(c_{H1}) = commit(c_{H2}) $
甚至 $ commit_B $ 完美裝訂,打開後 $ c_B $ 有可能打開 $ c_H $ 要麼 $ m_1 $ 或者 $ m_2 $ (給定無限計算)(感謝雨披)。
接下來,我想展示完美的隱藏。因此我使用了一個遊戲,攻擊者發送 $ m_1 $ 和 $ m_2 $ 至 $ commit_B $ 這是發送到 $ commit_H $ . 這是我一直在想的遊戲:
我們有一個無限的攻擊者 $ A $ 具有以下優勢 $ \epsilon(n) $ .
贏得這場比賽的機率是:
$ Pr[b=b’] = Pr[Challenger_H(n)=1] = Pr[Challenger_B(n)=b] $ 因為他傳遞消息 $ m_0 $ 和 $ m_1 $ 不改變它們。
$ Pr[b=b’] = Pr[Challenger_H(n)=1] = Pr[Challenger_B(n)=b] = Pr[A(n)=b] $ .
自從 $ commit_H $ 完全隱藏,我們得到以下等式:
$ \frac{1}{2} = Pr[A(n)=b] = \frac{1}{2} + \epsilon(n) $ $ \Rightarrow \epsilon = 0 $ 否則就會產生矛盾。
要證明的最後一件事(我可以稱之為屬性嗎?)是計算綁定。我還不確定該怎麼做。我正在考慮用計算和統計上的不可區分性來證明它。稍後我也會在那個問題上破解我的頭。
關於編輯中的解決方案,您有點過於復雜了。第一個證明它不是完美結合的證據很好。但是你在那裡做雙重工作 - 當顯示該方案完全隱藏時,你不會免費完美綁定。
在第二部分:做一個建設性的證明幾乎總是比做一個矛盾的證明要長。你的證明實際上是錯誤的:假設 $ \mathcal{A} $ 實際上並沒有對挑戰做任何事情,他只是用統一的一點回答。那麼公式仍然是相同的,但它並不能證明承諾方案的任何內容。
假設您的方案沒有完全隱藏,並且您有一個(可能是無限的)來破壞隱藏屬性。引導這個對手打破實際的完美隱藏方案——這與假設相矛盾。粗略的草圖:
- 您是該計劃的攻擊者 $ commit_H $ ,並且您可以訪問 $ \mathcal{A} $ , 可以打破 $ commit_1 $ 具有一些非零優勢 $ \epsilon $ (任何一種優勢都意味著它不是完全具有約束力的)
- 比賽開始: $ \mathcal{A} $ 向您發送他的挑戰 $ m_1,m_2 $ . 你把它們交給你的挑戰者。
- 你得到一個挑戰 $ c=com_H(m_b) $ . 您使用承諾方案 $ com_B $ 並且寄出 $ com_B(c) $ 至 $ \mathcal{A} $ .
- $ \mathcal{A} $ 答案是 $ b’ $ ,您只需將其轉發給您的挑戰者。
- 現在你可以爭辯說你有同樣的非零優勢 $ \mathcal{A} $ . 但是,如果您有任何優勢, $ commit_H $ 不會完全隱藏。
編輯:原始參數中有錯誤
想像一個對手 $ \mathcal{A} $ ,誰能打破計算綁定屬性。計算綁定意味著它必須找到兩個具有相同承諾的輸入作為其輸出。所以 $ \mathcal{A} $ 是一種多時間算法,可以生成以下輸出: $ m_1,m_2,r_1,r_2 $ , 和機率 $ Pr[m_1 \neq m_2, Commit(m_1,r_1)= Commit(m_2,r_2)] $ 是不可忽略的並且 $ m_1,m_2 $ 是消息和 $ r_1,r_2 $ 隨機硬幣(通常也是開放值)
在您的範例中,值 $ r_1 $ 和 $ r_2 $ 實際上是元組,它們是你定義為開放值的東西,所以它們是 $ (d_{B,1},d_{H,1}) $ 和 $ (d_{B,2},d_{H,2}) $ .
所以 $ \mathcal{A} $ 能夠產生價值 $ m_1,m_2,(d_{B,1},d_{H,1}),(d_{B,2},d_{H,2}) $ 並且機率不可忽略 $ m_1 \neq m_2 $ 和 $ Commit_1(m_1,d_{B,1},d_{H,1}) = Commit_1(m_2,d_{B,2},d_{H,2}) $ . 一般來說,這並不意味著中間值 $ Commit_H(m_1,d_{H,1}) $ 和 $ Commit_H(m_2,d_{H,2}) $ 是平等的。但是,我們也知道外部綁定是完美綁定。所以這意味著沒有(無限的)對手可以生成具有相同承諾的兩條消息 - 這意味著 $ Commit_B $ 對於任何給定的消息都是單射的。然後我們可以按照它的輸出 $ \mathcal{A} $ 我們有 $ Commit_H(m_1,d_{H,1}) = Commit_H(m_2,d_{H,2}) $ .