- Java加密與解密的藝術(第2版)
- 梁棟
- 4462字
- 2018-12-31 23:24:40
2.5 對稱密碼體制
對稱密碼體制并不是現代密碼學的新生產物,它是古典密碼學的進一步延續。古典密碼常用的兩種技巧—替代和移位,仍然是對稱密碼體制中最重要的加密技巧。
對稱密碼體制的保密通信模型如圖2-2所示。對稱密碼體制要求加密與解密使用同一個共享密鑰,解密是加密的逆運算,由于通信雙方共享同一個密鑰,這就要求通信雙方必須在通信前商定該密鑰,并妥善保存該密鑰。該密鑰稱為秘密密鑰。秘密密鑰的存在使得對稱密碼體制開放性變差。

圖2-2 對稱密碼體制的保密通信模型
對稱密碼體制分為兩種:一種是對明文的單個位(或字節)進行加密和解密,稱為流密碼,又稱為序列密碼;另一種是把明文信息劃分成不同的組(或塊)結構,分別對每個組(或塊)進行加密和解密,稱為分組密碼。
2.5.1 流密碼
流密碼是軍事、外交等機要部門中應用最為廣泛的對稱密碼體制。同時,它也是手機應用平臺最常用的加密手段。流密碼實現較為簡單,加密時將明文按字符(或字節)逐位進行加密,解密時將密文按字符(字節)逐位解密。加密、解密可以是簡單的位運算,如模n運算。明文加密后,生成的密文幾乎和明文保持同樣的長度。流密碼加密與解密的流程如圖2-3所示。

