HTTPS SSL協(xié)議技術原理介紹_第1頁
HTTPS SSL協(xié)議技術原理介紹_第2頁
HTTPS SSL協(xié)議技術原理介紹_第3頁
HTTPS SSL協(xié)議技術原理介紹_第4頁
HTTPS SSL協(xié)議技術原理介紹_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 HTTPS SSL/TLS協(xié)議技術原理介紹目 錄 TOC o 1-3 h z u HYPERLINK l _Toc517173430 一、先澄清幾個術語HTTPS、SSL、TLS PAGEREF _Toc517173430 h 5 HYPERLINK l _Toc517173431 1. “HTTP” 是干嘛用滴? PAGEREF _Toc517173431 h 5 HYPERLINK l _Toc517173432 2. “SSL/TLS” 是干嘛用滴? PAGEREF _Toc517173432 h 5 HYPERLINK l _Toc517173433 3. “HTTPS”的含義 PA

2、GEREF _Toc517173433 h 6 HYPERLINK l _Toc517173434 二、再來說說 HTTP 協(xié)議的特點 PAGEREF _Toc517173434 h 6 HYPERLINK l _Toc517173435 1. HTTP 的版本和歷史 PAGEREF _Toc517173435 h 6 HYPERLINK l _Toc517173436 2. HTTP 和 TCP 之間的關系 PAGEREF _Toc517173436 h 7 HYPERLINK l _Toc517173437 3. HTTP 協(xié)議如何使用 TCP 連接? PAGEREF _Toc517173

3、437 h 7 HYPERLINK l _Toc517173438 三、談談 “對稱加密” 和“非對稱加密”的概念 PAGEREF _Toc517173438 h 8 HYPERLINK l _Toc517173439 1. 啥是 “加密” 和“解密”? PAGEREF _Toc517173439 h 8 HYPERLINK l _Toc517173440 2. 什么是 “對稱加密”? PAGEREF _Toc517173440 h 9 HYPERLINK l _Toc517173441 3. 什么是 “非對稱加密”? PAGEREF _Toc517173441 h 9 HYPERLINK l

4、 _Toc517173442 4. 各自有什么優(yōu)缺點? PAGEREF _Toc517173442 h 10 HYPERLINK l _Toc517173443 四、HTTPS 協(xié)議的需求 PAGEREF _Toc517173443 h 10 HYPERLINK l _Toc517173444 1.兼容性 PAGEREF _Toc517173444 h 11 HYPERLINK l _Toc517173445 2.可擴展性 PAGEREF _Toc517173445 h 11 HYPERLINK l _Toc517173446 3.保密性 PAGEREF _Toc517173446 h 12

5、HYPERLINK l _Toc517173447 4.完整性 PAGEREF _Toc517173447 h 12 HYPERLINK l _Toc517173448 5.真實性 PAGEREF _Toc517173448 h 13 HYPERLINK l _Toc517173449 6.性能 PAGEREF _Toc517173449 h 14 協(xié)議安全和加密越來越引起人們的重視和關注,本文分享Http協(xié)議加密方面的知識。要說清楚 HTTPS 協(xié)議的實現(xiàn)原理,至少需要如下幾個背景知識。大致了解幾個基本術語(HTTPS、SSL、TLS)的含義大致了解 HTTP 和 TCP 的關系(尤其是 “

6、短連接”VS“長連接”)大致了解加密算法的概念(尤其是 “對稱加密與非對稱加密” 的區(qū)別)大致了解 CA 證書的用途 考慮到很多技術菜鳥可能不了解上述背景,先用最簡短的文字描述一下。如果認為不是菜鳥,請略過本章節(jié),直接去看 “HTTPS 協(xié)議的需求”。 先澄清幾個術語HTTPS、SSL、TLS1. “HTTP” 是干嘛用滴? 首先,HTTP 是一個網(wǎng)絡協(xié)議,是專門用來幫你傳輸 Web 內(nèi)容滴。關于這個協(xié)議,就算你不了解,至少也聽說過吧?比如你訪問俺的博客的主頁,瀏覽器地址欄會出現(xiàn)如下的網(wǎng)址/ 俺加了粗體的部分就是指 HTTP 協(xié)議。大部分網(wǎng)站都是通過 HTTP 協(xié)議來傳輸 Web 頁面、以及

7、Web 頁面上包含的各種東東(圖片、CSS 樣式、JS 腳本)。2. “SSL/TLS” 是干嘛用滴? SSL 是洋文 “Secure Sockets Layer” 的縮寫,中文叫做 “安全套接層”。它是在上世紀 90 年代中期,由網(wǎng)景公司設計的。(順便插一句,網(wǎng)景公司不光發(fā)明了 SSL,還發(fā)明了很多 Web 的基礎設施比如“CSS 樣式表” 和“JS 腳本”) 為啥要發(fā)明 SSL 這個協(xié)議捏?因為原先互聯(lián)網(wǎng)上使用的 HTTP 協(xié)議是明文的,存在很多缺點比如傳輸內(nèi)容會被偷窺(嗅探)和篡改。發(fā)明 SSL 協(xié)議,就是為了解決這些問題。 到了 1999 年,SSL 因為應用廣泛,已經(jīng)成為互聯(lián)網(wǎng)上的事

8、實標準。IETF 就在那年把 SSL 標準化。標準化之后的名稱改為 TLS(是 “Transport Layer Security” 的縮寫),中文叫做“傳輸層安全協(xié)議”。 很多相關的文章都把這兩者并列稱呼(SSL/TLS),因為這兩者可以視作同一個東西的不同階段。3. “HTTPS”的含義 解釋完 HTTP 和 SSL/TLS,現(xiàn)在就可以來解釋 HTTPS 啦。咱們通常所說的 HTTPS 協(xié)議,說白了就是 “HTTP 協(xié)議” 和“SSL/TLS 協(xié)議”的組合。你可以把 HTTPS 大致理解為“HTTP over SSL”或“HTTP over TLS”(反正 SSL 和 TLS 差不多)。再

9、來說說 HTTP 協(xié)議的特點 作為背景知識介紹,還需要再稍微談一下 HTTP 協(xié)議本身的特點。HTTP 本身有很多特點,考慮到篇幅有限,俺只談那些和 HTTPS 相關的特點。1. HTTP 的版本和歷史 如今咱們用的 HTTP 協(xié)議,版本號是 1.1(也就是 HTTP 1.1)。這個 1.1 版本是 1995 年底開始起草的(技術文檔是 RFC2068),并在 1999 年正式發(fā)布(技術文檔是 RFC2616)。 在 1.1 之前,還有曾經(jīng)出現(xiàn)過兩個版本 “0.9 和 1.0”,其中的 HTTP 0.9 沒有被廣泛使用,而 HTTP 1.0 被廣泛使用過。 另外,2015年IETF 就要發(fā)布

10、HTTP 2.0 的標準了。2. HTTP 和 TCP 之間的關系 簡單地說,TCP 協(xié)議是 HTTP 協(xié)議的基石HTTP 協(xié)議需要依靠 TCP 協(xié)議來傳輸數(shù)據(jù)。在網(wǎng)絡分層模型中,TCP 被稱為 “傳輸層協(xié)議”,而 HTTP 被稱為 “應用層協(xié)議”。 有很多常見的應用層協(xié)議是以 TCP 為基礎的,比如 “FTP、SMTP、POP、IMAP” 等。 TCP 被稱為 “面向連接” 的傳輸層協(xié)議。關于它的具體細節(jié),俺就不展開了(否則篇幅又失控了)。你只需知道:傳輸層主要有兩個協(xié)議,分別是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 協(xié)議想象成某個水管,發(fā)送端這頭進水,接收端那頭

