HTTP 和 HTTPS 是老生常談的問題,無論是在校學習還是找作業,老師和面試官幾乎都會問道HTTP 是什么?HTTPS 是什么?他們有什么區別 ?
其實學好 HTTP 和 HTTPS 是很重要的,有利于我們后續的學習和參加作業,相信平時上網的時候也很少有人關注這個問題,只是知道計算機網路里 HTTP 的概念,
其實這一塊的知識延伸很廣,還需要了解加密演算法和 SSL 協議,
未來幾篇文章我們就來聊一聊這幾個問題,相信仔細看完,會有很大識訓,
目錄
一、什么是HTTPS ?
二、為什么要有 HTTPS ?
1. HTTP存在缺點(不安全)
1. 針對明文傳輸攻擊手段
2. 針對未校驗資料完整性的攻擊
2. HTTPS 達到的目標
設計目標主要有三個:
1. 資料保密性:
2. 資料完整性:
3. 身份校驗安全性:
三、作業原理(HTTP加入SSL證書)
1. 握手程序的具體描述如下:
1. 瀏覽器將發送自己的加密規則
2. 網站選擇加密規則,回復證書
3. 瀏覽器獲得網站證書之后瀏覽器的操作:
4. 網站接收瀏覽器發來的資料之后網站要做的操作:
5. 瀏覽器解密HASH進行驗證
6. 注意:
2. HTTPS一般使用的加密與HASH演算法如下:
1. 非對稱加密演算法:RSA,DSA/DSS
2. 對稱加密演算法:AES,RC4,3DES
3. HASH演算法:MD5,SHA1,SHA256
3. 資料包程序
1. 關鍵點:公鑰數字證書(數字證書、CA證書)
2. 公鑰數字證書是怎么生成的 ?
3. 公鑰數字證書包括什么 ?
4. CA資訊包括什么 ?
5. 簽名步驟:
6. 瀏覽器如何驗證資料 ?
7. 誰來驗證CA資訊呢?
8. 公鑰數字證書生成程序圖示:
四、HTTPS 的優缺點
1. 優點
2. 缺點
1. 資源消耗大
2. 并非絕對安全
3. SSL 證書的信用鏈問題
4. 成本增加
五、專欄分享
寫在最后:
一、什么是HTTPS ?
HTTPS 全稱:Hyper Text Transfer Protocol over SecureSocket Layer,即超文本傳輸安全協議,是一種網路安全傳輸協議,由網景公司(Netscape)在1994年首次提出,隨后擴展到互聯網上,常稱為 HTTP over TLS,HTTP over SSL 或 HTTP Secure,
是以安全為目標的 HTTP 通道,在 HTTP 的基礎上通過傳輸加密和身份認證保證了傳輸程序的安全性,
HTTPS占用443埠通訊,在計算機網路上,HTTPS經由超文本傳輸協議(HTTP)進行通信,但利用SSL/TLS來加密資料包,
也就是說:HTTPS 在 HTTP 的基礎下加入SSL ,HTTPS 的安全基礎是 SSL,因此加密的詳細內容就需要 SSL,
HTTPS開發的主要目的,是提供對網路服務器的身份認證,保護交換資料的隱私與完整性,
HTTPS 存在不同于 HTTP 的默認埠及一個加密/身份驗證層(在 HTTP與 TCP 之間),這個系統提供了身份驗證與加密通訊方法,它被廣泛用于萬維網上安全敏感的通訊,例如交易支付等方面,
二、為什么要有 HTTPS ?
1. HTTP存在缺點(不安全)
HTTP 雖然使用極為廣泛,但是卻存在不小的安全缺陷:
資料的明文傳送、訊息完整性檢測的缺乏
而這兩點恰好是網路支付,網路支付等新興應用中安全方面最需要關注的,
1. 針對明文傳輸攻擊手段
關于 HTTP 的明文資料傳輸,攻擊者最常用的攻擊手法就是網路嗅探,試圖從傳輸程序當中分析出敏感的資料,例如管理員對 web 程式后臺的登錄程序等等,
從而獲取網站管理權限,進而滲透到整個服務器的權限,
即使無法獲取到后臺登錄資訊,攻擊者也可以從網路中獲取普通用戶的隱秘資訊,包括手機號碼,身份證號碼,信用卡號等重要資料,導致嚴重的安全事故,
進行網路嗅探攻擊非常簡單,對攻擊者的要求很低,
使用網路發布的任意一款抓包工具, 一個新手就有可能獲取到大型網站的用戶資訊,
2. 針對未校驗資料完整性的攻擊
HTTP在傳輸客戶端請求和服務端回應時,唯一的資料完整性檢驗就是在報文頭部包含了本次傳輸資料的長度,而對內容是否被篡改不作確認,
因此攻擊者可以輕易的發動中間人攻擊,修改客戶端和服務端傳輸的資料,甚至在傳輸資料中插入惡意代碼,導致客戶端被引導至惡意網站被植入木馬,
2. HTTPS 達到的目標
HTTPS 協議是由 HTTP 加上 TLS/SSL 協議構建的可進行加密傳輸、身份認證的網路協議,主要通過數字證書、加密演算法、非對稱密鑰等技術完成互聯網資料傳輸加密,實作互聯網傳輸安全保護,
設計目標主要有三個:
1. 資料保密性:
保證資料內容在傳輸的程序中不會被第三方查看,就像快遞員傳遞包裹一樣,都進行了封裝,別人無法獲知里面裝了什么
,
2. 資料完整性:
及時發現被第三方篡改的傳輸內容,就像快遞員雖然不知道包裹里裝了什么東西,但他有可能中途掉包,資料完整性就是指如果被掉包,我們能輕松發現并拒收,
3. 身份校驗安全性:
保證資料到達用戶期望的目的地,就像我們郵寄包裹時,雖然是一個封裝好的未掉包的包裹,但必須確定這個包裹不會送錯地方,通過身份校驗來確保送對了地方
三、作業原理(HTTP加入SSL證書)
HTTPS在傳輸資料之前需要客戶端(瀏覽器)與服務端(網站)之間進行一次握手,在握手程序中將確立雙方加密傳輸資料的密碼資訊,
TLS/SSL 協議不僅僅是一套加密傳輸的協議,更是一件經過藝術家精心設計的藝術品,TLS / SSL中使用了非對稱加密,對稱加密以及HASH演算法,
1. 握手程序的具體描述如下:
1. 瀏覽器將發送自己的加密規則
瀏覽器將自己支持的一套加密規則發送給網站,
2. 網站選擇加密規則,回復證書
網站從中選出一組加密演算法與HASH演算法,并將自己的身份資訊以證書的形式發回給瀏覽器,證書里面包含了網站地址,加密公鑰,以及證書的頒發機構等資訊,
3. 瀏覽器獲得網站證書之后瀏覽器的操作:
1. ?驗證證書的合法性(頒發證書的機構是否合法,證書中包含的網站地址是否與正在訪問的地址一致等),如果證書受信任,則瀏覽器欄里面會顯示一個小鎖頭,否則會給出證書不受信的提示,
2. 如果證書受信任,或者是用戶接受了不受信的證書,瀏覽器會生成一串亂數的密碼,并用證書中提供的公鑰加密,
3. 使用約定好的HASH演算法計算握手訊息,并使用生成的亂數對訊息進行加密,最后將之前生成的所有資訊發送給網站,
4. 網站接收瀏覽器發來的資料之后網站要做的操作:
1. 使用自己的私鑰將資訊解密取出密碼,使用密碼解密瀏覽器發來的握手訊息,并驗證HASH是否與瀏覽器發來的一致, ?
2. 使用密碼加密一段握手訊息,發送給瀏覽器,
5. 瀏覽器解密HASH進行驗證
瀏覽器解密并計算握手訊息的HASH,如果與服務端發來的HASH一致,此時握手程序結束,之后所有的通信資料將由之前瀏覽器生成的隨機密碼并利用對稱加密演算法進行加密,
6. 注意:
這里瀏覽器與網站互相發送加密的握手訊息并驗證,目的是為了保證雙方都獲得了一致的密碼,并且可以正常的加密解密資料,為后續真正資料的傳輸做一次測驗,
2. HTTPS一般使用的加密與HASH演算法如下:
這里不過過多介紹,想詳細了解的可以看:
虛擬專用網簡介__PowerShell的博客-CSDN博客
虛擬專用網的五種技術里面的加解密技術詳細講解了加密演算法
1. 非對稱加密演算法:RSA,DSA/DSS
2. 對稱加密演算法:AES,RC4,3DES
3. HASH演算法:MD5,SHA1,SHA256
3. 資料包程序
注意:公鑰數字證書 = 數字證書 = CA證書
公鑰數字簽名 = 數字簽名
HTTPS所使用到的數字證書是SSL證書(下一篇文章將詳細介紹數字證書)
數字證書_百度百科 (baidu.com)數字簽名_百度百科 (baidu.com)

