這個 EdDSA 修改安全嗎?
我希望使用簽名集成員資格系統,如果每個簽名者對集合的貢獻都存在,則該系統是有效的。系統應該允許將兩個或多個互斥的簽名集合併為一個新的簽名集,而不需要新的簽名。此外,除非集合只有一個簽名者,否則單獨使用簽名集來發現集合的哪些元素由哪個簽名者簽名應該是難以處理的。下面對系統進行說明:
EdDSA 簽名的形式為: $ S = (r + H(M,R,A)*a) $ $ mod $ $ l $ .
考慮修改後的形式: $ S = (a + H(M, R)*r) $ $ mod $ $ l $ ,我們從散列函式中省略公共簽名密鑰 A 並交換私有簽名密鑰 $ a $ 使用私人會話密鑰 $ r $ .
現在,假設我們有兩個簽名者, $ A_1 $ 和 $ A_2 $ ,簽署了一組三個元素, $ (M_1,R_1) $ , $ (M_2,R_2) $ 和 $ (M_3,R_3) $ . 那麼簽名就是:
$ S_{set} = (a_1 + a_2 + H(M_1,R_1)*r_1 + H(M_2,R_2)*r_2 + H(M_3,R_3)*r_3) $ $ mod $ $ l $
並經過驗證:
$ S_{set}*B = A_1 + A_2 +H(M_1,R_1)*R_1 + H(M_2,R_2)*R_2 + H(M_3,R_3)*R_3) $ $ mod $ $ l $
那麼,這個系統似乎在保持未修改的 EdDSA 算法的安全性的同時實現了既定目標嗎?
在您的簽名中,每個簽名者似乎只添加了他們的秘密 $ a $ 一次。可以讓某人先簽名的攻擊者 $ M_1 $ , 然後 $ M_2 $ 最後兩者都可以找到 $ a = S_1 + S_2 - S_{12} $ $ mod $ $ l $ , 即除了一些秘密之外的所有內容 $ a $ ,其餘的都在輕鬆的蠻力搜尋中。
不確定這是否是您唯一的問題。