4.HTTPS与HTTP的区别
HTTP的弊端
1)通過明文(不加密)傳輸,內容可能會遭到竊聽。
2)不驗證通信方的身份,因此有可能遭到偽裝(拒絕服務型攻擊(海量請求下的DOS攻擊))。
3)無法驗證報文的完整性,所以有可能已遭篡改。(中間人攻擊(請求或者響應在傳輸途中,遭攻擊者攔截并篡改內容))
?因此:HTTP+加密+認證+完整性保護=HTTPS
HTTPS和HTTP的區別主要如下:
1)HTTPS 不是一種新的協議。原 HTTP 直接建立在 TCP 協議上,直接與 TCP 通信。當前 HTTP
先與 SSL 協議通信,SSL 再與 TCP 進行通信。先建立 SSL 協議的連接,再發送 http 請求。
2)HTTPS通過非對稱加解密算法(公開密鑰加解密算法)與對稱加解密算法(共享密鑰加解密算法)的結合使用。防止HTTP請求及響應被竊取的風險;通過數字證書認證機構的頒發證書認證機制,可證實通信方身份,不可能遭遇偽
裝;MAC 報文摘要可防止篡改,驗證消息的完整性??珊唽憺?HTTP+加密+認證+完整性保護
=HTTPS
3)HTTPS 也有缺陷,相比 HTTP 協議,HTTPS 協議需要客戶端服務端完成加密解密過程處
理,會消耗 CPU 和內存等硬件資源,導致處理時間慢。同時需要購買認證證書,價格昂貴,開
銷大
4)HTTP 與 HTTPS 使用的是完全不同的連接方式,用的端口也不一樣。HTTP 80 端口,HTTPS
為 443 端口。
5)兩者的應用場景不一樣。即使 HTTPS 擁有通信更安全的優勢,但是認證證書價格昂貴
導致對于購買證書并不合算的服務以及一些個人網站,只會選擇 HTTP 通信方式,采用通信內
容加密的方式保證粗略的安全性。即使有能力購買,由于消耗資源多及處理時間慢,只會針對
包含個人信息、銀行賬號密碼等敏感數據時,才利用 HTTPS 加密通信。
加密方法:
- 對稱加密:加密解密用的是同樣的“鑰匙”(公鑰)
- 非對稱加密:加密解密用的是不同的“鑰匙”(公鑰+私鑰:公鑰進行加密,私鑰進行解密)
MAC:消息驗證碼
MAC能識別出篡改和偽裝,也就是既可以確認消息的完整性,也可以進行認證。
消息認證碼的輸入包括任意長度的消息和一個發送者與接受者之間共享的密鑰,它可以輸出固定長度的數據,這個數據就MAC。
消息認證碼是一種與密鑰相關聯的單向散列函數。
https的通信流程?????
HTTP+加密+認證+完整性保護 =HTTPS
我們都知道HTTPS能夠加密信息,以免敏感信息被第三方獲取。所以很多銀行網站或電子郵箱等等安全級別較高的服務都會采用HTTPS協議。
HTTPS簡介
HTTPS其實是有兩部分組成:HTTP + SSL / TLS,也就是在HTTP上又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過TLS進行加密,所以傳輸的數據都是加密后的數據。具體是如何進行加密,解密,驗證的,且看下圖。
1. 客戶端發起HTTPS請求
這個沒什么好說的,就是用戶在瀏覽器里輸入一個https網址,然后連接到server的443端口。,把自身支持的一系列Cipher Suite(密鑰算法套件,簡稱Cipher)發送給服務端
2. 服務端的配置
采用HTTPS協議的服務器必須要有一套數字證書,可以自己制作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面(startssl就是個不錯的選擇,有1年的免費服務)。這套證書其實就是一對公鑰和私鑰。
3. 傳送證書
這個證書其實就是公鑰,只是包含了很多信息,如證書的頒發機構,過期時間等等。
4. 客戶端解析證書
這部分工作是有客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨機值。然后用證書對該隨機值進行加密。就好像上面說的,把隨機值用鎖頭鎖起來,這樣除非有鑰匙,不然看不到被鎖住的內容。
5. 傳送加密信息
這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了。
6. 服務段解密信息
服務端用私鑰解密后,得到了客戶端傳過來的隨機值,然后把內容通過該值進行對稱加密。所謂對稱加密就是,將信息和私鑰通過某種算法混合在一起,這樣除非知道私鑰,不然無法獲取內容,而正好客戶端和服務端都知道這個私鑰,所以只要加密算法夠彪悍,私鑰夠復雜,數據就夠安全。
7. 傳輸加密后的信息
這部分信息是服務段用私鑰加密后的信息,可以在客戶端被還原
8. 客戶端解密信息
客戶端用之前生成的隨機值解密服務段傳過來的信息,于是獲取了解密后的內容。整個過程第三方即使監聽到了數據,也束手無策。
非對稱加密算法:RSA,DSA/DSS? ??在客戶端與服務端相互驗證的過程中用的是非對稱加密?
對稱加密算法:AES,RC4,3DES ? ? 客戶端與服務端相互驗證通過后,以隨機數作為密鑰時,就是對稱加密
HASH算法:MD5,SHA1,SHA256 ?在確認握手消息沒有被篡改時?
?
?
總結
以上是生活随笔為你收集整理的4.HTTPS与HTTP的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 7.数据库的锁机制
- 下一篇: 剑指offer:在一个排序的链表中,存在