DSA与RSA
在用 ssh-keygen 生成密鑰對時,通常會面臨是使用RSA還是DSA的選擇:RSA or DSA, this is a question! 今天在這里分析一下:
原理與安全性
????RSA 與 DSA 都是非對稱加密算法。其中RSA的安全性是基于極其困難的大整數的分解(兩個素數的乘積);DSA 的安全性是基于整數有限域離散對數難題。基本上可以認為相同密鑰長度的 RSA 算法與 DSA 算法安全性相當。
????有點要注意,RSA 的安全性依賴于大數分解,但是否等同于大數分解一直未能得到理論上的證明,因為沒有證明破解 RSA 就一定需要作大數分解。不過也不必太過擔心,RSA 從誕生以來,經歷了各種攻擊,至今未被完全攻破(依靠暴力破解,小于1024位密鑰長度的 RSA 有被攻破的記錄,但未從算法上被攻破)。
用途:
????DSA 只能用于數字簽名,而無法用于加密(某些擴展可以支持加密);RSA 即可作為數字簽名,也可以作為加密算法。不過作為加密使用的 RSA 有著隨密鑰長度增加,性能急劇下降的問題。
性能:
????相同密鑰長度下,DSA 做簽名時速度更快,但做簽名驗證時速度較慢,一般情況驗證簽名的次數多于簽名的次數。
????相同密鑰長度下,DSA (在擴展支持下)解密密文更快,而加密更慢;RSA 正好反過來,一般來說解密次數多于加密次數。不過由于非對稱加密算法的先天性能問題,兩者都不是加密的好選擇。
業界支持:
????在業界支持方面,RSA 顯然是贏家。RSA 具有更為廣泛的部署與支持。
使用 ssh-keygen 時的選擇:
????上面說了那么多,可以看到RSA 與 DSA 各有優缺點。回到開頭的問題,在使用 ssh-keygen 時,RSA 與 DSA到底選哪個? 比較有意思的是,這個問題最終答案與上面那些優缺點無關。雖然理論上可以生成更長長度的 DSA 密鑰 (NIST FIPS 186-3),但ssh-keygen在生成 DSA 密鑰時,其長度只能為1024位(基于NIST FIPS 186-2);而 ssh-keygen 在 RSA 的密鑰長度上沒有限制。
?????由于小于1024位密鑰長度的 RSA 已經有被攻破的記錄,所以說現在:RSA 2048 位密鑰是更好的選擇。
其它選擇:
????RSA 與 DSA 各有優缺點,那有沒一個更好的選擇呢?答案是肯定的,ECC(Elliptic Curves Cryptography):橢圓曲線算法。
????ECC 與 RSA 相比,有以下的優點:
(1)相同密鑰長度下,安全性能更高,如160位ECC已經與1024位RSA、DSA有相同的安全強度。
(2)計算量小,處理速度快,在私鑰的處理速度上(解密和簽名),ECC遠 比RSA、DSA快得多。
(3)存儲空間占用小 ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多, 所以占用的存儲空間小得多。
(4)帶寬要求低使得ECC具有廣泛得應用前景。
????在 ssh-keygen 中,ECC 算法的相應參數是 “-t ecdsa”。可惜的是由于橢圓曲線算法只有在較新版本的 openssl 與 ssh-keygen 中才被支持,而無法得到普遍使用而去完全替代 RSA/DSA。不過由于橢圓曲線算法的優點,使其取代 RSA/DSA 而成為新一代通用的非對稱加密算法成為可能,至少 SET 協議的制定者們已經把它作為下一代 SET 協議中缺省的公鑰密碼算法了。
?轉載:http://blog.sina.com.cn/s/blog_6f31085901015agu.html
DES(Digital Encryption Standard. Obsolete standard)算法,好在加/解速度快,密鑰量短,采用對稱加密.
RSA(Digital Signature Algorithm. based on discrete logarithms computation)算法,好在網絡容易實現密鑰管理,便進行數字簽名,算法復雜,加/解速度慢,采用非對稱加密
總結
- 上一篇: 全连接神经网络的两大缺陷
- 下一篇: ios执行python脚本_iOS使用p