https運行原理解析

HTTPS可以看作是安全的HTTP囤屹,你可能聽說過關(guān)于HTTPS的一些問題熬甚,比如什么握手,什么證書肋坚,加密之類的等等乡括。

HTTPS為何能保障web的安全,其運行原理是怎樣的智厌,當我們深入了解下去诲泌,其設計的思路對我們其他安全方面的設計也有一定的啟發(fā)作用。

與HTTP的區(qū)別

簡單來說峦剔,HTTPS就是在HTTP的基礎上加了一層安全協(xié)議档礁,用以保障數(shù)據(jù)安全。


      HTTP            HTTPS

    |--------|     |-----------|
    |HTTP    |     |HTTP       |
    |--------|     |-----------|
    |TCP     |     |SSL or TLS |
    |--------|     |-----------|
    |IP      |     |TCP        |
    |--------|     |-----------|
                   |IP         |
                   |-----------|

如上圖吝沫,HTTPS相比HTTP多了一層SSL/TLS呻澜。

HTTPS流程

https流程圖

HTTPS流程包含握手和后續(xù)的數(shù)據(jù)傳輸,握手的目的是為了客戶端與服務端協(xié)商加密算法等參數(shù)惨险。

SSL/TLS基本過程是這樣的:

  1. 客戶端向服務器端所要并驗證證書
  2. 雙方協(xié)定加密算法以及“對話密鑰”
  3. 雙方采用協(xié)商后的“對話密鑰”進行加密通信

前兩步羹幸,被稱作“握手階段”。

握手流程如上面圖中紅色部分辫愉。

  1. 客戶端首次請求服務器栅受,告訴服務器自己支持的協(xié)議版本,支持的加密算法及壓縮算法恭朗,并生成一個隨機數(shù)(client random)告知服務器屏镊。

客戶端需要提供的信息:支持的協(xié)議版本,如TSL1.0版本痰腮;客戶端生成的隨機數(shù)而芥,用以稍后生成“對話密鑰”;支持的加密算法膀值;支持的壓縮方法

  1. 服務器確認雙方使用的加密方法棍丐,并返回給客戶端證書以及一個服務器生成的隨機數(shù)(server random)

服務器需要提供的信息:協(xié)議的版本;加密的算法沧踏;服務器生成的隨機數(shù)歌逢;服務器證書;

  1. 客戶端收到證書后翘狱,首先驗證證書的有效性秘案,然后生成一個新的隨機數(shù)(premaster secret),并使用數(shù)字證書中的公鑰,加密這個隨機數(shù)阱高,發(fā)送給服務器师骗。

客戶端會對服務器下發(fā)的證書進行驗證,驗證通過后讨惩,客戶端會再次生成一個隨機數(shù)(premaster secret)辟癌,然后使用服務器證書中的公鑰進行加密,以及放一個ChangeCipherSpec消息即編碼改變的消息荐捻,還有整個前面所有消息的hash值黍少,進行服務器驗證,然后用新秘鑰加密一段數(shù)據(jù)一并發(fā)送到服務器处面,確保正式通信前無誤厂置。

  1. 服務器接收到加密后的隨機數(shù)后,使用私鑰進行解密魂角,獲取這個隨機數(shù)(premaster secret)
  2. 服務器和客戶端根據(jù)約定的加密方法昵济,使用前面的三個隨機數(shù)(client random, server random, premaster secret),生成“對話密鑰”(session key)野揪,用來加密接下來的整個對話過程访忿。

從上面的流程來看,需要注意一下幾點:

  • 生成對話密鑰需要三個隨機數(shù)斯稳,但整個通話的安全海铆,只取決于第三個隨機數(shù)能不能被破解。因為前兩個隨機數(shù)通信過程中并未加密挣惰,明文通信卧斟,存在被攔截的可能。
  • 握手之后的對話憎茂,使用“對話密鑰”進行加密珍语,采用對稱加密。服務器的公鑰和私鑰只用于加密和解密“對話密鑰”

幾個問題

1??為什么握手過程需要三個隨機數(shù)竖幔,而且安全性只取決于第三個隨機數(shù)板乙?

