Rsa

是否有可用於創建簽名的對稱密鑰算法?

  • March 17, 2019

我知道在非對稱密鑰算法中存在 RSA 簽名但是對稱的呢?

簽名的對稱模擬 簽名的對稱模擬被稱為消息驗證碼、MAC 或驗證器。相同的密鑰用於創建和驗證消息上的身份驗證標籤。

因此,與簽名不同,第三方無法有意義地驗證 MAC:如果 Alice 向 Bob 發送帶有 MAC 的消息,Bob 不能使用 MAC 說服 Charlie Alice 發送了消息,因為 Bob 也可以創建 MAC。

典型範例包括 HMAC-SHA256、keyed BLAKE2、KMAC128、AES-GMAC(要求每條消息使用不同的 nonce)和 Poly1305(單獨使用它只能用於每個密鑰的一條消息)。身份驗證器通常與密碼相結合,以製作經過身份驗證的密碼,如 crypto_secretbox_xsalsa20poly1305 或 AES-GCM,同時防止竊聽和偽造。

由雜湊建構的簽名。 您還可以使用抗衝突雜湊函式製作公鑰簽名方案 $ H $ ,如 SHA-256。

在 Lamport 傳統的一次性簽名方案中,你隨機生成一個 512 位字元串的集合 $ x_{0,0}, x_{0,1}, \dots, x_{0,255}; x_{1,0}, x_{1,1}, \dots, x_{1,255} $ , 並發布 $ y_{b,i} = H(x_{b,i}) $ 作為你的公鑰。簽署消息 $ m $ , 讓 $ b_i $ 成為 $ i^{\mathit{th}} $ 一點 $ H(m) $ ; 簽名是 $ x_{b_0,0}, x_{b_1,1}, \dots, x_{b_{255},255} $ ——也就是說,你揭示 $ x_{0,i} $ 如果 $ i^{\mathit{th}} $ 一點 $ H(m) $ 為零,並且 $ x_{1,i} $ 如果 $ i^{\mathit{th}} $ 位是一個。任何人都可以通過檢查是否使用您的公鑰來驗證這一點 $ y_{b_i,i} = H(x_{b_i,i}) $ , 但只有你知道原像 $ x_{b_i,i} $ 提前。

像SPHINCS這樣的現代變體將這個想法擴展到許多消息,並消除了對抗碰撞性的需求 $ H $ 為了走得更快。

這裡沒有對稱密鑰,但有時雜湊被認為屬於對稱密鑰加密,因為,例如,函式 $ k \mapsto \operatorname{AES}_k(0) $ 應該是一個不可逆的雜湊。

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