【計算機網絡】HTTPS——更安全的HTTP通信(個人筆記)

學習日期:2024.6.26

內容摘要:HTTPS存在的意義、特點和工作方式


HTTP的缺點——易竊聽、偽裝、篡改

在Web及網絡基礎中,我們已經知道了網頁是怎么打開的,HTTP確實是一個相當優秀和方便的協議,但HTTP也有很多不足,最嚴重的不足就是——不安全。

因為HTTP屬于TCP/IP協議族,其工作機制決定了在通信時,通信線路上的設備幾乎不可能全部是個人的私有物。因此,通信可能被竊聽、篡改或偽裝。

我們來舉個比較生動的例子,HTTP協議通信就是你坐在教室最左邊,想把紙條傳給你最右邊的好哥們,叫他放學超光速去操場搶個籃板,顯然你要通過一堆同學把你的紙條遞過去。

易竊聽

因為HTTP不具備加密功能,你傳出去的紙條是明文(就是直接寫的),傳輸路上的人可能打開來看你的紙條(雖然一般人不會),這就是傳輸被竊聽了。

當然,你可以通過其他協議或者接層加密你的信息。(用密碼來寫你的小紙條)即使如此,通信也會被窺視到加密的內容,加密只是讓人難以破解加密信息的含義,而不能阻止對方看到這次通信的報文信息本身。

易偽裝

HTTP協議中的請求和響應不會對通信方的身份進行確認,也就會存在“跟我通信的服務器是否就是我申請通信的服務器,返回的響應是否真的返回到實際提出申請的客戶端”這一問題。這就存在被偽裝的隱患。聽起來可能有點繞,還是拿傳紙條舉例子。

因為你們教室很大,你看不到你哥們,所以你也不知道你哥們到底有沒有收到信息。即使你收到了回復,建立了通信,你也不確定回復你的到底是你哥們還是你們女班長,還是隔壁班的那個一米九體育生。

這可能導致以下隱患:

①無法確定請求/響應發送至目標的Web服務器/客戶端是不是我期望的服務器/客戶端,可能是偽裝的服務器/客戶端。

②無法確認通信的對方是否具有訪問權限,因為某些服務器上保存的重要信息,只能開放給有特定權限的客戶端訪問。

③無法判斷請求來自何方,出自誰手。

④即使是無意義請求也會照單全收,海量無意義請求下的Dos攻擊(Denial of service,拒絕服務攻擊),會讓服務器癱瘓。

易篡改

HTTP協議無法證明通信的報文完整性,因此在請求和響應送出后,直到對方收到前這段時間,信息即使被篡改也無法知悉。假如有一個壞同學在你和你哥們通信的路上,他偷偷篡改你們倆的通信內容,你們也不會知道,這種攻擊叫做中間人攻擊。(Man in the middle attack,MITM)


HTTP+加密+認證+完整性保護=HTTPS

為了解決以上這些問題,需要在HTTP中加入加密處理和認證等機制,我們把加入這些之后的HTTP稱為HTTPS(HTTP Secure)。

HTTPS并非是應用層的一種新協議,而是HTTP的套殼,HTTP的通信接口部分由SSL(Secure Socket Layer,安全套接層)和TLS(Transport Layer Security,安全傳輸層協議)代替而已。

通常,HTTP直接和TCP通信,當使用SSL時,則是先和SSL通信,再由SSL和TCP通信。

SSL是獨立于HTTP的協議,應用層的其它協議如SMTP和Telnet等都可以配合使用。

HTTPS的加密

在傳輸如身份信息,銀行卡號等等私密內容時,我們顯然不希望它們泄露,而HTTPS就會對通信進行加密。SSL采取一種被叫做“公開密鑰加密”的加密方式。

加密技術基礎

現代加密技術的加密方法一般是公開的,而密鑰是保密的,通過這種方法來保證加密方法的安全性,加密和解密都會用到密鑰,一旦密鑰被攻擊者獲得,加密就失去了意義。

從共享密鑰加密到公開密鑰加密

