HTTPS加密原理

2021-09-25 12:49:15 字數 2513 閱讀 3714

http是超文字傳輸協議,是一種客戶端和伺服器端請求和應答的標準,可以使瀏覽器更加高效。

https是以安全為目標的http通道,https是在http基礎上加上ssl層

https協議需要ca證書認證,費用較高

http是超文字傳輸協議,資訊是明文傳輸;https是具有安全性的ssl加密傳輸協議

使用不同的連線方式,埠也不同,一般來說http使用的是80埠,https使用的是443埠

http連線簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http更安全

在描述加密原理之前先了解一下兩種加密型別

加密型別包含對稱加密和非對稱加密。

對稱加密效率高,使用一對共同的金鑰進行加密和解密,但是公鑰無法安全傳輸。aes加密演算法

舉個栗子,學霸小明手裡有一道數學題目的答案:123,他想把答案傳給自己暗戀的小紅。他們在開考前約定了乙個金鑰456,小明就會對答案進行加密:123+456=579,小明將579寫在小紙條上扔給小紅,中途別人撿到小紙條,不知道他們是加密傳輸的,以為正確答案是579。而小紅拿到小紙條後,用金鑰將答案解密579-456=123,所以小紅就得到了正確答案。這就是對稱加密傳輸,加解密效率高,速度快,但是雙方任意一方洩露了金鑰,那麼人和人都知道傳輸內容了。

非對稱加密可以解決上述問題。非對稱加密是有公鑰和私鑰兩把金鑰。私鑰自己藏著,公鑰公開。但是效率較低,需要通過證書和權威機構驗證公鑰的合法性。rsa加密演算法

舉個栗子,經過上次作弊後,小紅發現如果金鑰洩露是一件和可怕的事情,所以她和小明商量了一下決定使用非對稱加密。小紅生成了一對公鑰和私鑰,然後把公鑰公開,小明就拿到了小紅的公鑰,把答案經過公鑰加密後傳輸給小紅,小紅再利用私鑰解密,得到答案結果。如果在這個過程中,其他人得到傳輸內容,他們只有小紅的公鑰,沒有小紅的私鑰,無法進行解密。

先從ca證書說起。ca 證書其實就是數字證書,是由 ca 機構頒發的。至於 ca 機構的權威性,那麼是毋庸置疑的,所有人都是信任它的。ca 證書內一般會包含以下內容:

下面說一下客戶端如何校驗 ca 證書

ca 證書中的 hash 值,其實是用證書的私鑰進行加密後的值(證書的私鑰不在 ca 證書中)。然後客戶端得到證書後,利用證書中的公鑰去解密該 hash 值,得到 hash-a ;然後再利用證書內的簽名 hash 演算法去生成乙個 hash-b 。最後比較 hash-a 和 hash-b 這兩個的值。如果相等,那麼證明了該證書是對的,服務端是可以被信任的;如果不相等,那麼就說明該證書是錯誤的,可能被篡改了,瀏覽器會給出相關提示,無法建立起 https 連線。除此之外,還會校驗 ca 證書的有效時間和網域名稱匹配等。

接下來我們就來詳細講一下 https 中的 ssl 握手建立過程,假設現在有客戶端 a 和伺服器 b :

伺服器 b 知道這些資訊後,然後確認一下雙方的加密演算法,然後服務端也生成乙個隨機數 2 ,並將隨機數2 和 ca 頒發給自己的證書一同返回給客戶端 a 。

客戶端 a 得到 ca 證書後,會去校驗該 ca 證書的有效性,校驗方法在上面已經說過了。校驗通過後,客戶端生成乙個隨機數3 ,然後用證書中的公鑰加密隨機數3 並傳輸給服務端 b 。

服務端 b 得到加密後的隨機數3,然後利用私鑰進行解密,得到真正的隨機數3。

最後,客戶端 a 和服務端 b 都有隨機數1、隨機數2、隨機數3,然後雙方利用這三個隨機數生成乙個對話金鑰。之後傳輸內容就是利用對話金鑰來進行加解密了。這時就是利用了對稱加密,一般用的都是 aes 演算法。

客戶端 a 通知服務端 b ,指明後面的通訊用對話金鑰來完成,同時通知伺服器 b 客戶端 a 的握手過程結束。

服務端 b 通知客戶端 a,指明後面的通訊用對話金鑰來完成,同時通知客戶端 a 伺服器 b 的握手過程結束。

ssl 的握手部分結束,ssl 安全通道的資料通訊開始,客戶端 a 和伺服器 b 開始使用相同的對話金鑰進行資料通訊。

到此,ssl 握手過程就講完了。可能上面的流程太過於複雜,我們簡單地來講:

客戶端和服務端建立 ssl 握手,客戶端通過 ca 證書來確認服務端的身份;

互相傳遞三個隨機數,之後通過這隨機數來生成乙個金鑰;

互相確認金鑰,然後握手結束;

資料通訊開始,都使用同乙個對話金鑰來加解密;

我們可以發現,在 https 加密原理的過程中把對稱加密和非對稱加密都利用了起來。即利用了非對稱加密安全性高的特點,又利用了對稱加密速度快,效率高的好處。真的是設計得非常精妙,令人讚不絕口。

1.使用https協議可認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

2.https協議是由ssl+http協議構建可加密傳輸、身份認證的網路協議,要比http協議安全,可防止資料在傳輸過程中不被竊取、改變,保證資料的完整性

3.https是現行架構中最安全的,並不是絕對安全,但是它大幅度增加了人為攻擊的成本

1.https握手比較費時,會延長頁面載入時間50%,增加10%~20%的耗電

2.https快取不如http高效,會增加資料開銷

3.ssl證書成本隨功能強大而增加

4.ssl證書需要繫結ip,不能在同乙個ip上繫結多個網域名稱,ipv4資源支援不了這種消耗

HTTPS加密原理

字數 2314 閱讀 630 喜歡 90 http https在我們日常開發中是經常會接觸到的。我們也都知道,一般 android 應用開發,在請求 api 網路介面的時候,很多使用的都是 http 協議 使用瀏覽器開啟網頁,也是利用 http 協議。看來 http 真是使用廣泛啊,但是,http ...

https 加密原理

最近因為專案需求,需要將http公升級到https,所以抽空 了下其中的加密原理。為什麼要使用https http 明文傳輸,不夠安全。竊聽風險 黑客可以獲知通訊內容。篡改風險 黑客可以修改通訊內容。冒充風險 黑客可以冒充他人身份參與通訊。為了保障訊息的保密性,後面出現了對稱加密以及非對稱加密 對稱...

https 的加密原理

1.http 協議 hypertext transfer protocol,超文字傳輸協議 是客戶端瀏覽器或其他程式與web伺服器之間的應用層通訊協議 https 協議 hypertext transfer protocol over secure socket layer 可以理解為 http s...