1. 關鍵點:公鑰數字證書(數字證書、CA證書)
2. 公鑰數字證書是怎么生成的 ?
站點運維人員生成非對稱密鑰(私鑰公鑰)向CA機構提交資訊,CA機構驗證資訊,生成公鑰數字證書,
3. 公鑰數字證書包括什么 ?
公鑰數字證書包括:公鑰、組織資訊、CA資訊、有效時間、證書序列號、簽名演算法、同時生成一個簽名(數字簽名)
4. CA資訊包括什么 ?
CA資訊:CA機構頒發的,包括CA機構資訊、包括CA機構的公鑰
5. 簽名步驟:
hash(擬用于申請證書所提交的明文資訊)= 資訊摘要
將提交的資訊做一個資訊摘要 防止篡改
CA再使用CA機構的私鑰對資訊摘要進行加密,密文就是數字簽名
數字簽名包含在公鑰數字證書里面
站點運維人員再把它部署在服務器上面
6. 瀏覽器如何驗證資料 ?
瀏覽器驗證資料:這時候的公鑰就不單單是一個公鑰了是一個公鑰數字證書(有很多資訊組成)(CA資訊 公鑰用戶資訊 公鑰 權威機構簽名 有效期)
第五個包 瀏覽器收到公鑰數字證書之后還需要完成一個驗證的操作
服務器拿到了數字證書,就拿到了,公開的資訊
公鑰數字證書里面包括了一個 簽名演算法 就可以利用簽名演算法 對公開資訊進行加密
得到資訊摘要 再通過公鑰數字簽名里面的CA資訊(包含CA機構的公鑰)利用公鑰對數字簽名進行解密 通過瀏覽器自己得到的摘要 和解密得到的摘要進行兌對比
如果兩個資訊摘要是一致的 說明這個證書是正確的沒有被篡改的
7. 誰來驗證CA資訊呢?
由上級權威機構驗證,權威機構由根CA機構驗證
我們再進行CA證書的部署的時候部署的是一個公鑰的證書鏈,不是說只有一個證書(誰給他頒發的,上級是誰頒發的),
但是不會包含根證書,根證書是內置在瀏覽器里面的(或者說內置在作業系統里面的(這個是一定不能有問題的)(由作業系統來保障它的安全))
8. 公鑰數字證書生成程序圖示:

