HTTPS淺析

HTTPS和TLS/SSL的關系

HTTP和TLS/SSL的協(xié)議組合在一起就是HTTPS烦衣,HTTPS=HTTP+TLS/SSL,就是說HTTPS擁有HTTP的所有特征掩浙,并且使用TLS/SSL協(xié)議進行安全保護花吟。

密碼學的四個目標

機密性:傳輸?shù)臄?shù)據(jù)必須是加密的,通過密鑰才能解密
完整性:傳輸?shù)臄?shù)據(jù)必須是完整的厨姚,沒有被篡改的
身份驗證:發(fā)送方和接收方互相確認身份
不可抵賴:例:A向B借錢寫了欠條衅澈,然后不承認此欠條是自己寫的

TLS/SSL協(xié)議在網(wǎng)絡層協(xié)議中的定位

TLS/SSL協(xié)議位于應用層協(xié)議和TCP之間,構建在TCP之上谬墙,由TCP協(xié)議保證數(shù)據(jù)傳輸?shù)目煽啃越癫迹魏螖?shù)據(jù)到達TCP之前,都經(jīng)過TLS/SSL協(xié)議的加密

TLS/SSL協(xié)議在網(wǎng)絡層協(xié)議中的定位

TLS/SSL協(xié)議背后保證密碼學目標的算法

加密算法和HMAC算法:

公開密鑰加密算法的缺點就是運算慢芭梯,HTTP傳輸?shù)臄?shù)據(jù)非常大险耀,大部分web中很少使用公開密鑰算法加解密。一般采用對稱加密算法如:AES玖喘、DES甩牺。MAC算法使用較多的是HMAC,如HMAC-SHA-1累奈、HMAC-SHA-256

密鑰協(xié)商算法

在HTTPS中贬派,一般采用RSA或者DH算法協(xié)商預備主密鑰
1)RSA算法流程如下:
客戶端發(fā)起請求,服務端發(fā)送RSA密鑰對公鑰給客戶端澎媒,
客戶端隨機生成預備主密鑰搞乏,通過RAS公鑰加密發(fā)送給服務端,
服務端正確解密預備主密鑰
2)DH算法:
客戶端發(fā)起請求
服務端生成RSA密鑰對戒努,發(fā)送公鑰給客戶端
服務端生成DH參數(shù)和服務端DH密鑰對请敦,用RAS私鑰簽名DH參數(shù)和服務端DH公鑰,最后將簽名值储玫、DH參數(shù)侍筛、服務端DH公鑰發(fā)送給客戶端
客戶端通過服務端的RSA公鑰驗證簽名,獲取到服務端DH參數(shù)和服務端DH公鑰
客戶端通過DH參數(shù)生成客戶端的DH密鑰對撒穷,將客戶端的DH公鑰發(fā)送給服務端
客戶端通過DH私鑰和服務端DH公鑰計算出預備主密鑰
服務端通過接收到的客戶端DH公鑰匣椰,結合服務端DH私鑰計算出預備主密鑰

例:
發(fā)送方Alice,接收方Bob端礼,雙方共享DH參數(shù)(p,g)禽笑,DH參數(shù)(p,g)公開
Alice的私鑰a(其實a不是數(shù)字證書的私鑰入录,叫secret,就是為本次協(xié)商密鑰產(chǎn)生的)
Bob的私鑰b(同理佳镜,b也不是數(shù)字證書的私鑰僚稿,也是secret)
Alice和Bob約定使用一個模 p = 23和g = 5(g是23的原根)
Alice選擇一個保密的整數(shù) a = 4作為私鑰,計算出公鑰 A = g^a mod p邀杏,將公鑰A發(fā)送給Bob贫奠;
A = 54 mod 23 = 4
Bob選在一個保密的整數(shù) b = 3,計算出公鑰 B = g^b mod p望蜡,將公鑰B發(fā)送給Alice唤崭;
B = 53 mod 23 = 10
Alice 計算出共享密鑰 s = B^a mod p
s = 104 mod 23 = 18
Bob 計算共享密鑰 s = A^b mod p
s = 43 mod 23 = 18
Alice和Bob現(xiàn)在就共享一個密鑰(s = 18)
A^b mod p = (ga)b mod p = (gb)a mod p = B^a mod p
(ga mod p)b mod p = (gb mod p)a mod p(算法證明略)

前向安全性

