WEB協議------HTTPS

WEB協議------HTTP協議

WEB協議------HTTPS

HTTPS協議

HTTP的缺點

  • 通信使用明文(不加密),內容可能會被竊聽
  • 不驗證通信方的身份,因此有可能遭遇僞裝
  • 無法證明報文的完整性,所以有可能已遭篡改

解決方法

HTTP+通信加密+證書+完整性保護=HTTPS
證書:證書可證明服務器或客戶端的身份

SSL和TLS

安全套接層俗稱Secure Socket Layer(SSL)是由Netscape Communication於1990年開發,用於保障Word Wide Web(WWW)通訊的安全。主要任務是提供私密性,信息完整性和身份認證。1994年改版爲SSLv2,1995年改版爲SSLv3。
Transport Layer Security(TLS)標準協議由IETF於1999年頒佈,整體來說TLS非常類似與SSLv3,只是對SSLv3做了增加和修改。

SSL協議介紹

SSL是一個不依賴於平臺和運用程序的協議,用於保障TCP-based運用安全,SSL在TCP和運用層之間,就像運用層連接到TCP連接的一個插口。

SSL加密知名協議

  1. HTTP over SSL:加密網頁流量是設計SSL的初衷,HTTP也是第一個使用SSL保障安全的運用層協議。當Netscape在它的Navigator裏邊運用HTTP over SSL的時候,它使用**https://來標識HTTP over SSL,因此HTTP over SSL就以HTTPS的格式被我們熟知。後來HTTPS在RFC2818被標準化。HTTPS工作在TCP 443號端口,但是普通的HTTP默認工作在TCP 80 端口。
  2. Email over SSL: 類似於HTTP over SSL,郵件協議例如:SMTP、POP3和IMAP也能支持SSL。SMTP over TLS的標準化文檔在RFC2487,POP3和IMAP over TLS的標準化文檔在RFC2596。

SSL建立的兩大階段

第一階段:HandShake phase(握手階段)
A.協商加密算法
B.認證服務器
C.建立用於加密和MAC(Message Authentication Code)用的密鑰
(類似於IPSec VPN ISAKMP的作用)
第二階段:Secure data transfer phase(安全的數據傳輸階段)在已經建立的SSL連接裏安全的傳輸數據(類似於IPSec VPN ESP的作用

SSL三大協議

  1. Record protocol
    記錄協議是主要的封裝協議,它傳輸不同的高層協議和運用層數據。它從上層用戶協議獲取信息並且傳輸,執行需要的任務,例如:分片,壓縮,運用MAC和加密,並且傳輸最終數據。它也執行反向行爲,解密,確認,解壓縮和重組裝來獲取數據。記錄協議包括四個上層客戶協議,Hanshake(握手)協議,Alert(告警)協議,Change Cipher Spec(修改密鑰說明)協議,Application Data(運用層數據)協議
  2. Handshake protocols
    握手協議負責建立和恢復SSL會話。用於建立SSL客戶和服務器之間的連接,這個過程由如下這幾個主要任務組成:1、Negotiate security capabilities(協商安全能力):處理協議版本和安全加密算法。2、Authentication(認證):客戶認證服務器,當然服務器也可以認證客戶。3、Key exchange(密鑰交換):雙方交換用於產生master keys(主密鑰)的密鑰或信息。4、Key derivation(密鑰引出):雙方引出master secret(主祕密),這個主祕密用於產生用於數據加密和MAC的密鑰。
    它由三個子協議組成。
    A.Handshake Protocol(握手協議)協商SSL會話的安全參數
    B.Alert Protocol(告警協議)一個事務管理協議,用於在SSL對等體間傳遞告警信息。告警信息包括:
    a.errors(錯誤)
    b.exception condition(異常狀況) 例如:錯誤的MAC或者解密失敗
    c.notification(通告) 例如:會話終止
    C.Change Cipher Spec Protocol (修改密鑰說明) 協議,用於在後續記錄中通告密鑰策略轉換。
  3. Application Data Protocol
    運用程序數據協議處理上層運用程序數據的傳輸。

HTTP認證

HTTP使用的認證方式

  • BASIC認證(基本認證)
  • DIGEST認證(摘要認證)
  • SSL客戶端認證
  • FormBase認證(基於表單認證)
    此外,還有Windows統一認證(Keberos認證、NTLM認證)

BASIC認證

從HTTP/1.0就定義的認證方式。即便是現在仍有一部分的網站會使用這種認證方式。是Web服務器與通信客戶端之間進行的認證方式。

DIGEST認證

爲彌補BASIC認證存在的弱點,從HTTP/1.1起就有了DIGEST認證,DIGEST認證同樣使用質詢/響應的方式(challenge/response),但不會像BASIC認證那樣直接發送明文密碼。
所謂質詢響應方式是指,一開始一方會先發送認證要求給另一方,接着使用從另一方那接收到的質詢碼計算生成響應碼。最後將響應碼返回給對方進行認證的方式。

SSL客戶端認證

是藉由HTTPS的客戶端證書完成認證的方式。憑藉客戶端證書認證,服務器可確認訪問是否來自己登錄的客戶端。

基於表單認證(最主流的方式)

基於表單的認證方法並不是在HTTP協議中定義的。客戶端會向服務器上的Web應用程序發送登錄信息(Credential),按登錄信息的驗證結果認證。
根據Web應用程序的實際安裝,提供的用戶界面及認證方式也各不相同。
淘寶,京東的登陸等基本上是表單認證。

WEB認證主要採用表單認證

由於使用上的便利性及安全性問題,HTTP協議標準提供的BASIC認證和DIGEST認證幾乎不怎麼使用。另外,SSL客戶端認證雖然具有高度的安全等級,但因爲導入及維持費用等問題,還尚未普及。
比如SSH和FTP協議,服務器和客戶端之間的認證是符合標準規範的,並且滿足了最基本的功能需求上的安全使用級別,因此這些協議的認證可以拿來直接使用。但是對於Web網站的認證功能,能夠滿足其安全使用級別的標準規範並不存在,所以只好使用由Web應用程序各自實現基於表單的認證方式。

Session管理及Cookie應用

基於表單認證的標準規範尚未有定論,一般使用Cookie來管理Session(會話)。
基於表單認證本身是通過服務器端的Web應用,將客戶端發送過來的用戶ID和密碼與之前登錄過的信息做匹配來進行認證的。
但鑑於HTTP是無狀態協議,之前已認證成功的用戶狀態無法通過協議層保存下來。即,無法實現狀態管理,因此即使當該用戶下一次繼續訪問,也無法區分他與其他的用戶。於是我們會使用Cookie來管理Session,以彌補HTTP協議中不存在的狀態管理功能。

CGI

Common Gateway Interface,通用網關接口,是指Web服務器在接收到客戶端發過來的請求後轉發給程序的一組機制。在CGI的作用下,程序會對請求內容做出相應的動作,比如創建HTML等動態內容。
使用CGI的程序叫做CGI程序,通常是由Perl、PHP、Python、Ruby和C等編程語言編寫而成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章