Elliptic-Curves

在兩個或多個 EC 簽名算法中使用相同的私鑰是否安全?

  • January 14, 2018

給定兩個(或更多)算法:

  • ed25519

    • 私鑰是 32 字節的隨機 blob
    • 公鑰是 Edwards 25519 曲線上的編碼點。
  • ECDSA 與 secp256k1

    • 私鑰是 32 字節的隨機 blob
    • 公鑰是 secp256k1 曲線上的編碼點。

可以說,我們有一條消息M,我們使用兩種算法對其進行簽名,使用相同的私鑰(公鑰是根據私鑰確定性計算的)。攻擊者能夠看到這兩個簽名,為不同的消息收集此類簽名的歷史記錄,消息是未加密的。

該方案是否存在任何安全隱患?

一般來說,在不同的算法中使用相同的密鑰是不好的做法,並且在不同的曲線上使用相同的私鑰確實有兩個公鑰可以洩露資訊。我不知道怎麼做,但我確信你不能證明從一個到另一個的減少(除非你可以將一組映射到另一組,這是值得懷疑的)。

如上所述,如果您使用相同的曲線,但只是使用不同的算法進行簽名,那麼我相信可以證明安全性(但我不會做所有細節)。這是因為 EdDSA 實際上是 Schnorr 簽名,因此它是密鑰知識的零知識證明,在隨機預言模型中是安全的。因此,可以證明,如果您可以在給定 ECDSA 和 EdDSA 簽名預言機的情況下破壞 ECDSA,那麼您可以僅在給定 ECDSA 簽名預言機的情況下破壞 ECDSA(通過在隨機預言機模型中自己模擬 EdDSA 簽名預言機)。因此,如果 ECDSA 是安全的,那麼對 Schnorr 使用相同的密鑰不會造成任何損害。

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