Rsa

RSA 盲簽名安全實施

  • October 23, 2021

注意:我不是密碼學家

我想檢查我的 RSA 盲簽名實現是否可以安全地用於生產階段的應用程序,並且我還有一些問題,我將非常感激能得到解答。

在過去的幾天裡,我做了很多研究,得出了這個結論:

簽名簽發階段

  1. 獲取公鑰;指數 $ e $ , 模量 $ n $
  2. 生成一個隨機數 $ r $ 小於且相對於模數 $ n $
  3. 計算私有令牌的雜湊值 $ m $
  4. 計算盲消息 $ M = h(m).(r^emod $ $ n) $
  5. 將盲消息發送到將返迴盲簽名的伺服器 $ S = M^d mod $ $ n $ , 在哪裡 $ d $ 是私人指數
  6. 計算非盲簽名 $ s = S.r^{-1} $

如果我是正確的,這將最終得到一個私人令牌 $ m $ 及其有效簽名 $ s $

問題1:如何乘法 $ h(m) $ 和 $ r^emod $ $ n $ ? 結果不會大於 $ n $ ?

問題 2:我可以只使用任何雜湊算法嗎? $ m $ 像 SHA-256 嗎?

問題3:伺服器在簽名之前不會散列或填充盲消息,這是正確和安全的嗎?

簽名驗證階段

  1. 客戶端發送其私有令牌 $ m $ 及其簽名 $ s $
  2. 伺服器將檢查簽名 $ s^e = h(m) $ $ mod $ $ n $

問題 4:如何實現填充方案以防止簽名因 RSA 的同態屬性而被偽造?

問題 5:這個實現是否容易受到任何攻擊?有什麼改進嗎?

注意:我不是密碼學家

我想檢查我的 RSA 盲簽名實現是否可以安全地用於生產階段的應用程序,並且我還有一些問題,我將非常感激能得到解答。

抱歉,但當我聽到這樣的問題時,聽起來像:

我不是外科醫生,但我想做一些心臟手術。這幾天我做了很多研究,我想在開始之前確保我了解基礎知識……

好吧,我不會那麼糟糕,但聽起來有點相似(如果它真的是用於“生產階段的應用程序”,它可能不會那麼遙遠。至少,如果你的心臟手術弄錯了,你就會知道它沒有工作……

有了這個我的胸膛,這裡有一些答案:

問題1:如何乘法 $ h(m) $ 和 $ r^e \bmod n $ ? 結果不會大於 $ n $ ?

實際上,您將它們乘以模 $ n $ .

問題 2:我可以在 m 上使用任何雜湊算法,例如 SHA-256 嗎?問題 4:如何實現填充方案以防止簽名由於 RSA 的同態屬性而被偽造?

我將這兩個問題放在一起,因為它們的答案相同。什麼 $ h $ 需要的不是直接的 SHA-256,而是執行散列(例如 SHA-256)然後填充結果,可能使用 PKCS 1.5 SSA 或 PSS(取決於驗證者的期望)。

問題3:伺服器在簽名之前不會散列或填充盲消息,這樣是否正確且安全?

在這種情況下,它是正確且安全的——如果伺服器對消息進行散列或填充,它就會把事情搞砸。請記住,您在第 4 步中進行了散列/填充。

另一方面(回到我原來的評論),如果你需要問這些問題,你可能還沒有準備好自己實現……

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