原理
步驟一
- 客戶端
- 行為操作:
- 生成隨機(jī)數(shù)randoms
- 加密算法清單
- 傳輸:randoms,加密算法清單
- 已有數(shù)據(jù):randoms
- 行為操作:
步驟二
- 服務(wù)端
-
行為操作:
- 生成隨機(jī)數(shù)randomc
- 從客戶端提交的加密算法清單選擇加密算法
- 傳輸:randomc,算法,ca證書(shū)(公鑰,服務(wù)器地址,ca頒布機(jī)構(gòu))
已有數(shù)據(jù):randoms,randomc,ca的秘鑰
-
步驟三
- 客戶端
- 行為操作:
- ca證書(shū)合法性認(rèn)證:ca證書(shū)頒發(fā),服務(wù)器地址與證書(shū)是否一致
- pre-master(c):客戶端生成隨機(jī)數(shù)
- enc-pre-master:利用ca證書(shū)的公鑰加密
- enc-key(c)協(xié)商密鑰:fun(randoms+randomc+pre-master)
- hash值(c):隨機(jī)的文本信息通過(guò)hash算法進(jìn)行壓縮加密,獲得hash值
- 握手消息(c):hash值(c)被enc-key加密獲得握手消息
- 傳輸:enc-premaster(c),握手消息(c),hash(c)
- 已有數(shù)據(jù):randoms,randomc,公鑰
- 行為操作:
步驟四
- 服務(wù)端
- 行為操作:
- pre-master(s):客戶端傳遞的enc-pre-master使用ca證書(shū)密鑰解密,獲得pre-master(s)
- enc-key(s):計(jì)算服務(wù)端的協(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)加密計(jì)算的握手信息(s)
- 傳遞信息:hash1(s),握手信息(s)
- 已有數(shù)據(jù):randoms,randomc,密鑰,hash(s),握手信息(c)
- 行為操作:
步驟五
- 客戶端
- 行為操作:
- hash1(c):服務(wù)端返回的握手信息(s)使用enc-key(c)解密,獲得hash1(s)
- hash比較:hash1(1) == hash(2),若相等表明握手成功,后面的數(shù)據(jù)傳輸都使用enc-key來(lái)加密數(shù)據(jù)
- 行為操作:
整理:
客戶端
- 隨機(jī)生成:randomc,pre-master,
- 加密:enc-pre-master=fun(pre-master,公鑰)
- 計(jì)算enc-key =fun(randomc,randoms,pre-master)
- 握手信息=fun(hash值,enc-key)
服務(wù)端
- 隨機(jī)生成:randoms
- 計(jì)算pre-master:pre-master = fun(enc-pre-master,密鑰)
- 計(jì)算enc-key = fun(random,randoms,pre-master)
- 握手信息=fun(hash值,enc-key)
其中pre-master只有一份,且是對(duì)非對(duì)稱(chēng)算法加密后從客戶端傳遞給服務(wù)端,然后通過(guò)隨機(jī)生成的randomc,randoms計(jì)算得到enc-key,接著通過(guò)enc-key對(duì)hash算法處理后的文本進(jìn)行加密及解密來(lái)比較,完成驗(yàn)證工作。

31031f564bf3d4585a26629740fe6524.jpg