加密類型
首先了解一下兩種加密類型
- 對稱類型 如
AES
DES
- 非對稱加密 如
RSA
對稱加密
對稱加密很好理解初橘,同一個密鑰可以同時用作信息的加密和解密。舉個現(xiàn)實生活中的例子袱吆,甲乙是合作伙伴,商量制作一個箱子将鸵,然后制作兩把相同的鑰匙用來打開箱子误堡,兩把相同的鑰匙即密鑰
非對稱加密
首先,非對稱加密比對稱加密安全性高丢习,但是效率相對低
這里有公鑰和私鑰的概念牵触,公鑰和私鑰是一對,私鑰加密的只有對應(yīng)的公鑰能解咐低,公鑰加密的只有對應(yīng)的私鑰能解
下面以現(xiàn)實中的發(fā)郵件為例:
首先如果使用對稱加密揽思,那么很有可能被第三方劫持到公開的密鑰,從而竊取郵件信息见擦,那么我們看一下非對稱加密的機制:
非對稱加密.png
非對稱加密的兩個要點:
- 公鑰和私鑰加密的只有對應(yīng)的私鑰和公鑰可解
- 私鑰是不會對外公布的钉汗,只有自己知道
基于這兩個要點,所以保證類上述郵件的安全性
SSL
首先看一個公式HTTPS = HTTP + SSL
鲤屡,由此可見损痰,SSL主要的工作是加密
CA證書
在分析加密機制之前,我們首先要知道什么是CA證書
CA 證書其實就是數(shù)字證書酒来,是由 CA 機構(gòu)頒發(fā)的
一般包含以下內(nèi)容:
- 證書的辦法機構(gòu) 版本
- 證書的使用者
- 證書的有效時間
- 證書的公鑰
- 證書數(shù)字簽名的hash值以及簽名的hash算法
加密機制
校驗CA證書
客戶端校驗CA證書的步驟:
- 證書的私鑰進(jìn)行加密得到CA中的Hash值
- 客戶端拿到證書卢未,利用公鑰解析此Hash值得到Hash-a
- 客戶端利用證書內(nèi)的簽名Hash算法進(jìn)行加密得到Hash-b
- 比較Hash-a和Hash-b,如果相等,則證明證書正確辽社,除此之外伟墙,還會校驗 CA 證書的有效時間和域名匹配等,如果其中出錯則無法建立http連接
握手
HTTPS
中的SSL的握手過程:
A(客戶端) B(服務(wù)端)
- A訪問B,A生成一個隨機數(shù)1滴铅,A將隨機數(shù)1以及SSL的版本號和加密算法發(fā)給B
- B確認(rèn)雙方的加密算法戳葵,生成一個隨機數(shù)2,連同CA頒發(fā)的證書一起發(fā)給A
- A拿到B的證書汉匙,校驗有效性拱烁,成功后再次生成一個隨機數(shù)3,利用證書中的公鑰加密盹兢,傳給B
- B拿到加密后的隨機數(shù)3邻梆,利用私鑰解密,得到真正的隨機數(shù)3
- 此時A B 中同時存在隨機數(shù)1 2 3绎秒,雙方利用這三個隨機數(shù)生成一個對話密鑰浦妄,接下來就是利用對話密鑰加解密,此時是對稱加密见芹,一般就是AES加密
- A通知B后面的通訊用對話密鑰進(jìn)行剂娄,并且A的握手結(jié)束
- B通知A后面的通訊用對話密鑰進(jìn)行,并且B的握手結(jié)束
- SSL 的握手部分結(jié)束玄呛,SSL 安全通道的數(shù)據(jù)通訊開始阅懦,A 和 B 開始使用相同的對話密鑰進(jìn)行數(shù)據(jù)通訊
簡化上述的流程:
- A通過CA證書校驗B的正確性
- A B 生成三個隨機數(shù),通過三個隨機數(shù)生成對話密鑰
- A B確認(rèn)對話密鑰徘铝,對話結(jié)束
- 使用同一套對話密鑰進(jìn)行數(shù)據(jù)通訊
小結(jié)
-
https
既利用了非對稱加密的安全性也利用了對稱加密的高效性 - 非對稱加密沒對稱加密高效耳胎,但是比對稱加密安全