SSL,TLS

wangyy發表於2015-04-20

今天突然收到郵件說SSL不能用了,基於SSL的HTTPS協議不通了,怎麼辦? java/android 的網路程式設計簡直一竅不通,平時都是用到了問百度。只能惡補有關網路的知識了。

傳輸協議:

傳輸協議中各層都為上一層提供業務功能。為了提供這種業務功能,下一層將上一層中的資料併入到本層的資料域中,然後通過加入報頭或報尾來實現該層業務功能,該過程叫做資料封裝。使用者的資料要經過一次次包裝,最後轉化成可以在網路上傳輸的訊號,傳送到網路上。當到達目標計算機後,再執行相反的拆包過程。這類似於日常生活中寫信,把自己要表達的意思寫到紙上,有興趣的話還要把紙摺疊成特殊的形狀,然後放到信封裡並封好口,寫好收信人的地址、郵政編碼和姓名,再貼上郵票,郵局的工作人員再蓋上郵戳送到收信人所在郵局,郵遞員按信上的地址把信交給收信人,收信人再拆信,閱讀其內容。

下層能夠向上層提供的服務有兩種形式:面向連線的服務(TCP)和無連線的服務(UDP)。
TCP:傳輸控制協議,當傳輸出現錯誤時能自動予以糾正;
UDP:使用者資料包協議,當傳輸出現錯誤時會將錯誤資訊丟棄;
UDP方式比TCP方式有更強大的容錯性,採用UDP的話,它的緩衝速度比TCP快45%,而且可以大大的節省網路共享頻寬,當網路出現不穩定時,不會經常出現緩衝,所以不少影視節目採用UDP方式傳送。

 

 SSL協議:

SSL協議位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等。

 

SSL協議提供的服務主要有:

  1)認證使用者和伺服器,確保資料傳送到正確的客戶機和伺服器;

  2)加密資料以防止資料中途被竊取;

  3)維護資料的完整性,確保資料在傳輸過程中不被改變。

SSL協議的工作流程:

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

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

  從SSL 協議所提供的服務及其工作流程可以看出,SSL協議執行的基礎是商家對消費者資訊保密的承諾,這就有利於商家而不利於消費者。在電子商務初級階段,由於運作電子商務的企業大多是信譽較高的大公司,因此這問題還沒有充分暴露出來。但隨著電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程中的單一認證問題就越來越突出。雖然在SSL3.0中通過數字簽名和數字證照可實現瀏覽器和Web伺服器雙方的身份驗證,但是SSL協議仍存在一些問題,比如,只能提供交易中客戶與伺服器間的雙方認證,在涉及多方的電子交易中,SSL協議並不能協調各方間的安全傳輸和信任關係。在這種情況下,Visa和 MasterCard兩大信用卡公組織制定了SET協議,為網上信用卡支付提供了全球性的標準。

 TLS:安全傳輸層協議  

Short for Transport Layer Security, a protocol that guarantees privacy and data integrity between client/server applicationscommunicating over the Internet.

The TLS protocol is made up of two layers:

  • The TLS Record Protocol -- layered on top of a reliable transport protocol, such as TCP, it ensures that the connection is private by using symmetric data encryption and it ensures that the connection is reliable. The TLS Record Protocol also is used forencapsulationof higher-level protocols, such as the TLS Handshake Protocol.
  • The TLS Handshake Protocol -- allows authentication between the server and client and the negotiation of an encryption algorithm and cryptographic keys before the application protocol transmits or receives any data.

TLS is application protocol-independent. Higher-level protocols can layer on top of the TLS protocol transparently.

 

 

 https介紹

  HTTPS(Secure Hypertext Transfer Protocol)安全超文字傳輸協議

  它是由Netscape開發並內建於其瀏覽器中,用於對資料進行壓縮和解壓操作,並返回網路上傳送回的結果。HTTPS實際上應用了Netscape的完全套接字層(SSL)作為HTTP應用層的子層。(HTTPS使用埠443,而不是象HTTP那樣使用埠80來和TCP/IP進行通訊。)SSL使用40 位關鍵字作為RC4流加密演算法,這對於商業資訊的加密是合適的。HTTPS和SSL支援使用X.509數字認證,如果需要的話使用者可以確認傳送者是誰。。

  https是以安全為目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,https的安全基礎是SSL,因此加密的詳細內容請看SSL。

  它是一個URI scheme(抽象識別符號體系),句法類同http:體系。用於安全的HTTP資料傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的預設埠及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通訊方法,現在它被廣泛用於全球資訊網上安全敏感的通訊,例如交易支付方面。

 

