主頁 > 軟體設計 > [ 網路協議篇 ] 一篇文章讓你掌握什么是 HTTPS ?

[ 網路協議篇 ] 一篇文章讓你掌握什么是 HTTPS ?

2021-12-21 07:50:33 軟體設計

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

標籤:其他

上一篇:三層架構詳解

下一篇:[藍橋杯][2019年第十屆省賽真題] 糖果 (IDA*解決重復覆寫問題)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more