天天看點

Base64加密算法的原理以及SSL和TLS的差別

Base64加密算法的原理

Base64的加密原理:

利用Base64算法把位元組數組轉為字元串的這個過程稱為編碼,把字元串轉為位元組數組的的過程稱為解碼。編碼的過程以三個位元組為機關進行轉化,總共有24位,分為4個部分,每個部分有6位。6位的二進制可以表示64種可見的字元(可列印)。是以,把6位的二進制高位補兩個0就可以得到8位的位元組,這個位元組可以表示64種可列印的字元。為什麼要采用這64種可列印位元組來傳輸呢?因為有些網絡傳送管道并不支援所有的位元組,例如傳統的郵件隻支援可見字元的傳送,像ASCII碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如圖檔二進制流的每個位元組不可能全部是可見字元,是以就傳送不了。最好的方法就是在不改變傳統協定的情況下,做一種擴充方案來支援二進制檔案的傳送,把不可列印的字元也能用可列印字元來表示,于是就有了Base64。

Base64的優點:

1.二進制檔案變成字元進行傳輸。

2.傳輸過程中的可列印字元不能用來表示原文内容,起到了加密的效果,雖然這種加密可以使用Base64解碼來擷取結果,但是我們可以通過制定獨特的Base64編碼規則來避免。

3.Base64适應了不同網絡傳輸管道的資料傳輸,增加了相容性和可靠性,主要解決了部分管道不适合傳輸不可見字元的問題。

Base64的缺點:

因為原先的3個位元組變成了4個位元組,長度增加了1/3,增加了傳輸資料的損耗。

Base64的使用場景:

用戶端和伺服器通過Base64傳遞二進制内容。

SSL和TLS的差別

密鑰交換(密鑰協商)算法:基于SSL/TLS實作的密鑰交換過程。

SSL:(Secure Socket Layer,安全套接字層),利用資料加密技術,可確定資料在網絡上的傳輸過程中不會被截取。它已被廣泛地用于Web浏覽器與伺服器之間的身份認證和加密資料傳輸。SSL協定位于傳輸層協定與各種應用層協定之間,為資料通訊提供安全支援。SSL協定可分為兩層: SSL記錄協定,它建立在TCP之上,為高層協定提供資料封裝、壓縮、加密等基本功能的支援;SSL握手協定,它建立在SSL記錄協定之上,用于在實際的資料傳輸開始前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。

TLS: (Transport Layer Security,傳輸層安全協定),用于兩個應用程式之間提供保密性和資料完整性。TLS建立在SSL v3.0協定規範之上,是SSL v3.0的後續版本,可以了解為SSL v3.1。該協定由兩層組成:TLS 記錄協定和 TLS 握手協定。

SSL與TLS共同的特點:

1.確定準确的端到端連接配接。認證使用者和伺服器,確定資料發送到正确的客戶機和伺服器。

2.維護資料的安全性。加密資料以防止資料中途被竊取。

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

TLS與SSL的差異:

1.版本号:TLS記錄格式與SSL記錄格式相同,但版本号的值不同,TLS的版本1.0使用的版本号為SSL v3.1。

2.封包驗證碼:SSL v3.0和TLS的MAC算法及MAC計算的範圍不同。TLS使用了RFC-2104定義的HMAC算法。SSL v3.0使用了相似的算法,兩者差别在于SSL v3.0中,填充位元組與密鑰之間采用的是連接配接運算,而HMAC算法采用的是異或運算。

3.僞随機函數:TLS使用了稱為PRF的僞随機函數來将密鑰擴充成資料塊,是更安全的方式。由PRF生成密鑰資料。在TLS中,HMAC定義PRF。PRF使用兩種雜湊演算法保證其安全性。如果任一算法暴露了,隻要第二種算法未暴露,則資料仍然是安全的。

4.報警代碼:TLS支援幾乎所有的SSL v3.0報警代碼,而且TLS還補充定義了很多報警代碼,如解密失敗、記錄溢出、未知CA、拒絕通路等。TLS通過警報訓示任一會話端點檢測到的問題,還對何時應該發送某些警報進行記錄。

5.certificate_verify和finished消息:SSL v3.0和TLS在用certificate_verify和finished消息計算MD5和SHA-1散列碼時,計算的輸入有少許差别,但安全性相當。

6.加密計算:TLS與SSL v3.0在計算主密值時采用的方式不同。

7.填充:使用者資料加密之前需要增加的填充位元組。在SSL中,填充後的資料長度要達到密文塊長度的最小整數倍。而在TLS中,填充後的資料長度可以是密文塊長度的任意整數倍(但填充的最大長度為255位元組),這種方式可以防止基于對封包長度進行分析的攻擊。

8.改進的已完成消息驗證:TLS和SSL v3.0都對兩個端點提供已完成的消息,該消息認證交換的消息沒有被變更。然而,TLS将此已完成消息基于PRF和HMAC值之上,這也比SSL v3.0更安全。

9.一緻證書處理:與SSL v3.0不同,TLS試圖指定必須在TLS之間實作交換的證書類型。

HMAC的原理:

HMAC主要是對需要傳輸的消息做hash。計算的前提是需要一個散列函數hash(可以是md5或者sha-1)和一個密鑰key。用L 表示hash函數輸出字元串長(md5是16),用B表示資料塊的長度(md5和sha-1的分割資料塊長都是64)。密鑰key的長度可以小于等于資料塊長B,這種情況下需要補零。通過密鑰和消息的異或運算以及hash算法,最終輸出長為L的序列。密鑰key的來源可以是PRF。

HMAC的應用:

HMAC主要應用在身份驗證中。因為HMAC的散列結果是不可逆的,即便中間被截獲也無法得到任何有用的資訊。

1.用戶端發出登入請求。

2.伺服器傳回一個随機值(key),并在會話中記錄這個随機值。

3.用戶端将該随機值作為密鑰,對使用者密碼進行HMAC運算,然後送出給伺服器。

4.伺服器讀取使用者資料庫中的使用者密碼和步驟2中發送的随機值做與用戶端一樣的HMAC運算,然後與使用者發送的結果比較,如果結果一緻則驗證使用者合法。

僞随機函數 (PRF):

PRF用于産生固定長度的僞随機位串。可以通過這個函數生成對稱加密密鑰。通常PRF的輸入為種子(随機數),加上一些上下文相關的特定值,輸出為僞随機傳。上述的HMAC中的密鑰就是通過PRF生成的。

繼續閱讀