11、就出水。并且 TCP 協(xié)議能夠確保,先發(fā)送的數(shù)據(jù)先到達(與之相反,UDP 不保證這點)。3. HTTP 協(xié)議如何使用 TCP 連接? HTTP 對 TCP 連接的使用,分為兩種方式:俗稱 “短連接” 和“長連接”(“長連接”又稱 “持久連接”,洋文叫做“Keep-Alive” 或“Persistent Connection”) 假設有一個網(wǎng)頁,里面包含好多圖片,還包含好多外部的CSS 文件和 JS 文件。在 “短連接” 的模式下,瀏覽器會先發(fā)起一個 TCP 連接,拿到該網(wǎng)頁的 HTML 源代碼(拿到 HTML 之后,這個 TCP 連接就關閉了)。然后,瀏覽器開始分析這個網(wǎng)頁的源碼,知道這個頁面

12、包含很多外部資源(圖片、CSS、JS)。 然后針對每一個外部資源,再分別發(fā)起一個個 TCP 連接,把這些文件獲取到本地(同樣的,每抓取一個外部資源后,相應的 TCP 就斷開) 相反,如果是 “長連接” 的方式,瀏覽器也會先發(fā)起一個 TCP 連接去抓取頁面。但是抓取頁面之后,該 TCP 連接并不會立即關閉,而是暫時先保持著(所謂的“Keep-Alive”)。然后瀏覽器分析 HTML 源碼之后,發(fā)現(xiàn)有很多外部資源,就用剛才那個 TCP 連接去抓取此頁面的外部資源。 在 HTTP 1.0 版本,默認使用的是 “短連接”(那時候是 Web 誕生初期,網(wǎng)頁相對簡單,“短連接” 的問題不大); 到了 19

13、95 年底開始制定 HTTP 1.1 草案的時候,網(wǎng)頁已經(jīng)開始變得復雜(網(wǎng)頁內(nèi)的圖片、腳本越來越多了)。這時候再用短連接的方式,效率太低下了(因為建立 TCP 連接是有 “時間成本” 和“CPU 成本”滴)。 所以,在 HTTP 1.1 中,默認采用的是 “Keep-Alive” 的方式。 關于 “Keep-Alive” 的更多介紹,可以參見維基百科詞條。談談 “對稱加密” 和“非對稱加密”的概念1. 啥是 “加密” 和“解密”? 通俗而言,你可以把 “加密” 和“解密”理解為某種互逆的數(shù)學運算。就好比 “加法和減法” 互為逆運算、“乘法和除法”互為逆運算。 “加密”的過程,就是把 “明文”

14、變成 “密文” 的過程;反之,“解密”的過程,就是把 “密文” 變?yōu)椤懊魑摹?。在這兩個過程中,都需要一個關鍵的東東叫做“密鑰”來參與數(shù)學運算。2. 什么是 “對稱加密”? 所謂的 “對稱加密技術”,意思就是說:“加密” 和“解密”使用相同的密鑰。這個比較好理解。就好比你用 7zip 或 WinRAR 創(chuàng)建一個帶密碼(口令)的加密壓縮包。當你下次要把這個壓縮文件解開的時候,你需要輸入同樣的密碼。在這個例子中,密碼 / 口令就如同剛才說的“密鑰”。3. 什么是 “非對稱加密”? 所謂的 “非對稱加密技術”,意思就是說:“加密” 和“解密”使用不同的密鑰。這玩意兒比較難理解,也比較難想到。當年 “非

15、對稱加密” 的發(fā)明,還被譽為 “密碼學” 歷史上的一次革命。 由于篇幅有限,對 “非對稱加密” 這個話題,俺就不展開了。有空的話,再單獨寫一篇掃盲。4. 各自有什么優(yōu)缺點? 看完剛才的定義,很顯然:(從功能角度而言)“非對稱加密”能干的事情比 “對稱加密” 要多。這是 “非對稱加密” 的優(yōu)點。但是 “非對稱加密” 的實現(xiàn),通常需要涉及到 “復雜數(shù)學問題”。所以,“非對稱加密” 的性能通常要差很多(相對于 “對稱加密” 而言)。 這兩者的優(yōu)缺點,也影響到了 SSL 協(xié)議的設計。HTTPS 協(xié)議的需求 花了好多口水,終于把背景知識說完了。下面正式進入正題。先來說說當初設計 HTTPS 是為了滿足哪

