下文主要從加密演算法的特徵、常用加密演算法和加密工具等方面,梳理和比較對稱加密、單向加密和公鑰加密的概念及其之間的聯絡。
對稱加密
採用單鑰密碼的加密方法,同乙個金鑰可以同時用來加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。常用的單向加密演算法:
單向雜湊加密
單向加密又稱為不可逆加密演算法,其金鑰是由加密雜湊函式生成的。單向雜湊函式一般用於產生訊息摘要,金鑰加密等,常見的有:
非對稱加密
非對稱金鑰加密也稱為公鑰加密,由一對公鑰和私鑰組成。公鑰是從私鑰提取出來的。可以用公鑰加密,再用私鑰解密,這種情形一般用於公鑰加密;也可以用私鑰加密,用公鑰解密,常用於數字簽名,因此非對稱加密的主要功能就是加密和數字簽名。
特徵:
注意這裡john使用mary的公鑰進行加密;
注意這裡john使用自己的私鑰進行加密;
公鑰加密演算法很少用來加密資料,速度太慢,通常用來實現身份驗證;事實上,非對稱加密的主要作用也就是身份驗證;
基於非對稱加密的特性,又產生了以下兩個問題。
問題1:如何確認通訊方證書的合法性呢?
借助於第三方機構:ca(certificate authority)。ca為每個使用公開金鑰的使用者簽發乙個含ca簽名的證書,該證書的作用是證明證書中的使用者合法擁有證書中的公開金鑰,ca機構的數字簽名使得攻擊者不能偽造和篡改證書。
ca自身也擁有乙個證書和私鑰。任何人都可以得到ca的證書,並用該證書驗證它所簽發證書有效性。
假設機構a向ca發出乙個證書簽發請求:(證書簽發流程)
有了ca簽發的數字證書,就可以通過ca來確認證書擁有者的身份,也就解決了通訊中身份確認的問題。那身份確認完之後,如何保證資料的機密性呢?
問題2:通過ca實現了身份驗證,那如何保證資料的機密性呢?
保證資料的機密性,無非就是給資料加密,非對稱加密的加密速度慢,不適合對通訊資料進行加密,而在實際通訊過程中,身份確認完畢之後,通常使用對稱加密方式來加密資料。那如何協商對稱加密的秘鑰呢?通常有以下兩種方法。
方法1:秘鑰交換(internet key exchange, ike)演算法
diffie-hellman演算法秘鑰協商流程,假設a/b雙發進行通訊,
④ a/b獲得到資料之後解密得到相同的結果
rsa:由 rsa公司發明,是乙個支援變長金鑰的公共金鑰演算法,需要加密的檔案塊的長度也是可變的;既可以實現加密,又可以實現簽名
dsa(digital signature algorithm):數字簽名演算法,是一種標準的 dss(數字簽名標準);
ecc(elliptic curves cryptography):橢圓曲線密碼編碼;
ecc和ras對比。ecc和rsa相比,在許多方面都有對絕對的優勢,主要體現在以下方面:
① 抗攻擊性強,相同的金鑰長度,其抗攻擊性要強很多倍。
② 計算量小,處理速度快。ecc總的速度比rsa、dsa要快得多。
③ 儲存空間占用小,ecc的金鑰尺寸和系統引數與rsa、dsa相比要小得多,意味著它所佔的存貯空間要小得多。這對於加密演算法在ic卡上的應用具有特別重要的意義。
④ 頻寬要求低,當對長訊息進行加解密時,三類密碼系統有相同的頻寬要求,但應用於短訊息時ecc頻寬要求卻低得多。頻寬要求低使ecc在無線網路領域具有廣泛的應用前景。
public key infrastructure (pki) 總結
加密方法通常需要具備機密性、完整性和身份確認的功能。對稱加密可以保證機密性且加密速度快,但是不能進行身份確認;非對稱加密因其加密速度慢,一般不會用做加密,而是用作為身份驗證。通常,非對稱加密和對稱加密、雜湊函式、秘鑰交換等結合使用,共同完成整個網路加密的過程,如:tls/ssl。
公鑰加密 混合加密(對稱加密與非對稱加密)
根據秘鑰的使用方式,將密碼分為兩種 對稱加密 aes 非對稱加密 rsa 在對稱密碼中,加密 解密時使用的是同乙個金鑰 如下圖所示流程 對稱加密流程 在使用對稱加密時,我們不可避免的會遇到秘鑰的配送問題,假設我們alice要傳送乙個通過秘鑰加密過的訊息給到bob,那麼 只有將金鑰傳送給bob,bob...
對稱加密與公鑰加密(中)
分組密碼 一 分組密碼的模式 分組密碼 是每次只能處理特定長度的一塊資料的一類演算法,這裡的 一塊 就稱為分組。此外,乙個分組的位元數就稱為位元長度 des和3des分組長度都是64位元,aes的分組長度是128位元。流密碼 對資料流進行連續處理的一類密碼演算法。流密碼中一般以1位元,8位元或32位...
公鑰加密和私鑰加密的區別
公鑰加密準確來說就是加密的過程 而私鑰加密準確來說是簽名的過程 沒有搞明白這一點,在平時工作當中雖然用的飛起,和別的公司對接介面的時候,貌似都是用公鑰加密,私鑰解密。卻沒有深入思考這些流程。今天在這裡記錄一下,以後記得把加密和簽名流程分開看待。我們來回顧一下rsa的加密演算法。我們從公鑰加密演算法和...