移動安全-iOS(三)
我們知道無線傳輸的資料能被第三方輕易截獲(如使用抓包工具Charles),如果未使用加密措施,可能直接暴露使用者的各種關鍵資料,例如使用者名稱,密碼等。加入了SSL(Secure Socket Layer)子層實現的HTTPS協議可確保資料在網路上加密傳輸,即使傳輸的資料被截獲,也無法解密和還原。
http不使用SSL/TLS的HTTP通訊,就是不加密的通訊。所有資訊明文傳播,帶來了三大風險。
- 1 竊聽風險(eavesdropping):第三方可以獲知通訊內容。
- 2 篡改風險(tampering):第三方可以修改通訊內容。
- 3 冒充風險(pretending):第三方可以冒充他人身份參與通訊。
關於TLS
- TLS(英語:TransportLayerSecurity,縮寫作TLS,中文名:傳輸層安全性協議),及其前身SSL(Secure Sockets Layer,縮寫作SSL,中文名:安全套接層)是一種安全協議,TLS與SSL在傳輸層對網路連線進行加密,以提供安全及資料完整性保障.
- SSL協議位於TCP/IP協議與各種應用層協議之間,為資料通訊提供安全支援。SSL協議可分為兩層: SSL記錄協議(SSL Record Protocol):它建立在可靠的傳輸協議(如TCP)之上,為高層協議提供資料封裝、壓縮、加密等基本功能的支援。 SSL握手協議(SSL Handshake Protocol):它建立在SSL記錄協議之上,用於在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密演算法、交換加密金鑰等.
****SSL / TLS加密概述
SSL / TLS主要用於加密通過不安全的網路(如Internet)傳送的機密資料。在HTTPS協議中,加密的資料型別包括URL,HTTP標頭,cookie和通過表單提交的資料。使用SSL / TLS保護的網頁的URL以“https://”開頭。
圖1. SSL / TLS協議層

