应用篇——SSL/TLS
?
目錄
一、客戶端與服務端的通信
二、SSL與TLS
1)SSL(安全套接層協議):
SSL協議提供的服務主要有:
SSL協議的工作流程:
2)TLS(Transport Layer Security Protocol):安全傳輸層協議
TLS 記錄協議提供的連接安全性具有兩個基本特性:? ?
TLS 握手協議提供的連接安全具有三個基本屬性:? ?
3)協議結構
TLS記錄協議
TLS 握手協議
1.TLS與SSL的差異
2.TLS的主要增強內容
3.TLS對于安全性的改進
三、對SSL/TLS的攻擊
四、注意
一、客戶端與服務端的通信
如上圖所示,我們在上網時,實際上是通過我們本地的瀏覽器與想要訪問的網站的服務器進行通信。在這之間使用HTTP(超文本傳輸協議)?進行通信;其中我們使用的瀏覽器是客戶端,網站的服務器為服務端
當我們在點擊該網站后就向網站服務器發送了一條”我要瀏覽這個網頁“的請求(request),服務器根據請求做出響應(rresponse)——將網頁內容發送給瀏覽器
?
HTTP協議以明文方式發送內容,不提供任何方式的數據加密,如果攻擊者截取了Web瀏覽器和網站服務器之間的傳輸報文,就可以直接讀懂其中的信息,因此,HTTP協議不適合傳輸一些敏感信息,比如:信用卡號、密碼等支付信息
為了解決HTTP協議的這一缺陷,需要使用另一種協議:HTTPS(安全套接字層超文本傳輸協議),為了數據傳輸的安全,HTTPS在HTTP的基礎上加入了SSL或TLS協議,就可對HTTP進行加密,從而防止竊聽
?
之后的URL為“https://”開頭而非“http://”
?
使用SSL/TSL不僅可以保護HTTP通信,也可以保護SMTP(簡單郵件協議)和POP3(郵局協議)
二、SSL與TLS
1)SSL(安全套接層協議):
為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 HandshakeProtocol):它建立在SSL記錄協議之上,用于在實際的數據傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。
SSL協議提供的服務主要有:
- 認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
- 加密數據以防止數據中途被竊取;
- 維護數據的完整性,確保數據在傳輸過程中不被改變。
SSL協議的工作流程:
服務器認證階段:
1)客戶端向服務器發送一個開始信息“Hello”以便開始一個新的會話連接;
2)服務器根據客戶的信息確定是否需要生成新的主密鑰,如需要則服務器在響應客戶的“Hello”信息時將包含生成主密鑰所需的信息;
3)客戶根據收到的服務器響應信息,產生一個主密鑰,并用服務器的公開密鑰加密后傳給服務器;
4)服務器恢復該主密鑰,并返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:在此之前,服務器已經通過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名后的提問和其公開密鑰,從而向服務器提供認證。
從SSL 協議所提供的服務及其工作流程可以看出,SSL協議運行的基礎是商家對消費者信息保密的承諾,這就有利于商家而不利于消費者。在電子商務初級階段,由于運作電子商務的企業大多是信譽較高的大公司,因此這問題還沒有充分暴露出來。但隨著電子商務的發展,各中小型公司也參與進來,這樣在電子支付過程中的單一認證問題就越來越突出。雖然在SSL3.0中通過數字簽名和數字證書可實現瀏覽器和Web服務器雙方的身份驗證,但是SSL協議仍存在一些問題,比如,只能提供交易中客戶與服務器間的雙方認證,在涉及多方的電子交易中,SSL協議并不能協調各方間的安全傳輸和信任關系。在這種情況下,Visa和MasterCard兩大信用卡公組織制定了SET協議,為網上信用卡支付提供了全球性的標準。
2)TLS(Transport Layer Security Protocol):安全傳輸層協議
安全傳輸層協議(TLS)用于在兩個通信應用程序之間提供保密性和數據完整性。該協議由兩層組成: TLS 記錄協議(TLS Record)和 TLS 握手協議(TLS Handshake)。較低的層為 TLS 記錄協議,位于某個可靠的傳輸協議(例如 TCP)上面。
TLS 記錄協議提供的連接安全性具有兩個基本特性:? ?
- 私有――對稱加密用以數據加密(DES 、RC4 等)。對稱加密所產生的密鑰對每個連接都是唯一的,且此密鑰基于另一個協議(如握手協議)協商。記錄協議也可以不加密使用。? ?
- 可靠――信息傳輸包括使用密鑰的MAC進行信息完整性檢查。安全哈希功能( SHA、MD5 等)用于 MAC 計算。記錄協議在沒有 MAC 的情況下也能操作,但一般只能用于這種模式,即有另一個協議正在使用記錄協議傳輸協商安全參數。
TLS記錄協議用于封裝各種高層協議。作為這種封裝協議之一的握手協議允許服務器與客戶機在應用程序協議傳輸和接收其第一個數據字節前彼此之間相互認證,協商加密算法和加密密鑰。
TLS 握手協議提供的連接安全具有三個基本屬性:? ?
- 可以使用非對稱的,或公共密鑰的密碼術來認證對等方的身份。該認證是可選的,但至少需要一個結點方。
- ?共享加密密鑰的協商是安全的。對偷竊者來說協商加密是難以獲得的。此外經過認證過的連接不能獲得加密,即使是進入連接中間的攻擊者也不能。
- ?協商是可靠的。沒有經過通信方成員的檢測,任何攻擊者都不能修改通信協商。
TLS的最大優勢就在于:TLS是獨立于應用協議。高層協議可以透明地分布在TLS協議上面。然而, TLS 標準并沒有規定應用程序如何在TLS上增加安全性;它把如何啟動 TLS 握手協議以及如何解釋交換的認證證書的決定權留給協議的設計者和實施者來判斷。
3)協議結構
TLS 協議包括兩個協議組――TLS記錄協議和TLS握手協議――每組具有很多不同格式的信息。
TLS記錄協議
負責消息的壓縮、加密和數據的認證
消息被分割成多個較短的片段,分別對每個片段進行壓縮(壓縮算法需要與通信對象進行協商)
被壓縮的片段被加上消息認證碼(確保數據完整性,并進行認證),通過附加消息認證碼的MAC值,可識別篡改;同時為了防止重放攻擊,在計算消息認證碼時,加上了片段的編號
單向散列函數的算法,及消息認證碼使用的共享密鑰需要與通信對象協商決定
經過壓縮的片段附加上消息認證碼一同被對稱密碼加密(使用CBC模式),CBC模式的初始化向量(IV)通過主密碼生成,對稱密碼的算法和共享密鑰需要與通信對象進行協商
綜上所述,經過加密的數據再加上由數據類型、版本號、壓縮后的長度組成的報頭就是最終的報文數據
TLS 握手協議
由四個子協議組構成,允許對等雙方在記錄層的安全參數上達成一致、自我認證、例示協商安全參數、互相報告出錯條件
1)握手協議
負責在客戶端和服務器之間協商并決定密碼算法和共享密鑰,同時基于證書認證操作;在協商一致后,就會互相發出信號來切換密碼;負責發出信號的就是下面的密碼規格變更協議
?
2)密碼規格變更協議
負責向通信對象傳達變更密碼方式的信號,用于密碼切換同步;當協議中途發生錯誤時,會通過下面的告警協議變更規則
在通信開始后,服務端與客戶端可以通過重新握手來再次改變密碼,并且在最開始時,客戶端和服務端并未使用加密進行通信(通信內容未加密)
3)警告協議
負責在發生錯誤時,將錯誤傳達給對方,當握手協議產生異常,發生消息認證碼錯誤、數據無法壓縮時使用該協議;如果沒有發生錯誤,就是用下面的應用數據協議來通信
4)應用數據協議
將TLS上承載的應用數據傳達給通信對象
最新版本的TLS(Transport LayerSecurity,傳輸層安全協議)是IETF(Internet Engineering Task Force,Internet工程任務組)制定的一種新的協議,它建立在SSL 3.0協議規范之上,是SSL 3.0的后續版本。在TLS與SSL3.0之間存在著顯著的差別,主要是它們所支持的加密算法不同,所以TLS與SSL3.0不能互操作。
主密碼:TLS客戶端與服務端之間協商出的一個秘密數值;通過預備主密碼、客戶端隨機數、服務端隨機數計算出
主密碼用途:
1)對稱密碼的密鑰(客戶端到服務端)
2)對稱密碼的密鑰(服務端到客戶端)
3)消息認證碼的密鑰(客戶端到服務端)
4)消息認證碼的密鑰(服務端到客戶端)
5)對稱密碼使用CBC模式使用的初始化向量(客戶端到服務端)
6)對稱密碼使用CBC模式使用的初始化向量(服務端到客戶端)
?
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還對何時應該發送某些警報進行記錄。
?
三、對SSL/TLS的攻擊
1)對各個密碼技術的攻擊
針對SSL/TLS中使用的各個密碼技術的弱點進行攻擊
2)對偽隨機數生成器的攻擊
3)利用證書的時間差攻擊
?
四、注意
1)即使擁有合法的證書,也不代表可以放心使用
2)在SSL/TSL建立之前,通信鏈路是不受保護的
3)密碼通信后,數據不受保護
總結
以上是生活随笔為你收集整理的应用篇——SSL/TLS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用篇——随机数
- 下一篇: 基础知识——密码学笔记(一)