轉(zhuǎn)自:http://www.freebuf.com/articles/database/138734.html
一逻淌、背景
據(jù)記載,公元前 400 年喇聊,古希臘人發(fā)明了置換密碼恍风。1881 年世界上的第一個電話保密專利出現(xiàn)。在第二次世界大戰(zhàn)期間誓篱,德國軍方啟用「恩尼格瑪」密碼機,密碼學(xué)在戰(zhàn)爭中起著非常重要的作用凯楔。 隨著信息化和數(shù)字化社會的發(fā)展窜骄,人們對信息安全和保密的重要性認識不斷提高,于是在 1997 年摆屯,美國國家標(biāo)準局公布實施了「美國數(shù)據(jù)加密標(biāo)準(DES)」邻遏,民間力量開始全面介入密碼學(xué)的研究和應(yīng)用中,采用的加密算法有 DES虐骑、RSA准验、SHA 等遵馆。隨著對加密強度需求的不斷提高调缨,近期又出現(xiàn)了 AES幸乒、ECC 等溜畅。
使用密碼學(xué)可以達到以下目的:
保密性:防止用戶的標(biāo)識或數(shù)據(jù)被讀取舒裤。
數(shù)據(jù)完整性:防止數(shù)據(jù)被更改笤成。
身份驗證:確保數(shù)據(jù)發(fā)自特定的一方待德。
二狈惫、加密算法
根據(jù)密鑰類型不同將現(xiàn)代密碼技術(shù)分為兩類:對稱加密算法和非對稱加密算法狭归。對稱鑰匙加密系統(tǒng)是加密和解密均采用同一把秘密鑰匙夭坪,而且通信雙方都必須獲得這把鑰匙,并保持鑰匙的秘密过椎。(本文不做贅述)
非對稱密鑰加密系統(tǒng)采用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的室梅。
常見的非對稱加密算法如下:
RSA:由 RSA 公司發(fā)明,是一個支持變長密鑰的公共密鑰算法疚宇,需要加密的文件塊的長度也是可變的亡鼠;
DSA(Digital Signature Algorithm):數(shù)字簽名算法,是一種標(biāo)準的 DSS(數(shù)字簽名標(biāo)準)灰嫉;
ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學(xué)拆宛。
三、ECC 和 RSA
在 1976 年讼撒,由于對稱加密算法已經(jīng)不能滿足需要浑厚,Diffie 和 Hellman 發(fā)表了一篇叫《密碼學(xué)新動向》的文章股耽,介紹了公匙加密的概念,由 Rivet钳幅、Shamir物蝙、Adelman 提出了 RSA 算法。RSA 就是他們?nèi)诵帐祥_頭字母拼在一起組成的敢艰。
隨著分解大整數(shù)方法的進步及完善诬乞、計算機速度的提高以及計算機網(wǎng)絡(luò)的發(fā)展,為了保障數(shù)據(jù)的安全钠导,RSA 的密鑰需要不斷增加震嫉,但是,密鑰長度的增加導(dǎo)致了其加解密的速度大為降低牡属,硬件實現(xiàn)也變得越來越難以忍受票堵,這對使用 RSA 的應(yīng)用帶來了很重的負擔(dān),因此需要一種新的算法來代替 RSA逮栅。
1985 年 N.Koblitz 和 Miller 提出將橢圓曲線用于密碼算法悴势,全稱:Elliptic curve cryptography,縮寫為 ECC措伐,根據(jù)是有限域上的橢圓曲線上的點群中的離散對數(shù)問題 ECDLP特纤。ECDLP 是比因子分解問題更難的問題,它是指數(shù)級的難度侥加。
現(xiàn)在 SSL 證書普遍使用的是 RSA 算法捧存,由于上述的 RSA 算法存在的缺點,使用 ECC 作為其公鑰算法的數(shù)字證書近幾年的發(fā)展也不容小覷:2008 年左右 CA 開始儲備 ECC 根證書官硝,2012 年左右 CA 開始對外公開銷售 ECC 證書矗蕊,2014 年 ECC 證書在國外被普遍開始使用,2015 年國內(nèi)開始接受 ECC 證書氢架。
ECC 和 RSA 相比傻咖,在許多方面都有對絕對的優(yōu)勢,主要體現(xiàn)在以下方面:
- 抗攻擊性強
- CPU 占用少
- 內(nèi)容使用少
- 網(wǎng)絡(luò)消耗低
- 加密速度快
隨著安全等級的增加岖研,當(dāng)前加密法的密鑰長度也會成指數(shù)增加卿操,而 ECC 密鑰長度 卻只是成線性增加。例如孙援,128 位安全加密需要 3,072 位 RSA 密鑰害淤,卻只需要一 個 256 位 ECC 密鑰。增加到 256 位安全加密需要一個 15,360 位 RSA 密鑰拓售,卻只需要一個 512 位 ECC 密鑰窥摄。ECC 具有如此卓越的按位比率加密的性能,預(yù)計其特點將成為安全系統(tǒng)關(guān)注的重點础淤。
四崭放、測試和分析
前面說了那么多廢話哨苛,接下來重頭來了,接下來會著重從性能來測試兩種算法的區(qū)別币砂,以下多圖預(yù)警:
4.1 服務(wù)器性能指標(biāo)
測試在兩大云主機上執(zhí)行建峭。本測試案例中使用了兩個不同的身份驗證算法:
我們看到,ECC-256 層次結(jié)構(gòu)優(yōu)于 RSA-2048 和 RSA-3072
4.2 響應(yīng)時間與吞吐量指標(biāo)之比較
下表中的條目和以下章節(jié)詳細說明了我們?yōu)樵浦鳈C運行的測試:測試「0K GET决摧,0% 的重用」使用超大型 ( XLarge ) 服務(wù)器在超大型 ( XLarge ) 服桌面客戶端上運行亿蒸,適用于 Apache 和 IISweb 服務(wù)器,會話重用為 0%掌桩,意味著每個 SSL 握手都是一個完整的握手而不是簡化版握手边锁。同時應(yīng)注意,0K 文件并不表示空負載波岛,在過程中仍有 HTTP 抬頭傳輸砚蓬。
測試案例和場景
- 0K GET,重用為 0%
會話重用為 0%盆色,表明每次握手是完整的握手,涉及所需 CPU 處理祟剔,我們已經(jīng)發(fā)現(xiàn)運行 Apache 的云主機出現(xiàn) CPU 飽和受限隔躲,RSA-3072 在 500 次請求 / 秒左右; RSA-2048 在 1300 次左右,而 ECC-256 經(jīng)證實在達 2800 次前呈現(xiàn)出極強的適應(yīng)性物延。重要的一點是宣旱,ECC-256 能夠適應(yīng)相當(dāng)高的事務(wù)數(shù)量。雖然 Apache 和 IIS 背 后的數(shù)據(jù)點(如在吞吐量和等待時間中的數(shù)據(jù)點)是完全不同的叛薯,但得出的結(jié)論是相同的浑吟,而且有利于 ECC-256。注意耗溜,ECC-256 與 RSA-3072 同等安全组力,效率可相差甚遠。
-200K GET抖拴,重用為 0%
在云主機上托管 web 服務(wù)器的原因是要減少所需客戶端數(shù)燎字,以便使服務(wù)器能夠最大程度地利用 CPU。結(jié)果和「0K GET阿宅,重用為 0%」趨勢相同候衍。
200K GET,重用為 68%
會話重用為 68% 的結(jié)果是三分之二的握手被簡化洒放。與之前測試相比蛉鹿,平均響應(yīng)時間下降,同時吞吐量增加往湿,三者間的飽和缺口縮小妖异。如果重用百分比增加并繪制成圖惋戏,我們便可以看到差距在縮小。
- 1200K GET随闺,重用為 0%
一個有趣的現(xiàn)象是日川,在 Apache 一例中我們觀察到 ECC-256 和 RSA-2048 的網(wǎng)絡(luò)傳輸開始飽和,但 RSA-3072 卻達到了 CPU 利用極限矩乐。而對于 IIS龄句,三者都達到了 CPU 利用極限。
五散罕、不久分歇,ECC 將無處不在
ECC 的這些特點使它必將取代 RSA,成為通用的公鑰加密算法欧漱。比如 SET 協(xié)議的制定者已把它作為下一代 SET 協(xié)議中缺省的公鑰密碼算法职抡。
ECC 證書兼容性: