Rsa
我什麼時候需要 DSA 而不是 RSA 進行數字簽名?
數字簽名算法使用發送者的私鑰和接收者的公鑰對散列進行加密。這種多重加密是一個相當昂貴的過程,因為公鑰加密非常耗費資源。
另一方面,基於 RSA 的數字簽名算法僅使用發送者的私鑰對散列進行加密,這是一種便宜得多的操作。
在什麼情況下我需要使用昂貴的 DSA 而不是使用更快的 RSA?
數字簽名算法使用發送者的私鑰和接收者的公鑰對散列進行加密。
嗯?我看到上述陳述有兩個問題;
- “加密”; 使用加密這個詞意味著有一種方法可以解密它。但是,任何人都無法“解密”簽名以生成散列,即使使用私鑰也是如此。
- “使用……接收者的公鑰”;簽名操作肯定會使用簽名者的私鑰,但它不使用來自接收者的任何密鑰(公鑰或私鑰)。
另一方面,基於 RSA 的數字簽名算法僅使用發送者的私鑰對散列進行加密,這是一種便宜得多的操作。
不必要; 如果我們談論的是標準的 DSA 操作,那麼昂貴的操作是生成器對(可能)256 位隨機指數模素數的模冪運算;對於 RSA,昂貴的操作(我假設 CRT)是任意值模素數長度的一半的密鑰大小的兩個模冪。我相信您可以實現 DSA 操作(使用預先計算的表,可能需要 50 次以 2048 位素數為模的乘法)比 RSA 操作(可能需要 2000+ 次以 1024 位素數為模的乘法)快得多
此外,使用 DSA,您可以在了解要簽名的值之前執行此計算;如果你能在你本來空閒的時候做到這一點,你確實可以使簽名操作變得非常便宜。
而且,如果我們談論的是橢圓曲線上的 DSA,即 ECDSA,那麼天平會更加徹底地向 ECDSA 傾斜。
RSA 的亮點在於簽名驗證操作;有,它比(EC)DSA 快得多。
在什麼情況下我需要使用昂貴的 DSA 而不是使用更快的 RSA?
除了您將 DSA 誤認為昂貴而 RSA 便宜之外,實際上,直接 DSA 在實踐中很少使用。ECDSA(和親戚,如 EdDSA)正變得越來越流行,部分原因是它更便宜……