RSA密鑰協(xié)商,協(xié)商完成后一段時間內密鑰是不變的脖律,攻擊者可以先保存這些加密信息谢肾,以后如果密鑰泄密,這段通信密文就會被解密小泉。
DH靜態(tài)密鑰協(xié)商類似芦疏,只有動態(tài)DH密鑰協(xié)商能夠保證前向安全性,因為密鑰是每次重新生成的微姊。

中間人攻擊

通過RSA或者DH密鑰協(xié)商算法酸茴,服務器需要提供一對密鑰,可以使RSA密鑰對或者是ECDSA密鑰對兢交,看似無懈可擊薪捍,卻存在著致命的問題,那就是中間人攻擊配喳。
中間人攻擊就是服務端存底給客戶端的公鑰可能被攻擊者替換酪穿。


中間人攻擊流程圖示
PKI

首先明確一點,PKI不是TLS/SSL協(xié)議的一部分晴裹,但是在HTTPS中被济,必須有PKI技術才能保證安全,簡單來說涧团,PKI技術能夠保證客戶端接收到的服務端公鑰只磷,確實是服務端的公鑰,而不是中間人泌绣。
PKI技術的核心是證書喳瓣,證書簽發(fā)流程如下:


證書簽發(fā)流程
證書校驗

需要先明白的兩點:
1、瀏覽器內置了根證書
2赞别、根證書是絕對信任證書

國家發(fā)放身份證,學校發(fā)放畢業(yè)證配乓,類似根證書直接簽發(fā)某網(wǎng)站的CA證書仿滔,學校委托第三方發(fā)放畢業(yè)證惠毁,類似根證書簽發(fā)CA機構證書,由CA機構簽發(fā)某網(wǎng)站的CA證書崎页,根證書只有一個鞠绰,負責所有CA證書的簽發(fā)顯然不切實際,故CA證書一般都是CA機構簽發(fā)的飒焦,兩者場景不同蜈膨。

根證書直接簽發(fā)的CA證書,瀏覽器通過內置的根證書公鑰牺荠,校驗由根證書私鑰簽發(fā)的CA證書即可完成校驗翁巍。
不是根證書簽發(fā)的CA證書,證書中附帶有證書簽發(fā)機構鏈休雌,如上圖某網(wǎng)站的CA證書灶壶,證書中包含簽發(fā)CA機構,CA機構再簽發(fā)二級CA機構杈曲,二級CA機構簽發(fā)某網(wǎng)站的CA證書驰凛,校驗時,先使用二級CA機構的證書校驗此CA證書是由對應的CA機構頒發(fā)担扑,再使用上一級CA機構的證書校驗二級CA機構證書恰响,以此校驗,直到根證書涌献。


證書鏈信任原理

瀏覽器內置根證書和中間CA機構證書斯议,若無CA機構證書鞍爱,或此CA機構不再被信任,則校驗失敗。

HTTPS總結

HTTPS主要由兩層構成喘批,分別是握手層和加密層,握手層位于加密層的上層邦鲫,握手層提供加密層需要的信息(密鑰塊)例获,對于一個HTTPS請求來說,HTTP消息沒有完成握手之前印叁,是不會傳遞到加密層的被冒,一旦握手成功,最終應用層的所有HTTP消息交由加密層進行加密轮蜕。

握手:

1)認證

客戶端和服務端進行密鑰交換之前昨悼,必須通過證書校驗各自的身份,否則就存在中間人攻擊跃洛。認證的核心是PKI技術率触,PKI技術的核心是證書,證書校驗的核心是公開密鑰加密算法汇竭,此算法的核心是離散對數(shù)問題目前無法被破解葱蝗。

2)密碼套件協(xié)商

客戶端和服務端需要協(xié)商出雙方都認可的密碼套件穴张,密碼套件決定了本次連接使用的加密算法、HMAC算法两曼、密鑰協(xié)商算法等各類算法皂甘。

為什么要進行密鑰協(xié)商

客戶端的運營環(huán)境是無法預知的,有各種各樣的操作系統(tǒng)悼凑,操作系統(tǒng)版本偿枕,瀏覽器,瀏覽器版本户辫,比如某些客戶端不支持HMAC-SHA256算法渐夸,在這種情況下,客戶端和服務端需要協(xié)商雙方都支持的HMAC算法寸莫。

什么是密碼套件

一個完整的密碼套件舉例:
TLS_DH_RSA_WITH_AES_CBC_128_SHA
RSA:身份驗證算法捺萌,表示證書中包含的服務器公鑰是RSA公鑰。
DH:表示密鑰協(xié)商算法膘茎。
AES_CBC_128:表示加密算法桃纯,用于保證機密性,本例中使用的是AES對稱加密算法披坏,加密模式是CBC模式态坦,密鑰長度是128位(bit)。
SHA:表示HMAC算法棒拂,用于保證消息完整性伞梯,本例中是HMAC_SHA1算法。