圖2-3 流密碼加密與解密流程
流密碼分為同步流(序列)密碼和自同步流(序列)密碼。
1.同步流密碼
應用同步流密碼,信息發送方和接收方在傳遞信息時,同步進行加密解密操作,明文與密文一一對應。密文的內容如果在傳輸過程中被篡改、刪除或插入,可導致同步失效,以致密文解密失敗,必須通過重新同步來實現解密、恢復密文。在密文傳輸過程中,如果一個密文位發生變化,那么該位的變化只影響該位的恢復,對后續密文位不影響,這是同步流密碼的一個重要特點。但是,根據該特點主動攻擊者可以有選擇地對密文字符進行改動,并準確知道這些改動對明文的影響。因此,同步流密碼具有同步性、無錯誤傳遞性及主動攻擊性三種特性。同步流密碼適用于為音頻和視頻數據提供版權保護。
2.自同步流密碼
與同步流密碼相比,自同步流密碼是一種有記憶變換的密碼。每一個密鑰與已產生的固定數量的密文位有關,密鑰由已生成的密文決定。在密文傳輸過程中,如果一個密文位發生變化,那么該位的變化會影響到后續有限(如n位)的密文位的正確解密。所以,自同步流密碼有錯誤傳遞現象。但是,在接收n位正確密文字符后,密碼自身會實現重新同步。基于這一特點,如果主動攻擊者對密文做了修改,接收方仍然不能檢測出密文的完整性。與同步流密碼相比,自同步流密碼的密碼分析更加困難,安全性更高。因此,自同步流密碼具有自同步性、錯誤傳遞有限性、主動攻擊性及明文統計擴散性四種特性。
流密碼具有實現簡單、便于硬件計算、加密與解密處理速度快、錯誤傳播率低等優點。但是,流密碼對錯誤的產生不夠敏感,這是流密碼的缺點。為了彌補這一缺點,流密碼通常配合其他技術驗證信息的完整性。流密碼涉及大量的理論知識,受限于應用場合(目前主要用于軍事和外交等機要部門),許多研究成果并未完全公開。目前使用較多的流密碼是自同步流密碼。流密碼的常用算法有RC4和SEAL等。
流密碼的安全強度依賴于密鑰流生成器所產生的密鑰流序列的特征,關鍵在于密鑰生成器的設計以及信息收發兩端密鑰流產生的同步技術。
2.5.2 分組密碼
分組密碼多應用于網絡加密,是對稱密碼體制中發展最為完善的密碼體制。分組密碼對固定長度的一組明文進行加密,這一固定長度稱為分組長度。分組長度是分組密碼的一個參數,它與分組算法的安全性成正比,其取值范圍取決于實際應用的環境。為保證分組算法的安全性,分組長度越長越好,分組長度越長,密碼分析越困難;為保證分組密碼的實用性,分組長度越短越好,分組長度越短,越便于操作和運算。分組長度的設定需要權衡分組算法的安全性與實用性,一般設置為56位。但隨著密碼學的發展,分組長度只有56位的分組密碼已經不能確保算法的安全性。目前,分組密碼多選擇128位作為算法的分組長度。
分組密碼的加密過程是對一個分組長度為n的明文分組進行加密操作,相應地產生一個n位的密文分組,由此可見,不同的n位明文分組共有2n個。考慮到加密算法的可逆性(即保證解密過程的可行性),每一個不同的n位明文分組都應該產生一個唯一的密文分組,加密過程對應的變換稱為可逆變換或非奇異變換。所以,分組密碼算法從本質上來說是定義了一種從分組的明文到相應的密文的可逆變換。
分組密碼是現代密碼學的重要組成部分,具有代表性的分組加密算法有DES、AES等。我們將在后續章節具體探討如何實現分組密碼。
1.分組密碼設計原則
分組密碼的設計原則包括安全性和實現性兩個方面。前者主要研究如何設計安全算法、分組長度和密鑰長度,后者主要討論如何提高算法的執行速度。
(1)針對安全的一般設計原則
安全性原則又稱不可破譯原則,它包含理論上不可破譯和實際上不可破譯兩重含義。香農認為:在理想密碼系統中,密文的所有統計特性都與所使用的密鑰獨立。實用密碼的兩個一般的設計原則是指香農提出的混亂原則和擴散原則。
? 擴散(Diffusion)原則:人們所設計的密碼應使得密鑰的每一位數字影響到密文的多位數字,以防止對密鑰進行逐段破譯,而且明文的每一位數字也影響密文的多位數字以便隱藏明文數字的統計性。
? 混亂(Confusion)原則:人們所設計的密碼應使得密鑰和明文以及密文之間的信賴關系相當復雜以至于這種信賴性對密碼分析者來說是無法利用的。
如何衡量一個密碼體制的安全性?
主要在以下幾個方面:
? 密碼體制的破譯所需要的時間和費用超出了現有的資源和能力。
? 密碼體制的破譯所需要的時間超過了該體制所保護的信息的有效時間。
? 密碼體制的破譯所需要的費用超過了該體制所保護的信息的價值。
(2)針對實現的設計原則
分組密碼可以用軟件和硬件來實現。硬件實現的優點是可獲得高效率,而軟件實現的優點是靈活性強、代價低。
? 軟件實現的設計原則:使用子塊和簡單的運算。密碼運算在子塊上進行,要求子塊的長度能自然地適應軟件編程,如8位、16位、32位等。應盡量避免按位置換,在子塊上所進行的密碼運算盡量采用易于軟件實現的運算。最好是用處理器的基本運算,如加法、乘法、移位等。
? 硬件實現的設計原則:加密和解密的相似性,即加密和解密過程的不同應局限于密鑰使用方式上,以便采用同樣的器件來實現加密和解密,以節省費用和體積。盡量采用標準的組件結構,以便能適應于在超大規模集成電路中實現。
2.分組密碼工作模式
我們以DES算法工作模式為例,DES算法根據其加密算法所定義的明文分組的大小(56位),將數據分割成若干56位的加密區塊,再以加密區塊為單位,分別進行加密處理。最后剩下的不足一個區塊的大小,我們稱之為短塊,短塊的處理方法有填充法、流密碼加密法、密文挪用技術。
1980年12月,DES算法工作模式被美國聯邦信息處理標準組織(Federal Information Processing Standard,FIPS)標準化。加密算法應用的復雜性,有的強調效率,有的強調安全,有的強調容錯性。根據數據加密時每個加密區塊間的關聯方式來區分,可以分為4種工作模式:電子密碼本模式(Electronic Code Book,ECB)、密文鏈接模式(Cipher Book Chaining,CBC)、密文反饋模式(Cipher Feed Back,CFB)、輸出反饋模式(Output Feed Back,OFB)。AES標準除了推薦上述4種工作模式外,還推薦了一種新的工作模式—計數器模式(Counter,CTR)。這些工作模式可適用于各種分組密碼算法。
(1)電子密碼本模式—ECB
電子密碼本模式如圖2-4所示,它是最基本、最易理解的工作模式。每次加密均產生獨立的密文分組,每組的加密結果不會對其他分組產生影響,相同的明文加密后對應產生相同的密文,無初始化向量(也稱為加密向量)??梢哉J為有一個非常大的電碼本,對任意一個可能的明文分組,電碼本中都有一項對應于它的密文,這也是該模式名稱的由來。

