HTTPS的協(xié)議需求與密鑰交換過程

協(xié)議需求:

搞這么個協(xié)議是為了干嘛厂庇,這個協(xié)議需要具備什么樣的特性繁堡。前三點非常重要,也是HTTPS協(xié)議的主要作用伯诬。

1.對內容進行加密
建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩?br> SSL/TLS協(xié)議進行加解密檬贰,且通常采用的非對稱加密算法為RSA姑廉。
公鑰加密缺亮,私鑰解密翁涤。

2.能夠進行身份認證
確認對方的真實性。
證書由受信任數(shù)字證書認證機構(Certificate Authority, CA)所頒發(fā)的萌踱,就認為對方是真的葵礼。
比如,12306官網(wǎng)的購票入口采用https協(xié)議并鸵,但其證書是由默認不受信任的CA所頒發(fā)的鸳粉,這個機構叫SRCA,呵呵呵园担。

中鐵數(shù)字證書認證中心(中鐵CA届谈,SRCA

你也可以手動添加它為受信任的,但是至少默認是不受信任的弯汰。因此艰山,在默認情況下,Chrome會認為這不是真正的12306官網(wǎng)的購票入口咏闪,返回錯誤為:

12306

雖然它確實是真的曙搬,但是誰讓它是個野雞CA呢。

3.能保證數(shù)據(jù)完整性
防止內容被第三方冒充或者篡改鸽嫂。
數(shù)字摘要是采用單項Hash函數(shù)將需要加密的明文“摘要”成一串固定長度(128位)的密文纵装,這一串密文又稱為數(shù)字指紋(fingerprint),它有固定的長度据某,而且不同的明文摘要成密文橡娄,其結果總是不同的,而同樣的明文其摘要必定一致癣籽⊥彀Γ“數(shù)字摘要“是https能確保數(shù)據(jù)完整性和防篡改的根本原因扳还。
所以只要對內容稍有改動,算出來的指紋就和原來的指紋不一樣了橱夭,這樣就可以知道內容已經(jīng)被篡改過氨距,不可信了。

4.需要具備兼容性
基于兼容性的考慮棘劣,可以得出的結論是:

  • HTTPS 還是要基于 TCP 來傳輸(如果改為 UDP 作傳輸層俏让,無論是 Web 服務端還是瀏覽器客戶端,都要大改茬暇,動靜太大了)
  • 單獨使用一個新的協(xié)議首昔,把 HTTP 協(xié)議包裹起來(所謂的“HTTP over SSL”,實際上是在原有的 HTTP 數(shù)據(jù)外面加了一層 SSL 的封裝糙俗。HTTP 協(xié)議原有的 GET勒奇、POST 之類的機制,基本上原封不動)

5.需要具備可擴展性
前面說了巧骚,HTTPS 相當于是“HTTP over SSL”赊颠。  
如果 SSL 這個協(xié)議在“可擴展性”方面的設計足夠牛逼劈彪,那么它除了能跟 HTTP 搭配竣蹦,還能夠跟其它的應用層協(xié)議搭配。豈不美哉沧奴?  
現(xiàn)在看來痘括,當初設計 SSL 的人確實比較牛。如今的 SSL/TLS 可以跟很多常用的應用層協(xié)議(比如:FTP滔吠、SMTP纲菌、POP、Telnet)搭配疮绷,來強化這些應用層協(xié)議的安全性翰舌。

6.需要考慮性能
為了確保性能,SSL 的設計者至少要考慮如下幾點:

  • 如何選擇加密算法
    “對稱”or“非對稱”
  • 如何兼顧 HTTP 采用的“短連接”TCP 方式
    SSL 是在1995年之前開始設計的矗愧,那時候的 HTTP 版本還是 1.0灶芝,默認使用的是“短連接”的 TCP 方式(即,默認不啟用 Keep-Alive)

Q&A

一些問題唉韭,答疑解惑夜涕。

1. 為什么需要身份認證,單純用“非對稱加密算法”的風險属愤。

風險就是:中間人攻擊女器。

  • 沒有被攻擊之前,應該是這樣的:
    第1步 網(wǎng)站服務器先基于“非對稱加密算法”住诸,隨機生成一個“密鑰對”(為敘述方便驾胆,稱之為“k1 和 k2”)涣澡。因為是隨機生成的,目前為止丧诺,只有網(wǎng)站服務器才知道 k1 和 k2入桂。
    第2步 網(wǎng)站把 k1 保留在自己手中,把 k2 用【明文】的方式發(fā)送給訪問者的瀏覽器驳阎。因為 k2 是明文發(fā)送的抗愁,自然有可能被偷窺。不過不要緊呵晚。即使偷窺者拿到 k2蜘腌,也【很難】根據(jù) k2 推算出 k1(這一點是由“非對稱加密算法”從數(shù)學上保證的)。
    第3步 瀏覽器拿到 k2 之后饵隙,先【隨機生成】第三個對稱加密的密鑰(簡稱 k)撮珠。然后用 k2 加密 k,得到 k'(k' 是 k 的加密結果)瀏覽器把 k' 發(fā)送給網(wǎng)站服務器金矛。由于 k1 和 k2 是成對的芯急,所以只有 k1 才能解密 k2 的加密結果。因此這個過程中绷柒,即使被第三方偷窺志于,第三方也【無法】從 k' 解密得到 k涮因。
    第4步 網(wǎng)站服務器拿到 k' 之后废睦,用 k1 進行解密,得到 k至此养泡,瀏覽器和網(wǎng)站服務器就完成了密鑰交換嗜湃,雙方都知道 k,而且【貌似】第三方無法拿到 k澜掩。然后购披,雙方就可以用 k 來進行數(shù)據(jù)雙向傳輸?shù)募用堋?/li>
  • 被攻擊之后,變成這樣的了:
    第1步 這一步跟原先一樣——服務器先隨機生成一個“非對稱的密鑰對”k1 和 k2(此時只有網(wǎng)站知道 k1 和 k2)肩榕。
    第2步 當網(wǎng)站發(fā)送 k2 給瀏覽器的時候刚陡,攻擊者截獲 k2,保留在自己手上株汉。然后攻擊者自己生成一個【偽造的】密鑰對(以下稱為 pk1 和 pk2)筐乳。攻擊者把 pk2 發(fā)送給瀏覽器。
    第3步 瀏覽器收到 pk2乔妈,以為 pk2 就是網(wǎng)站發(fā)送的蝙云。瀏覽器不知情,依舊隨機生成一個對稱加密的密鑰 k路召,然后用 pk2 加密 k勃刨,得到密文的 k'瀏覽器把 k' 發(fā)送給網(wǎng)站波材。(以下是關鍵)發(fā)送的過程中,再次被攻擊者截獲身隐。因為 pk1 pk2 都是攻擊者自己生成的廷区,所以攻擊者自然就可以用 pk1 來解密 k' 得到 k然后,攻擊者拿到 k 之后贾铝,用之前截獲的 k2 重新加密躲因,得到 k'',并把 k'' 發(fā)送給網(wǎng)站忌傻。
    第4步 網(wǎng)站服務器收到了 k'' 之后大脉,用自己保存的 k1 可以正常解密,所以網(wǎng)站方面不會起疑心水孩。至此镰矿,攻擊者完成了一次漂亮的偷梁換柱,而且讓雙方都沒有起疑心俘种。
  • 所以秤标,為什么會被攻擊?
    因為缺乏可靠的身份認證宙刘。
  • 如何實現(xiàn)可靠的身份認證苍姜。
    有兩種方式:
    1.基于某些“私密的共享信息”
    2.基于雙方都信任的“公證人”
    對于 SSL/TLS 的應用場景,由于雙方(客戶端和服務器)通常都是互不相識的悬包,顯然不可能采用第一種方式(私密的共享信息)衙猪,而只能采用第二種方式(依賴雙方都信任的“公證人”)〔冀  
    那么垫释,誰來充當這個公證人?
    當然是第三方:CA

