Signature
為什麼在 Ed22519 密鑰生成中使用 dashing 私鑰以及後來所需的修改?
在帶有 Ed25519 的 EdDSA 中,公鑰計算的算法如下:
h = hash (privateKey) h[0] &= 0xF8 h[31] &= 0x7F h[31] |= 0x40 publicKey = h * B
問題是
- 為什麼在 Ed25519 密鑰生成中需要散列?
- 為什麼需要對 h 位進行操作?
- 清除與第 31 位有什麼關係?
- EdDSA 密鑰生成中的散列
這在論文中被描述為
合法使用者選擇 $ A = [a]B $ , 在哪裡 $ a $ 是一個隨機的秘密;a 的推導 $ H(k) $ 確保足夠的隨機性。
如果不應用散列,則對此類公鑰的簽名進行驗證是沒有問題的。 2. 問題是需要對 h 位執行什麼操作?
這清楚地清除了低位,因此它是 8 的倍數,並且這消除了曲線上的小組,即該資訊雖然很小,但可以在小子組攻擊中洩露。在此答案中查看更多資訊 3. 清除與第 0 位有關,那麼第 31 位呢?
這主要是由於可能的定時攻擊(在此站點中)
堅持建議和標準;見RFC 8709