簽名的安全定義比較
簽名的兩個主要安全定義是 EUF-CMA 和它的強版本 sEUF-CMA。
我看到它們的不同之處在於,在 EUF-CMA 實驗中,對手需要為其選擇的消息生成有效簽名,而該消息之前沒有被查詢過(即對手沒有發出的消息)對預言機的查詢)。
而在 sEUF-CMA 實驗中,也會發生類似的事情,儘管現在攻擊者需要確保它沒有使用偽造的(消息、簽名)對查詢預言機。因此,只需簽名也進入 sEUF-CMA 中的等式。
- 我不明白的部分是為什麼 sEUF-CMA 實際上構成比正常 EUF-CMA 定義更強大的定義?為什麼包含簽名會使其更強大?
- 此外,例如在 ECDSA 中,對於消息 $ m $ 和一個有效的簽名 $ \sigma = (r,s) $ , 簽名 $ \sigma’ = (r, -s \bmod N) $ 也是有效的。所以,從某種意義上說,你得到了一個新的簽名 $ \sigma’ $ ,但是,實際上簽名的消息是一樣的 $ m $ .
因此,在我看來,這確實違反了 sEUF-CMA,因為儘管消息相同,但簽名不同,因此對手獲勝。然而,這不能違反 EUF-CMA,而我們只關心消息,所以我們不關心對手是否可以對已經查詢的消息進行偽造。所以,它實現了 EUF-CMA 安全性,但不是 sEUF-CMA,對吧? 3. 我認為教科書 RSA 中的情況也有所不同,它具有同態屬性,所以給定一個有效的 $ (m, \sigma) $ 對,使用同態屬性可以產生一個有效的簽名 $ \sigma’ $ 一條新消息 $ m’ $ ,並且它似乎不滿足任何提供的安全定義,對嗎?
我看到它們的不同之處在於,在 EUF-CMA 實驗中,對手需要為其選擇的消息生成有效簽名,而該消息之前沒有被查詢過(即對手沒有發出的消息)對預言機的查詢)。
而在 sEUF-CMA 實驗中,也會發生類似的事情,儘管現在攻擊者需要確保它沒有使用偽造的(消息、簽名)對查詢預言機。因此,只需簽名也進入 sEUF-CMA 中的等式。
正確的。EUF-CMA 的重點是偽造者根本無法在它沒有發送到預言機的任何消息上找到簽名。使用 sEUF-CMA,偽造者無法找到它沒有從 oracle 獲得的消息/簽名對——甚至找不到它發送給 oracle 的消息的第二個簽名。
- 我不明白的部分是為什麼 sEUF-CMA 實際上構成比正常 EUF-CMA 定義更強大的定義?為什麼包含簽名會使其更強大?
- 您能否為以前在 sEUF-CMA 簽名方案中未見過的消息偽造簽名,或者您能否證明這是不可能的?這意味著 sEUF-CMA 簽名方案是否一定是 EUF-CMA?
- 你能找到滿足 EUF-CMA 但不滿足 sEUF-CMA 的簽名方案嗎?(提示:你已經做到了!)這意味著 EUC-CMA 簽名方案是否一定是 sEUF-CMA?
“強”只是意味著它暗示其他屬性,不一定反過來暗示它。大多數協議不依賴於強大的不可偽造性。雖然比特幣不依賴於強大的不可偽造性,但第一個比特幣交易所 MtGox 做到了;它被利用了,因為 ECDSA不提供強大的不可偽造性,隨後 MtGox 的消亡後來被歸咎於交易延展性,無論是否正確(無付費牆)。
另一個相關屬性是簽名唯一性,即使簽名者也無法為消息提出第二個簽名——為此,您甚至可能想要一個 VRF,一個可驗證的偽隨機函式,它是任何不知道密鑰的人的 PRF並且是任何人的簽名並提供可驗證的唯一性證明。
- 此外,例如在 ECDSA 中,對於消息 $ m $ 和一個有效的簽名 $ \sigma = (r,s) $ , 簽名 $ \sigma’ = (r, -s \bmod N) $ 也是有效的。所以,從某種意義上說,你得到了一個新的簽名 $ \sigma’ $ ,但是,實際上簽名的消息是一樣的 $ m $ .
因此,在我看來,這確實違反了 sEUF-CMA,因為儘管消息相同,但簽名不同,因此對手獲勝。然而,這不能違反 EUF-CMA,而我們只關心消息,所以我們不關心對手是否可以對已經查詢的消息進行偽造。所以,它實現了 EUF-CMA 安全性,但不是 sEUF-CMA,對吧?
正確的。
- 我認為教科書 RSA 中的情況也有所不同,它具有同態屬性,所以給定一個有效的 $ (m, \sigma) $ 對,使用同態屬性可以產生一個有效的簽名 $ \sigma’ $ 一條新消息 $ m’ $ ,並且它似乎不滿足任何提供的安全定義,對嗎?
事實上,教科書 RSA 簽名完全被破壞了。RSA 是創建簽名方案的第一個想法,但它完全不安全;第一個安全簽名方案是Rabin 在 1979 年提出的。
Rabin 的關鍵見解是散列是簽名方案的一個組成部分。一些教科書會混淆地將散列描述為壓縮長消息的事後想法,並談論散列然後簽名,這是一個危險的錯誤想法,可能導致人們犯下破壞安全性的錯誤。
雜湊的計算和花哨的數學**計算可以分開完成,但只有當它們組合成一個驗證方程時 $ \sigma^e \equiv H(m) \pmod n $ 你得到一個安全的簽名方案。