HTTP 確保Web安全的HTTPS

2021-08-21 09:03:09 字數 3301 閱讀 8114

一.http的缺點

1.通訊使用明文(不加密),內容有可能會被竊聽

(網際網路上任意角落都有可能存在通訊內容被竊聽的風險)

1.1通訊的加密

http協議中沒有加密機制,但可以通過和ssl(secue socket layer安全套接層)或tls(transport layer security 安全傳輸層協議)組合使用,加密http通訊內容。用ssl建立安全通訊線路之後,就可以在這條線路上進行http通訊了。與ssl組合使用的http協議叫做https

1.2內容的加密

http報文裡所含內容加密。前提是要求客戶端和伺服器同時具備加密和解密機制。內容仍具有被篡改的風險。

2.不驗證通訊方身份,因此有可能遭遇偽裝。

2.1任何人都可以發起請求

(1)無法確定請求傳送至目標的web伺服器是否是按真實意圖返回響應的那台伺服器。有可能是已偽裝的web伺服器;

(2)無法確定響應返回到的客戶端是否按照真實意圖接收響應的那個客戶端。有可能是已偽裝的客戶端。

(3)無法確定正在通訊的對方是否具備訪問許可權。因為某些web伺服器上儲存著重要資訊,只想發給特定使用者通訊的許可權;

(4)無法判定請求方是來自何方、出自誰手;

(5)即使是無意義的請求也會照單全收。無法阻止海量請求下的dos攻擊(denial of service,拒絕服務攻擊)

2.2查明對手的證書

通過使用證書,以證明通訊方就是意料中的伺服器

3.無法證明報文的完整性,所以有可能遭遇篡改。

3.1接收到的內容可能有誤

遭攻擊者攔截並篡改內容的攻擊稱為中間人攻擊

攻擊人會隨著篡改請求和響應,而讓客戶端與伺服器之間的通訊看上去仍舊是正常的。

3.2如何防止篡改

常用的是md5和sha-1等雜湊值校驗的方法,以及用來確認檔案的數字簽名方法

這些方法無法百分百保證確認結果正確。因為pgp和md5本身被改寫的話,使用者是沒有辦法意識到的。

二.http+加密+認證+完整性保護=https

http通訊介面部分用ssl(secure socket layer)和tls(transport layer security)協議而已

1.相互交換金鑰的公開金鑰加密技術

1.1共享金鑰加密

加密和解密同用乙個金鑰的方式稱為共享金鑰加密

傳送金鑰就有被竊聽的風險,但不傳送,對方就不能解密。金鑰若能安全送達,那檔案也能安全送達

1.2公開金鑰加密

非對稱金鑰。一把叫做私有金鑰,另一把叫做公開金鑰

傳送密文的一方使用對方的公開金鑰進行加密處理,對方收到被加密的資訊後,再使用自己的私有金鑰進行解密。利用這種方式,不需要傳送用來解密的私有金鑰,也不必擔心金鑰被攻擊者竊聽走。

1.3https採用混合加密機制

https採用共享金鑰加密和公開金鑰加密兩者並用的混合加密機制。

(1)在交換金鑰環節使用公開金鑰加密方式,使用公開金鑰加密方式安全地交換在稍後的共享金鑰加密中使用的金鑰

(2)確保交換的金鑰是安全的情況下,使用共享金鑰加密方式通訊;之後建立通訊交換報文階段則使用共享金鑰加密方式。

2.證明公開金鑰正確性證書

為了解決無法證明公開金鑰本身就是貨真價實的公開金鑰,可以通過數字認證機構和其相關機關頒發的公開金鑰證書

(1)伺服器把自己的公開金鑰登陸至數字認證機構

(2)數字證書認證機構用自己的私有金鑰向伺服器的公開密碼部署數字簽名並頒發共鑰證書

(3)客戶端拿到伺服器的共鑰證書後,使用數字證書認證機構的公開金鑰,向數字證書認證機構驗證共鑰證書上的數字簽名,以確保伺服器的公開金鑰真實性

(4)使用伺服器的公開金鑰對報文加密後傳送

