據記載,公元前 400 年,古希臘人發明了置換密碼。1881 年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啓用「恩尼格瑪」密碼機,密碼學在戰爭中起着很是重要的做用。 隨着信息化和數字化社會的發展,人們對信息安全和保密的重要性認識不斷提升,因而在 1997 年,美國國家標準局公佈實施了「美國數據加密標準(DES)」,民間力量開始全面介入密碼學的研究和應用中,採用的加密算法有 DES、RSA、SHA 等。隨着對加密強度需求的不斷提升,近期又出現了 AES、ECC 等。 git
使用密碼學能夠達到如下目的: web
根據密鑰類型不一樣將現代密碼技術分爲兩類:對稱加密算法和非對稱加密算法。對稱鑰匙加密系統是加密和解密均採用同一把祕密鑰匙,並且通訊雙方都必須得到這把鑰匙,並保持鑰匙的祕密。(本文不作贅述) 算法
非對稱密鑰加密系統採用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不一樣的。安全
常見的非對稱加密算法以下: 服務器
在 1976 年,因爲對稱加密算法已經不能知足須要,Diffie 和 Hellman 發表了一篇叫《密碼學新動向》的文章,介紹了公匙加密的概念,由 Rivet、Shamir、Adelman 提出了 RSA 算法。RSA 就是他們三人姓氏開頭字母拼在一塊兒組成的。網絡
隨着分解大整數方法的進步及完善、計算機速度的提升以及計算機網絡的發展,爲了保障數據的安全,RSA 的密鑰須要不斷增長,可是,密鑰長度的增長致使了其加解密的速度大爲下降,硬件實現也變得愈來愈難以忍受,這對使用 RSA 的應用帶來了很重的負擔,所以須要一種新的算法來代替 RSA。
1985 年 N.Koblitz 和 Miller 提出將橢圓曲線用於密碼算法,全稱:Elliptic curve cryptography,縮寫爲 ECC,根據是有限域上的橢圓曲線上的點羣中的離散對數問題 ECDLP。ECDLP 是比因子分解問題更難的問題,它是指數級的難度。 性能
如今 SSL 證書廣泛使用的是 RSA 算法,因爲上述的 RSA 算法存在的缺點,使用 ECC 做爲其公鑰算法的數字證書近幾年的發展也不容小覷:2008 年左右 CA 開始儲備 ECC 根證書,2012 年左右 CA 開始對外公開銷售 ECC 證書,2014 年 ECC 證書在國外被廣泛開始使用,2015 年國內開始接受 ECC 證書。測試
ECC 和 RSA 相比,在許多方面都有對絕對的優點,主要體如今如下方面: 編碼
隨着安全等級的增長,當前加密法的密鑰長度也會成指數增長,而 ECC 密鑰長度 卻只是成線性增長。例如,128 位安全加密須要 3,072 位 RSA 密鑰,卻只須要一 個 256 位 ECC 密鑰。增長到 256 位安全加密須要一個 15,360 位 RSA 密鑰,卻只須要一個 512 位 ECC 密鑰。ECC 具備如此卓越的按位比率加密的性能,預計其特色將成爲安全系統關注的重點。
加密
前面說了那麼多廢話,接下來重頭來了,接下來會着重從性能來測試兩種算法的區別,如下多圖預警:
4.1 服務器性能指標
測試在兩大雲主機上執行。本測試案例中使用了兩個不一樣的身份驗證算法:
咱們看到,ECC-256 層次結構優於 RSA-2048 和 RSA-3072
4.2 響應時間與吞吐量指標之比較
下表中的條目和如下章節詳細說明了咱們爲雲主機運行的測試:測試「0K GET,0% 的重用」使用超大型 ( XLarge ) 服務器在超大型 ( XLarge ) 服桌面客戶端上運行,適用於 Apache 和 IISweb 服務器,會話重用爲 0%,意味着每一個 SSL 握手都是一個完整的握手而不是簡化版握手。同時應注意,0K 文件並不表示空負載,在過程當中仍有 HTTP 擡頭傳輸。
會話重用爲 0%,代表每次握手是完整的握手,涉及所需 CPU 處理,咱們已經發現運行 Apache 的雲主機出現 CPU 飽和受限,RSA-3072 在 500 次請求 / 秒左右; RSA-2048 在 1300 次左右,而 ECC-256 經證明在達 2800 次前呈現出極強的適應性。重要的一點是,ECC-256 可以適應至關高的事務數量。雖然 Apache 和 IIS 背 後的數據點(如在吞吐量和等待時間中的數據點)是徹底不一樣的,但得出的結論是相同的,並且有利於 ECC-256。注意,ECC-256 與 RSA-3072 同等安全,效率可相差甚遠。
在雲主機上託管 web 服務器的緣由是要減小所需客戶端數,以便使服務器可以最大程度地利用 CPU。結果和「0K GET,重用爲 0%」趨勢相同。
會話重用爲 68% 的結果是三分之二的握手被簡化。與以前測試相比,平均響應時間降低,同時吞吐量增長,三者間的飽和缺口縮小。若是重用百分比增長並繪製成圖,咱們即可以看到差距在縮小。
一個有趣的現象是,在 Apache 一例中咱們觀察到 ECC-256 和 RSA-2048 的網絡傳輸開始飽和,但 RSA-3072 卻達到了 CPU 利用極限。而對於 IIS,三者都達到了 CPU 利用極限。
ECC 的這些特色使它必將取代 RSA,成爲通用的公鑰加密算法。好比 SET 協議的制定者已把它做爲下一代 SET 協議中缺省的公鑰密碼算法。
ECC 證書兼容性: