在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

探討HTTP為什么要升級 HTTPS協議

454398 ? 來源:博客園 ? 作者:北國丶風光 ? 2020-10-22 15:31 ? 次閱讀

之前說了 HTTP 協議的各種問題,但是它還是陪伴著互聯網、陪伴著我們走過了將近二十年的風風雨雨。現在有很多新的協議嘗試去取代它,來解決性能、效率等問題,但它還還能靠著“多年的情分”活的滋潤。然而,近些年,因為致命的安全問題,它不得不升級成 HTTPS 了。

就拿我們叫外賣來說,我們點外賣的數據包被黑客截獲,然后在服務器回復你之前給你回復一個假消息:“好啊,你該付款了,把銀行卡號、密碼拿來。”,這時如果你真的把卡號和密碼發給他,那你的錢包就真的危險了。

為了解決這些問題,我們給 HTTP 引入了加密,變成了 HTTPS。大家千萬不要以為 HTTPS 是個新的協議,它實際上就是:

HTTPS = HTTP + SSL 層

這里的 SSL 層的主要工作就是加密。加密方式一般分為兩種:對稱加密和非對稱加密。

這兩種加密算法,對稱加密要比非對稱加密的效率要高很多,性能也好很多,所以交互的場景下多用對稱加密。

對稱加密

在對稱加密算法中,加密和解密的密鑰是相同的。也就是說,加密和解密使用的是同一個密鑰。因此,使用者一定要做好保密功能,不能讓第三方知道。

假設叫外賣的你和第三方約定了一個密鑰 A,你發送請求的時候用 A 進行加密,外賣網站也用 A 進行解密,這樣就算黑客截獲了你們的請求,但是沒有正確的密鑰,還是破解不了。

看起來很好的解決了黑客的問題。但是這里又引入了一個問題,你和外賣網站怎么來約定這個密鑰呢?如果這個密鑰在互聯網上傳輸,就必須還得用 B 密鑰來加密,否則被黑客獲取到 A,你們的交互還是不安全,而且,你們又怎么約定 B 呢?所以,只能通過線下傳輸。

線下傳輸的話,看過《肖申克的救贖》的博友應該知道,安迪越獄前給瑞德約定了一個地點,讓他去那里拿一個信封,里面寫著他的住處。

那我們和外賣網站也可以用這樣的騷操作,偷偷約定時間地點,它給你一個紙條,上面寫著你們兩個的密鑰,然后就用這個密鑰在互聯網定外賣。

打住打住,上面這個操作想想都不可思議,如果最初的互聯網是這樣發展的話,那相信肯定活不久。

相信你也發現了,只有對稱加密,就會陷入密鑰安全問題的死循環里,這時候,就需要非對稱加密了。

非對稱加密

在非對稱加密中 ,加密和解密過程中使用兩個不相同的密鑰。一個是公開的公鑰,另一個是誰都不給的私鑰。公鑰加密的信息,只有私鑰才能解密,而私鑰加密的信息,也只有公鑰才能解密。

放到外面上面的叫外賣過程中,非對稱加密的私鑰由外賣網站保存,不會再網上傳輸,這樣就保證了私鑰的私密性。與之對應的公鑰是可以在互聯網上隨意傳播的,只要外賣網站把這個公鑰給你,你們就可以安全的互通了。

還是來看我們點外賣的過程。我們用公鑰加密,說“我要豆漿加油條”。黑客在中間截獲了這個數據包,但是他沒有私鑰,沒法解密數據,因此可以順利到達外賣網站。而外賣網站用私鑰把這個報文解出來,然后回復,“我知道了,你付款吧,給我卡號和密碼”。

整個過程好像很安全,再也不怕黑客了。但是,先別太樂觀,你的銀行卡是安全了,但是外賣網站可還是有危險的。黑客有外賣網站的公鑰,可以模擬發送“我要定外賣”這個信息。

為了解決這個問題,看來一對公鑰私鑰是不夠的,客戶端也需要有自己的公鑰和私鑰,并且客戶端也要把自己的公鑰給外賣網站。

這樣,客戶端給外賣網站發送信息的時候,用外賣網站的公鑰加密,而外賣網站給客戶端發送消息的時候,使用客戶端的公鑰。這樣就算有黑客企圖模擬客戶端獲取一些信息,或者半路截獲回復信息,但是由于它沒有私鑰,這些信息它還是打不開。