前兩個隨機數(shù)采用明文傳輸,存在被攔截的風險赏枚,最終對話密鑰安全性只和第三個隨機數(shù)有關(guān)亡驰,那么前兩個隨機數(shù)有沒有必要晓猛?
"不管是客戶端還是服務器饿幅,都需要隨機數(shù),這樣生成的密鑰才不會每次都一樣戒职。由于SSL協(xié)議中證書是靜態(tài)的栗恩,因此十分有必要引入一種隨機因素來保證協(xié)商出來的密鑰的隨機性。

對于RSA密鑰交換算法來說洪燥,pre-master-key本身就是一個隨機數(shù)磕秤,再加上hello消息中的隨機乳乌,三個隨機數(shù)通過一個密鑰導出器最終導出一個對稱密鑰。

pre master的存在在于SSL協(xié)議不信任每個主機都能產(chǎn)生完全隨機的隨機數(shù)市咆,如果隨機數(shù)不隨機汉操,那么pre master secret就有可能被猜出來,那么僅適用pre master secret作為密鑰就不合適了蒙兰,因此必須引入新的隨機因素磷瘤,那么客戶端和服務器加上pre master secret三個隨機數(shù)一同生成的密鑰就不容易被猜出了,一個偽隨機可能完全不隨機搜变,可是是三個偽隨機就十分接近隨機了采缚,每增加一個自由度,隨機性增加的可不是一挠他。"

所以簡單來說扳抽,采用三個隨機數(shù)是為了是最終的對話密鑰更“隨機”。

2??為什么HTTPS的流程設計這么復雜殖侵,只用對稱加密或非對稱加密加密信息不可么贸呢?

不可。

對于對稱加密拢军,存在最大的問題就是贮尉,密鑰的存儲與分發(fā)。由于對稱加密算法加密朴沿,解密過程使用同一個密鑰猜谚,因此,密鑰在傳輸過程中如果被攔截赌渣,那么等同于明文傳輸魏铅。

如果只是簡單的使用非對稱加密,由于公鑰是公開的坚芜,如果服務器返回的加密內(nèi)容被黑客攔截览芳,那么黑客可以直接使用公鑰進行解密,獲取其中的內(nèi)容鸿竖。

因此HTTPS將對稱加密與非對稱加密結(jié)合起來沧竟,先在握手階段采用非對稱加密算法傳輸對話密鑰,確定對話密鑰后缚忧,采用對稱加密算法加密會話內(nèi)容悟泵。

而且,由于對稱加密算法比非對稱加密要快闪水, 所以糕非,采用 '非對稱加密+對稱加密' 這種混合模式比 '非對稱加密+非對稱加密' 這種模式效率也高。可以說是在安全性以及性能方面的綜合考慮朽肥。

3??對于證書的驗證禁筏,客戶端是如何做的?

證書驗證流程

首先衡招,服務器端需要先向CA機構(gòu)申請證書篱昔,申請證書的時候,服務器向CA機構(gòu)提供服務器的公鑰始腾,CA機構(gòu)用自己的CA私鑰對服務器的公鑰進行簽名旱爆,生成數(shù)字摘要,然后將服務器公鑰和數(shù)字簽名打進證書窘茁。

客戶端從服務器拿到證書后怀伦,根據(jù)證書上的CA簽發(fā)機構(gòu),從內(nèi)置的根證書里找到對應的CA機構(gòu)公鑰山林,用此公鑰解開數(shù)字簽名房待,得到摘要,根據(jù)此驗證證書的合法性驼抹。

4??fiddler/charles等可實現(xiàn)對https請求的攔截桑孩,怎么實現(xiàn)的?

首先框冀,fiddler/charles要實現(xiàn)對https的攔截流椒,首先要做的就是,在客戶端安裝fiddler/charles自己導出的證書明也,并信任該證書宣虾。

原理就是,fiddler/charles在客戶端和服務器間充當了中間人的角色温数,在客戶端面前假裝是https服務器绣硝,在真正的https服務器前假裝是客戶端。

流程如下圖:

