HTTPS協(xié)議的實(shí)現(xiàn)原理

1.HTTP傳輸協(xié)議的缺點(diǎn)

在上一篇文章中詳細(xì)講解了TCP/IP協(xié)議棧中的幾個協(xié)議设预,其中就有對HTTP做了一個比較詳細(xì)的講解。我們知道生年,HTTP協(xié)議基于TCP進(jìn)行傳輸?shù)拇乐眨渲袀鬏數(shù)膬?nèi)容全都裸露在報文中,如果我們獲取了一個HTTP消息體穿稳,那我們可以知道消息體中所有的內(nèi)容存皂。這其實(shí)存在很大的風(fēng)險,如果HTTP消息體被劫持逢艘,那么整個傳輸過程將面臨:

  • (1) 竊聽風(fēng)險(eavesdropping):第三方可以獲知通信內(nèi)容旦袋。
  • (2) 篡改風(fēng)險(tampering):第三方可以修改通信內(nèi)容。
  • (3) 冒充風(fēng)險(pretending):第三方可以冒充他人身份參與通信它改。

正因?yàn)镠TTP協(xié)議的這個缺點(diǎn), HTTP變成了一種不安全的協(xié)議疤孕。

2. 加密協(xié)議SSL/TLS

互聯(lián)網(wǎng)加密通信協(xié)議的歷史,幾乎與互聯(lián)網(wǎng)一樣長央拖。

1994年祭阀,NetScape公司設(shè)計(jì)了SSL協(xié)議(Secure Sockets Layer)的1.0版,但是未發(fā)布鲜戒。

1995年专控,NetScape公司發(fā)布SSL 2.0版,很快發(fā)現(xiàn)有嚴(yán)重漏洞遏餐。

1996年伦腐,SSL 3.0版問世,得到大規(guī)模應(yīng)用失都。

1999年蔗牡,互聯(lián)網(wǎng)標(biāo)準(zhǔn)化組織ISOC接替NetScape公司,發(fā)布了SSL的升級版TLS 1.0版嗅剖。

2006年和2008年辩越,TLS進(jìn)行了兩次升級,分別為TLS 1.1版和TLS 1.2版信粮。最新的變動是2011年TLS 1.2的修訂版黔攒。

目前,應(yīng)用最廣泛的是TLS 1.0,接下來是SSL 3.0督惰。但是不傅,主流瀏覽器都已經(jīng)實(shí)現(xiàn)了TLS 1.2的支持。

TLS 1.0通常被標(biāo)示為SSL 3.1赏胚,TLS 1.1為SSL 3.2访娶,TLS 1.2為SSL 3.3。

3.更加安全的HTTPS

我們知道HTTP的缺點(diǎn)就是報文裸露沒有加密觉阅,如果我們對報文進(jìn)行加密崖疤,那么這個缺點(diǎn)就被解決了。通過HTTP和SLL的結(jié)合典勇,誕生的HTTPS就是我們這篇文章的主角劫哼。

4. HTTP協(xié)議和SLL/TLS協(xié)議是如何結(jié)合使用的

4.1 加密算法

據(jù)記載,公元前400年割笙,古希臘人就發(fā)明了置換密碼权烧;在第二次世界大戰(zhàn)期間,德國軍方啟用了“恩尼格瑪”密碼機(jī)伤溉,所以密碼學(xué)在社會發(fā)展中有著廣泛的用途般码。

對稱加密
有流式、分組兩種乱顾,加密和解密都是使用的同一個密鑰侈询。
例如:DES、AES-GCM糯耍、ChaCha20-Poly1305等

非對稱加密
加密使用的密鑰和解密使用的密鑰是不相同的扔字,分別稱為:公鑰、私鑰温技,公鑰和算法都是公開的革为,私鑰是保密的。非對稱加密算法性能較低舵鳞,但是安全性超強(qiáng)震檩,由于其加密特性,非對稱加密算法能加密的數(shù)據(jù)長度也是有限的蜓堕。
例如:RSA抛虏、DSA、ECDSA套才、 DH迂猴、ECDHE

哈希算法
將任意長度的信息轉(zhuǎn)換為較短的固定長度的值,通常其長度要比信息小得多背伴,且算法不可逆沸毁。
例如:MD5峰髓、SHA-1、SHA-2息尺、SHA-256 等

數(shù)字簽名
簽名就是在信息的后面再加上一段內(nèi)容(信息經(jīng)過hash后的值)携兵,可以證明信息沒有被修改過。hash值一般都會加密后(也就是簽名)再和信息一起發(fā)送搂誉,以保證這個hash值不被修改徐紧。

4.2 對HTTP消息體對稱加密
對稱加密

在經(jīng)過TCP的三次握手之后,客戶端和服務(wù)器開啟了連接炭懊,如果對后續(xù)雙方傳輸?shù)膬?nèi)容進(jìn)行對稱加密并级,那么理論上我們在本次傳輸中防止了內(nèi)容裸露。但是由于對稱加密使用秘鑰在兩端是一樣的凛虽,要維持每個客戶端的秘鑰不一致整套加密才有意義死遭,這樣將會產(chǎn)生海量的秘鑰广恢,維護(hù)困難凯旋。另外,因?yàn)閷ΨQ加密需要雙方協(xié)商一致钉迷,一般可用提前約定至非,或者使用前傳輸秘鑰,不管是哪種方式糠聪,都很容易導(dǎo)致秘鑰邪泄漏荒椭。只要黑客獲取到秘鑰,那么所謂的加密傳輸就如同虛設(shè)了舰蟆。

