原理
步驟一
- 客戶端
- 行為操作:
- 生成隨機數randoms
- 加密算法清單
- 傳輸:randoms,加密算法清單
- 已有數據:randoms
- 行為操作:
步驟二
- 服務端
-
行為操作:
- 生成隨機數randomc
- 從客戶端提交的加密算法清單選擇加密算法
- 傳輸:randomc,算法股淡,ca證書(公鑰只损,服務器地址壮不,ca頒布機構)
已有數據:randoms蔼夜,randomc判呕,ca的秘鑰
-
步驟三
- 客戶端
- 行為操作:
- ca證書合法性認證:ca證書頒發(fā)尘喝,服務器地址與證書是否一致
- pre-master(c):客戶端生成隨機數
- enc-pre-master:利用ca證書的公鑰加密
- enc-key(c)協(xié)商密鑰:fun(randoms+randomc+pre-master)
- hash值(c):隨機的文本信息通過hash算法進行壓縮加密磁浇,獲得hash值
- 握手消息(c):hash值(c)被enc-key加密獲得握手消息
- 傳輸:enc-premaster(c),握手消息(c)朽褪,hash(c)
- 已有數據:randoms置吓,randomc,公鑰
- 行為操作:
步驟四
- 服務端
- 行為操作:
- pre-master(s):客戶端傳遞的enc-pre-master使用ca證書密鑰解密缔赠,獲得pre-master(s)
- enc-key(s):計算服務端的協(xié)商密鑰func(randoms衍锚,randomc, pre-master(s))
- hash(s):客戶端傳遞的握手信息(c)用enc-key(s)解密嗤堰,獲得hash(s)
- hash值比較:hash(c) == hash(s)
- 握手信息(s):截取一段hash值為hash1(s)戴质,利用enc-key(s)加密計算的握手信息(s)
- 傳遞信息:hash1(s),握手信息(s)
- 已有數據:randoms踢匣,randomc告匠,密鑰,hash(s)符糊,握手信息(c)
- 行為操作:
步驟五
- 客戶端
- 行為操作:
- hash1(c):服務端返回的握手信息(s)使用enc-key(c)解密凫海,獲得hash1(s)
- hash比較:hash1(1) == hash(2),若相等表明握手成功男娄,后面的數據傳輸都使用enc-key來加密數據
- 行為操作:
整理:
客戶端
- 隨機生成:randomc行贪,pre-master,
- 加密:enc-pre-master=fun(pre-master模闲,公鑰)
- 計算enc-key =fun(randomc建瘫,randoms,pre-master)
- 握手信息=fun(hash值尸折,enc-key)
服務端
- 隨機生成:randoms
- 計算pre-master:pre-master = fun(enc-pre-master啰脚,密鑰)
- 計算enc-key = fun(random,randoms,pre-master)
- 握手信息=fun(hash值橄浓,enc-key)
其中pre-master只有一份粒梦,且是對非對稱算法加密后從客戶端傳遞給服務端,然后通過隨機生成的randomc荸实,randoms計算得到enc-key匀们,接著通過enc-key對hash算法處理后的文本進行加密及解密來比較,完成驗證工作准给。
31031f564bf3d4585a26629740fe6524.jpg