比較HTTP與HTTPS以及加密

1、HTTP是什麼

首先,HTTP 是一個網絡應用層協議,是專門用來幫你傳輸 Web 內容。

2、HTTP 和 TCP 之間的關係

在網絡分層模型中,TCP 被稱爲“傳輸層協議”,而 HTTP 被稱爲“應用層協議”。

傳輸層主要有兩個協議,分別是 TCP 和 UDP。TCP 比 UDP 更可靠。你可以把 TCP 協議想象成某個水管,發送端這頭進水,接收端那頭就出水。並且 TCP 協議能夠確保,先發送的數據先到達(UDP 不保證這點)。

簡單地說,HTTP 協議需要依靠 TCP 協議來傳輸數據。

3、HTTP 協議如何使用 TCP 連接?

HTTP 對 TCP 連接的使用,分爲兩種方式:俗稱“短連接”和“長連接”。

在“短連接”的模式下,瀏覽器會先發起一個 TCP 連接,拿到該網頁的 HTML 源代碼(拿到 HTML 之後,這個 TCP 連接就關閉了)。然後,瀏覽器開始分析這個網頁的源碼,知道這個頁面包含很多外部資源(圖片、CSS、JS)。然後針對【每一個】外部資源,再分別發起一個個 TCP 連接,把這些文件獲取到本地(同樣的,每抓取一個外部資源後,相應的 TCP 就斷開)

如果是“長連接”的方式,瀏覽器也會先發起一個 TCP 連接去抓取頁面。但是抓取頁面之後,該 TCP 連接並不會立即關閉,而是暫時先保持着(所謂的“Keep-Alive”)。然後瀏覽器分析 HTML 源碼之後,發現有很多外部資源,就用剛纔那個 TCP 連接去抓取此頁面的外部資源。

在 HTTP 1.0 版本,【默認】使用的是“短連接”(那時候是 Web 誕生初期,網頁相對簡單,“短連接”的問題不大);
到了1995年底開始制定 HTTP 1.1 草案的時候,網頁已經開始變得複雜(網頁內的圖片、腳本越來越多了)。這時候再用短連接的方式,效率太低下了。所以,在 HTTP 1.1 中,【默認】採用的是“Keep-Alive”的方式。

4、“SSL/TLS”又是什麼?

SSL(Secure Sockets Layer),中文叫做“安全套接層”。它是在上世紀90年代中期,由網景公司設計的。
爲啥要發明 SSL 這個協議捏?因爲原先互聯網上使用的 HTTP 協議是明文的,存在很多缺點——比如傳輸內容會被偷窺(嗅探)和篡改。發明 SSL 協議,就是爲了解決這些問題。
後來SSL 因應用廣泛,便被標準化。且名稱改爲 TLS(Transport Layer Security),中文叫做“傳輸層安全協議”。
很多相關的文章都把這兩者並列稱呼(SSL/TLS),因爲這兩者可以視作同一個東西的不同階段。

5、“HTTPS”是啥意思?

解釋完 HTTP 和 SSL/TLS,現在就可以來解釋 HTTPS 啦。咱們通常所說的 HTTPS 協議,說白了就是“HTTP 協議”和“SSL/TLS 協議”的組合。

你可以把 HTTPS 大致理解爲——“HTTP over SSL/TLS”
Https的作用:
身份認證 認證用戶和服務器,確保數據發送到正確的客戶機和服務器;(通道端可靠)
內容加密 建立一個信息安全通道,來保證數據不被竊聽;(通道加密)
數據完整性 防止內容被第三方篡改;(避免通道劫持)

6、HTTPS和HTTP的區別
1、HTTPS協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、HTTP是超文本傳輸協議,信息是明文傳輸,HTTPS則是具有安全性的SSL加密傳輸協議。
3、HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者使用的端口是80,後者使用的端口是443。
4、HTTPS的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比HTTP協議安全。


1、“對稱加密”

所謂的“對稱加密技術”,意思就是說:“加密”和“解密”使用【相同的】密鑰。
由於其速度快,對稱性加密通常在消息發送方需要加密大量數據時使用。所以也稱這種加密算法爲密鑰加密或單密鑰加密。
常見的對稱加密有:DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA。
對稱安全性不僅取決於加密算法本身,密鑰管理的安全性更是重要。因爲加密和解密都使用同一個密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問題。

2、“非對稱加密”

所謂的“非對稱加密技術”,意思就是說:“加密”和“解密”使用【不同的】密鑰。
與對稱加密算法不同,非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey);並且加密密鑰和解密密鑰是成對出現的。通過這種算法得到的密鑰對能保證在世界範圍內是唯一的。
非對稱加密算法在加密和解密過程使用了不同的密鑰,非對稱加密也稱爲公鑰加密,在密鑰對中,其中一個密鑰是對外公開的,所有人都可以獲取到, 稱爲公鑰,其中一個密鑰是不公開的稱爲私鑰。
非對稱加密算法對加密內容的長度有限制,不能超過公鑰長度。比如現在常用的公鑰長度是 2048 位,意味着待加密內容不能超過 256 個字節。

如果只是單方面採用非對稱性加密算法,其實有兩種方式,用於不同用處:

