Public-Key

有沒有可以製作“彩票”的密碼算法?

  • August 14, 2022

通過公鑰加密,我知道 Alice 可以“密封”一條只有 Bob 可以打開的消息。但在這種情況下,愛麗絲知道她正在密封的消息。

如果 Alice 想要封印一個她不知道的隨機數怎麼辦?她能不能把它封起來,讓只有 Bob 可以確定,而不是 Alice?

更具體地說,這是我想知道的那種情況:

假設隨機數來自 1 到 10 的均勻分佈。Alice 密封了一個包含隨機數的信封,但不知道它是什麼。雖然她不知道這個數字,但她可以確定它是具有統一機率的選項 1-10 之一。Bob(並且只有 Bob)可以打開它,並且他可以確定他是唯一可以打開它的人。所以當他打開它時,他知道他是第一個也是唯一一個看到 Alice 生成了什麼隨機數的人。然後他可以告訴愛麗絲他得到了什麼。並提供驗證,以便愛麗絲能夠驗證鮑勃對他聲稱獲得的號碼的真實性。

Bob 應該具有以下加密保證:

  1. 他是第一個“刮掉”(辨識)隨機生成的數字的人。
  2. 這個數字是從$$ 1..10 $$均勻分佈。

這種加密算法是已知的還是可能的?


編輯:感謝您所有有用的討論和回饋!

讓這個問題更進一步:有沒有一種方法可以讓 Alice 準備好“票”並將其發送給 Bob 只使用一條消息?

基本上意思是:愛麗絲可以只使用鮑勃的公鑰準備這樣一張票嗎?

或者,更準確地說:Alice 在準備發送給 Bob 的票證時,可以使用 Bob 的公鑰或其他先前已知的資訊——但她可以生成多個不同的票證來發送,而無需 Bob 在每次有新票證時聯繫她。生成。向 Bob 發送一張票只需要一個數據包——從 Alice 到 Bob 的那個。

是否有可能通過這種額外的“單包”限制來創建“彩票”?

Bob 選擇一個整數 $ n $ 介於 0 和 9(含)之間,以及一個統一隨機的 128 位致盲因子 $ b $ . Bob 通知 Alice 雜湊承諾 $ c=H(n \mathbin| b) $ . $ H() $ 是加密安全的雜湊,例如 SHA256。 $ n $ 和 $ b $ 應該在散列連接內以固定位長的形式表示。

愛麗絲選擇一個均勻隨機的整數 $ n’ $ 介於 0 和 9(含)之間。她告訴鮑勃 $ n’ $ .

Bob 現在可以將他的彩票價值計算為 $ v = 1 + ((n+n’) \operatorname{mod} 10) $ .

當鮑勃希望宣布 $ v $ ,他還需要公佈他的價值觀 $ n $ 和 $ b $ 以便世界可以驗證這些價值觀是否符合他的承諾 $ c $ .

如果 Alice 只知道 Bob 的公鑰並且不能等待 Bob 提供承諾:

Bob 擁有(私有,公共)EC 密鑰對 $ (b, B=bG) $ , 在哪裡 $ G $ 是一個眾所周知的基點。

Alice 選擇一個均勻隨機的 128 位整數 $ s $ ,並通知 Bob $ s $ .

鮑勃計算 $ X=bH_p(s) $ , 在哪裡 $ H_p() $ 表示對輸入進行散列並將結果解釋為 EC 點。這意味著私鑰 $ x $ 這樣 $ X=xG $ 是不可知的。

鮑勃計算 $ t=H_4(X \mathbin| i) $ , 在哪裡 $ i $ 是一個 128 位數字,最初設置為零值,並且 $ H_4() $ 意味著將加密安全散列的結果截斷為 4 位。然後他使用拒絕抽樣來確定他的彩票 $ v $ 如下:

如果 $ 0\leq t\leq 9 $ , Bob 確定 $ v=t+1 $ . 否則,他增加 $ i $ 並再次嘗試。Bob 必須接受第一個值 $ t $ 這在要求的範圍內,Alice 將能夠檢查他是否這樣做了。

當鮑勃準備宣布他的彩票時 $ v $ ,他需要宣布 $ X $ 並提供離散對數等價證明證明該點 $ X $ 在基點上 $ H_p(s) $ 共享相同的私鑰 $ b $ 作為 Bob 的公鑰 $ B $ 在基點上 $ G $ . 這證明了 $ X $ 計算正確。

那個工程 $ X=bH_p(s) $ 被稱為可驗證的偽隨機函式(VPRF)。它允許 Alice 選擇只有 Bob 能夠執行的 PRF 的輸入,並且 Bob 將能夠提供證明他已正確執行 PRF 的證據。

請注意,Bob 必須檢查 Alice 沒有提供相同的種子 $ s $ 兩次,因為這將允許愛麗絲讓鮑勃在未來再次收到相同的彩票價值。

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