(5)伺服器用私有金鑰對報文進行解密

2.1用以確認客戶端的客戶端證書

https中還以使用客戶端證書。以客戶端證書進行客戶端認證,證明伺服器正在通訊的對方始終是預料之內的客戶端,其作用跟伺服器證書如出一轍。

2.2由自認證機構頒發的證書稱為自簽名證書

每個人都可以構建一套屬於自己的認證機構,從而自己給自己頒發伺服器證書。但該伺服器證書在網際網路上不可作為證書使用,似乎沒有什麼幫助。

2.3中級認證機構的證書可能會變成自認證證書

某些瀏覽器會以正規的證書來對待,可有的瀏覽器會當作自簽名證書。

3.https的安全通訊機制

客->服(1)handshake:clienthello客戶端通過傳送client hello報文開始ssl通訊。報文中包含客戶端支援的ssl的指定版本、加密元件列表

服->客(2)handshake:serverhello伺服器可進行ssl通訊時,會以server hello報文作為應答。和客戶端一樣,在報文中包含ssl版本以及加密元件。伺服器的加密元件內容是從接收到的客戶端加密元件篩選出來的

服->客(3)handshake:certificate包含公開金鑰證書

服->客(4)handshake:serverhellodone報文通知客戶端,最初階段的ssl握手協商部分結束。

客->服(5)handshake:clientkeyexchange ssl第一次握手結束之後,客戶端以client key exchange 報文作為回應。報文中包含通訊加密中使用的一種稱為pre-master secret 的隨機密碼串。該報文已用步驟3中的公開金鑰進行加密

客->服(6)changecipherspec接著客戶端繼續傳送change cipher spec報文。該報文會提示伺服器,在此報文之後的通訊會採用pre-master secret 金鑰加密

客->服(7)handshake:finished客戶端傳送finished報文。該報文包含連線至今全部報文的整體校驗值。這次握手協商是否能夠成功,要以伺服器能否正確解密報文作為判定標準

服->客(8)changecipherspec伺服器同樣傳送 change clipher spec報文

服->客(9)handshake:finished伺服器同樣傳送finished報文

客->服(12)alert:warning,close notify最後由客戶端斷開連線。斷開連線時,傳送clode_notify報文。這一步之後再傳送tcp fin報文來關閉與tcp的通訊

應用層傳送資料的時候會附加一種叫做mac的報文摘要,能夠查知報文是否遭到篡改,從而保護報文的完整性。

4.ssl和tls

ssl3.0為基準,後來制定了tls1.0、tls1.1、tls1.2

tls是以ssl為原型開發的協議

5.ssl速度慢

https要比http慢2到100倍

5.1由於https還需要做伺服器、客戶端雙方加密及解密處理,因此會消耗cpu和記憶體等硬體資源

5.2和http通訊相比,ssl通訊部分消耗網路資源。而ssl通訊部分,又因為要對通訊進行處理,所以時間又延長了

確保Web安全的HTTPS

http主要又如下幾點不足 http 加密 認證 完整性保護 https https並非是應用層的一種新協議,只是http通訊介面部分用ssl secure socket layer 和tls transport layer security 協議代替而已。https其實就是身披ssl協議這層外殼的...

確保Web安全的HTTPS

證明身份 無法證明報文的完整性 證明公開金鑰正確性地證書 按tcp ip協議族的工作機制,通訊內容在所有的通訊線路上都有可能遭到窺視.為防止竊聽並保護資訊,有如下幾種加密方式 通訊加密 http協議沒有加密機制,但可以通過ssl或tls的組合使用,加密http通訊內容.與ssl組合使用的http被稱...

確保Web安全的HTTPS

1 通訊使用明文 不加密 內容有可能會被竊聽。1 通訊的加密 http協議中沒有加密機制,但可以通過和ssl 安全套接層 或tls 安全傳輸層協議 的組合使用,加密http的通訊內容。與ssl組合使用的http被稱為https 超文字傳輸安全協議 2 內容的加密 把http報文裡含有的內容進行加密處...