HTTPS與SSL(一)

1. HTTPS

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTPS,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通訊方法,現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面

HTTPS和HTTP的區別

  一、https協議需要到ca申請證書,一般免費證書很少,需要交費。

  二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

  三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。

四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

https的實現原理

有兩種基本的加解密算法類型

1)對稱加密:密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等;

2)非對稱加密:密鑰成對出現(且根據公鑰無法推知私鑰,根據私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密,私鑰加密需要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。

 

 https的通信過程

HTTPS與SSL(一) - Magicc - 異次元藍客
 

圖2.1 https的通信過程

 https通信的優點

 1)客戶端產生的密鑰只有客戶端和服務器端能得到;

2)加密的數據只有客戶端和服務器端才能得到明文;

3)客戶端到服務端的通信是安全的。 

HTTPS解決的問題

一、信任主機的問題.

  採用https的服務器必須從CA (Certificate Authority)申請一個用於證明服務器用途類型的證書。該證書只有用於對應的服務器的時候,客戶端纔信任此主機。所以目前所有的銀行系統網站,關鍵部分應用都是https 的。客戶通過信任該證書,從而信任了該主機。其實這樣做效率很低,但是銀行更側重安全。這一點對我們沒有任何意義,我們的服務器,採用的證書不管是自己發佈的還是從公衆的地方發佈的,其客戶端都是自己人,所以我們也就肯定信任該服務器。

二、通訊過程中的數據的泄密和被篡改

  1. 一般意義上的https,就是服務器有一個證書。

  a) 主要目的是保證服務器就是他聲稱的服務器,這個跟第一點一樣。

  b) 服務端和客戶端之間的所有通訊,都是加密的。

  i. 具體講,是客戶端產生一個對稱的密鑰,通過服務器的證書來交換密鑰,即一般意義上的握手過程。

  ii. 接下來所有的信息往來就都是加密的。第三方即使截獲,也沒有任何意義,因爲他沒有密鑰,當然篡改也就沒有什麼意義了。

  2. 少許對客戶端有要求的情況下,會要求客戶端也必須有一個證書。

  a) 這裏客戶端證書,其實就類似表示個人信息的時候,除了用戶名/密碼,還有一個CA 認證過的身份。因爲個人證書一般來說是別人無法模擬的,所有這樣能夠更深的確認自己的身份。

b) 目前少數個人銀行的專業版是這種做法,具體證書可能是拿U盤(即U盾)作爲一個備份的載體

 

理解誤區

  它的安全保護依賴瀏覽器的正確實現以及服務器軟件、實際加密算法的支持.

  一種常見的誤解是“銀行用戶在線使用https:就能充分徹底保障他們的銀行卡號不被偷竊。”實際上,與服務器的加密連接中能保護銀行卡號的部分,只有用戶到服務器之間的連接及服務器自身。並不能絕對確保服務器自己是安全的,這點甚至已被攻擊者利用,常見例子是模仿銀行域名的釣魚攻擊。少數罕見攻擊在網站傳輸客戶數據時發生,攻擊者會嘗試竊聽傳輸中的數據。

商業網站被人們期望迅速儘早引入新的特殊處理程序到金融網關,僅保留傳輸碼(transaction number)。不過他們常常存儲銀行卡號在同一個數據庫裏。那些數據庫和服務器少數情況有可能被未授權用戶攻擊和損害。

SSL

SSL介紹

  SSL安全套接層協議(Secure Socket Layer)

  爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程中不會被截取及竊聽。目前一般通用之規格爲40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。只要3.0版本以上之IE或Netscape瀏覽器即可支持SSL。

  當前版本爲3.0。它已被廣泛地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。

SSL協議位於TCP/IP協議與各種應用層協議之間,是一種國際標準的加密及身份認證通信協議,爲TCP提供一個可靠的端到端的安全服務,爲兩個通訊個體之間提供保密性和完整性(身份鑑別)。SSL協議可分爲兩層:SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