加密和解密用同一個密鑰的加密方式稱為共享密鑰加密,也稱對稱密鑰加密,以共享密鑰方式加密時,必須將密鑰也發送給對方。但是這會帶來一個問題——如何保證密鑰能安全送達不被竊聽?再加密一層的話,那密鑰的密鑰被竊聽呢?

為了解決這一問題,我們引入了公開密鑰加密,公開密鑰加密使用一對非對稱的密鑰,即公開密鑰和私有密鑰,簡稱公鑰和私鑰。私鑰必須保密,而公鑰可以公開給任何人,隨意發布,不怕攻擊者竊聽。

公開密鑰于其說是“鑰匙”,不如說像“”,在用公開密鑰加密方式進行加密通信時,發送者首先用對方的公開密鑰進行加密,受信方收到后,再使用自己的私鑰進行解密。

公鑰就是隨意分發出去的鎖,即使有人竊聽,把“鎖”偷去,也打不開包裹,而與你通信的人用你的鎖把信息加密好,你再用自己的私鑰打開,就完成了安全通信。

公開密鑰方式雖然好,但是與共享密鑰加密方式相比更加復雜,處理速度也更加的慢。因此,HTTPS一般是通過二者結合的方式,使用公開密鑰加密方式來交換共享密鑰,再通過共享密鑰來通信,這樣就能實現安全快速的通信。

證明公開密鑰正確性的證書

遺憾的是,公開密鑰加密方式也不是完美無缺的,因為其是公開傳輸的,我們也不知道公開密鑰是否遭到了篡改,無法證明收到的公開密鑰就是接收方的公開密鑰。如果這把“鎖”不是接收方的鎖,而是被攻擊者偷偷篡改成攻擊者的“鎖”了,那我們的加密就形同虛設了。

為了解決這一問題,可以使用CA(Certificate Authority,數字證書認證機構)和其相關機關頒發的公開密鑰證書

數字證書認證機構是服務器端和客戶端都比較信賴的第三方機構。首先,服務器的運營人員會向數字認證機構提出公開密鑰的申請,數字認證機構在仔細判明申請者身份后,會對已申請的公開密鑰做數字簽名,并且將其放入公鑰證書后綁定在一起(公鑰和服務器對應綁定)。

在通信時,服務器端會將這份公鑰證書(又稱數字證書,或直接簡稱證書)發送給客戶端,以公開密鑰加密方式通信,而客戶端則會向CA機構核實,以CA機構的公開密鑰進行通信,確認服務器端發送的密鑰就是服務器之前登記的公開密鑰,一旦核實成功,客戶端就能確定:①認證服務器的CA機構是真實有效的機構 ②服務器的公開密鑰是值得信賴的。

確實有點繞。我還是用鎖舉例來幫助理解:我要確認這把鎖是不是被人替換了,就去找一個靠譜的公司,這個公司把所有靠譜服務器的鎖都在上面登記了。我每次通信的時候就先去公司查一查鎖的目錄,這把鎖是不是對方的那把,如果是就說明沒問題。

但是還有一個問題(真服了),在使用這個方式認證時,客戶端需要和CA機構通信,那么如何保證客戶端和CA機構之間的通信是安全的呢?如果CA機構的公鑰也被篡改了呢?為了解決這個問題,現代的瀏覽器一般會在內部直接植入常用認證機關的公開密鑰。(直接不用通信,一步到位最安全)

其它證書

EV SSL證書(Extended Validation)可以驗證網站背后的公司是否真實存在。

而客戶端也有對應的客戶端證書,可以讓服務器安全驗證客戶端的公開密鑰,但是日常生活中,因為客戶端證書需要單獨付費購買,而且針對客戶端的偽裝確實比較少見,事實上只有少部分高保密要求的服務如網上銀行或者保密單位等才會使用。

不通過權威的第三方機構,也可以有證書,這就是自簽名證書,顯然,因為不通過權威機構,這個服務器證書在網上沒什么大用,瀏覽器在訪問該服務器時,會顯示“無法確認連接安全性”,“該網站的安全證書存在問題”等,來提醒用戶。(總是“堅持訪問”真的有風險!!)


為什么不一直用HTTPS?

