HTTPS協議

来源:https://www.cnblogs.com/P1Kaj1uu/archive/2022/10/13/16787689.html
-Advertisement-
Play Games

一、HTTPS協議概念 超文本傳輸安全協議(Hypertext Transfer Protocol Secure,簡稱:HTTPS)是一種通過電腦網路進行安全通信的傳輸協議。HTTPS經由HTTP進行通信,利用SSL/TLS來加密數據包。HTTPS的主要目的是提供對網站伺服器的身份認證,保護交換數 ...


一、HTTPS協議概念

  • 超文本傳輸安全協議(Hypertext Transfer Protocol Secure,簡稱:HTTPS)是一種通過電腦網路進行安全通信的傳輸協議。HTTPS經由HTTP進行通信利用SSL/TLS來加密數據包。HTTPS的主要目的是提供對網站伺服器的身份認證,保護交換數據的隱私與完整性。HTTP協議採用明文傳輸信息,存在信息竊聽、信息篡改和信息劫持的風險,而協議TLS/SSL具有身份驗證、信息加密和完整性校驗的功能,可以避免此類問題發生。安全層的主要職責就是對發起的HTTP請求的數據進行加密操作 和 對接收到的HTTP的內容進行解密操作。

二、HTTPS通信(握手)過程

  1. 客戶端向伺服器發起請求,請求中包含使用的協議版本號、生成的一個隨機數、以及客戶端支持的加密方法。
  2. 伺服器端接收到請求後,確認雙方使用的加密方法、並給出伺服器的證書、以及一個伺服器生成的隨機數。
  3. 客戶端確認伺服器證書有效後,生成一個新的隨機數,並使用數字證書中的公鑰,加密這個隨機數,然後發給服 務器。並且還會提供一個前面所有內容的 hash 的值,用來供伺服器檢驗。
  4. 伺服器使用自己的私鑰,來解密客戶端發送過來的隨機數。並提供前面所有內容的 hash 值來供客戶端檢驗。
  5. 客戶端和伺服器端根據約定的加密方法使用前面的三個隨機數,生成對話秘鑰,以後的對話過程都使用這個秘鑰來加密信息。

三、HTTPS的優缺點

  • 優點
    • 使用HTTPS協議可以認證用戶和伺服器,確保數據發送到正確的客戶端和伺服器
    • 使用HTTPS協議可以進行加密傳輸、身份認證,通信更加安全,防止數據在傳輸過程中被竊取、修改,確保數據安全性
    • HTTPS是現行架構下最安全的解決方案,雖然不是絕對的安全,但是大幅增加了中間人攻擊的成本
  • 缺點
    • HTTPS需要做伺服器和客戶端雙方的加密個解密處理,耗費更多伺服器資源,過程複雜
    • HTTPS協議握手階段比較費時,增加頁面的載入時間
    • SSL證書是收費的,功能越強大的證書費用越高
    • HTTPS連接伺服器端資源占用高很多,支持訪客稍多的網站需要投入更大的成本
    • SSL證書需要綁定IP,不能再同一個IP上綁定多個功能變數名稱

四、HTTPS如何保證安全

  • 結合兩種加密⽅式,將對稱加密的密鑰使⽤⾮對稱加密的公鑰進⾏加密,然後發送出去,接收⽅使⽤私鑰進⾏解密得到對稱加密的密鑰,然後雙⽅可以使⽤對稱加密來進⾏溝通。 此時⼜帶來⼀個問題,中間⼈問題:如果此時在客戶端和伺服器之間存在⼀個中間⼈,這個中間⼈只需要把原本雙⽅通信互發的公鑰,換成⾃⼰的公鑰,這樣中間⼈就可以輕鬆解密通信雙⽅所發送的所有數據。 所以這個時候需要⼀個安全的第三⽅頒發證書(CA),證明身份的身份,防⽌被中間⼈攻擊。 證書中包括:簽發者、證書⽤途、使⽤者公鑰、使⽤者私鑰、使⽤者的HASH演算法、證書到期時間等。但是問題來了,如果中間⼈篡改了證書,那麼身份證明是不是就⽆效了?這個證明就⽩買了,這個時候需要⼀個新的技術,數字簽名。 數字簽名就是⽤CA⾃帶的HASH演算法對證書的內容進⾏HASH得到⼀個摘要,再⽤CA的私鑰加密,最終組成數字簽名。當別⼈把他的證書發過來的時候,我再⽤同樣的Hash演算法,再次⽣成消息摘要,然後⽤CA的公鑰對數字簽名解密,得到CA創建的消息摘要,兩者⼀⽐,就知道中間有沒有被⼈篡改了。這個時候就能最⼤程度保證通信的安全了。

  • 對稱加密

    • 即通信的雙⽅都使⽤同⼀個秘鑰進⾏加解密,對稱加密雖然很簡單性能也好,但是⽆法解決⾸次把秘鑰發給對⽅的問題,很容易被⿊客攔截秘鑰。
  • 非對稱加密

    ⾮對稱加密雖然安全性更⾼,但是帶來的問題就是速度很慢,影響性能。

    • 私鑰 + 公鑰= 密鑰對
    • 即⽤私鑰加密的數據,只有對應的公鑰才能解密,⽤公鑰加密的數據,只有對應的私鑰才能解密
    • 因為通信雙⽅的⼿⾥都有⼀套⾃⼰的密鑰對,通信之前雙⽅會先把⾃⼰的公鑰都先發給對⽅
    • 然後對⽅再拿著這個公鑰來加密數據響應給對⽅,等到到了對⽅那⾥,對⽅再⽤⾃⼰的私鑰進⾏解密