2.基于 CA 證書進行的密鑰交換

第1步(這是“一次性”的準備工作) 網(wǎng)站方面首先要花一筆銀子撑瞧,在某個 CA 那里購買一個數(shù)字證書棵譬。該證書通常會對應幾個文件:其中一個文件包含公鑰,還有一個文件包含私鑰预伺。此處的“私鑰”订咸,相當于“方案2”里面的 k1;而“公鑰”類似于“方案2”里面的 k2酬诀。網(wǎng)站方面必須在 Web 服務器上部署這兩個文件脏嚷。所謂的“公鑰”,顧名思義就是可以公開的 key料滥;而所謂的“私鑰”就是私密的 key然眼。其實前面已經(jīng)說過了,這里再嘮叨一下:“非對稱加密算法”從數(shù)學上確保了——即使你知道某個公鑰葵腹,也很難(不是不可能高每,是很難)根據(jù)此公鑰推導出對應的私鑰屿岂。
第2步 當瀏覽器訪問該網(wǎng)站,Web 服務器首先把包含公鑰的證書發(fā)送給瀏覽器鲸匿。
第3步 瀏覽器驗證網(wǎng)站發(fā)過來的證書爷怀。如果發(fā)現(xiàn)其中有詐,瀏覽器會提示“CA 證書安全警告”带欢。由于有了這一步运授,就大大降低了(注意:是“大大降低”,而不是“徹底消除”)前面提到的“中間人攻擊”的風險乔煞。為啥瀏覽器能發(fā)現(xiàn) CA 證書是否有詐吁朦?因為正經(jīng)的 CA 證書,都是來自某個權威的 CA渡贾。如果某個 CA 足夠權威逗宜,那么主流的操作系統(tǒng)(或瀏覽器)會內置該 CA 的“根證書”。(比如 Windows 中就內置了幾十個權威 CA 的根證書)因此空骚,瀏覽器就可以利用系統(tǒng)內置的根證書纺讲,來判斷網(wǎng)站發(fā)過來的 CA 證書是不是某個 CA 頒發(fā)的。(關于“根證書”和“證書信任鏈”的概念囤屹,請參見《數(shù)字證書及CA的掃盲介紹》)
第4步 如果網(wǎng)站發(fā)過來的 CA 證書沒有問題熬甚,那么瀏覽器就從該 CA 證書中提取出“公鑰”。然后瀏覽器隨機生成一個“對稱加密的密鑰”(以下稱為 k)肋坚。用 CA 證書的公鑰加密 k乡括,得到密文 k'瀏覽器把 k' 發(fā)送給網(wǎng)站。
第5步 網(wǎng)站收到瀏覽器發(fā)過來的 k'冲簿,用服務器上的私鑰進行解密粟判,得到 k。至此峦剔,瀏覽器和網(wǎng)站都擁有 k,“密鑰交換”大功告成啦角钩。