通過本章節的學習,我們大概已經能猜到原因了——加密通信實在是太復雜了。HTTPS通信,證書是必須的,而證書需要向CA機構花錢購買,并不便宜,對于很多服務器和個人網站來說非常不劃算。

而且HTTPS的加密解密過程會消耗相當多的資源,導致通信速度變慢的同時服務器負載會變大,尤其是那些訪問量較大的Web網站,加密和解密占用的消耗很大。對于一些沒有那么重要的通信,直接用HTTP是更合理的選擇

你確實可以用密碼寫一張小紙條,再把它放在一個結實盒子里,然后用你哥們的鎖把它扣上(記得確認一下是不是你哥們的鎖),然后把盒子遞過去,等你哥們用他的鑰匙打開,回復你,再用你的鎖扣上,這樣確實很安全。

但你不會,你只會直接在紙條上寫“放學速搶操場籃球架”,然后拜托旁邊的同學遞過去,畢竟,你只是想約哥們打球,你要傳輸的信息并不是你的身份證號和銀行卡密碼。


?內容總結自人民郵電出版社《圖解HTTP》

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37968.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【操作系統期末速成】 EP04 | 學習筆記(基于五道口一只鴨)

文章目錄 一、前言🚀🚀🚀二、正文:??????2.1 考點七:進程通信2.2 考點八:線程的概念2.3 考點九:處理機調度的概念及原則2.4 考點十:調度方式與調度算法 一、前言🚀…

排序(冒泡排序、選擇排序、插入排序、希爾排序)-->深度剖析(一)

歡迎來到我的Blog,點擊關注哦💕 前言 排序是一種基本的數據處理操作,它涉及將一系列項目重新排列,以便按照指定的標準(通常是數值大小)進行排序。在C語言中,排序算法是用來對元素進行排序的一系…

FPGA 690T NVME高速存儲設計

高速存儲設計會有各種需求的考慮,那么對應的方案也不完全相同,這篇文章出一期純FPGA實現的高速存儲方案。用純fpga實現高速存儲板卡有易國產化,功耗低和體積小等特點,缺點就是靈活性不是很強,實現標準ext4和nfs文件系統…

計算機的錯誤計算(十六)

摘要 計算機的錯誤計算(十五)中歷史事件給我們的啟示或警示。 計算機的錯誤計算(十五)介紹了歷史上發生的一些事件。從這些事件我們可以得到一些啟示或警示。 若不是油氣平臺的沉沒,設計者會得出精度低了嗎&#x…

信息盲盒系統設計

信息盲盒系統是一種結合了隨機性和趣味性的信息傳遞和接收方式,類似于實體盲盒的概念,但在數字領域應用。這種系統通常用于增加用戶參與度、提升用戶體驗或作為營銷策略的一部分。設計一個信息盲盒系統需要考慮以下幾個關鍵要素: 1. 定義目標…

數據倉庫建模基礎理論-01-為什么需要數據建模?

