網路程式設計 Https

2021-10-09 13:42:22 字數 3543 閱讀 8181

1、http協議以明文形式傳輸資料,

為了資料傳輸的安全,在http 的基礎上加入了 ssl 協議,ssl 依靠證書來驗證伺服器的身份。即,https。

2、http是無狀態協議,它通過cookie/session技術實現狀態儲存

比如:電商需要對使用者一段時間的http通訊狀態進行儲存,執行一次登陸操作,在30分鐘內所有的請求都不需要再次登陸。

3、有限的持久連線,http/1.1持久連線(http keep-alive)方法,只要任意一端沒有明確提出斷開連線,則保持tcp連線狀態,在請求首部欄位中的connection: keep-alive即為表明使用了持久連線。 

http三大風險

(1) 竊聽風險:第三方可以獲知通訊內容。 明文,資料加密

(2) 篡改風險:第三方可以修改通訊內容。 明文沒有校驗,資料完整性保護

(3) 冒充風險:第三方可以冒充他人身份參與通訊。 身份驗證

基於http協議,通過ssl,提供資料加密、身份驗證以及資料完整性保護。https傳輸的資料不是明文的。

https有如下特點:

內容加密:採用混合加密技術,中間者無法直接檢視明文內容

驗證身份:通過證書認證客戶端訪問的是自己的伺服器

保護資料完整性:防止傳輸的內容被中間人冒充或者篡改

收方能夠證實傳送方的真實身份;

傳送方事後不能否認所傳送過的報文;

收方或非法者不能偽造、篡改報文。

https 傳輸更加安全

https報文在被包裝成tcp報文的時候完成加密的過程,無論是https的header域也好,body域也罷都是會被加密的。

當使用tcpdump或者wireshark之類的tcp層工具抓包,獲取是加密的內容,而如果用應用層抓包,使用charels(mac)、fildder(windows)抓包工具,那當然看到是明文的。

對稱加密,雙方擁有相同的金鑰,資訊得到安全傳輸

對稱加密的缺點:

(1)客戶端、伺服器數量龐大,如果雙方都維護大量的金鑰,維護成本很高

(2)因每個客戶端、伺服器的安全級別不同,金鑰極易洩露

非對稱加密過程需要用到公鑰進行加密,公鑰被包含在數字證書中,數字證書由受信任的數字證書頒發機構ca,在驗證伺服器身份後頒發,證書中包含了乙個金鑰對(公鑰和私鑰)和所有者識別資訊。數字證書被放到服務端,具有驗證伺服器身份和資料加密功能。

https通常使用的加密演算法與hash演算法如下:

非對稱加密演算法:rsa,dsa/dss

對稱加密演算法:aes,rc4,3des

hash演算法:md5,sha1,sha256

為了兼顧安全與效率,https同時使用了對稱加密和非對稱加密。傳輸的資料是被對稱加密的,對稱加密過程需要客戶端的乙個金鑰,為了確保能把該金鑰安全地傳輸到伺服器端,採用非對稱加密對該金鑰進行加密傳輸,總的來說,對資料進行對稱加密,對稱加密所要使用的金鑰通過非對稱加密傳輸。

https在傳輸的過程中會涉及到三個金鑰:

伺服器端的公鑰和私鑰,用來進行非對稱加密

客戶端生成的隨機金鑰,用來進行對稱加密

乙個https請求,包含了兩次http傳輸。

客戶端向伺服器發起https請求,連線到伺服器的443埠。

伺服器端有乙個金鑰對,即公鑰和私鑰,是用來非對稱加密的,伺服器端妥善保管私鑰(不能洩露),公鑰向世界公開。

伺服器將包含公鑰的由ca認證簽發的數字證書,傳送給客戶端。

客戶端收到伺服器端發來的證書後,驗證數字證書的合法性,如果證書有問題,https請求就此終止。

如果證書沒問題,客戶端會生成乙個隨機值,這個隨機值就是用於對稱加密的金鑰,為了與伺服器端的金鑰區分,我們稱之為client key,即客戶端金鑰。然後用伺服器的公鑰對客戶端的金鑰(隨機值)進行非對稱加密,這樣客戶端金鑰就變成密文了,https中的第一次http請求就此結束。

到此時,客戶端會發起(https中的)第二個http請求,將加密後的客戶端金鑰傳送給伺服器。

伺服器接收到客戶端發來的密文(客戶端金鑰)之後,會用自己的私鑰對其進行非對稱解密,解密後的明文就是客戶端金鑰,然後用客戶端金鑰對資料進行對稱加密,這樣資料就變成了密文。