四、HTTPS 的優缺點
1. 優點
1. 使用 HTTPS 協議可認證用戶和服務器,確保資料發送到正確的客戶機和服務器,
2. HTTPS 協議是由 SSL+HTTP 構建的可進行加密傳輸、身份認證的網路協議,要比 HTTP安全,可防止資料在傳輸程序中被竊取、改變,確保資料的完整性
,3. HTTPS 是現行架構下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本,
2. 缺點
1. 資源消耗大
相同網路環境下,HTTPS 協議會使頁面的加載時間延長近 50%,增加 10%到 20%的耗電,此外,HTTPS 協議還會影響快取,增加資料開銷和功耗,
2. 并非絕對安全
HTTPS 協議的安全是有范圍的,在黑客攻擊、拒絕服務攻擊和服務器劫持等方面幾乎起不到什么作用,
3. SSL 證書的信用鏈問題
最關鍵的是,SSL 證書的信用鏈體系并不安全,特別是在某些國家可以控制 CA 根證書的情況下,中間人攻擊一樣可行,
4. 成本增加
部署 HTTPS 后,因為 HTTPS 協議的作業要增加額外的計算資源消耗,
例如: SSL 協議加密演算法和 SSL 互動次數將占用一定的計算資源和服務器成本,在大規模用戶訪問應用的場景下,服務器需要頻繁地做加密和解密操作,幾乎每一個位元組都需要做加解密,這就產生了服務器成本,
隨著云計算技術的發展,資料中心部署的服務器使用成本在規模增加后逐步下降,相對于用戶訪問的安全提升,其投入成本已經下降到可接受程度,
五、專欄分享
每個專欄都在持續更新中~~~
滲透測驗自學篇
網路基礎
web基礎知識點
作業系統篇
python爬蟲
閑聊
面試總結
python
通訊安全
??????靶場
寫在最后:
HTTPS其實是一個很廣的東西,要學明白得花點功夫,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/387852.html
標籤:其他
上一篇:三層架構詳解