總結:
1.client和server之間吝沫,首先通過CA證書的公鑰/密鑰同步對稱密鑰,之后信息的傳輸用對稱密鑰進行加解密递礼。
2.client不會再順便接受一個公鑰了惨险,這個公鑰必須是CA認證的才行。所以這時中間人截獲了CA證書的公鑰就沒毛用了脊髓,就算cilent用證書公鑰加密一個k辫愉,然后發(fā)送給它,它也沒辦法解開将硝,因為它沒CA證書的私鑰恭朗。
3.所以突破口就在CA證書上了屏镊。

值得參考的鏈接

背景知識、協(xié)議的需求痰腮、設計的難點
https://program-think.blogspot.com/2014/11/https-ssl-tls-1.html
數(shù)字證書與認證機構CA
https://program-think.blogspot.com/2010/02/introduce-digital-certificate-and-ca.html
非對稱VS對稱而芥,身份認證
https://program-think.blogspot.com/2014/11/https-ssl-tls-2.html
詳解https是如何確保安全的
http://www.wxtlife.com/2016/03/27/%E8%AF%A6%E8%A7%A3https%E6%98%AF%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E5%AE%89%E5%85%A8%E7%9A%84%EF%BC%9F/
相關異常javax.net.ssl.SSLHandshakeException:
http://www.reibang.com/p/7c1bc2daef8d

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市膀值,隨后出現(xiàn)的幾起案子棍丐,更是在濱河造成了極大的恐慌,老刑警劉巖沧踏,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件歌逢,死亡現(xiàn)場離奇詭異,居然都是意外死亡翘狱,警方通過查閱死者的電腦和手機趋翻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒蟆,“玉大人踏烙,你說我怎么就攤上這事±龋” “怎么了讨惩?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長寒屯。 經(jīng)常有香客問我荐捻,道長,這世上最難降的妖魔是什么寡夹? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任处面,我火速辦了婚禮,結果婚禮上菩掏,老公的妹妹穿的比我還像新娘魂角。我一直安慰自己,他們只是感情好智绸,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布野揪。 她就那樣靜靜地躺著,像睡著了一般瞧栗。 火紅的嫁衣襯著肌膚如雪斯稳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天迹恐,我揣著相機與錄音挣惰,去河邊找鬼。 笑死,一個胖子當著我的面吹牛憎茂,可吹牛的內容都是我干的珍语。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼唇辨,長吁一口氣:“原來是場噩夢啊……” “哼廊酣!你這毒婦竟也來了?” 一聲冷哼從身側響起赏枚,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤亡驰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后饿幅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凡辱,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年栗恩,在試婚紗的時候發(fā)現(xiàn)自己被綠了透乾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡磕秤,死狀恐怖乳乌,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情市咆,我是刑警寧澤汉操,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站蒙兰,受9級特大地震影響磷瘤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜搜变,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一认烁、第九天 我趴在偏房一處隱蔽的房頂上張望内边。 院中可真熱鬧洛搀,春花似錦斤贰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至愉耙,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拌滋,已是汗流浹背朴沿。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人赌渣。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓魏铅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親坚芜。 傳聞我的和親對象是個殘疾皇子览芳,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容

  • 需求 “人們最初設計互聯(lián)網(wǎng)時,很少考慮到安全鸿竖。這樣的結果是沧竟,核心通信協(xié)議本質上是不安全的,只能依靠所有參與方的誠信...
    thinkq閱讀 999評論 0 3
  • 目錄 準備 分析2.1. 三次握手2.2. 創(chuàng)建 HTTP 代理(非必要)2.3. TLS/SSL 握手2.4. ...
    RunAlgorithm閱讀 37,892評論 12 117
  • 一缚忧、作用 不使用SSL/TLS的HTTP通信悟泵,就是不加密的通信。所有信息明文傳播闪水,帶來了三大風險糕非。 (1)竊聽風險...
    XLsn0w閱讀 10,485評論 2 44
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb閱讀 3,514評論 0 13
  • 妖妖詩畫& 《我們寂寞的聊著寂寞》 文/顏克 傍晚的農村 高高低低的電線上 幾只麻雀談論著...
    顏克閱讀 190評論 0 1