然後伺服器將加密後的密文傳送給客戶端。

客戶端收到伺服器傳送來的密文,用客戶端金鑰對其進行對稱解密,得到伺服器傳送的資料。這樣https中的第二個http請求結束,整個https傳輸完成。

ssl(secure socket layer,安全套接字層):2023年為 netscape 所研發,ssl 協議位於 tcp/ip 協議與各種應用層協議之間,為資料通訊提供安全支援。

tls(transport layer security,傳輸層安全):其前身是 ssl,它最初的幾個版本由網景公司開發,2023年開始被標準化並改名,發展至今已經有 tls 1.0、tls 1.1、tls 1.2 三個版本。目前使用最廣泛的是tls 1.1、tls 1.2。

ssl及其繼任者tls是為網路通訊提供安全及資料完整性的一種安全協議。tls 與 ssl 在傳輸層對網路連線進行加密。

ssl 協議提供的安全通道有以下三個特性:

機密性:ssl 協議使用金鑰加密通訊資料。

可靠性:伺服器和客戶都會被認證,客戶的認證是可選的。

完整性:ssl 協議會對傳送的資料進行完整性檢查

ssl 證書

ssl 證書是數字證書的一種,因為配置在伺服器上,也稱為 ssl 伺服器證書。類似於駕駛證、護照和營業執照的電子副本。

ssl 證書就是遵守 ssl 協議,由受信任的數字證書頒發機構 ca,在驗證伺服器身份後頒發,具有伺服器身份驗證和資料傳輸加密功能。

ssl 證書依據功能和品牌不同分類有所不同,但 ssl 證書作為國際通用的產品,最為重要的便是產品相容性(即證書根預埋技術),因為他解決了網民登入**的信任問題,網民可以通過 ssl 證書輕鬆識別**的真實身份。

總結一下,http 和 https 都是超文字傳輸協議,https 屬於加密型別,但需要在伺服器安裝 ssl 數字證書實現。

權威機構ca的公鑰不用傳輸,會直接內建在各大作業系統(或者瀏覽器)的出廠設定裡。 作業系統只會儲存權威機構的公鑰。因為權威機構數量有限,所以作業系統廠商相對來說容易管理。各個公司要先去權威機構(ca)認證,申請證書。

技術方面

1、https連線快取不如http高效,大流量**如非必要也不會採用,流量成本太高。使用https協議會使頁面的載入時間延長近50%,增加10%到20%的耗電,此外,https協議還會影響快取,增加資料開銷和功耗,甚至已有安全措施也會受到影響也會因此而受到影響。

2、https協議的安全是有範圍的,在黑客攻擊、拒絕服務攻擊、伺服器劫持等方面幾乎起不到什麼作用。

3、https 肯定會慢一點,時間主要花費在兩組 ssl 之間的耗時和證書的讀取驗證上,對稱演算法的加解密時間幾乎可以忽略不計。

經濟方面

ssl證書需要錢,功能越強大的證書費用越高,個人**、小**沒有必要一般不會用。

其他方面

最關鍵的,ssl證書的信用鏈體系並不安全,特別是在某些國家可以控制ca根證書的情況下,中間人攻擊一樣可行。

網路程式設計 HTTP和HTTPS的學習

https基礎知識 https secure hypertext transfer protocol 安全超文字傳輸協議,是乙個安全通訊通道,它基於http開發用於在客戶計算機和伺服器之間交換資訊。它使用安全套接字層 ssl 進行資訊交換,簡單來說它是http的安全版,是使用tls ssl加密的ht...

網路程式設計 HTTPS協議的實現原理

http傳輸協議缺點 加密協議ssl tls 目前應用最廣的是tls1.0,接下來是ssl 3.0。但是,主流瀏覽器都已經實現了tls1.2 的支援。tls1.0通常被標記為ssl3.1,tls1.1為ssl3.2,tls1.2為ssl3.3 更加安全的https 加密演算法 對http訊息體對稱加...

網路協議 https

為了保證我們的通訊能夠安全進行,可以試想出一種流程來保證通訊安全 目前來看,這個思路是不是很完美。公鑰即使被中間人截獲以後也沒用,因為拿到公鑰也解密不出來到底雙方是用哪種演算法加密的。但有個重大缺陷 中間人可以將伺服器傳送的公鑰包進行掉包,客戶端怎麼知道這個公鑰是真的伺服器傳送的還是假的中間人給的非...