說了那么多,相信你也發現了,非對稱加密也會有同樣的問題,如何將不對稱加密的公鑰給對方?這時有兩種可行方式,一種是放在一個公網的地址上,讓對方下載,另一種就是在建立連接的時候傳給對方。

這兩種方法也有相同的問題。作為普通網民,你怎么鑒別別人給你的公鑰是對方的,而不是被黑客冒充的?要知道,每個人都是可以創建自己的公鑰和私鑰的,創建過程如下:

# bash

// 創建私鑰:

openssl genrsa -out httpsprivate.key 1024

// 根據私鑰獲取公鑰

openssl rsa -in httpsprivate.key -pubout -out httpspublic.pem

HTTPS 證書

可以看到,通過工具,我們可以很容易的創建公鑰和私鑰,那么黑客也是可以創建的,咱們怎么知道外賣網站傳過來的公鑰是不是真的就是外賣網站的呢?這時候,就需要第三方機構來當這個中間人了。

這就像我們的戶口本一樣,每個人都可以打印出來,說是真的戶口本,但是去使用的時候,人家就只認有公安局蓋章的戶口本。這個由權威部門頒發的稱為**證書(Certificate)。

HTTPS 證書里面應該有以下內容:

公鑰:這是最重要的;

所有者:說明證書是屬于誰的,就像戶口本上的姓名和身份證號,來證明這個戶口本是你的;

證書發布機構:看看你的戶口本上有沒有某某公安局的字樣?

證書有效時間:這個和咱們身份證有效期是一個意思。

說完了證書的內容,就到了下一步,怎么獲取證書?這就像家里添了個小公舉,去哪里上戶口呢?恐怕大家都知道去公安局。與之對應的,HTTPS 也有專門負責派發證書的機構,這個機構我們稱為 CA(Certificate Authrity)。而證書則可以通過下面這個命令生成:

openssl req -key httpsprivate.key -new -out httpscertificate.req

將這個請求發給 CA,CA 會給這個證書“蓋”一個章,我們稱為簽名算法。這個簽名用到 CA 的私鑰進行簽發,來保證簽名不被偽造。

簽名算法大概是這樣工作的:一般是對信息做一個 Hash 計算,得到一個 Hash 值,這個過程是不可逆的,也就是說無法通過 Hash 值還原回原來的信息內容。再把信息發出時,把上面得到的 Hash 加密后,作為一個簽名和信息一起發出去。CA 給整數簽名的命令是:

openssl x509 -req -in httpscertificate.req -CA cacertificate-pem -CAkey caprivate.key

這個命令會返回 Signature ok,而 httpscertificate.pem 就是簽名過的整數。CA 用自己的私鑰給外賣網站的公鑰簽名,這就相當于給外賣網站背書,形成了外賣網站的證書。我們可以通過下面這個命令查看證書內容:

openssl x509 -in httpscertificate.pem -noout -text

證書會顯示以下內容:

lssuer:證書頒發者;

Subject:證書頒發給誰;

Validity:證書期限;

Public-key:公鑰內容;

Sinature Algorithm:簽名算法

通過這種方式,我們訪問外賣網站時,得到的不再是一個公鑰,而是一個整數。這個證書里有發布機構 CA,你只要通過這個 CA 的公鑰去解密外賣網站證書的簽名,解密成功,Hash 對的上,就說明外賣網站的公鑰是真實可信的。

上述整個過程中,都有一個前提,CA 是可信的。但是,我們又怎么確定 CA 的公鑰就是對的呢?這就像有的人在偏遠農村搞了個假公安局一樣(應該沒人這么干吧),我們怎么知道公安局是不是假的呢?然后我們就會想到,我去縣公安局確認下當地公安局的信息不就好了。沒錯,CA 也是這么干的。

CA 的公鑰也需要更牛的 CA 給它簽名,然后形成 CA 的公鑰。要想知道某個 CA 的證書是否可靠,要看 CA 的上級證書的公鑰能不能解開這個 CA 的簽名。這樣追根溯源,直到全球皆知的幾大著名 CA,我們稱為Root CA,做最后的背書。正是通過這種層層授信背書的形式,保證了非對稱加密模式的爭吵運轉。

除此之外,還有一種證書, 稱為Self-Signed Certificate,就是自己給自己簽名。這個就給人一種“我就是我,不一樣的煙火,你愛信不信”的感覺,有興趣的博友可以自行搜索了解。

HTTPS 的工作模式