第一種是簽名,使用私鑰加密,公鑰解密。用於讓所有公鑰所有者驗證私鑰所有者的身份並且用來防止私鑰所有者發佈的內容被篡改。但是不用來保證內容不被他人獲得。
只要有發送方公開密鑰的人都可以驗證簽名的正確性。
第二種是加密,用公鑰加密,私鑰解密。用於向公鑰所有者發佈信息,這個信息可能被他人篡改,但是無法被他人獲得。如果甲想給乙發一個安全的保密的數據,那麼應該甲乙各自有一個私鑰,甲先用乙的[公鑰加密]這段數據,再用自己的私鑰加密這段加密後的數據。最後再發給乙,這樣確保了內容即不會被讀取,也不會被篡改。
任何知道接收方公鑰的人都可以向接收方發送消息。
總結:公鑰通常用於加密消息、驗證數字簽名(即解密)。
3、各自有啥優缺點?

看完剛纔的定義,很顯然:(從功能角度而言)“非對稱加密”能幹的事情比“對稱加密”要多。這是“非對稱加密”的優點。但是“非對稱加密”的實現,通常需要涉及到“複雜數學問題”。所以,“非對稱加密”的性能通常要差很多(相對於“對稱加密”而言)。
這兩者的優缺點,也影響到了 SSL 協議的設計。

4、摘要算法

  數字摘要是採用單項Hash函數將需要加密的明文“摘要”成一串固定長度(128位)的密文,這一串密文又稱爲數字指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,而同樣的明文其摘要必定一致。“數字摘要“是https能確保數據完整性和防篡改的根本原因。

驗證
1、數字簽名
數字簽名技術就是對“非對稱密鑰加解密”和“數字摘要“兩項技術的應用,它將摘要信息用發送者的私鑰加密,與原文一起傳送給接收者。接收者只有用發送者的公鑰才能解密被加密的摘要信息,然後用HASH函數對收到的原文產生一個摘要信息,與解密的摘要信息對比。如果相同,則說明收到的信息是完整的,在 傳輸過程中沒有被修改,否則說明信息被修改過,因此數字簽名能夠驗證信息的【完整性】。
數字簽名的過程如下:明文 –> hash運算 –> 摘要 –> 私鑰加密 –> 數字簽名
數字簽名驗證的過程如下:數字簽名 –> 公鑰解密 –> 摘要 –> hash原文 –> 對比摘要

數字簽名有兩種功效:

確定消息確實是由發送方簽名並發出來的,因爲別人假冒不了發送方的簽名。(來源可靠)
確定消息完整未篡改(完整性)。
注意:數字簽名只能驗證數據的完整性,數據本身(即原文)是否加密不屬於數字簽名的控制範圍
2、數字證書 
  爲什麼要有數字證書?
  對於請求方來說,它怎麼能確定它所得到的公鑰一定是從目標主機那裏發佈的,而且沒有被篡改過呢?亦或者請求的目標主機本本身就從事竊取用戶信息的不正當行爲呢?這時候,我們需要有一個權威的值得信賴的第三方機構(一般是由政府審覈並授權的機構)來統一對外發放主機機構的公鑰,只要請求方這種機構獲取公鑰,就避免了上述問題的發生。
  數字證書的頒發過程
  用戶首先產生自己的密鑰對,並將公鑰及部分個人身份信息傳送給認證中心。認證中心在覈實身份後,將執行一些必要的步驟,以確信請求確實由用戶發送而來,然後,認證中心將發給用戶一個數字證書,該證書內包含用戶的個人信息和他的公鑰信息,同時還附有認證中心的簽名信息(根證書私鑰簽名)。用戶就可以使用自己的數字證書進行相關的各種活動。數字證書由獨立的證書發行機構發佈,數字證書各不相同,每種證書可提供不同級別的可信度。
  證書包含哪些內容
證書頒發機構的名稱
證書本身的數字簽名
證書持有者公鑰
證書籤名用到的Hash算法

3、驗證證書的有效性   
瀏覽器默認都會內置CA根證書,其中根證書包含了CA的公鑰。
1.證書頒發的機構是僞造的:瀏覽器不認識,直接認爲是危險證書
2.證書頒發的機構是確實存在的,於是根據CA名,找到對應內置的CA根證書、CA的公鑰。用CA的公鑰,對僞造的證書的摘要進行解密,發現解不了,認爲是危險證書。
3.對於篡改的證書,使用【證書持有者公鑰】對數字簽名進行解密得到摘要A,然後再根據簽名的Hash算法計算出證書的摘要B,對比A與B,若相等則正常,若不相等則是被篡改過的。
4.證書可在其過期前被吊銷,通常情況是該證書的私鑰已經失效。較新的瀏覽器如Chrome、Firefox、Opera和Internet Explorer都實現了在線證書狀態協議(OCSP)以排除這種情形:瀏覽器將網站提供的證書的序列號通過OCSP發送給證書頒發機構,後者會告訴瀏覽器證書是否還是有效的。

原文鏈接:http://www.jianshu.com/p/a677fecec927

發佈了26 篇原創文章 · 獲贊 7 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章