天天看點

認識HTTPS

1、HTTPS簡述

    HTTPS可以認為是HTTP + SSL/TLS。TLS是傳輸層加密協定,它的前身是SSL。

2、TLS運作原理

    簡單的來說,TLS的運作過程是這樣的:用戶端和伺服器端協商生成一個會話密鑰,然後利用這個會話密鑰對通信的内容進行加密傳輸。

    具體來講,握手過程是這樣的:

    (1) 用戶端向伺服器端發送一個請求,告訴伺服器自己支援的SSL協定版本号、支援的加密算法等等,同時生成一個随機數一同發給伺服器;

    (2) 伺服器收到請求以後,發送一個響應,告訴用戶端選擇的SSL協定版本,确定加密算法,同時伺服器端也産生一個随機數,也發給用戶端,還發給用戶端一個證書(證書裡面包含公鑰);

    (3) 用戶端收到伺服器端的響應之後就知道了SSL協定版本、加密算法等。用戶端還有驗證證書的有效性,如果驗證通過,表示信任該證書,否則浏覽器會予以提示。

    (4) 接着,用戶端生成一個随機數,并用證書中的公鑰對其進行加密,然後發給伺服器,伺服器收到之後用私鑰解密就獲得了這個随機數。

    (5) 伺服器端作出響應,握手結束。

    至此,用戶端和伺服器端經過協商,雙方都知道以下内容:加密算法、三個随機數。

    接下來,雙方根據約定的加密方式一鍵三個随機數各自生成一個密鑰,我們把它叫做“會話密鑰”,以後雙方通信就用這個“會話密鑰”對通信的内容進行加密。

3、補充說明

    HTTPS一般使用的加密與HASH算法如下:

    非對稱加密算法:RSA、DSA/DSS

    對稱加密算法:AES、RC4、3DES

    HASH算法:MD5、SHA1、SHA256

    其中,非對稱加密算法用于在握手過程中對第三次的随機數進行加密;對稱加密算法用于對真正傳輸的資料進行加密;HASH算法用于驗證資料的完整性。

    因為,私鑰在伺服器端,用戶端使用伺服器給它的公鑰對第三次的随機數加密,然後發給伺服器,這個過程是安全的,沒有私鑰的話很難得到這個随機數,無法得到這個随機數也就無法得到會話密鑰。

參考:

<a href="http://www.2cto.com/Article/201407/315433.html" target="_blank">http://www.2cto.com/Article/201407/315433.html</a>

<a href="http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html" target="_blank">http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html</a>

<a href="http://blog.jobbole.com/48369/" target="_blank">http://blog.jobbole.com/48369/</a>

<a href="http://blog.csdn.net/tidus2005/article/details/2599980" target="_blank">http://blog.csdn.net/tidus2005/article/details/2599980</a>

本文轉自   手不要亂摸  51CTO部落格,原文連結:http://blog.51cto.com/5880861/1681621

繼續閱讀