握手層
握手層由三個子協議組成:
-
握手。該子協議用於協商客戶端和伺服器之間的會話資訊。會話資訊包括會話ID,對等證書,要使用的密碼規範,要使用的壓縮演算法以及用於生成金鑰的共享金鑰。
-
更改密碼規範:Change Cipher Spec 子協議用於更改客戶端和伺服器之間用於加密的金鑰材料。金鑰材料是用於建立加密金鑰的原始資料。Change Cipher Spec子協議包含一條訊息,用於告知SSL / TLS會話中的其他方,也稱為對等方,傳送方希望將其更改為一組新金鑰。金鑰是根據握手子協議交換的資訊計算出來的。
-
警報。警報訊息用於指示對等體的狀態或錯誤狀況的變化。有各種各樣的警報可以通知對等方正常和錯誤情況。完整列表可以在RFC 2246“TLS Protocol Version 1.0”中找到。通常在連線關閉,收到無效訊息,無法解密訊息或使用者取消操作時傳送警報。
握手子協議功能
握手子協議提供了許多非常重要的安全功能。它執行一組交換,啟動身份驗證並協商加密,雜湊和壓縮演算法。
認證
出於身份驗證的目的,握手協議使用X.509證書向第二方提供強有力的證據,以幫助證明持有證書的一方的身份和相應的私鑰。證書是一種數字形式的標識,通常由證書頒發機構(CA)頒發,包含標識資訊,有效期,公鑰,序列號和發行者的數字簽名。
CA是相互信任的第三方,它確認證書請求者(通常是使用者或計算機)的身份,然後向請求者頒發證書。證書將請求者的身份繫結到公鑰。CA還會根據需要續訂和撤銷證書。例如,如果向客戶端提供伺服器證書,則客戶端計算機可能會嘗試將伺服器的CA與客戶端的可信CA列表進行匹配。如果頒發CA是受信任的,則客戶端將驗證證書是否可信並且未被篡改。最後,客戶端將接受證書作為伺服器身份的證明。
有關證書及其使用方式的詳細資訊,請參閱 go.microsoft.com/fwlink/?Lin…
注意 Windows Server 2003包含允許其用作證書頒發機構的軟體。有關詳細資訊,請參閱Windows Server 2003中的“幫助和支援”
加密有兩種主要型別:對稱金鑰(也稱為共享金鑰)和非對稱金鑰(也稱為公鑰或公鑰 - 私鑰)。SSL / TLS使用對稱金鑰和非對稱金鑰加密。
-
對稱金鑰。在對稱金鑰加密中,相同的金鑰用於加密和解密訊息。如果雙方想要安全地交換加密的訊息,則他們必須擁有相同對稱金鑰的副本。對稱金鑰加密通常用於加密大量資料,因為它在計算上比非對稱加密更快。典型的演算法包括DES(資料加密標準),3-DES(三重DES),RC2,RC4和AES(高階加密標準)。
-
不對稱金鑰。非對稱或公鑰加密使用通過複雜的數學過程一起匯出的一對金鑰。其中一個金鑰是公開的,通常要求CA在證書持有者(也稱為主題)的證書中釋出公鑰。私鑰由主題保密,從未向任何人透露。金鑰協同工作,其中一個用於執行另一個的反向操作:如果公鑰用於加密資料,則只有該金鑰的私鑰可以解密它; 如果私鑰用於加密,則必須使用公鑰進行解密。這種關係允許公鑰加密方案做兩件重要的事情。首先,任何人都可以獲取主題的公鑰,並使用它來加密只有具有私鑰的使用者才能解密的資料。第二,如果主題使用其私鑰加密資料,則任何人都可以使用相應的公鑰解密資料。這是數字簽名的基礎。最常見的演算法是RSA(Rivest,Shamir&Adleman)。
SSL / TLS使用公鑰加密來向客戶端驗證伺服器,並且可選地將客戶端驗證到伺服器。公鑰加密也用於建立會話金鑰。會話金鑰用於對稱演算法以加密大量資料。這將用於身份驗證的非對稱加密的優勢與針對批量資料的更快,更少處理器密集的對稱金鑰加密相結合。
雜湊演算法
在握手過程中,雜湊演算法也得到了一致同意。雜湊是值到較小的代表值集的單向對映,因此得到的雜湊的大小小於原始訊息,並且雜湊對於原始資料是唯一的。雜湊類似於指紋:指紋對於個人是唯一的並且比原始人小得多。雜湊用於在傳輸過程中建立資料完整性。兩種常見的雜湊演算法是訊息摘要5(MD5)和標準雜湊演算法1(SHA-1)。MD5產生128位雜湊值,SHA-1產生160位值。
雜湊演算法包括用於檢查傳輸資料的完整性的值。使用MAC或HMAC建立該值。MAC使用對映函式將訊息資料表示為固定長度,最好是較小的值,然後雜湊訊息。MAC確保在傳輸期間未修改資料。MAC和數字簽名之間的區別在於數字簽名也是一種認證方法。SSL使用MAC。
HMAC類似於MAC,但是使用雜湊演算法結合共享金鑰。共享金鑰被附加到要雜湊的資料。這使得雜湊更安全,因為雙方必須具有相同的共享金鑰才能證明資料是真實的。TLS使用HMAC。有關HMAC的更多資訊,請參閱RFC 1024,“用於訊息身份驗證的金鑰雜湊”。
有關公共金鑰加密,請參閱“設計公鑰基礎結構”中的詳細資訊在Microsoft®Windows®Server 2003部署工具包的設計和部署目錄和安全服務,(或請參閱“ 設計一個公共金鑰基礎設施 ” 在Web上的
記錄層
記錄層的協議接收並加密來自應用層的資料,並將其傳送到傳輸層。記錄協議獲取資料,將其分段為適合加密演算法的大小,可選地壓縮它(或者,對於接收的資料,對其進行解壓縮),應用MAC或HMAC(HMAC僅由TLS支援)然後加密(或使用握手協議期間協商的資訊解密資料。