最新版本的TLS(Transport Layer Security,傳輸層安全協議)是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規範之上,是SSL 3.0的後續版本。在TLS與SSL3.0之間存在著顯著的差別,主要是它們所支援的加密演算法不同,所以TLS與SSL3.0不能互操作。
1.TLS與SSL的差異
1)版本號:TLS記錄格式與SSL記錄格式相同,但版本號的值不同,TLS的版本1.0使用的版本號為SSLv3.1。
2)報文鑑別碼:SSLv3.0和TLS的MAC演算法及MAC計算的範圍不同。TLS使用了RFC-2104定義的HMAC演算法。SSLv3.0使用了相似的演算法,兩者差別在於SSLv3.0中,填充位元組與金鑰之間採用的是連線運算,而HMAC演算法採用的是異或運算。但是兩者的安全程度是相同的。
3)偽隨機函式:TLS使用了稱為PRF的偽隨機函式來將金鑰擴充套件成資料塊,是更安全的方式。
4)報警程式碼:TLS支援幾乎所有的SSLv3.0報警程式碼,而且TLS還補充定義了很多報警程式碼,如解密失敗(decryption_failed)、記錄溢位(record_overflow)、未知CA(unknown_ca)、拒絕訪問(access_denied)等。
5)密文族和客戶證照:SSLv3.0和TLS存在少量差別,即TLS不支援Fortezza金鑰交換、加密演算法和客戶證照。
6)certificate_verify和finished訊息:SSLv3.0和TLS在用certificate_verify和finished訊息計算MD5和SHA-1雜湊碼時,計算的輸入有少許差別,但安全性相當。
7)加密計算:TLS與SSLv3.0在計算主密值(master secret)時採用的方式不同。
8)填充:使用者資料加密之前需要增加的填充位元組。在SSL中,填充後的資料長度要達到密文塊長度的最小整數倍。而在TLS中,填充後的資料長度可以是密文塊長度的任意整數倍(但填充的最大長度為255位元組),這種方式可以防止基於對報文長度進行分析的攻擊。
2.TLS的主要增強內容
TLS的主要目標是使SSL更安全,並使協議的規範更精確和完善。TLS 在SSL v3.0 的基礎上,提供了以下增強內容:
1)更安全的MAC演算法;
2)更嚴密的警報;
3)“灰色區域”規範的更明確的定義;
3.TLS對於安全性的改進
1)對於訊息認證使用金鑰雜湊法:TLS 使用“訊息認證程式碼的金鑰雜湊法”(HMAC),當記錄在開放的網路(如因特網)上傳送時,該程式碼確保記錄不會被變更。SSLv3.0還提供鍵控訊息認證,但HMAC比SSLv3.0使用的(訊息認證程式碼)MAC 功能更安全。
2)增強的偽隨機功能(PRF):PRF生成金鑰資料。在TLS中,HMAC定義PRF。PRF使用兩種雜湊演算法保證其安全性。如果任一演算法暴露了,只要第二種演算法未暴露,則資料仍然是安全的。
3)改進的已完成訊息驗證:TLS和SSLv3.0都對兩個端點提供已完成的訊息,該訊息認證交換的訊息沒有被變更。然而,TLS將此已完成訊息基於PRF和HMAC值之上,這也比SSLv3.0更安全。
4)一致證照處理:與SSLv3.0不同,TLS試圖指定必須在TLS之間實現交換的證照型別。
5)特定警報訊息:TLS提供更多的特定和附加警報,以指示任一會話端點檢測到的問題。TLS還對何時應該傳送某些警報進行記錄。

 

 

參考:http://www.webopedia.com/TERM/T/TLS.html

http://hengstart.iteye.com/blog/840561

百度百科

 

相關文章