HTTPS握手
作用
- 內(nèi)容加密?建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?#xff1b;
- 身份認證?確認網(wǎng)站的真實性
- 數(shù)據(jù)完整性?防止內(nèi)容被第三方冒充或者篡改
?
https的采用了對稱加密和非對稱加密。握手過程中采用非對稱加密,得到一個對稱加密的秘鑰。數(shù)據(jù)傳輸?shù)倪^程中,采用對稱加密。
采用非對稱加密比較慢,因此只在握手期間采用非對稱加密,保證拿到的對稱加密的秘鑰的安全性,數(shù)據(jù)傳輸期間通過對稱加密來加密,速度更快。
?
握手:
對稱加密秘鑰的生成:
握手期間,client與server兩次往來。會生成三個隨機數(shù),由這三個隨機數(shù)組成對稱加密的秘鑰。
client驗證server可靠性:
瀏覽器第一次收到服務器的ack時,會驗證數(shù)字證書,一直驗證到最頂層的根證書,如果瀏覽器內(nèi)置有,則可信,否則不可信。
?
數(shù)據(jù)傳輸:
http報文的內(nèi)容都會經(jīng)過TLS層進行對稱加密,秘鑰是握手時生成的。發(fā)送使用秘鑰加密,接收時使用秘鑰解密。
?
這里有一個問題,就是利用哪種非對稱加密算法,這可能會影響https握手過程中的交換數(shù)據(jù)。以RSA算法和Diffie-Hellman算法為例,看一下兩種加密方式分別經(jīng)歷了什么。
這個是RSA加密的交互過程。
?
第一個隨機數(shù)由client生成,第二個隨機數(shù)由server生成。
第三個隨機數(shù)由client生成,使用server的公鑰加密,并發(fā)送給server。第三個隨機數(shù)即圖中的Premaster secret。這個過程中,Premaster secret只有client和server知道,不會泄露。
然后client和server根據(jù)三個隨機數(shù)生成一個session key,即接下來數(shù)據(jù)傳輸過程中用到的對稱秘鑰。
?
總結來說就是一共生成三個隨機數(shù),根據(jù)三個隨機數(shù)創(chuàng)建一個對稱加密的秘鑰。前兩個隨機數(shù)可以被抓包拿到,但是第三個隨機數(shù)已經(jīng)使用非對稱加密算法加密過,所以最終生成的秘鑰是保密的。
?
?
現(xiàn)在的問題就是,對稱秘鑰的安全靠第三個隨機數(shù)的不可破解來保證。理論上來說,只要服務器的公鑰足夠長,那么Premaster secret可以保證不被破解。但是為了足夠安全,我們可以考慮把握手階段的算法從默認的RSA算法,改為 Diffie-Hellman算法(簡稱DH算法)。
下面是DH算法握手的過程:
與上面client使用RSA公鑰加密Premaster secret然后傳遞的server不同的是,由server發(fā)送一個server的DH 參數(shù)+private key,client發(fā)送一個client的DH參數(shù),那么client和server都能分別通過兩個DH參數(shù)得到Premaster secret。這樣就提高了Premaster secret的安全性。
?
?
參考文章:
圖解SSL/TLS協(xié)議
HTTPs入門, 圖解SSL從回車到握手
HTTPS科普掃盲帖
詳解https是如何確保安全的?
轉載于:https://www.cnblogs.com/z941030/p/8527001.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: 有意思的前端函数面试题
- 下一篇: elk6.2集群搭建,cerebro集群