上面說了對稱加密和非對稱加密的原理,我們知道了非對稱加密在性能上遠不如對稱加密,那在 HTTP 中,能否將兩者結合起來呢?例如,公鑰私鑰主要用于傳輸對稱加密的密鑰,而真正的雙方大數據量的通信都是通過對稱加密進行。

是的,HTTPS 協議的思路就是這樣的。如下圖:

圖比較長,整個過程最后的目標是生成在后續通信過程中使用的對稱密鑰,以及約定使用的加密算法。整體過程如下:

客戶端明文發送 TLS 版本信息、加密套件候選列表、壓縮算法候選列表等信息,另外還會發送一個隨機數,在協商對稱密鑰的時候使用(你好,我想定外賣,但你要保密我點了什么。這是我的加密套路列表,還有一個隨機數 A,你留著);

服務器返回 Server Hello 消息,告訴客戶端,服務器選擇使用的協議版本、加密套件、壓縮算法等,還有一個隨機數 B,用于后續進行密鑰協商(你好,保密沒問題,就按套路 2 來吧,我也給你一個隨機數 B,你留著);

服務器給客戶端證書;

客戶端從自己信任的 CA 倉庫中,拿 CA 的證書里面的公鑰去解密服務器傳來的證書。解密成功,說明外賣網站是可信的。這個解密過程,客戶端可能胡不斷往上追溯 CA、CA 的 CA、CA 的 CA 的 CA,直到一個授信的 CA 為止;

證書驗證可信后,客戶端會計算產生隨機數字 Pre-master,發送Client Key Exchange,用證書中的公鑰加密,再發給服務器;

到此時,無論是客戶端還是服務端,都有了三個隨機數,分別是:A、B、Pre-master。通過這三個隨機數,客戶端和服務端可以產生相同的對稱密鑰。

約定好對稱密鑰和加密算法,就可以用對稱加密的形式進行加密通信了,后續的通信除了多了一步密鑰校驗的過程,HTTP 協議里的那些過程都不會少。

不過上面的過程中只包含了 HTTPS 的單向認證,也就是客戶端驗證服務端的證書,這也是最常見的場景。不過在更加嚴格要求通信安全的情況下,也可以啟用雙向認證,雙方互相驗證證書。

通過上面的整個過程,我們可以看出,HTTPS 協議并不是一個新的協議,它只是 HTTP 協議與一些加密算法的組合,用來保證通信的安全。

雖然上面介紹的非對稱加密方式,在現在看來是完美不可解的,但未來誰知道呢?正所謂“道高一尺魔高一丈”,加密安全路上永無盡頭。

小結

加密分對稱加密和非對稱加密。對稱加密效率高,但存在密鑰傳輸的問題;非對稱加密可以解決密鑰傳輸的問題,但效率較低。

非對稱加密需要通過證書和權威機構來驗證公鑰的合法性。

HTTPS 是綜合了對稱加密和非對稱加密算法的 HTTP 協議。既保證了傳輸安全,也保證了傳輸效率。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    12

    文章

    9295

    瀏覽量

    85924
  • HTTP
    +關注

    關注

    0

    文章

    511

    瀏覽量

    31434
  • 加密算法
    +關注

    關注

    0

    文章

    216

    瀏覽量

    25564