16、些需求? 很多介紹 HTTPS 的文章一上來就給你講實現(xiàn)細節(jié)。個人覺得:這是不好的做法。早在 2009 年開博的時候,發(fā)過一篇,其中談到 “WHY 型問題” 的重要性。一上來就給你講協(xié)議細節(jié),你充其量只能知道 WHAT 和 HOW,無法理解 WHY。 俺在前一個章節(jié)講了“背景知識”,在這個章節(jié)講了“需求”,這就有助于你理解:當初為什么要設計成這樣?這就是 WHY 型的問題。兼容性 因為是先有 HTTP 再有 HTTPS。所以,HTTPS 的設計者肯定要考慮到對原有 HTTP 的兼容性。 這里所說的兼容性包括很多方面。比如已有的 Web 應用要盡可能無縫地遷移到 HTTPS;比如對瀏覽器廠商而言

17、,改動要盡可能?。换?“兼容性” 方面的考慮,很容易得出如下幾個結(jié)論:HTTPS 還是要基于 TCP 來傳輸(如果改為 UDP 作傳輸層,無論是 Web 服務端還是瀏覽器客戶端,都要大改,動靜太大了)。單獨使用一個新的協(xié)議,把 HTTP 協(xié)議包裹起來 (所謂的 “HTTP over SSL”,實際上是在原有的 HTTP 數(shù)據(jù)外面加了一層 SSL 的封裝。HTTP 協(xié)議原有的 GET、POST 之類的機制,基本上原封不動)。 打個比方:如果原來的 HTTP 是塑料水管,容易被戳破;那么如今新設計的 HTTPS 就像是在原有的塑料水管之外,再包一層金屬水管。一來,原有的塑料水管照樣運行;二來,用

18、金屬加固了之后,不容易被戳破。可擴展性 前面說了,HTTPS 相當于是 “HTTP over SSL”。 如果 SSL 這個協(xié)議在 “可擴展性” 方面的設計足夠牛逼,那么它除了能跟 HTTP 搭配,還能夠跟其它的應用層協(xié)議搭配。豈不美哉? 現(xiàn)在看來,當初設計 SSL 的人確實比較牛。如今的 SSL/TLS 可以跟很多常用的應用層協(xié)議(比如: FTP、SMTP、POP、Telnet)搭配,來強化這些應用層協(xié)議的安全性。 接著剛才打的比方:如果把 SSL/TLS 視作一根用來加固的金屬管,它不僅可以用來加固輸水的管道,還可以用來加固輸煤氣的管道。保密性 HTTPS 需要做到足夠好的保密性。說到保密

19、性,首先要能夠?qū)剐崽?行話叫 Sniffer)。所謂的 “嗅探”,通俗而言就是監(jiān)視你的網(wǎng)絡傳輸流量。如果你使用明文的 HTTP 上網(wǎng),那么監(jiān)視者通過嗅探,就知道你在訪問哪些網(wǎng)站的哪些頁面。 嗅探是最低級的攻擊手法。除了嗅探,HTTPS 還需要能對抗其它一些稍微高級的攻擊手法比如 “重放攻擊”。完整性 除了 “保密性”,還有一個同樣重要的目標是“確保完整性”。關于“完整性” 這個概念,在之前的博文中大致提過。健忘的同學再去溫習一下。 在發(fā)明 HTTPS 之前,由于 HTTP 是明文的,不但容易被嗅探,還容易被篡改。 舉個例子:比如咱們天朝的網(wǎng)絡運營商都比較流氓,經(jīng)常有網(wǎng)友抱怨說訪問某網(wǎng)站(本來是沒有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論