轉載 :http://kb.cnblogs.com/page/197396/算法
SSL:(Secure Socket Layer,安全套接字層),位於可靠的面向鏈接的網絡層協議和應用層協議之間的一種協議層。SSL經過互相認證、使用數字簽名確保完整性、使用加密確保私密性,以實現客戶端和服務器之間的安全通信。該協議由兩層組成:SSL記錄協議和SSL握手協議。瀏覽器
TLS:(Transport Layer Security,傳輸層安全協議),用於兩個應用程序之間提供保密性和數據完整性。該協議由兩層組成:TLS記錄協議和TLS握手協議。安全
SSL是Netscape開發的專門用戶保護Web通信的,目前版本爲3.0。最新版本的TLS 1.0是IETF(工程任務組)制定的一種新的協議,它創建在SSL 3.0協議規範之上,是SSL 3.0的後續版本。二者差異極小,能夠理解爲SSL 3.1,它是寫入了RFC的。 服務器
SSL (Secure Socket Layer)網絡
爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程當中不會被截取。目前通常通用之規格爲40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。只要3.0版本以上之I.E.或Netscape瀏覽器便可支持SSL。 函數
當前版本爲3.0。它已被普遍地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。加密
SSL協議位於TCP/IP協議與各類應用層協議之間,爲數據通信提供安全支持。SSL協議可分爲兩層: SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。 SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。spa
SSL協議提供的服務主要有:設計
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器;blog
2)加密數據以防止數據中途被竊取;
3)維護數據的完整性,確保數據在傳輸過程當中不被改變。
SSL協議的工做流程:
服務器認證階段:
1)客戶端向服務器發送一個開始信息「Hello」以便開始一個新的會話鏈接;
2)服務器根據客戶的信息肯定是否須要生成新的主密鑰,如須要則服務器在響應客戶的「Hello」信息時將包含生成主密鑰所需的信息;
3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器;
4)服務器恢復該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:在此以前,服務器已經經過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。
從SSL 協議所提供的服務及其工做流程能夠看出,SSL協議運行的基礎是商家對消費者信息保密的承諾,這就有利於商家而不利於消費者。在電子商務初級階段,因爲運做電子商務的企業大可能是信譽較高的大公司,所以這問題尚未充分暴露出來。但隨着電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程當中的單一認證問題就愈來愈突出。雖然在SSL3.0中經過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證,可是SSL協議仍存在一些問題,好比,只能提供交易中客戶與服務器間的雙方認證,在涉及多方的電子交易中,SSL協議並不能協調各方間的安全傳輸和信任關係。在這種狀況下,Visa和MasterCard兩大信用卡公組織制定了SET協議,爲網上信用卡支付提供了全球性的標準。
TLS(Transport Layer Security Protocol):安全傳輸層協議
安全傳輸層協議(TLS)用於在兩個通訊應用程序之間提供保密性和數據完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層爲 TLS 記錄協議,位於某個可靠的傳輸協議(例如 TCP)上面。
TLS 記錄協議提供的鏈接安全性具備兩個基本特性:
TLS記錄協議用於封裝各類高層協議。做爲這種封裝協議之一的握手協議容許服務器與客戶機在應用程序協議傳輸和接收其第一個數據字節前彼此之間相互認證,協商加密算法和加密密鑰。 TLS 握手協議提供的鏈接安全具備三個基本屬性:
TLS的最大優點就在於:TLS是獨立於應用協議。高層協議能夠透明地分佈在TLS協議上面。然而, TLS 標準並無規定應用程序如何在TLS上增長安全性;它把如何啓動 TLS 握手協議以及如何解釋交換的認證證書的決定權留給協議的設計者和實施者來判斷。
協議結構
TLS 協議包括兩個協議組――TLS記錄協議和TLS握手協議――每組具備不少不一樣格式的信息。在此文件中咱們只列出協議摘要並不做具體解析。具體內容可參照相關文檔。
TLS記錄協議是一種分層協議。每一層中的信息可能包含長度、描述和內容等字段。記錄協議支持信息傳輸、將數據分段到可處理塊、壓縮數據、應用MAC 、加密以及傳輸結果等。對接收到的數據進行解密、校驗、解壓縮、重組等,而後將它們傳送到高層客戶機。
TLS鏈接狀態指的是TLS記錄協議的操做環境。它規定了壓縮算法、加密算法和MAC算法。
TLS記錄層從高層接收任意大小無空塊的連續數據。密鑰計算:記錄協議經過算法從握手協議提供的安全參數中產生密鑰、 IV 和MAC密鑰。
TLS 握手協議由三個子協議組構成,容許對等雙方在記錄層的安全參數上達成一致、自我認證、例示協商安全參數、互相報告出錯條件。
關係就是。。。。並列關係
最新版本的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還對什麼時候應該發送某些警報進行記錄。