4.3 對HTTP消息體進(jìn)行非對稱加密

我們使用非對稱加密試試趣惠。


非對稱加密

用戶使用公鑰進(jìn)行加密之后,消息體能夠安全的抵達(dá)服務(wù)器身害,但是在服務(wù)器返回數(shù)據(jù)的時候味悄,黑客截取到信息之后,能夠通過公鑰對響應(yīng)的內(nèi)容進(jìn)行解密,最后進(jìn)行篡改塌鸯,導(dǎo)致這個加密方案失敗侍瑟。另外,非對稱加密不適用與數(shù)量太大的報文丙猬,大數(shù)量的報文導(dǎo)致加密效率降低涨颜。

4.4 對稱加密和非對稱加密結(jié)合使用
  • 對稱加密的方式,如果能夠保證秘鑰不被黑客獲取茧球,那么它其實(shí)是很安全的庭瑰,并且,對稱加密的在速度具有很大的優(yōu)勢抢埋。
  • 非對稱加密在請求發(fā)起方時见擦,盡管使用的是公鑰加密钉汗,但是因?yàn)楸仨毷褂盟借€解密的特點(diǎn),因此能夠保證消息體在向服務(wù)器發(fā)送的過程中是安全的鲤屡。缺點(diǎn)在于服務(wù)器返回的使用私鑰加密的內(nèi)容會被公鑰解開损痰。

結(jié)合兩者的優(yōu)缺點(diǎn)的做法:

  • 使用對稱加密對消息體進(jìn)行加密。
  • 對稱加密的算法和對稱秘鑰使用公鑰加密之后酒来,在 ClientHello 時發(fā)送給服務(wù)器卢未。
  • 后續(xù)雙方的內(nèi)容進(jìn)行對稱加密。

具體的做法如下圖:


對稱加密和非對稱加密相結(jié)合使用

那么使用這種方式時堰汉,有兩個問題辽社。

  • 如何將公鑰給到客戶端?
  • 客戶端在獲取一個公鑰之后翘鸭,如何確定這個公鑰是正確的服務(wù)端發(fā)出的滴铅?

直接下載公鑰不可靠的,因?yàn)楹诳涂赡茉谙螺d公鑰的時候劫持了請求就乓,并偽造一個公鑰返回給客戶端汉匙。后續(xù)的請求都將會被黑客欺騙。

那應(yīng)該怎么做呢生蚁?

答案是:使用證書噩翠!

數(shù)字證書是一個經(jīng)證書授權(quán)中心數(shù)字簽名的包含公開密鑰擁有者信息以及公開密鑰的文件。最簡單的證書包含一個公開密鑰邦投、名稱以及證書授權(quán)中心的數(shù)字簽名伤锚。數(shù)字證書還有一個重要的特征就是只在特定的時間段內(nèi)有效。
數(shù)字證書是一種權(quán)威性的電子文檔志衣,可以由權(quán)威公正的第三方機(jī)構(gòu)屯援,即CA(例如中國各地方的CA公司)中心簽發(fā)的證書,也可以由企業(yè)級CA系統(tǒng)進(jìn)行簽發(fā)念脯。

簡單來說狞洋,證書可以攜帶公鑰,如果我們將證書給客戶端下載和二,那就解決了客戶端獲取公鑰的問題徘铝。 同時由于受第三方權(quán)威機(jī)構(gòu)的認(rèn)證,下載后對證書進(jìn)行驗(yàn)證惯吕,如果證書可信(并非個人簽名)惕它,并且是我們指定的服務(wù)器上的證書,那么說明證書是真是有效的废登,這就解決了公鑰可能是偽造的問題淹魄。

SSL證書+非對稱加密+對稱加密

最后附一張?jiān)敿?xì)的HTTPS請求過程圖示:


HTTPS請求過程

參考:
SSL/TLS協(xié)議運(yùn)行機(jī)制的概述 - 阮一峰
HTTPS系列干貨(一):HTTPS 原理詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堡距,隨后出現(xiàn)的幾起案子甲锡,更是在濱河造成了極大的恐慌兆蕉,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤沦,死亡現(xiàn)場離奇詭異虎韵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)缸废,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門包蓝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人企量,你說我怎么就攤上這事测萎。” “怎么了届巩?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵硅瞧,是天一觀的道長。 經(jīng)常有香客問我恕汇,道長腕唧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任拇勃,我火速辦了婚禮四苇,結(jié)果婚禮上孝凌,老公的妹妹穿的比我還像新娘方咆。我一直安慰自己,他們只是感情好蟀架,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布瓣赂。 她就那樣靜靜地躺著,像睡著了一般片拍。 火紅的嫁衣襯著肌膚如雪煌集。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天捌省,我揣著相機(jī)與錄音苫纤,去河邊找鬼。 笑死纲缓,一個胖子當(dāng)著我的面吹牛卷拘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祝高,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼栗弟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了工闺?” 一聲冷哼從身側(cè)響起乍赫,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤瓣蛀,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雷厂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惋增,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年改鲫,在試婚紗的時候發(fā)現(xiàn)自己被綠了器腋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡钩杰,死狀恐怖纫塌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情讲弄,我是刑警寧澤措左,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站避除,受9級特大地震影響怎披,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓶摆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一凉逛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧群井,春花似錦状飞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荐吉,卻和暖如春焙糟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背样屠。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工穿撮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痪欲。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓悦穿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勤揩。 傳聞我的和親對象是個殘疾皇子咧党,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容