Elliptic-Curves
Curve25519 密鑰對的數字簽名
我有 Wireguard 使用的一對Curve25519密鑰的公鑰/私鑰。
如何使用此密鑰對生成/驗證數字簽名?
最好,我想使用EdDSA/Ed25519,但我很難從 Wireguard 使用的 Curve25519 密鑰中導出 Ed25519 密鑰對。
我認為不可能按照您的要求進行操作,因為生成用於 ECDH 與 Ed25519 的密鑰的方式不同。
考慮一個 Wireguard 密鑰對 (
sk1
,pk1
)。請注意,這sk1
只是 32 個隨機字節,其中設置/清除了適當的位(源),並且pk1
源自sk1
典型的 ECDH 方式(源)。對於 Ed25519 簽名,您需要對 32 個隨機字節進行雜湊處理以產生 64 個字節,其中一半用於派生公鑰,另一半用於創建簽名時使用。
因此,您可以
sk2
從中派生私鑰sk1
並用於sk2
創建 Ed25519 簽名。但是根據評論中的討論,聽起來您想在無法訪問的情況下驗證這些簽名sk1
(大概在 Wireguard 隧道的另一端,只有pk1
)。並且由於您無法從 推導sk1
出來pk1
,因此您無法SHA512(sk1)
從計算pk1
。因此,你不能pk2
從pk1
一個人那裡得到。