五、TLS/SSL的工作原理

  • TLS/SSL概述

    • 即安全傳輸層協議

    • TLS/SSL的工作方式就是客戶端使用非對稱加密與伺服器進行通信,實現身份的驗證並協商對稱加密使用的秘鑰。對稱加密演算法採用協商秘鑰對信息以及信息摘要進行加密通信,不同節點之間採用的對稱秘鑰不同,從而保證信息只能通信雙方獲取。

    • TLS/SSL全稱安全傳輸層協議(Transport Layer Security), 是介於TCP和HTTP之間的一層安全協議,不影響原有的TCP協議和HTTP協議,所以使用HTTPS基本上不需要對HTTP頁面進行太多的改造。TLS/SSL的功能實現主要依賴三類基本演算法。

  • TLS/SSL功能實現

    • 散列函數hash:基於散列函數驗證信息的完整性
    • 對稱加密:對稱加密演算法採用協商的秘鑰對數據加密
    • 非對稱加密:非對稱加密實現身份認證和秘鑰協商

六、數字證書

  • 數字證書產生的原因
    • 現在的方法也不一定是安全的,因為沒有辦法確定得到的公鑰就一定是安全的公鑰。可能存在一個中間人,截取了對方發給我們的公鑰,然後將他自己的公鑰發送給我們,當我們使用他的公鑰加密後發送的信息,就可以被他用自己的私鑰解密。然後他偽裝成我們以同樣的方法向對方發送信息,這樣我們的信息就被竊取了,然而自己還不知道。為瞭解決這樣的問題,可以使用數字證書。
  • 數字證書概念及工作原理
    • 首先使用一種 Hash 演算法來對公鑰和其他信息進行加密,生成一個信息摘要,然後讓有公信力的認證中心(簡稱 CA )用它的私鑰對消息摘要加密,形成簽名。最後將原始的信息和簽名合在一起,稱為數字證書。當接收方收到數字證書的時候,先根據原始信息使用同樣的 Hash 演算法生成一個摘要,然後使用公證加工的公鑰來對數字證書中的摘要進行解密,最後將解密的摘要和生成的摘要進行對比,就能發現得到的信息是否被更改了。這個方法最要的是認證中心的可靠性,一般瀏覽器里會內置一些頂層的認證中心的證書,相當於我們自動信任了他們,只有這樣才能保證數據的安全。要進行對比,就能發現得到的信息是否被更改了。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文介紹瞭如何從Mac OS X Catalina將IPA文件上傳到App Store的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下麵隨著小編來一起學習吧! 問題描述 我剛剛在Apple Developer門戶中創建了一個應用程式,現在我想將從Phonegap創建的IPA文件上傳到Ap ...
  • 在上一篇文章Flutter(六):Flutter_Boost接入現有原生工程(iOS+Android)中介紹了Flutter_Boost的接入方法,這一篇將介紹Flutter自帶的接入方法。 新建工程 1.新建工程 1.使用Xcode新建flutter_demo_ios(模擬已有工程) 2.使用An ...
  • vue實現功能 單選 取消單選 全選 取消全選 代碼部分 <template> <div class=""> <h1>全選框</h1> <center> <button @click="checkAnti">反選</button> <table border="1px"> <tr> <!-- 全選框 ...
  • 本人水平有限,如有疏漏或者不正確部分,請大佬指正。 一.Vuex概述 1.1組件之間共用數據的方式 父向子傳值:v-bind 屬性綁定子向父傳值:v-on 事件綁定兄弟組件之間共用數據:eventBUs* $on 接收數據的那個組件* $emit 發送數據的那個組件 特點:適合小範圍使用 1.2Vu ...
  • mounted() { document.body.onresize = function() { // ctrl+滑鼠中鍵滾輪 禁止伸縮頁面 document.body.style.zoom = 1 / window.devicePixelRatio // document.documentEle ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 最近接了個項目,採用uniapp的nvue開發安卓和ios端+小程式端,第一次開發nvue,對於css佈局這塊,還是踩了很多坑。以及一些uniapp的Api在nvue中也無法使用。文章中也收錄了一些我在項目中使用的一些方法,比如富文本解析 ...
  • :::tip 最近在著手騰訊文檔的輸入體驗優化,在其中有一個不起眼的小需求引起了我的註意,並順便研究了一些事件監聽機制相結合的特點,特此記錄一下填坑過程。 ::: 模擬游標跟隨 大部分的主流輸入法都有這樣一個特性,在輸入中文時,可以通過左右方向鍵控制游標,移動至輸入區中任意兩個字元之間的位置,用戶接 ...
  • qiankun angular12 single-spa-angular子應用的改造 參考資料: https://qiankun.umijs.org/zh/guide/tutorial#angular-%E5%BE%AE%E5%BA%94%E7%94%A8 (乾坤官網); https://jueji ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...