Public-Key

如果我有足夠多的私鑰簽名範例,我能辨別出來嗎?

  • July 13, 2022

我知道您無法從公鑰中辨別出私鑰,但是如果您有數千個私鑰簽名範例,並且您知道消息/密碼是什麼?

基本上,你不能在沒有線索的情況下解決難題,但是如果你有線索(來自該私鑰的數千個簽名範例),為什麼不能使用這些線索來找出私鑰呢?

事實上,如果我們可以從簽名和公鑰的例子中找到私鑰,那麼簽名系統是不安全的。

更準確地說:如果“數千個簽名範例”是針對不受攻擊者控制的消息,那麼對於滿足 UF-KMA(已知消息攻擊下的通用偽造)下的安全定義的簽名來說,找到密鑰是不可能的。如果它們用於攻擊者選擇的消息,那就是 UF-CMA(選擇消息攻擊下的通用偽造)。大多數常見的簽名方案(RSASSA-PKCS1-v1_5、RSASSA-PSS、DSA、ECDSA、EdDSA..)在更強大的攻擊模型 EF-CMA(選擇消息攻擊下的存在偽造)下被認為是安全的。有關術語的詳細資訊,請參閱此內容。

是的,令人驚訝的是,在這些條件下存在安全的簽名系統。很難建立一個。該概念的可行性大約在 1976 年才提出(Martin Hellman 的密碼學新方向),並且花了幾年時間才找到像RSALamport 簽名這樣的實用系統(後者只能簽名有限次數)。這一壯舉的實現方式因一個簽名系統而異。


在教科書 RSA 簽名的特定情況下(我在本答案的其餘部分考慮),我們可以給出獲得數千個隨機消息簽名的理由米一世∈[0,ñ) $ m_i\in[0,N) $ 對知道公鑰的人沒有多大幫助(ñ,和) $ (N,e) $ , 如下:

  • 這些簽名是s一世∈[0,ñ) $ s_i\in[0,N) $ 和s一世和反對ñ=米一世 $ {s_i}^e\bmod N=m_i $ .
  • 有一個一對一的映射[0,ñ) $ [0,N) $ 在消息和簽名之間,因此s一世 $ s_i $ 也是隨機的。
  • 無法從一對中看出(米一世,s一世) $ (m_i,s_i) $ 如果它是通過隨機簽名獲得的米一世 $ m_i $ ,或通過計算米一世:=s一世和反對ñ $ m_i:={s_i}^e\bmod N $ 從一個隨機s一世 $ s_i $ .
  • 公鑰(ñ,和) $ (N,e) $ 允許建立無限供應(米一世,s一世) $ (m_i,s_i) $ 以這種方式配對,與通過簽署隨機消息獲得的配對無法區分,計算成本低(對於常見的和 $ e $ ,比為私鑰的合法持有者簽名要少得多)。
  • 因此(米一世,s一世) $ (m_i,s_i) $ 通過簽署隨機消息獲得的幫助不大。

這個論點沒有擴展到非隨機消息的簽名。據我們所知,這仍然無助於獲得工作私鑰或隨機消息的簽名,但可以幫助獲得一些具有某些特徵的消息的簽名。例如給定(ñ,和) $ (N,e) $ 以及大字典中 80% 單詞的教科書 RSA 簽名(ASCII 表示),我們可以找到剩餘單詞之一的簽名是合理的。

出於這個原因,教科書 RSA 簽名在 EF-CMA 下是不安全的,實際的 RSA 簽名對消息進行簽名,這些消息在內部被轉換為適當的隨機類米 $ m $ 通過填充機制。

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