3)密鑰協(xié)商

理解密碼套件后帚屉,密鑰協(xié)商相對就簡單了谜诫,密碼套件決定客戶端和服務端使用何種算法進行密鑰協(xié)商。
為了保證消息的前向安全性攻旦,目前使用最多的密鑰協(xié)商算法就是DHE算法和ECDHE算法喻旷,這兩個算法和服務器的密鑰對關系不大,牢屋,服務器私鑰即使泄漏且预,也不會造成太大的損失。

4)消息完整性校驗

為了避免消息篡改烙无,握手過程中需要一種機制避免消息篡改锋谐,客戶端和服務端協(xié)商出密鑰塊后,代表可以對消息進行機密性和完整性保護了截酷,但首先保護的消息不是應用層消息涮拗,而是握手消息。

  • 客戶端將發(fā)送和接收到的所有握手消息組合在一起啊,然后計算出摘要握手層使用密鑰塊對消息進行機密性和完整性保護多搀,然后發(fā)送給服務端
  • 服務端接收到驗證消息后歧蕉。使用加密塊解密出消息摘要
  • 服務端自行計算發(fā)送和接收的所有消息的消息摘要,比對客戶端的摘要值康铭,比對一致說明握手消息沒有被篡改。

加密:

相比于握手層赌髓,加密層處理相對就簡單了从藤,握手層協(xié)商出加密層需要的算法和算法對應的密鑰,加密層接下來進行加密運算和完整性保護锁蠕。

參數(shù)資料:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末夷野,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荣倾,更是在濱河造成了極大的恐慌悯搔,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舌仍,死亡現(xiàn)場離奇詭異妒貌,居然都是意外死亡,警方通過查閱死者的電腦和手機铸豁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門灌曙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人节芥,你說我怎么就攤上這事在刺。” “怎么了头镊?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵蚣驼,是天一觀的道長。 經(jīng)常有香客問我相艇,道長颖杏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任厂捞,我火速辦了婚禮输玷,結果婚禮上,老公的妹妹穿的比我還像新娘靡馁。我一直安慰自己欲鹏,他們只是感情好,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布臭墨。 她就那樣靜靜地躺著赔嚎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尤误,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天侠畔,我揣著相機與錄音,去河邊找鬼损晤。 笑死软棺,一個胖子當著我的面吹牛,可吹牛的內容都是我干的尤勋。 我是一名探鬼主播喘落,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼最冰!你這毒婦竟也來了瘦棋?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暖哨,失蹤者是張志新(化名)和其女友劉穎赌朋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篇裁,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡沛慢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了茴恰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颠焦。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖往枣,靈堂內的尸體忽然破棺而出伐庭,到底是詐尸還是另有隱情,我是刑警寧澤分冈,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布圾另,位于F島的核電站,受9級特大地震影響雕沉,放射性物質發(fā)生泄漏集乔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一坡椒、第九天 我趴在偏房一處隱蔽的房頂上張望扰路。 院中可真熱鬧,春花似錦倔叼、人聲如沸汗唱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽哩罪。三九已至授霸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間际插,已是汗流浹背碘耳。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留框弛,地道東北人辛辨。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像功咒,于是被迫代替她去往敵國和親愉阎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內容

  • 原文鏈接:http://blog.jobbole.com/86660/ 1 前言 百度已經(jīng)于近日上線了全站 HTT...
    xlhzj閱讀 1,102評論 0 2
  • 網(wǎng)絡七層協(xié)議TCP/IP 五層協(xié)議HTTPS 概念HTTPS 優(yōu)化 網(wǎng)絡七層協(xié)議 OSI是Open System ...
    Johnson杰閱讀 267評論 0 0
  • 一力奋、準備知識 在開始介紹前,需要首先了解一下消息摘要幽七、數(shù)字簽名景殷、數(shù)字證書的知識 1、消息摘要 - Message ...
    浪夠_閱讀 2,723評論 1 2
  • 目錄 一澡屡、https概述 1. 什么是HTTP猿挚? 2. 什么是HTTPS? 3. SSL/TLS...
    出走的流星閱讀 12,826評論 4 27
  • 《蛤蟆的油》是黑澤明的一本佳作驶鹉。 實話實說绩蜻。 “山本先生讓我去銚子拍大海的波濤,我在那里等了三天室埋,終于等來了大風办绝,...
    艽艽艽艽閱讀 473評論 0 3