Ed25519

為什麼 ed25519 似乎接受並使用 96 字節/384 位簽名?

  • March 31, 2020

為什麼 ed25519 簽名驗證函式接受 96 字節的簽名?以這段程式碼為例:crypto_sign_ed25519_open()要求籤名至少為64 字節(512 位),但將接受更長的,get_hram()如果存在,則在其散列步驟中的簽名末尾包含額外字節。然而會crypto_sign_ed25519()生成一個 64 字節的簽名。

這是某種遺產嗎?它有任何加密含義嗎?

這可能是您正在使用的特定程式碼段中使用的 API 的產物。這段程式碼遵循NaCl API,它將輸入驗證為簽名和消息 ( sm) 的連接,並將消息複製sm到消息緩衝區m中。NaCl 論文在p 上明確指出。5 及以下 這是一個有意的設計選擇。之所以“在簽名的末尾包含額外的字節”是因為這些看似額外的字節實際上是已簽名的消息。

因此它們實際上不是 96 字節的簽名,而是 64+ $ L $ -字節簽名,其中 $ L $ 是簽名消息的長度(以字節為單位),64 是實際簽名的長度。


請注意,理論上可以通過跳過點壓縮來獲得 96 字節的簽名,如原始Ed25519 論文中所述,p。15,但在您作為範例連結的程式碼中並非如此。

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