您的位置:首頁>科技>正文

老聽別人說加密演算法,現在給你個機會也瞭解下

一、背景

據記載, 西元前 400 年, 古希臘人發明了置換密碼。 1881 年世界上的第一個電話保密專利出現。 在第二次世界大戰期間, 德國軍方啟用「恩尼格瑪」密碼機, 密碼學在戰爭中起著非常重要的作用。 隨著資訊化和數位化社會的發展, 人們對資訊安全和保密的重要性認識不斷提高, 於是在 1997 年, 美國國家標準局公佈實施了「美國資料加密標準(DES)」, 民間力量開始全面介入密碼學的研究和應用中, 採用的加密演算法有 DES、RSA、SHA 等。 隨著對加密強度需求的不斷提高, 近期又出現了 AES、ECC 等。

使用密碼學可以達到以下目的:

保密性:防止使用者的標識或資料被讀取。

資料完整性:防止資料被更改。

身份驗證:確保資料發自特定的一方。

二、加密演算法

根據金鑰類型不同將現代密碼技術分為兩類:對稱加密演算法和非對稱加密演算法。 對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙, 而且通信雙方都必須獲得這把鑰匙, 並保持鑰匙的秘密。 (本文不做贅述)

非對稱式金鑰密碼編譯系統採用的加密鑰匙(公開金鑰)和解密鑰匙(私密金鑰)是不同的。

常見的非對稱加密演算法如下:

RSA:由 RSA 公司發明, 是一個支持變長金鑰的公共金鑰演算法, 需要加密的檔塊的長度也是可變的;

DSA(Digital Signature Algorithm):數位簽章演算法, 是一種標準的 DSS(數位簽章標準);

ECC(Elliptic Curves Cryptography):橢圓曲線密碼編碼學。

三、ECC 和 RSA

在 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 相比, 在許多方面都有對絕對的優勢, 主要體現在以下方面:

抗攻擊性強

CPU 佔用少

內容使用少

網路消耗低

加密速度快

隨著安全等級的增加, 當前加密法的金鑰長度也會成指數增加, 而 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 抬頭傳輸。

測試案例和場景

0K GET,重用為 0%

會話重用為 0%,表明每次握手是完整的握手,涉及所需 CPU 處理,我們已經發現運行 Apache 的雲主機出現 CPU 飽和受限,RSA-3072 在 500 次請求 / 秒左右; RSA-2048 在 1300 次左右,而 ECC-256 經證實在達 2800 次前呈現出極強的適應性。重要的一點是,ECC-256 能夠適應相當高的事務數量。雖然 Apache 和 IIS 背 後的資料點(如在輸送量和等待時間中的資料點)是完全不同的,但得出的結論是相同的,而且有利於 ECC-256。注意,ECC-256 與 RSA-3072 同等安全,效率可相差甚遠。

200K GET,重用為 0%

在雲主機上託管 web 伺服器的原因是要減少所需用戶端數,以便使伺服器能夠最大程度地利用 CPU。結果和「0K GET,重用為 0%」趨勢相同。

200K GET,重用為 68%

會話重用為 68% 的結果是三分之二的握手被簡化。與之前測試相比,平均回應時間下降,同時輸送量增加,三者間的飽和缺口縮小。如果重用百分比增加並繪製成圖,我們便可以看到差距在縮小。

1200K GET,重用為 0%

一個有趣的現象是,在 Apache 一例中我們觀察到 ECC-256 和 RSA-2048 的網路傳輸開始飽和,但 RSA-3072 卻達到了 CPU 利用極限。而對於 IIS,三者都達到了 CPU 利用極限。

五、不久,ECC 將無處不在

ECC 的這些特點使它必將取代 RSA,成為通用的公開金鑰加密演算法。比如 SET 協議的制定者已把它作為下一代 SET 協議中缺省的公開金鑰密碼演算法。

ECC 證書相容性:

最後,重點來了!!!

傳送門https://portal.qiniu.com/certificate/apply

同時應注意,0K 檔並不表示空負載,在過程中仍有 HTTP 抬頭傳輸。

測試案例和場景

0K GET,重用為 0%

會話重用為 0%,表明每次握手是完整的握手,涉及所需 CPU 處理,我們已經發現運行 Apache 的雲主機出現 CPU 飽和受限,RSA-3072 在 500 次請求 / 秒左右; RSA-2048 在 1300 次左右,而 ECC-256 經證實在達 2800 次前呈現出極強的適應性。重要的一點是,ECC-256 能夠適應相當高的事務數量。雖然 Apache 和 IIS 背 後的資料點(如在輸送量和等待時間中的資料點)是完全不同的,但得出的結論是相同的,而且有利於 ECC-256。注意,ECC-256 與 RSA-3072 同等安全,效率可相差甚遠。

200K GET,重用為 0%

在雲主機上託管 web 伺服器的原因是要減少所需用戶端數,以便使伺服器能夠最大程度地利用 CPU。結果和「0K GET,重用為 0%」趨勢相同。

200K GET,重用為 68%

會話重用為 68% 的結果是三分之二的握手被簡化。與之前測試相比,平均回應時間下降,同時輸送量增加,三者間的飽和缺口縮小。如果重用百分比增加並繪製成圖,我們便可以看到差距在縮小。

1200K GET,重用為 0%

一個有趣的現象是,在 Apache 一例中我們觀察到 ECC-256 和 RSA-2048 的網路傳輸開始飽和,但 RSA-3072 卻達到了 CPU 利用極限。而對於 IIS,三者都達到了 CPU 利用極限。

五、不久,ECC 將無處不在

ECC 的這些特點使它必將取代 RSA,成為通用的公開金鑰加密演算法。比如 SET 協議的制定者已把它作為下一代 SET 協議中缺省的公開金鑰密碼演算法。

ECC 證書相容性:

最後,重點來了!!!

傳送門https://portal.qiniu.com/certificate/apply

Next Article
喜欢就按个赞吧!!!
点击关闭提示