您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么理解HTTP的安全問題”,在日常操作中,相信很多人在怎么理解HTTP的安全問題問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解HTTP的安全問題”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
HTTPS 是比較流行的 HTTP 安全形式。它是由網(wǎng)景公司首創(chuàng)的,所有主要的瀏覽器和服務器都支持此協(xié)議。
大家來看這個圖。
HTTPS 方案的 URL 以 https://,而不是 http:// 開頭,據(jù)此就可以分辨某個 Web 頁面是通 過 HTTPS 而不是 HTTP 訪問的(有些瀏覽器還會顯示一些標志性的安全提示)
使用 HTTPS 時,所有的 HTTP 請求和響應數(shù)據(jù)在發(fā)送到網(wǎng)絡之前,都要進行加密。HTTPS 在 HTTP 下面提供了一個傳輸級的密碼安全層。
我們可以來看一下關(guān)于 HTTP 和 HTTPS 的層。
大部分困難的編碼及解碼工作都是在 SSL or TLS 庫中完成的,所以 Web 客戶端和服務器在使用 安全 HTTP 時無需過多地修改其協(xié)議處理邏輯。在大多數(shù)情況下,只需要用 SSL 的輸入 / 輸出調(diào)用取代 TCP 的調(diào)用,再增加其他幾個調(diào)用來配置和管理安全信息就行了。
關(guān)于數(shù)字加密,很容易理解的,不知道大家看過一些 “神劇” 么?在抗戰(zhàn)時期的電報密碼,都是用本子的形式,然后密碼本不同的字母來對應不同的數(shù)據(jù)信息,然后把對應的數(shù)字拼接起來。這只是我們對數(shù)字密碼的簡單理解,來官方的說法:
這里面的編碼器和解碼器在 “神劇”中不就是密碼本的存在么?用密碼來生成保密信息已經(jīng)有數(shù)千年了。傳說尤利烏斯 · 凱撒(Julius Caesar)曾使用過 一種三字符循環(huán)移位密碼,報文中的每個字符都由字母表中三個位置之后的字符來取代。在現(xiàn)代的字母表中,“A”就應該由“D”來取代,“B”就應該由“E”來取代,以此類推。
我們按照 “旋轉(zhuǎn)3” 為例子,
密碼就可以將報文“meet me at the pier at midnight”編碼為密文“phhw ph dw wkh slhu dw plgqljkw”。
1 通過解碼,在字母 表中旋轉(zhuǎn) -3 個字符,就可以將密文解密回原來的明文報文。
但是缺點我們同時也能想到,密碼本容易被對方給獲取,編碼機器也容易被敵人獲取,在戰(zhàn)爭年代,密碼本這是必爭之物呀。
所以大部分機器上都有一些號盤,可以將其 設置為大量不同的值以改變密碼的工作方式。即使機器被盜,沒有正確的號盤設置(密鑰值),解碼器也無法工作。
這些密碼參數(shù)被稱為密鑰(key)。要在密碼機中輸入正確的密鑰,解密過程才能正確進 行。密碼密鑰會讓一個密碼機看起來好像是多個虛擬密碼機一樣,每個密碼機都有不同的密鑰值,因此其行為都會有所不同。
上圖中就是使用不同密鑰的旋轉(zhuǎn) N 字符密碼。。密鑰越長,編碼組合就越多,通過隨機猜測密鑰來破解代碼就越困難。
給定一段明文報文 P、一個編碼函數(shù) E 和一個數(shù)字編碼密鑰 e,就可以生成一段經(jīng)過編碼的密文 C 如下圖。通過解碼函數(shù) D 和解碼密鑰 d,可以將密文 C 解碼為原始的明文 P。當然,編 / 解碼函數(shù)都是互為反函數(shù)的,對 P 的編碼進行解碼就會回到原始報文 P 上去。
我們來更詳細地看看密鑰和密碼是怎樣配合工作的。很多數(shù)字加密算法都被稱為對稱密 鑰(symmetric-key)加密技術(shù),這是因為它們在編碼時使用的密鑰值和解碼時一樣 (e=d)。我們就將其統(tǒng)稱為密鑰 k。
在對稱密鑰加密技術(shù)中,發(fā)送端和接收端要共享相同的密鑰 k 才能進行通信。發(fā)送端用共 享的密鑰來加密報文,并將得到的密文發(fā)送給接收端。接收端收到密文,并對其應用解密 函數(shù)和相同的共享密鑰,恢復出原始的明文。大家看下面的一幅圖:
對稱密鑰加密算法為編 / 解碼使用相同的密鑰,流行的對稱密鑰加密算法包括:DES、Triple-DES、RC2 和 RC4。
3.1、密鑰長度與枚舉攻擊
在很多情況下,編 / 解碼算法都是眾所周知的,因此密鑰就是唯一保密的東西了。
好的加密算法會迫使攻擊者試遍每一個可能的密鑰,才能破解代碼。用暴力去嘗試所有的密鑰值稱為枚舉攻擊(enumeration attack)。如果只有幾種可能的密鑰值,居心不良的人通過暴力遍歷所有值,就能最終破解代碼了。但如果有大量可能的密鑰值,他可能就要花 費數(shù)天、數(shù)年,甚至無限長的時間來遍歷所有的密鑰,去查找能夠破解密碼的那一個。
可用密鑰值的數(shù)量取決于密鑰中的位數(shù),以及可能的密鑰中有多少是有效的。
8 位的密鑰只有 256 個可能的密鑰值, 40 位的密鑰可以有 240 個可能的密鑰值(大約是一萬億個密鑰),128 位的密鑰可以產(chǎn)生 大約 340 000 000 000 000 000 000 000 000 000 000 000 000 個可能的密鑰值。
但是也有例外,并不是所有的加密技術(shù)中的密鑰值都是全部有效果的,比如,在最知名的非對稱加密算法 RSA 中,有效密鑰 必須以某種方式與 質(zhì)數(shù)相關(guān)。可能的密鑰值中只有少量密鑰具備此特性。
在傳統(tǒng)的對稱密鑰加密技術(shù)中,對小型的、不太重要的事務來說,40 位的密鑰就足夠安 全了。但現(xiàn)在的高速工作站就可以將其破解,這些工作站每秒可以進行數(shù)十億次計算。相比之下,對于對稱密鑰加密技術(shù),128 位的密鑰被認為是非常強大的。
實際上,長密鑰對密碼安全有著非常重要的影響,美國政府甚至對使用長密鑰的加密軟件實施了出口控制,以防止?jié)撛诘臄硨M織創(chuàng)建出美國國家安全局(National Security Agency,NSA)自己都無法破解的秘密代碼。
Applied Cryptography 這本書中有一個表,記錄了1995年的通過猜測所有的密鑰來破解一個 DES 密碼所需的時間進行了描述。
可能這個數(shù)據(jù)并不是很適用現(xiàn)在,計算機的速度在成倍數(shù)的增長,但是這個圖,我們也可以乘以相對應的倍數(shù),那還是比較有參考價值的哈。
對稱密鑰加密技術(shù)的缺點之一就是發(fā)送者和接收者在互相對話之前,一定要有一個共享的保密密鑰。
比如你想要和淘寶賣家建立私密的對話的話,那么在安全下單之前,需要和淘寶網(wǎng)建立一個私有的保密密鑰,你需要一種產(chǎn)生保密密鑰并將其記住的方式,如果全網(wǎng)的人都是這樣的,那就可能記住太多的東西了,這就是噩夢般的存在呀。于是就出現(xiàn)了后邊的內(nèi)容,請看下邊:
公開密鑰加密技術(shù)沒有為每對主機使用單獨的加密 / 解密密鑰,而是使用了兩個非對稱密鑰:一個用來對主機報文編碼,另一個用來對主機報文解碼。編碼密鑰是眾所周知的(這 也是公開密鑰加密這個名字的由來),但只有主機才知道私有的解密密鑰。
每個人都能找到某個特定主機的公開密鑰,密鑰的建立變得更加簡單。但解碼密鑰是保密的,因此只有接收端才能對發(fā)送給它的報文進行解碼。
公開密鑰加密技術(shù)是非對稱的,為編碼和解碼使用了不同的密鑰。
那我們就需要把對稱密鑰加密和公開密鑰加密來做個對比了。
所有公開密鑰非對稱加密系統(tǒng)所面臨的共同挑戰(zhàn)是:
公開密鑰(是公有的,所有人都可以獲得);
一小片攔截下來的密文(可通過對網(wǎng)絡的嗅探獲取);
一條報文及與之相關(guān)的密文(對任意一段文本運行加密器就可以得到)。
就算你知道這三個條件,也無法計算出保密的私有密鑰,這就是公開密鑰非對稱加密系統(tǒng)所要面臨的挑戰(zhàn)。
RSA 算法就是一個滿足了所有這些條件的流行的公開密鑰加密系統(tǒng),關(guān)于RSA算法,本文先不深究,之后在我看完密碼學這本書之后,然后再給大家進行解讀。
前面我們已經(jīng)說了對稱和非對稱密鑰加 / 解密,下面我們來說數(shù)字簽名是什么意思。
百度百科:數(shù)字簽名(又稱公鑰數(shù)字簽名)是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領(lǐng)域的技術(shù)來實現(xiàn)的,用于鑒別數(shù)字信息的方法。一套數(shù)字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證。數(shù)字簽名是非對稱密鑰加密技術(shù)與數(shù)字摘要技術(shù)的應用。
其實說白了,數(shù)字簽名就是附加在報文上的特殊加密校驗碼。
我們用一個例子來進行解釋,我們先看一幅圖,節(jié)點 A 是如何向節(jié)點 B 發(fā)送一條報文,并對其進行簽名的。
鴻蒙官方戰(zhàn)略合作共建——HarmonyOS技術(shù)社區(qū)
節(jié)點 A 將變長報文提取為定長的摘要。
節(jié)點 A 對摘要應用了一個“簽名”函數(shù),這個函數(shù)會將用戶的私有密鑰作為參數(shù)。因 為只有用戶才知道私有密鑰,所以正確的簽名函數(shù)會說明簽名者就是其所有者。在圖中,,由于解碼函數(shù) D 中包含了用戶的私有密鑰,所以我們將其作為簽名函數(shù)使用。
一旦計算出簽名,節(jié)點 A 就將其附加在報文的末尾,并將報文和簽名都發(fā)送給 B。
在接收端,如果節(jié)點 B 需要確定報文確實是節(jié)點 A 寫的,而且沒有被篡改過,節(jié)點 B 就可以對簽名進行檢查。節(jié)點 B 接收經(jīng)私有密鑰編碼的簽名,并應用了使用公開 密鑰的反函數(shù)。如果拆包后的摘要與節(jié)點 B 自己的摘要版本不匹配,要么就是報文在傳輸過程中被篡改了,要么就是發(fā)送端沒有節(jié)點 A 的私有密鑰(也就是說它不是節(jié)點 A)。
把圖理解是,是不是關(guān)于數(shù)字簽名就很好理解了呢?
我們來看一下百度百科對他的解釋:數(shù)字證書是指CA(電子認證服務)機構(gòu)發(fā)行的一種電子文檔,是一串能夠表明網(wǎng)絡用戶身份信息的數(shù)字,提供了一種在計算機網(wǎng)絡上驗證網(wǎng)絡用戶身份的方式,因此數(shù)字證書又稱為數(shù)字標識。數(shù)字證書對網(wǎng)絡用戶在計算機網(wǎng)絡交流中的信息和數(shù)據(jù)等以加密或解密的形式保證了信息和數(shù)據(jù)的完整性和安全性。
數(shù)字證書其實并沒有我們想的那么難,數(shù)字證書的基本架構(gòu)是公開密鑰PKI,即利用一對密鑰實施加密和解密。其中密鑰包括私鑰和公鑰,私鑰主要用于簽名和解密,由用戶自定義,只有用戶自己知道;公鑰用于簽名驗證和加密,可被多個用戶共享。
HTTPS 建立了一個安全 Web 事務之后,現(xiàn)代的瀏覽器都會自動獲取所連接服務器的 數(shù)字證書。如果服務器沒有證書,安全連接就會失敗。服務器證書中包含很多字段,其中包括:
Web 站點的名稱和主機名;
Web 站點的公開密鑰;
簽名頒發(fā)機構(gòu)的名稱;
來自簽名頒發(fā)機構(gòu)的簽名
瀏覽器收到證書時會對簽名頒發(fā)機構(gòu)進行檢查。1 如果這個機構(gòu)是個很有權(quán)威的公共簽名 機構(gòu),瀏覽器可能已經(jīng)知道其公開密鑰了(瀏覽器會預先安裝很多簽名頒發(fā)機構(gòu)的證書)。
如果對簽名頒發(fā)機構(gòu)一無所知,瀏覽器就無法確定是否應該信任這個簽名頒發(fā)機構(gòu),它通 常會向用戶顯示一個對話框,看看他是否相信這個簽名發(fā)布者。簽名發(fā)布者可能是本地的 IT 部門或軟件廠商。
到此,關(guān)于“怎么理解HTTP的安全問題”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。