HTTPS究竟是啥?這篇文章帶你快速了解HTTPS
- 威海seo技術(shù)提升 威海https
- 1204
今天接到個(gè)活兒,讓我科普 HTTPS 。講 HTTP 我都“方”,想要通俗易懂的說完 HTTPS, 我有點(diǎn)“圓”。在講什么是 HTTPS 之前,我們先來看個(gè)漫畫。
HTTPS究竟是啥?這篇文章帶你快速了解HTTPS 域名 網(wǎng)站 數(shù)據(jù)分析 好文分享 第1張
HTTPS究竟是啥?這篇文章帶你快速了解HTTPS 域名 網(wǎng)站 數(shù)據(jù)分析 好文分享 第2張
△ 圖片來源于阮一峰的網(wǎng)絡(luò)日志
漫畫中其實(shí)就是 HTTPS 的握手過程,但是我相信大段的英文你看著也不怎么流暢,下面就由我簡(jiǎn)單講解下吧。
HTTPS 是在 HTTP 的基礎(chǔ)上增加了 SSL 或 TLS 安全協(xié)議,這些協(xié)議有眾多的套件,這些套件則是由加密算法和哈希算法組成,而這些算法最后則涉及到了數(shù)學(xué)。
數(shù)學(xué)是我上學(xué)時(shí)期最頭痛的學(xué)科,還記得上數(shù)學(xué)課時(shí),我傳紙條給坐在我后面的班花……咦,好像有點(diǎn)跑偏了,拉回來,坐好了,開始我們的 HTTPS 之旅。
HTTPS 是什么
HTTPS 是為了安全的使用 HTTP ,縮寫展開:Hyper Text Transfer Protocol over Secure Socket Layer 。從英文釋義可以看出,HTTPS 就是 HTTP + SSL 或者 HTTP + TLS 。
“我讀書少,你可不要騙我,上面的英文縮寫不是 HTTP over SSL 嗎?”呃...是這樣的,HTTPS 最初使用的加密協(xié)議的確是 SSL,SSL 最近的三個(gè)版本是:SSL 1.0 、SSL 2.0 、SSL 3.0 ,不過隨著加密算法的發(fā)展和人們對(duì)傳輸安全性要求的提高。
截止目前已經(jīng)長(zhǎng)江后浪推前浪依次推出了 TLS 的四個(gè)版本,分別是:TLS 1.0 、TLS 1.1 、TLS 1.2 以及前不久剛推出的 TLS 1.3 。實(shí)際上,業(yè)內(nèi)也有人把 TLS 1.0 叫做 SSL 3.1 ,事實(shí)上,TLS 是在 SSL 的基礎(chǔ)上發(fā)展起來的更安全的加密協(xié)議。
為什么要使用 HTTPS
這個(gè)問題要從為什么逐漸的拋棄 HTTP 說起。
HTTP 從 1991 年的 HTTP/0.9 一直發(fā)展到 1999 年的 HTTP/1.1 ,雖然功能不斷增加,性能也不斷提高,但是隨著互聯(lián)網(wǎng)技術(shù)和網(wǎng)絡(luò)設(shè)備的迅速普及,導(dǎo)致信息大爆炸,眾多的網(wǎng)民們對(duì)網(wǎng)絡(luò)傳輸?shù)乃俣群桶踩杂辛嗽絹碓礁叩囊蟆?/p>
2012 年,谷歌推出了 SPDY 方案,優(yōu)化了 HTTP/1.x 的請(qǐng)求延遲和安全性問題,進(jìn)一步普及了 HTTPS,截止到 2015 年,HTTP/2 已經(jīng)成為標(biāo)準(zhǔn),更是進(jìn)一步推動(dòng)了全網(wǎng) HTTPS 的進(jìn)程。
全網(wǎng) HTTPS 是大勢(shì)所趨,那么為什么拋棄 HTTP 呢?最重要的原因就是安全問題,因?yàn)?HTTP 是明文傳輸?shù)?,這對(duì)于目前從娃娃就開始玩智能手機(jī),學(xué)習(xí) python 編程的新一代來說,抓個(gè)包估計(jì)是不在話下,更別提浸淫網(wǎng)絡(luò)多年的“黑客”了。是時(shí)候跑步進(jìn)入 HTTPS 加密時(shí)代的了。
HTTPS 為什么安全
上文已經(jīng)有提到,HTTPS 就是 HTTP + SSL or TLS ,除了 HTTPS 傳輸標(biāo)準(zhǔn)嚴(yán)格和規(guī)范外,主要是 SSL 或者 TLS 對(duì)傳輸?shù)男畔⒂幸徽椎募咏饷芎托r?yàn)方案。這套方案主要從下面三個(gè)方面確保傳輸?shù)陌踩?/p>
1. 身份認(rèn)證
傳輸之前首先通過數(shù)字證書來確認(rèn)身份,各大 CA 廠商干的就是這個(gè)事情。這里涉及到一個(gè)名詞:數(shù)字證書。數(shù)字證書分為公鑰和私鑰,CA 廠商會(huì)用自己的私鑰來給證書申請(qǐng)者簽發(fā)一套包含私鑰和公鑰的客戶證書,客戶的公鑰證書誰都可以獲取,里面包含了客戶站點(diǎn)和證書的基本信息,用來確保訪問者訪問的就是他想要訪問的站點(diǎn)。
這個(gè)證書不可以偽造嗎?答案是真的不可以。
原因一:系統(tǒng)早已內(nèi)置了各大 CA 廠商的公鑰來校驗(yàn)證書是否是對(duì)應(yīng)的站點(diǎn)的證書,如果不是,就會(huì)給出證書不匹配的提示,除非你給別人的設(shè)備強(qiáng)行植入假的 CA 公鑰。
原因二:這個(gè)證書是 CA 廠商通過哈希并加密得到的,基本無法逆向破解并偽造一個(gè)新的,除非是你黑進(jìn) CA 獲取了 CA 的私鑰,那這家 CA 也基本可以倒閉了。
2. 數(shù)據(jù)保密
數(shù)據(jù)保密包括對(duì)話秘鑰傳輸時(shí)候的保密和數(shù)據(jù)的加密傳送。
對(duì)話秘鑰:以 TLS 1.2 使用的套件之一 DHE-RSA-AES256-SHA256 為例:該套件是以 DHE 、RSA 作為秘鑰交換算法,這兩種秘鑰交換算法都是使用的非對(duì)稱加密,數(shù)學(xué)原理分別依賴于計(jì)算離散對(duì)數(shù)的難度和大數(shù)分解的難度。
也就是在建立 HTTPS 鏈接的過程中,剛開始是有一些明文出現(xiàn)的,不過想要根據(jù)這些已知的明文推算出“對(duì)話秘鑰”卻非常困難。
對(duì)話加密:客戶端和和服務(wù)端協(xié)商并成功獲取到對(duì)話秘鑰后就開始用對(duì)話秘鑰進(jìn)行對(duì)稱加密會(huì)話,上面的套件我們可以看到使用的是 AES256 加密算法。
那么為什么“對(duì)話秘鑰”的交換使用非對(duì)稱加密,正式對(duì)話數(shù)據(jù)的傳輸使用對(duì)稱加密?因?yàn)榉菍?duì)稱加密雖然安全性比較高,但是它的效率比較低,速度比較慢,所以我們一般只使用它們來交換一下對(duì)話秘鑰,后面的對(duì)話加密則使用速度更快,效率更高的對(duì)稱加密。
3. 數(shù)據(jù)完整
身份認(rèn)證成功后,到了數(shù)據(jù)加密傳輸?shù)碾A段,所有數(shù)據(jù)都以明文(HTTP)收發(fā),只不過收發(fā)的是加密后的明文。這時(shí)候也遇到了一個(gè)問題,雖然中間人很難破解加密后的數(shù)據(jù),但是如果他對(duì)數(shù)據(jù)進(jìn)行了篡改,那該怎么辦?
此時(shí)加密套件驗(yàn)證數(shù)據(jù)一致性的哈希算法就派上用場(chǎng)了,哈希算法有多種,比如 MD5 ,SHA1 或者 SHA2 等,上面舉例的加密套件使用的是 SHA2 中的 SHA256 來對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算。這樣就使得任何的數(shù)據(jù)更改都會(huì)導(dǎo)致通信雙方在校驗(yàn)時(shí)發(fā)現(xiàn)問題,進(jìn)而發(fā)出警報(bào)并采取相應(yīng)的措施。
以上主要從使用 HTTPS 的必要性及 HTTPS 能安全傳輸?shù)脑磉M(jìn)行了簡(jiǎn)單的闡述,HTTPS 的實(shí)現(xiàn)不僅僅是網(wǎng)絡(luò)技術(shù)的集中應(yīng)用,底層還涉及到了大量的算法以及密碼學(xué)的眾多知識(shí),小編也無法一下子概述完整(笑哭)。
另外,不論是 PFS,或是國(guó)際互聯(lián)網(wǎng)組織正在推行的 HSTS 安全傳輸協(xié)議,他們的主要目的就是避免中間人攻擊,使信息在傳輸過程中更安全,更快速。
作者昵稱:又拍云
來源:盧松松博客