https原理推導

2021-08-25 02:55:47 字數 1734 閱讀 7793

流程如下:

因為http的內容是透明傳輸的,所以被劫持之後通訊內容就全部洩露了。所以,必須要對通訊內容進行加密。目前主流的加密方法分為對稱加密和非對稱加密,https選用的是對稱加密。

問題1:為什麼不選用非對稱加密?

假設選用非對稱加密,那麼客戶端使用公鑰加密通訊內容,然後服務端使用私鑰解密,從客戶端到服務端的鏈路可行。而服務端返回資料使用私鑰加密,然後客戶端使用公鑰解密,這樣就是存在問題的。因為劫持方也可以獲取到服務端的公鑰,所以劫持通訊內容之後也可以解密。若服務端返回資料使用公鑰加密,那客戶端必須要使用私鑰解密。所以客戶端必須要知道服務端的額私鑰。這是很危險的,因為劫持方也可以偽裝成正常使用者訪問服務端拿到私鑰。而且非對稱機密的效能遠小於對稱加密,所以綜合起來選擇對稱加密。

服務端和服務端怎麼確定對稱加密的密碼?可以使用非對稱加密的方法,客戶端使用服務端的公鑰加密對稱加密的密碼然後傳送給服務端,然後服務端使用私鑰解密。

服務端將公鑰傳送給客戶端的過程怎麼防止中間人劫持替換公鑰?https的做法是將公鑰以數字證書的方式傳送給客戶端,且證書中的公鑰被第三方ca機構的私鑰加密過。客戶端在拿到證書之後使用第三方ca機構的公鑰解密即可得到服務端公鑰。這樣如果中間人使用自己偽造的乙個假證書做中間人劫持時,那麼客戶端將無法成功使用ca機構的公鑰解密假證書的公鑰。

若中間人也持有乙個由相同ca機構頒發的數字證書,中間人只需要將數字證書中的被加密的公鑰替換成自己被ca私鑰加密的公鑰,依然可以成功實現中間人劫持,此時客戶端使用ca機構的公鑰可以成功解密出數字證書中的公鑰。所以需要解決同一機構頒發的不同證書被篡改的問題。https使用數字簽名的方法來解決這一問題。數字證書會有乙個數字簽名,而簽名演算法在數字證書中也

會給出。客戶端拿到證書後只需要按照證書中的簽名演算法對證書內容進行簽名就可以得到乙個數字簽名,然後再與證書中的數字簽名進行比對,得知證書是否被篡改過。

上述方法依然不可靠,因為中間人也可以模仿客戶端,在篡改證書的公鑰之後重新生成數字簽名。

https防止中間人模仿簽名的行為,方法是使用ca機構的私鑰對證書的數字簽名進行加密,這樣就算中間人篡改了證書的公鑰,然後重新生成了數字簽名,由於不知道ca機構的私鑰所以無法對數字簽名加密,所以客戶端無法成功解密。這樣就徹底防止了數字證書篡改,就保證了數字證書一定是ca機構頒發的合法且沒有被篡改的證書。

問題2:若中間人擁有乙個同一ca機構頒發的合法證書,劫持之後不篡改證書,而是替換整個證書,這樣在客戶端看來,簽名是有效的,依然會劫持成功,怎麼防止?

因為證書中有**的網域名稱資訊,所以可以通過網域名稱來判斷證書是否被替換,因為如果證書被替換了,那麼證書裡面的網域名稱肯定和你要訪問**的網域名稱不同。

ca機構下發給**的證書都是乙個證書鏈,也就是一層一層的證書,從根證書開始,到下級ca,一層一層,最後一層就是**證書。瀏覽器收到伺服器傳送的證書後,需要驗證其真實性。而證書的簽名是通過簽名演算法和上級ca的私鑰生成的,並非上面說的簡單靠ca機構的私鑰生成。瀏覽器需要用上級ca的公鑰才能解密簽名,並與生成的指紋對比,那麼問題來了,這個上級ca的公鑰從哪來呢?此公鑰來自於證書鏈該層的上級ca的證書明文內,x509v3證書中包含了公鑰資訊。證書鏈由多個證書一層一層組成的,除了最底層的**證書的公鑰是給使用者加密報文外,其他層證書中的公鑰均用於解密底層的證書指紋簽名。最高層的根證書是自簽名的,也就是自己頒發給自己,所以它的公鑰不僅用來解密下層的簽名,也用來給自己的簽名解密。

Bundle Adjustment 原理推導

在解析攝影測量中,將外方位元素 局外點 和模型點座標 局內點 的計算放在乙個整體內進行,此時稱其為光束法。光束法平差是以共線方程式作為數學模型,像點的像平面座標觀測值是未知數的非線性函式,經過線性化後按照最小二乘法原理進行計算。該計算也是在提供乙個近似解的基礎上,逐次迭代來達到趨近於最佳值的。共線方...

Https簡單原理

三 https的工作原理 https在傳輸資料之前需要客戶端 瀏覽器 與服務端 之間進行一次握手,在握手過程中將確立雙方加密傳輸資料的密碼資訊。tls ssl協議不僅僅是一套加密傳輸的協議,更是一件經過藝術家精心設計的藝術品,tls ssl中使用了非對稱加密,對稱加密以及hash演算法。握手過程的簡...

https通訊原理

了解https之前,先了解http 是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模型。是乙個無狀態的協議 http協議通常承載於tcp協議之上,有時也承載於tls或ssl協議層之上,這個時候,就成了我們常說的https。https有兩種基本的加解密演算法型別 1 對稱加密 金鑰只有乙...