http和https

  • 爲什麼TCP要三次握手?

問題的本質是,信道是不可靠的,但是我們要建立可靠的連接發送可靠的數據,也就是數據的傳輸需要是可靠的
a ->b ,b->a 如何確保b->a是已經成功的信道呢?
a->b ,b->a,a->b.完成雙方的確認.所以 三次握手是一個理論的最小值

  • 怎麼用CTR實現TLS/SSL呢?

整個過程(實現TLS/SSL通信)中使用了非對稱加密(確保對稱加密的密鑰安全),對稱加密(信息加密)以及HASH算法(驗籤)
參考:https://jingyan.baidu.com/article/a948d6515d3e850a2dcd2ee6.html
HTTPS在傳輸數據之前需要客戶端(瀏覽器)與服務端(網站)之間進行初始化,在初始化過程中將確立雙方加密傳輸數據的密碼信息(瀏覽器先生成然後給網站服務端)。過程的簡單描述如下:

1.瀏覽器將自己支持的一套加密規則發送給網站。

2.網站從中選出一組加密算法與HASH算法,並將自己的身份信息以證書的形式發回給瀏覽器。證書裏面包含了網站地址,加密公鑰,以及證書的頒發機構等信息。

3.獲得網站證書之後瀏覽器要做以下工作:

a) 驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄裏面會顯示一個小鎖頭,否則會給出證書不受信的提示。可以應對更高層次的中間人攻擊,對於路由級別的ARP攻擊無法防禦

b) 如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會生成一串隨機數的密碼,並用證書中提供的公鑰加密。(生成對稱密鑰,用服務端非對稱公鑰加密)

c) 使用約定好的HASH計算握手消息(握手消息用來確保加解密正常工作),並使用生成的隨機數對消息進行加密,最後將之前生成的所有信息發送給網站。(先將信息HASH,再將HASH後的信息用對稱密鑰加密)

4.網站接收瀏覽器發來的數據之後要做以下的操作:

a) 使用自己的私鑰將信息解密取出密碼,使用密碼解密瀏覽器發來的握手消息,並驗證HASH是否與瀏覽器發來的一致。(客戶端操作的反向,進行解密,驗籤)

b) 使用密碼加密一段握手消息,發送給瀏覽器。(和三次握手同理,確保兩端的對稱密鑰是一致的)

5.瀏覽器解密並計算握手消息的HASH,如果與服務端發來的HASH一致,此時握手過程結束,之後所有的通信數據將由之前瀏覽器生成的隨機密碼並利用對稱加密算法進行加密。

這裏瀏覽器與網站互相發送加密的握手消息並驗證,目的是爲了保證雙方都獲得了一致的密碼,並且可以正常的加密解密數據,爲後續真正數據的傳輸做一次測試。(驗籤)

HTTPS一般使用的加密與HASH算法如下:
非對稱加密算法:RSA,DSA/DSS
對稱加密算法:AES,RC4,3DES
HASH算法:MD5,SHA1,SHA256

其中非對稱加密算法用於在握手過程中加密生成的密碼,對稱加密算法用於對真正傳輸的數據進行加密,而HASH算法用於驗證數據的完整性。
由於瀏覽器生成的密碼是整個數據加密的關鍵,因此在傳輸的時候使用了非對稱加密算法對其加密。我還在想不然的話客戶端的crt怎麼辦?這個時候對於普通用戶的客戶端來說不存在公私鑰

TLS握手過程中如果有任何錯誤,都會使加密連接斷開,從而阻止了隱私信息的傳輸。

  • SSL是如何防範中間人攻擊的呢?

mim 就是man in the middle,中間人攻擊

CA(Certificate Authorrity)這一環必不可少,在通信的過程中綠色的鎖頭,代表這是認證過的.當發生中間人攻擊時,客戶端發消息時,中間人的crt一般都是沒有經過權威CA認證的所以,沒有鎖頭,甚至綠色文字提示(對於路由級別的ARP攻擊無法防禦)

如有不同意見和建議歡迎留言或者私信

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章