大概思路
大概思路是混合加密的方式,即對稱加密方式混合非對稱加密方式。
非對稱加密會更加安全,功能也更強大,但他複雜而且速度慢。
對稱加密速度快,但要保證這個公共金鑰的正確性和真實性。
所以兩者結合,在確定公共金鑰的時候,採用非對稱加密的方式來傳遞這個公共金鑰,然後後面的交流的資訊都用這個公共金鑰來進行加密。
那又要怎麼確定伺服器的身份呢?如果是乙個假的伺服器,直接給了你乙個假的公鑰,那麼一開始就錯了啊。
這就要用到證書了,證書是這樣的原理的,大概描述下:
1. 伺服器把自己的公鑰登陸到數字證書認證機構。
2. 數字認證機構呢,用自己的私鑰向伺服器的公開密碼署數字簽名並頒發公鑰證書。
3. 要知道,數字認證機構早已經將自己的公鑰植入到瀏覽器裡面了,也就是瀏覽器有著可以解開數字證書的公鑰。
3. 伺服器發證書給客戶端,然後客戶端就可以通過自己內嵌的證書公鑰解開這個證書,確定伺服器的真實性並拿到伺服器公鑰。
三個特性
https是為了解決http的三個缺點:
明文傳輸;
不驗證加密方式;
無法確定報文的準確性。
對此https的三個特點是:
① 保密:在握手協議中定義了會話金鑰後,所有的訊息都被加密。
② 鑑別:可選的客戶端認證,和強制的伺服器端認證。
③ 完整性:傳送的訊息包括訊息完整性檢查(使用mac)。
三個原理
握手協議(handshake protocol)——emm可以理解成一起商量出乙個遲點用來加密資訊的公共金鑰
記錄協議(record protocol)——客戶機和服務機握手後就進入了這個記錄協議,提供兩個功能:
(1)保密性:使用握手協議定義的秘密金鑰實現
(2)完整性:握手協議定義了mac,用於保證訊息完整性
握手協議大致思路:
1.client打招呼,叫做client hello,包含如下內容:
(1)客戶端可以支援的ssl最高版本號
(2)乙個用於生成主秘密的32位元組的隨機數。(等會介紹主秘密是什麼)
(3)乙個確定會話的會話id。
(4)乙個客戶端可以支援的密碼套件列表。
然後sever也乙個server hello來回應:
(1)乙個ssl版本號。取客戶端支援的最高版本號和服務端支援的最高版本號中的較低者。
(2)乙個用於生成主秘密的32位元組的隨機數。(客戶端乙個、服務端乙個)
(3)會話id
(4)從客戶端的密碼套件列表中選擇的乙個密碼套件
(5)從客戶端的壓縮方法的列表中選擇的壓縮方法
注意,這裡已經生成了兩個隨機數了,然後現在client知道了這些資訊:
(1)ssl版本
(2)金鑰交換、資訊驗證和加密演算法
(3)壓縮方法
(4)有關金鑰生成的兩個隨機數。
這裡是第一階段結束
然後server繼續發東西,這裡具體來講就發這些:(注意這裡都指的是server發)
(a)證書:伺服器將數字證書和到根ca整個鏈發給客戶端,使客戶端能用伺服器證書中的伺服器公鑰認證伺服器。
(b)伺服器金鑰交換(可選):這裡視金鑰交換演算法而定
(c)證書請求:服務端可能會要求客戶自身進行驗證。
(d)伺服器握手完成:第二階段的結束,第三階段開始的訊號——server hello done
簡單的情況的話,其實就是上面hello玩後,server給客戶端發了個證書,裡面有伺服器的公鑰,然後客戶端也可以根據這個證書證明伺服器的身份,然後再發給server hello done證明結束這裡的交流。
這是第二階段結束
然後客戶端啟動ssl握手第三階段,下面是客戶端可能發的:
(a)證書(可選):為了對伺服器證明自身,客戶要傳送乙個證書資訊,這是可選的,在iis中可以配置強制客戶端證書認證。
(b)客戶機金鑰交換(pre-master-secret):這裡客戶端將預備主金鑰傳送給服務端,注意這裡會使用服務端的公鑰進行加密。
(c)證書驗證(可選),對預備秘密和隨機數進行簽名,證明擁有(a)證書的公鑰。
簡單的情況,其實就是又有乙個隨機數,叫做pre-master-secret,這個東西會用上面從證書中拿到的伺服器的公鑰來加密後再傳送。
然後第三階段結束,下面是最後乙個階段。
然後握手成功之後,就用一起商量產生的公共金鑰來「聊天」了,而公共金鑰的演算法就不細說了,大概就:
我們不是有三個隨機數嘛,client random,server random還有個pre master secret,用這三個生成出乙個公共金鑰的樣子。
Zookeep簡單記錄下
一 概念 zookeeper 作為乙個分布式的服務框架,主要用來解決分布式集群中應用系統的一致性問題,它能提供基於類似於檔案系統的目錄節點樹方式的資料儲存,zookeeper 作用主要是用來維護和監控儲存的資料的狀態變化,通過監控這些資料狀態的變化,從而達到基於資料的集群管理。zookeeper集群...
HTTPS中SSL協議總結
ssl全稱secure socket layer,安全套接字層。ssl用來保證web瀏覽器與web伺服器交換資訊的安全性,保證傳輸過程中訊息的加密性。雜湊演算法驗證資料完整性 傳送的資料中包含經過雜湊演算法的到的雜湊值。當接收到資料時,可以通過相應的雜湊演算法再次對資料進行計算,將計算得到的雜湊值與...
記錄下git的簡單使用
ssh git 192.168.x.檢視所有工程 git branch a 檢視所有的分支 git branch r 檢視遠端所有分支 git add 新增所有更改過的檔案至index git branch m oldbranchname newbranchname 更改本地分支名稱 git pul...