SSL協議特點

1)SSL協議可用於保護正常運行於TCP之上的任何應用協議,如HTTP、FTP、SMTP或Telnet的通信,最常見的是用SSL來保護HTTP的通信。

  2)SSL協議的優點在於它是與應用層協議無關的。高層的應用協議(如HTTP、FTP、Telnet等)能透明地建立於SSL協議之上。

 3)SSL協議在應用層協議之前就已經完成加密算法、通信密鑰的協商以及服務器的認證工作。在此之後應用層協議所傳送的數據都會被加密,從而保證通信的安全性。

4)SSL協議使用通信雙方的客戶證書以及CA根證書,允許客戶/服務器應用以一種不能被偷聽的方式通信,在通信雙方間建立起了一條安全的、可信任的通信通道。

5)該協議使用密鑰對傳送數據加密,許多網站都是通過這種協議從客戶端接收信用卡編號等保密信息。常用於交易過程中。

SSL功能

1)客戶對服務器的身份認證:

SSL服務器允許客戶的瀏覽器使用標準的公鑰加密技術和一些可靠的認證中心(CA)的證書,來確認服務器的合法性。

2)服務器對客戶的身份認證:

也可通過公鑰技術和證書進行認證,也可通過用戶名,password來認證。

3)建立服務器與客戶之間安全的數據通道:

SSL要求客戶與服務器之間的所有發送的數據都被髮送端加密、接收端解密,同時還檢查數據的完整性。

SSL協議工作的基本流程

1)接通階段:客戶機通過網絡向服務器打招呼,服務器迴應

2)密碼交換階段:客戶機與服務器之間交換雙方認可的密碼,一般選用RSA密碼算法

3)會談密碼階段:客戶機器與服務器間產生彼此交談的會談密碼

4)檢驗階段:客戶機檢驗服務器取得的密碼

5)客戶認證階段:服務器驗證客戶機的可信度

6)結束階段:客戶機與服務器之間相互交換結束的信息

SSL安全實現原理

SSL 提供了用於啓動 TCP/IP 連接的安全性“信號交換”:

1. 這種信號交換導致客戶和服務器同意將使用的安全性級別,並履行連接的任何身份驗證要求.

2. 通過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證。

3.在用數字證書對雙方的身份驗證後,雙方就可以用保密密鑰進行安全的會話了。

 

SSL協議說明

SSL協議具有兩層結構:

1)其底層是SSL記錄協議層(SSLRecord Protocol Layer)

2)其高層是SSL握手協議層(SSLHandshake Protocol Layer), 主要用來讓客戶端及服務器確認彼此的身分,爲了保護SSL記錄封包中傳送的數據,Handshake協議還能協助雙方選擇連接時所會使用的加密算法、MAC算法、及相關密鑰。

 

HTTPS與SSL(一) - Magicc - 異次元藍客
 

SSL協議定義了兩個通信主體:客戶(client)和服務器(server)。其中,客戶是協議的發起者

在客戶/服務器結構中,應用層從請求服務和提供服務的角度定義客戶和服務器,而SSL協議則從建立加密參數的過程中所扮演的角色來定義客戶和服務器。 

SSL握手協議包含四個階段:第一個階段建立安全能力;第二個階段服務器鑑別和密鑰交換;第三個階段客戶鑑別(可選的)和密鑰交換;第四個階段完成握手協議。

SSL協議工作的基本流程

  服務器認證階段:1)客戶端向服務器發送一個開始信息“Hello”以便開始一個新的會話連接;2)服務器根據客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器;4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。

用戶認證階段:

  在此之前,服務器已經通過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。

  

SSL流程

  HTTPS與SSL(一) - Magicc - 異次元藍客

 

第一步:身份驗證

HTTPS與SSL(一) - Magicc - 異次元藍客
 

第二步:發明密語規則