一、什么是數據模型? 數據模型是數據庫的基礎結構,用于描述和組織數據的方式。 它不僅是數據庫的底層結構,還是一個概念性工具,幫助理解數據的含義和關系。 數據模型包括數據本身、數據之間的關系、數據的語義(含義和…

C++ | Leetcode C++題解之第206題反轉鏈表

題目: 題解: class Solution { public:ListNode* reverseList(ListNode* head) {if (!head || !head->next) {return head;}ListNode* newHead reverseList(head->next);head->next->next head;head->next nullptr;return newHead;} …

在Ubuntu 16.04上安裝和配置GitLab的方法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 簡介 GitLab CE(Community Edition)是一個開源應用程序,主要用于托管 Git 倉庫,并提供額…

AI在創造還是毀掉音樂之論文

AI在創造還是毀掉音樂? 簡介:最近一個月,輪番上線的音樂大模型,一舉將素人生產音樂的門檻降到了最低,并掀起了音樂圈會不會被AI徹底顛覆的討論。短暫的興奮后,AI產品的版權歸屬于誰,創意產業要…

一秒記單詞:音通義通,一秒牢記

一秒記單詞,從小學到高中,一秒牢記 一、小學生記單詞,快速突破 1.1 好的開始,是成功的一半 sun n.太陽 【通】尚 moon n.月亮 【通】母恩 mother n.母親,媽 【通】媽汁 sea n.海,大海 【通】細 sand …

【MySQL基礎篇】SQL指令:DQL及DCL

1、DQL DQL - 介紹 DQL英文全稱是Data Query Language(數據查詢語言),數據查詢語言,用來查詢數據表中的記錄。(在MySQL中應用是最為廣泛的) 查詢關鍵字:SELECT DQL - 語法 SELECT 字段列表 FROM 表名列表 WHER…

【人工智能學習之圖像操作(六)】

【人工智能學習之圖像操作(六)】 Hough變換直線檢測圓檢測 圖像分割 Hough變換 在圖像處理中,霍夫變換用來檢測任意能夠用數學公式表達的形狀,即使這個形狀被破壞或者有點扭曲 直線檢測 import cv2 import numpy as np image …

利用微信開放標簽<wx-open-launch-weapp>在H5中跳轉微信小程序報錯完美的解決方案

一、報錯&#xff1a; [WXTAG] [JSCORE] The slot <template> or <script type"text/wxtag-template"> of <wx-open-launch-weapp> is missing 二、源碼 官方源代碼如下&#xff0c;<script type"text/wxtag-template"></sc…

美團外賣搜索基于Elasticsearch的優化實踐--圖文解析

美團外賣搜索基于Elasticsearch的優化實踐–圖文解析 前言 美團在外賣搜索業務場景中大規模地使用了 Elasticsearch 作為底層檢索引擎&#xff0c;隨著業務量越來越大&#xff0c;檢索速度變慢了&#xff0c;CPU快累趴了&#xff0c;所以要進行優化。經過檢測&#xff0c;發現…

gcop:簡化 Git 提交流程的高效助手 | 一鍵生成 commit message

&#x1f496; 大家好&#xff0c;我是Zeeland。Tags: 大模型創業、LangChain Top Contributor、算法工程師、Promptulate founder、Python開發者。&#x1f4e3; 個人說明書&#xff1a;Zeeland&#x1f4e3; 個人網站&#xff1a;https://me.zeeland.cn/&#x1f4da; Github…

[SAP ABAP] 數據字典

ABAP數據字典是定義和管理數據庫對象的工具 系統的所有全局數據類型以及數據庫表結構等都需要在數據字典中創建和維護(數據字典中的對象對所有ABAP程序都是全局的) 通過數據字典&#xff0c;我們可以把數據庫對象管理好&#xff0c;后續才能順利的進行功能開發&#xff0c;SA…

華為面試題及答案——大數據

(1)namenode內存滿了,如何進行擴容,調什么參數。 1. 增加 NameNode 的內存 在 hadoop-env.sh 文件中,可以增加 JVM 分配給 NameNode 的內存。通常是在 HADOOP_NAMENODE_OPTS 中增加 -Xmx 參數來增加最大堆內存。 export HADOOP_NAMENODE_OPTS="-Xmx8g -Xms4g ${HA…

集合,Collection接口

可動態保存任意多個對象&#xff0c;使用比較方便 提供了一系列方便操作對象的方法&#xff1a;add&#xff0c;remove&#xff0c;set&#xff0c;get等 使用集合添加刪除新元素&#xff0c;代碼簡潔明了 單列集合 多列集合 Collection接口 常用方法 List list new Arra…

設計模式詳解(一)——策略模式

策略模式&#xff08;Strategy Pattern&#xff09;是一種行為型的設計模式&#xff0c;它允許你定義一系列算法&#xff0c;然后將它們封裝起來&#xff0c;使它們可以相互替換。這樣做的好處是&#xff0c;你可以動態地選擇要使用的算法&#xff0c;而不必在運行時進行檢查或…

多媒體基礎

筆者按&#xff1a; 昨日復習的信息網絡安全約莫是掛了&#xff0c;常言道&#xff1a;知恥而后勇。誠如斯言 于是決心多媒體是不能再掛了&#xff0c;不然直接變成xxx之流&#xff0c;自增笑耳 語雀鏈接&#xff1a;多媒體基礎 一.多媒體計算機概述 媒體&#xff1a;承載信息…