圖2-4 電子密碼本模式
? 優點:易于理解且簡單易行;便于實現并行操作;沒有誤差傳遞的問題。
? 缺點:不能隱藏明文的模式,如果明文重復,則對應的密文也會重復,密文內容很容易被替換、重排、刪除、重放;對明文進行主動攻擊的可能性較高。
? 用途:適合加密密鑰、隨機數等短數據。例如,安全地傳遞DES密鑰,ECB是最合適的模式。
(2)密文鏈接模式—CBC(已喪失安全性,不推薦使用)
密文鏈接模式如圖2-5所示,它是目前應用最廣泛的工作模式。明文加密前需先與前面的密文進行異或運算(XOR)后再加密,因此只要選擇不同的初始向量,相同的明文加密后產生不同的密文。

圖2-5 密文鏈接模式
? 優點:密文鏈接模式加密后的密文上下文關聯,即使在明文中出現重復的信息也不會產生相同的密文;密文內容如果被替換、重排、刪除、重放或網絡傳輸過程中發生錯誤,后續密文即被破壞,無法完成解密還原;對明文的主動攻擊的可能性較低。
? 缺點:不利于并行計算,目前沒有已知的并行運算算法;誤差傳遞,如果在加密過程中發生錯誤,則錯誤將被無限放大,導致加密失敗;需要初始化向量。
? 用途:可加密任意長度的數據;適用于計算產生檢測數據完整性的消息認證碼Mac。
(3)密文反饋模式—CFB
密文反饋模式如圖2-6所示,它類似于自同步流密碼,分組加密后,按8位分組將密文和明文進行移位異或后得到輸出同時反饋給移位寄存器。它的優點是可以按字節逐個進行加密解密,也可以按n位字節處理。CFB是上下文相關的,明文的一個錯誤會影響后面的密文(錯誤擴散)。CFB需要一個初始化向量,加密后與第一個分組進行異或運算產生第一組密文;然后,對第一組密文加密后再與第二個分組進行異或運算取得第二組密文;以此類推,直到加密完畢。

圖2-6 密文反饋模式
? 優點:隱藏了明文的模式,每一個分組的加密結果必受其前面所有分組內容的影響,即使出現多次相同的明文,也均產生不同的密文;分組密碼轉化為流模式,可產生密鑰流;可以及時加密傳送小于分組的數據。
? 缺點:與CBC相類似。不利于并行計算,目前沒有已知的并行運算算法;存在誤差傳送,一個單元損壞影響多個單元;需要初始化向量。
? 用途:因錯誤傳播無界,可用于檢查發現明文密文的篡改。
(4)輸出反饋模式—OFB
輸出反饋模式如圖2-7所示,它將分組密碼作為同步流密碼運行,和CFB相似,不過OFB用的是前一個n位密文輸出分組反饋給移位寄存器,OFB沒有錯誤擴散問題。該模式產生與明文異或運算的密鑰流,從而產生密文,這一點與CFB大致相同,唯一的差異是與明文分組進行異或的輸入部分是反復加密后得到的。
? 優點:隱藏了明文的模式;分組密碼轉化為流模式;無誤差傳送問題;可以及時加密傳送小于分組的數據。
? 缺點:不利于并行計算;對明文的主動攻擊是可能的,安全性較CFB差。
? 用途:適用于加密冗余性較大的數據,比如語音和圖像數據。
(5)計數器模式—CTR
計數器模式如圖2-8所示,它的特點是將計數器從初始值開始計數所得到的值發送給分組密碼算法。隨著計數器的增加,分組密碼算法輸出連續的分組來構成一個位串,該位串被用來與明文分組進行異或運算。計數器模式是用來提取分組密碼的最大效能以實現保密性的。在AES的實際應用中,經常會選擇CBC模式和CTR模式,但更多的是選擇CTR模式。

圖2-7 輸出反饋模式

圖2-8 計數器模式
? 優點:可并行計算;安全性至少與CBC模式一樣好;加密與解密僅涉及密碼算法的加密。
? 缺點:沒有錯誤傳播,因此不易確保數據完整性。
? 用途:適用于各種加密應用。
- Java程序設計與開發
- 深入淺出Prometheus:原理、應用、源碼與拓展詳解
- 青少年美育趣味課堂:XMind思維導圖制作
- 微服務從小白到專家:Spring Cloud和Kubernetes實戰
- Machine Learning in Java
- QGIS Python Programming Cookbook(Second Edition)
- QGIS 2 Cookbook
- Learning Nessus for Penetration Testing
- Android移動應用項目化教程
- 零基礎C#學習筆記
- jQuery從入門到精通(微課精編版)
- Kotlin進階實戰
- Learning Image Processing with OpenCV
- Mastering PowerCLI
- Raspberry Pi Blueprints