Hash
使用 ElGamal,同一條消息可以有多少個有效簽名?
我知道 ElGamal 中的消息不是確定性的,因此一條消息可以有多個有效簽名。但是有效訂閱的數量是無限的嗎?
它不是無限的。有兩個因素可以控制潛在的簽名數量。
首先,在使用 ElGamal 簽名時,您實際上需要某種填充方案。因為它是一種離散對數算法,所以密鑰大小至少需要 3072 位才能獲得適當的安全性,除非您使用像 SHAKE256 這樣的 XOF,否則您需要安全地將散列填充到適當的大小。如果您的填充方案是確定性的,例如 PKCS #1 1.5,那麼這不會引入任何其他可能的簽名。但是,如果您使用的是機率簽名方案,那麼簽名方案中使用的鹽會增加額外的可能性。
二、簽約的時候還要挑 $ k $ ,它應該是從隨機挑選的 $ { 2 … p-2 } $ 並且相對於 $ p - 1 $ . 該集合的大小決定了給定消息的有效簽名數量。有幾種不同的安全方法可用於生成 $ p $ ,並且計算該集合大小的難易程度取決於使用哪個。
然而,作為一個實際問題,使用安全的確定性方法進行揀選通常是謹慎的 $ k $ (例如 RFC 6979,它被簡單地擴展到 ElGamal),因為這意味著 CSPRNG 的失敗不會導致私鑰洩露(因為簽名時沒有使用 CSPRNG)。在這種情況下,簽名很可能是確定性的,儘管接收者無法驗證這一點。