Encryption
證明消息由組成員簽名
我是密碼學的新手。這是我的問題:
- Alice 列出了以下人員:Bob、Carol 和 Dan;
- Alice 給列表中的每個成員一個唯一的密鑰,這樣他們就可以對消息進行唯一的簽名;
- 每個成員無權簽署超過1條消息;
- 作為觀察者的格蕾絲需要能夠檢查某條消息是否由 Alice 列表中的成員簽名,但她必須不知道是誰簽名的。
這是一個例子:
- 愛麗絲擁有一個電影評論論壇,著名評論家(也是競爭對手)可以在這裡發布他們的電影分析;
- 就在一部由真正的黑幫成員導演的辯論電影上映日期之前,愛麗絲決定在她的論壇上隱藏使用者的身份。
- 然而,愛麗絲網站的粉絲格蕾絲對這個決定有點惱火。論壇上發布了數十條匿名評論,作者聲稱自己是 Alice 的 Certified Trusted Reviewers™。格蕾絲明白為什麼不能透露實際策展人的身份,但她如何檢查特定文章的作者是否在原始受信任的審稿人列表中?
- 每個成員無權簽署超過1條消息;
正如評論中指出的那樣,任何阻止組成員生成兩個簽名的機制都需要受信任的硬體或在簽名過程中與組控制器 Alice 的互動(以防止簽名者在生成第一個簽名後重置他的狀態和然後繼續進行第二個簽名)。
因此,我將其翻譯為“如果成員嘗試簽署兩條消息,則可以檢測到”,也就是說,給定兩個簽名,我們可以驗證同一個組成員是否都簽署了它們。
有了那個翻譯,這是可能的;這是一種方法:
- Alice 生成一個基於狀態散列的簽名系統(例如 LMS 或 XMSS),其中各種一次性簽名密鑰是獨立的(也就是說,您不能從另一個重新建構一個)
- 對於每個組成員 Bob、Carol 和 Dan,Alice 選擇一個隨機葉(一個時間簽名),並為該組成員提供索引、一個時間簽名的私鑰和身份驗證路徑。
- 當 Bob 想要簽署他的一條消息時,他使用他的私鑰對其進行簽名,並輸出該簽名(連同索引和身份驗證路徑),生成有效的 LMS 或 XMSS 簽名
- 驗證者針對公鑰執行標準 LMS/XMSS 有效性檢查
如果簽名驗證,則驗證者知道生成簽名的人擁有有效的一次性簽名密鑰,因此它必須是有效的組成員(或組控制器)。而且,由於索引是隨機分配的,他不知道是哪一個)。
而且,如果 Bob 決定簽署兩條不同的消息,他必須在兩個簽名中包含相同的葉索引(該索引是她唯一知道如何簽名的索引)——顯然這兩個簽名具有相同的索引。即使我們讓 Bob 和 Carol(可能還有其他人)相互合作,這仍然是正確的——他們只能生成具有這些組成員之一的索引的簽名。
這種方法確實有一個警告,即如果 Bob 確實簽署了兩條不同的消息,那麼其他人可能會簽署第三條消息(基於 Bob 的兩個簽名);偽造的簽名看起來也來自 Bob。
正如所寫的,這種方法依賴於一個組成員只允許簽署一條消息的事實——如果一個組成員被允許簽署 N 條消息(通過為每個組成員分配 N 個連續的葉索引和私鑰),它可以被擴展。