1. 程式人生 > >https+非對稱加密+對稱加密

https+非對稱加密+對稱加密

今天系統的看了下https原理,並沒有深入細節,細節有現成的軟體實現,各語言都有各自實現大笑

https=http+ssl,兩種協議的合體,ssl協議升級版為tls,ssl位於http應用層與tcp中間,注意ssl只保證安全(不被破解),並不保證可靠(即訊息是否送達),這一點有tcp保證。

計算機七層網路模型其實就是把複雜的系統設計拆分成一個個小的任務,再加以組裝(模組化設計),好處就是標準化、便於理解,定位問題,以及只提供介面不管實現等。

https採用非對稱加密演算法+對稱加密演算法來保證資料的安全。

非對稱加密演算法涉及到需要向ca認證機構(證書籤發機構,類似官方權威)申請證書。

c代表client(web就是瀏覽器,客戶端就是軟體),s代表server(伺服器),注意:認證是有瀏覽器完成,而不是使用者。

當用戶請求某個網站如:https://www.baidu.com,c傳送請求到s,個人理解,再沒有到達s的http層之前,首先s的ssl層會先發送證書給c,c會根據證書使用認證機構釋出的公鑰解密驗證,證明確實是該網站,則會隨機生成一對對稱祕鑰,並用s的公鑰加密對稱祕鑰,並用對稱祕鑰加密傳送的請求(url引數等資訊),s收到請求後,用私鑰解密對稱祕鑰,並用對稱祕鑰解密c用對稱祕鑰加密的url,然後再用對稱祕鑰對返回給c的資訊進行加密,c用對稱祕鑰進行解密,至此c和s握手完成,以後c和s相互發送訊息就採用c傳送的對稱祕鑰來加密解密,不需要每次都驗證真偽。

上面說的是單向認證,即客戶端認證服務端。雙向認證其實就是c也有一套證書和公鑰祕鑰,c先認s,s再認證c,過程一樣。

證書:是有認證機構頒發的,申請者用認證機構的公鑰加密資訊進行申請,認證機構用私鑰進行解密,證書記錄了s的基本資訊,是誰,時間戳等,並用認證機構的私鑰進行數字簽名(即加密),併發送給申請者,只能用認證機構的公鑰才能解密,過程可能比這個複雜,沒有深入研究,c驗證s也是採用的此原理

https流程基本梳理完畢,只是記錄下,加深記憶。最後附一張泳道圖: