Protocol-Design

幾何密碼學和零知識證明

  • February 1, 2017

為了理解零知識證明,我偶然發現了這個頁面,它提供了一個簡單加密協議的絕佳範例。為了完成,我將在這裡複製協議。

假設:讓我們假設只允許(古典希臘)幾何構造。所以我們只能使用指南針和直尺,我們只能執行那些可以幾何構造的操作。具體來說,任意(給定)角度不能被三等分,但任何任意角度都可以輕鬆三等分。

初始化:愛麗絲有一個秘密,一個角度 $ X_A $ . 也許她想賣掉它,或者以後用它來證明她的身份。愛麗絲構造 $ Y_A=3*X_A $ 並發表。因為三等分一個角度是不可能的,愛麗絲相信她是唯一知道的人 $ X_A $ .

辨識協議:Bob 出現並想購買 $ X_A $ 或驗證愛麗絲的身份。

  1. Bob 發起檢查。
  2. 愛麗絲選擇一個角度 $ K $ 隨機。愛麗絲構造 $ R = 3*K $ 並給出 $ R $ 給鮑勃。
  3. 鮑勃擲硬幣並將結果告訴愛麗絲。
  4. 如果鮑勃說“正面”,愛麗絲給鮑勃一份角度的副本 $ K $ 鮑勃檢查了 $ 3*K = R $ .
  5. 如果鮑勃說“尾巴”,愛麗絲給鮑勃一份角度的副本 $ L = K + X_A $ 鮑勃檢查了 $ 3*L = R + Y_A $ .
  6. Bob 可以根據需要沖洗和重複多次。

問題:為什麼步驟三和四是協議的一部分?具體來說,為什麼第四步甚至是必要的?出什麼問題了

  • Bob 發起檢查。
  • 愛麗絲想出一個新的隨機數 $ K $ 並給出 $ R=3*K $ 給鮑勃。
  • 然後愛麗絲給 $ K+X_A $ 給鮑勃,鮑勃檢查一下。
  • Bob 可以根據需要啟動任意數量的檢查,並在滿意時停止。

為什麼這還不夠?

假設使用第二種方法,這將允許攻擊者強加 Alice。直覺是,只要攻擊者知道 Bob 會問他什麼,他就可以按照自己的意願進行操作,以通過驗證。

基本上,攻擊者想要給 Bob 一個(選擇的)值 $ R $ 這樣當他給 $ L’ $ 對 Bob 驗證成立 ( $ L’ $ 將會 $ L = K + X_A $ 在愛麗絲的情況下)。這意味著 $ 3\ast L’ $ 應該等於 $ R + Y_A $ . 這很容易,因為他可以首先為 $ L’ $ 然後設置 $ R $ 成為 $ 3\ast L’ - Y_A $ (回顧 $ Y_A $ 是公開的!),您可以檢查驗證是否通過。

請注意,這是有效的,因為攻擊者發送[Math Processing Error] $ L’ $ 和[Math Processing Error] $ R $ simultaneously. This fails in the former protocol since Alice is asked to commit to [Math Processing Error] $ R $ at the beginning and then compute [Math Processing Error] $ L $ from there depending on Bob’s choice.

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