Signature

為什麼在 Ed22519 密鑰生成中散列私鑰以及以後需要的修改?

  • October 16, 2022

在帶有 Ed25519 的 EdDSA 中,公鑰計算的算法如下:

h = hash (privateKey)
h[0] &= 0xF8
h[31] &= 0x7F
h[31] |= 0x40
publicKey = h * B

問題是

  1. 為什麼在 Ed25519 密鑰生成中需要散列?
  2. 為什麼需要對 h 位進行操作?
  3. 清除與第 31 位有什麼關係?
  1. EdDSA 密鑰生成中的散列

這在原始論文中被解決為

合法使用者選擇 $ A = [a]B $ , 在哪裡 $ a $ 是一個隨機的秘密;a 的推導 $ H(k) $ 確保足夠的隨機性。

如果不應用散列,則對此類公鑰的簽名進行驗證是沒有問題的。 2. 問題是需要對 h 位執行什麼操作?

這清楚地清除了低位,使其成為 8 的倍數,這消除了曲線上的小組,即該資訊雖然很小,但可能在小子組攻擊中洩漏。在此答案中查看更多資訊 3. 清除與第 0 位有關,那麼第 31 位呢?

這主要是由於可能的定時攻擊(在此站點中)

堅持建議和標準;參見RFC 8709

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