fiddler攔截https示意圖
  1. fiddler/charles攔截客戶端發(fā)送給https服務器的握手請求撑刺,并偽裝成客戶端向服務器發(fā)送請求進行握手
  2. 服務器發(fā)回響應鹉胖,fiddler/charles獲取到服務器的CA證書,用根證書公鑰進行解密够傍,驗證服務器數(shù)字簽名甫菠,獲取到服務器CA證書的公鑰。然后fiddler/charles偽造自己的CA證書冕屯,冒充服務器證書傳遞給客戶端瀏覽器寂诱。
  3. 與普通過程中客戶端操作相同,客戶端根據(jù)返回的數(shù)據(jù)進行證書校驗愕撰,校驗時由于已提前導入了fiddler/charles中導出的根證書刹衫,所以這里證書校驗會通過。通過校驗后搞挣,客戶端生成 pre_master带迟,用fiddler/charles偽造的證書公鑰加密,并生成https通信用的對稱密鑰 enc_key囱桨。
  4. fiddler/charles攔截到密文仓犬,用自己偽造證書的私鑰解開,得到enc_key舍肠,并將該密鑰使用服務器證書中的公鑰加密并傳遞給真正的https服務器搀继。
  5. https服務器收到密文后,利用自己的私鑰解開該對稱加密密鑰翠语,建立信任叽躯,握手完成,并使用對稱密鑰加密消息肌括,開始通信点骑。
  6. fiddler/charles攔截到服務器發(fā)送的密文,用對稱密鑰解開谍夭,獲得密文黑滴,再次加密,發(fā)送給客戶端紧索。
  7. 同樣袁辈,客戶端向服務器發(fā)送消息時,用對稱密鑰加密珠漂,被fiddler/charles攔截晚缩,解密獲得明文,再次加密媳危,發(fā)送給服務器橡羞。

之后的整個過程,fiddler/charles都將會持有對稱加密的密鑰济舆,因此對于客戶端和服務器來說卿泽,它們相對于是透明的,整個過程是無感知的滋觉。
整個過程的關(guān)鍵在于签夭,客戶端安裝并信任了fiddler/charles導出的根證書,使得fiddler/charles可以在客戶端面前偽裝成服務器椎侠,在服務器面前偽裝成客戶端第租,所以才能攔截https加密數(shù)據(jù)。

總結(jié)一下

  1. HTTPS整個過程采用了對稱加密與非對稱加密兩種加密方式我纪,非對稱加密通過證書方式實現(xiàn)慎宾,用于加密傳輸后續(xù)對稱加密算法用到的密鑰丐吓。對稱加密用于加密報文。這樣做的目的在于趟据,保證安全的同時券犁,提高加解密效率。
  2. 客戶端驗證服務器端的證書汹碱,然后通過協(xié)商采用一種非對稱加密算法加密傳輸對稱加密時所需要的密鑰粘衬,然后使用該密鑰加密傳輸報文。
  3. HTTPS從邏輯上是安全的咳促,但前提是服務器端采用的證書得通過安全機構(gòu)的認證稚新,而且我們得信任該機構(gòu)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跪腹,一起剝皮案震驚了整個濱河市褂删,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冲茸,老刑警劉巖笤妙,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異噪裕,居然都是意外死亡蹲盘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門膳音,熙熙樓的掌柜王于貴愁眉苦臉地迎上來召衔,“玉大人,你說我怎么就攤上這事祭陷〔粤荩” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵兵志,是天一觀的道長醇蝴。 經(jīng)常有香客問我,道長想罕,這世上最難降的妖魔是什么悠栓? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮按价,結(jié)果婚禮上惭适,老公的妹妹穿的比我還像新娘。我一直安慰自己楼镐,他們只是感情好癞志,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著框产,像睡著了一般凄杯。 火紅的嫁衣襯著肌膚如雪错洁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天戒突,我揣著相機與錄音屯碴,去河邊找鬼。 笑死妖谴,一個胖子當著我的面吹牛窿锉,可吹牛的內(nèi)容都是我干的酌摇。 我是一名探鬼主播膝舅,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼窑多!你這毒婦竟也來了仍稀?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤埂息,失蹤者是張志新(化名)和其女友劉穎技潘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體千康,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡享幽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拾弃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片值桩。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖豪椿,靈堂內(nèi)的尸體忽然破棺而出奔坟,到底是詐尸還是另有隱情,我是刑警寧澤搭盾,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布咳秉,位于F島的核電站,受9級特大地震影響鸯隅,放射性物質(zhì)發(fā)生泄漏澜建。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一蝌以、第九天 我趴在偏房一處隱蔽的房頂上張望霎奢。 院中可真熱鬧,春花似錦饼灿、人聲如沸幕侠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽晤硕。三九已至悼潭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舞箍,已是汗流浹背舰褪。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疏橄,地道東北人占拍。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像捎迫,于是被迫代替她去往敵國和親晃酒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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