收藏 人收藏

    評論

    相關推薦

    關于CC3000能不能用http/https協議問題

    我們這CC3000模塊能夠使用Http/Https協議進行通信嗎?通信的數據格式可以用json格式? ?如果可以的話,需不需要跑系統?
    發表于 06-21 15:46

    HTTP協議相關資料推薦

    HTTP是Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,HTTP協議通常承載于TCP協議之上,有時也承載
    發表于 11-04 07:04

    什么是Http協議

    的區別****11、HttpHttps優缺點?****12、Http優化****13、Http協議有那些特征?**
    發表于 12-22 06:27

    HTTP,HTTP協議的作用是什么?

    HTTP,HTTP協議的作用是什么? HTTP:Hypertext Transfer Protocol 超文本傳輸協議
    發表于 03-22 10:45 ?2.5w次閱讀

    http和tcp/ip、http https之間的關系和區別

    http和tcp/ip、httphttps之間的關系和區別
    的頭像 發表于 01-10 14:30 ?7566次閱讀

    HTTP是什么,HTTPS的優點是什么

    竊取和篡改。 HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因
    的頭像 發表于 05-10 09:55 ?2171次閱讀

    httphttps有什么區別,為什么https會取代http

    大家都知道當前https的使用更為普遍,為什么https會取代http,其中的原因恒訊科技為大家整理在本文,共有11點希望可以幫助大家更了解網站數據安全。 1、傳輸方式 http使用的
    的頭像 發表于 05-11 16:02 ?2069次閱讀

    httphttps的區別,為什么https會取代http

    大家都知道當前https的使用更為普遍,為什么https會取代http,其中的原因恒訊科技為大家整理在本文,共有11點希望可以幫助大家更了解網站數據安全。
    的頭像 發表于 09-14 13:26 ?1767次閱讀

    HTTPS協議是什么?為什么安全?

    HTTPS簡單理解成HTTP over SSL/TLS。客戶端和服務端在使用HTTPS傳輸業務數據前,首先由SSL/TLS協議在兩端之間建立安全信道(這個過程稱作握手協商階段),然后在
    的頭像 發表于 01-08 14:36 ?2164次閱讀

    HTTPHTTPS的區別 HTTP協議請求類型

    HTTP協議在傳輸過程中數據都是明文狀態,安全性較差。HTTPS協議使用SSL/TLS協議進行數據傳輸,保證了數據傳輸的安全性,可以防止敏感
    的頭像 發表于 06-26 17:44 ?1070次閱讀

    什么是HTTP?什么是HTTPSHTTPHTTPS的區別在哪?

    每天都在上網,在搜索東西的時候,你有發現網址有什么不同嗎?本文就來談談HTTPHTTPS有什么不同。
    的頭像 發表于 08-27 09:15 ?4565次閱讀
    什么是<b class='flag-5'>HTTP</b>?什么是<b class='flag-5'>HTTPS</b>?<b class='flag-5'>HTTP</b>與<b class='flag-5'>HTTPS</b>的區別在哪?

    httphttps的區別

    行包括:協議及版本、狀態碼、狀態碼解釋 1.2 httphttps的區別 http:由于http是明文傳輸,所以其安全性低,易受攻擊,無法
    的頭像 發表于 11-10 16:42 ?2476次閱讀
    <b class='flag-5'>http</b>和<b class='flag-5'>https</b>的區別

    HTTPHTTPS 的區別

    在互聯網時代,數據傳輸安全變得越來越重要。HTTPHTTPS 是兩種廣泛使用的網絡協議,它們在數據傳輸方面扮演著關鍵角色。盡管它們的名字相似,但它們在安全性和用途上有著顯著的區別。 HT
    的頭像 發表于 12-30 09:19 ?251次閱讀

    如何實現 HTTP 協議的安全性

    協議的安全性,可以采取以下幾種方法: 1. 使用HTTPS HTTPS(安全超文本傳輸協議)是HTTP的安全版本,它在
    的頭像 發表于 12-30 09:22 ?299次閱讀

    如何使用 cURL 測試 HTTP 協議

    cURL是一個強大的命令行工具,用于傳輸數據,支持多種協議,包括HTTPHTTPS、FTP等。使用cURL測試HTTP協議可以幫助你理解
    的頭像 發表于 12-30 09:26 ?232次閱讀
    主站蜘蛛池模板: 国产三级在线免费 | 免费国产不卡午夜福在线观看 | 天天摸夜夜添夜夜添国产 | 国产老头和美女在线观看 | 天天色天天综合 | 视频一二三区 | 天天操天天干天搞天天射 | 天堂在线影院 | 狠狠色噜噜狠狠狠狠97影音先锋 | 国产成人高清一区二区私人 | 亚洲电影一区二区 | 又粗又长又大真舒服好爽漫画 | 国产男人女人做性全过程视频 | 色天天综合色天天碰 | 久久久久久久成人午夜精品福利 | 伊人天天操 | 在线看黄网| 日韩欧美在线中文字幕 | 婷婷影院在线综合免费视频 | 免费a在线看 | 在线观看日本免费视频大片一区 | 岛国毛片一级一级特级毛片 | 色噜噜狠狠色综合久 | 狠狠插狠狠操 | 日本亚洲精品成人 | 同性同男小说肉黄 | 色视频网站在线 | 国产区亚洲区 | 天天视频色 | 一本到卡二卡三卡免费高 | 久久久久99精品成人片三人毛片 | 成人三级在线观看 | 日本三级带日本三级带黄首页 | 香港经典a毛片免费观看爽爽影院 | 色日本在线 | 夜夜骑夜夜操 | 色99视频 | 亚州一级 | 午夜美女久久久久爽久久 | 亚洲男人精品 | 最近2018中文字幕免费看2019 |