HTTPS與SSL(一) - Magicc - 異次元藍客
 

第三步:密語規則共享

HTTPS與SSL(一) - Magicc - 異次元藍客
 

第四步:進行安全通信

HTTPS與SSL(一) - Magicc - 異次元藍客
 

簡要描述

1)客戶端向服務器發送一個開始信息“Hello”以便開始一個新的會話連接

2)服務器根據客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息

3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器

4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。(以上爲服務端認證)

5)服務器已經通過了客戶認證,這一階段主要完成對客戶對服務端的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。(客戶端認證)

詳細描述

SSL 協議既用到了公鑰加密技術又用到了對稱加密技術,對稱加密技術雖然比公鑰加密技術的速度快,可是公鑰加密技術提供了更好的身份認證技術。SSL 的握手協議非常有效的讓客戶和服務器之間完成相互之間的身份認證,其主要過程如下:

  1)客戶端的瀏覽器向服務器傳送客戶端SSL 協議的版本號,加密算法的種類,產生的隨機數,以及其他服務器和客戶端之間通訊所需要的各種信息。

  2)服務器向客戶端傳送SSL 協議的版本號,加密算法的種類,隨機數以及其他相關信息,同時服務器還將向客戶端傳送自己的證書。

  3)客戶利用服務器傳過來的信息驗證服務器的合法性,服務器的合法性包括:證書是否過期,發行服務器證書的CA 是否可靠,發行者證書的公鑰能否正確解開服務器證書的“發行者的數字簽名”,服務器證書上的域名是否和服務器的實際域名相匹配。如果合法性驗證沒有通過,通訊將斷開;如果合法性驗證通過,將繼續進行第四步。

  4)用戶端隨機產生一個用於後面通訊的“對稱密碼”,然後用服務器的公鑰(服務器的公鑰從步驟②中的服務器的證書中獲得)對其加密,然後將加密後的“預主密碼”傳給服務器。 (服務端驗證成功)

  5)如果服務器要求客戶的身份認證(在握手過程中爲可選),用戶可以建立一個隨機數然後對其進行數據簽名,將這個含有簽名的隨機數和客戶自己的證書以及加密過的“預主密碼”一起傳給服務器。

  6)如果服務器要求客戶的身份認證,服務器必須檢驗客戶證書和簽名隨機數的合法性,具體的合法性驗證過程包括:客戶的證書使用日期是否有效,爲客戶提供證書的CA 是否可靠,發行CA 的公鑰能否正確解開客戶證書的發行CA 的數字簽名,檢查客戶的證書是否在證書廢止列表(CRL)中。檢驗如果沒有通過,通訊立刻中斷;如果驗證通過,服務器將用自己的私鑰解開加密的“預主密碼”,然後執行一系列步驟來產生主通訊密碼(客戶端也將通過同樣的方法產生相同的主通訊密碼)。

  7)服務器和客戶端用相同的主密碼即“通話密碼”,一個對稱密鑰用於SSL 協議的安全數據通訊的加解密通訊。同時在SSL 通訊過程中還要完成數據通訊的完整性,防止數據通訊中的任何變化。

  8)客戶端向服務器端發出信息,指明後面的數據通訊將使用的步驟7中的主密碼爲對稱密鑰,同時通知服務器客戶端的握手過程結束。

  9)服務器向客戶端發出信息,指明後面的數據通訊將使用的步驟7中的主密碼爲對稱密鑰,同時通知客戶端服務器端的握手過程結束。

10)SSL 的握手部分結束,SSL 安全通道的數據通訊開始,客戶和服務器開始使用相同的對稱密鑰進行數據通訊,同時進行通訊完整性的檢驗。

SSL缺點

1)SSL協議需要在握手之前建立TCP連接,因此不能對UDP應用進行保護。

2)爲了不致於由於安全協議的使用而導致網絡性能大幅下降SSL協議並不是默認地要求進行客戶鑑別

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