基於公鑰加密和偽造的簽名
在存在不可偽造性的定義中,沒有關於以下問題的細節。
一般來說,我們可以假設簽名者也是可能的對手嗎?在生成簽名時,我們可以假設簽名者表現良好嗎?
更準確地說,假設簽名者可以生成對他選擇的另一個文件有效的簽名。儘管如此,對於正確生成的簽名,假設在考慮不是簽名者的對手時使用的簽名方案是安全的;也就是說,這個對手不能為任何其他文件生成簽名。這個簽名方案被認為是安全的嗎?
對此的標準(傳統)假設是什麼?
我更新以回應評論:
實際上,
- 如果簽名者表現良好,則簽名是不可偽造的(對於簽名者或任何不是簽名者的對手)。
- 如果簽名者行為不端,則簽名是可偽造的(對於簽名者,不使用密鑰,對於任何對手)。
這種方案在存在可偽造性的意義上是否被認為是安全的?我們可以假設簽名者表現良好嗎?
存在偽造的標准定義允許對手詢問並獲得她想要的任何消息的簽名,如果她可以展示(以相當大的機率)任何可接受的(消息,簽名)對,對於任何她沒有收到的消息,則聲稱成功問簽名。
更新:還有很強的存在不可偽造性,對手不應該能夠展示任何可接受的(消息,簽名)對,而她沒有通過詢問該消息的簽名來獲得該簽名。對於成為頭條新聞的案例,這種強大會產生巨大的影響,請參閱 這些 連結。
注意:在具有消息恢復的簽名方案中,嵌入簽名中的任何部分消息都不需要被對手展示,而是由驗證者獲得,用於與對手送出的內容進行比較。
更正:如果“簽名者能夠生成**對他選擇的其他文件(即消息)有效的簽名”,那麼該方案很容易受到存在偽造的影響。對手獲得第一條消息的簽名,將該簽名與第二條消息一起送出,並以 100% 的機率贏得存在性偽造遊戲。哦不,只有簽名者可以這樣做,使用對私鑰的訪問!
存在性偽造是最強的簽名理論標準。但是,它假定簽名者除了允許對任意消息進行簽名之外沒有行為不端;特別是,假設簽名者(或用於簽名的智能卡)沒有洩露私鑰,只按照規定使用私鑰,並正確執行算法中的每一步,例如生成真正的隨機數。
更新: Ricky Demer的這篇現場評論給出了簽名的安全標準名稱,這些簽名保護免受簽名者/私鑰持有者的一些攻擊。
更新:正如DrLecter在評論中指出的那樣,為防止存在偽造的方案(我們也說:在選擇的消息攻擊下安全)為簽名者建模的標準方法是作為一個接受任何消息並輸出其簽名的預言機。假設該預言機完全按照指定的方式實施簽名方案。更多詳細資訊,我參考 DrLecter 的簽名安全模型詞庫。