常用密码技术-对称加密
先上一張圖,后續講解
對稱加密
"對稱加密: 也稱為對稱密碼, 是指在加密和解碼時使用同一秘鑰的加密方式
DES
DES是一種將64比特的明文加密成64比特的密文的對稱密碼算法, 它的密鑰長度是56比特 。盡管從規格上來說,DES的密鑰長度是64比特,但由于每隔7比特會設置一個用于錯誤檢查的比特,因此實質上其密鑰長度是56比特。
DES是以64比特的明文(比特序列)為一個單位來進行加密的,這個64比特的單位稱為分組。一般來說,以分組為單位進行處理的密碼算法稱為分組密碼(blockcipher),DES就是分組密碼的一種。
DES每次只能加密64比特的數據,如果要加密的明文比較長,就需要對DES加密進行迭代(反復),而迭代的具體方式就稱為模式(mode)。
DES加密圖例
3DES
三重DES(triple-DES)是為了增加DES的強度, 將DES重復3次所得到的一種密碼算法 ,通常縮寫為3DES。
三重DES的加解密機制如圖所示:
三重DES并不是進行三次DES加密(加密-->加密-->加密),而是加密-->解密-->加密的過程。解密反之。
AES
AES(Advanced Encryption Standard)是取代其前任標準(DES)而成為新標準的一種對稱密碼算法。全世界的企業和密碼學家提交了多個對稱密碼算法作為AES的候選,最終在2000年從這些候選算法中選出了一種名為Rijndael 的對稱密碼算法,并將其確定為了AES。 Rijndael是由比利時密碼學家Joan Daemen和Vincent Rijmen設汁的分組密碼算法,今后會有越來越多的密碼軟件支持這種算法。
Rijndael的分組長度為128比特 ,密鑰長度可以以32比特為單位在128比特到256比特的范圍內進行選擇(不過在AES的規格中,密鑰長度只有128、192和256比特三種 )。
加密圖示
解密圖示
應選擇哪種對稱加密
前面我們介紹了DES、三重DES和AES等對稱密碼,那么我們到底應該使用哪一種對稱密碼算法呢?
間內完成對DES的破譯。但是,在某些情況下也需要保持與舊版本軟件的兼容性。
由于全世界的密碼學家都在對AES進行不斷的驗證,因此即便萬一發現它有什么缺陷,也會立刻告知全世
界并修復這些缺陷。
一般來說,我們不應該使用任何自制的密碼算法,而是應該使用AES。因為AES在其選定過程中,經過了全世界
密碼學家所進行的高品質的驗證工作,而對于自制的密碼算法則很難進行這樣的驗證。
分組密碼的模
分組密碼
分組密碼(blockcipher)是每次只能處理特定長度的一塊數據的一類密碼算法,這里的一塊"就稱為分組(block)。此外,一個分組的比特數就稱為分組長度(blocklength)。
例如,DES和三重DES的分組長度都是64比特。這些密碼算法一次只能加密64比特的明文.并生成64比特的密文。
AES的分組長度可以從128比特、192比特和256比特中進行選擇。當選擇128比特的分組長度時,AES一次可加密128比特的明文,并生成128比特的密文。
模式
- ECB模式:Electronic Code Book mode(電子密碼本模式)
- CBC模式:Cipher Block Chaining mode(密碼分組鏈接模式)
- CFB模式:Cipher FeedBack mode(密文反饋模式)
- OFB模式:Output FeedBack mode(輸出反饋模式)
- CTR模式:CounTeR mode(計數器模式)
明文分組和密文分組
明文分組: 是指分組密碼算法中作為加密對象的明文。明文分組的長度與分組密碼算法的分組長度是相等的。
密文分組:是指使用分組密碼算法將明文分組加密之后所生成的密文。
EBC模式
ECB(Electronic Code Book, 電子密碼本)模式是最簡單的加密模式,明文消息被分成固定大小的塊(分組),并且每個塊被單獨加密。每個塊的加密和解密都是獨立的,且使用相同的方法進行加密,所以可以進行并行計算,但是這種方法一旦有一個塊被破解,使用相同的方法可以解密所有的明文數據,安全性比較差。 適用于數據較少的情形,加密前需要把明文數據填充到塊大小的整倍數。
CBC模式
- 先了解下XOR
為了讓大家理解比特序列運算的概念,我們來介紹一下XOR運算。XOR的全稱是exclusive or,在中文里叫作異或。盡管名字看起來很復雜,但這種運算本身一點都不難。
先看1個比特之間的XOR運算
通過上述場景,大家應該能夠理解這樣一個規律,即兩個相同的數進行XOR運算的結果一定為0。
長比特序列之間的運算
由于兩個相同的數進行XOR運算的結果一定為0,因此如果將A⊕B的結果再與B進行XOR運算,則結果會變回A。也就是說,兩個公式中的B會相互抵消。
CBC(Cipher Block Chaining, 密碼塊鏈)模式中每一個分組要先和前一個分組加密后的數據進行XOR異或操作,然后再進行加密。 這樣每個密文塊依賴該塊之前的所有明文塊,為了保持每條消息都具有唯一性,第一個數據塊進行加密之前需要用初始化向量IV進行異或操作。 CBC模式是一種最常用的加密模式,它主要缺點是加密是連續的,不能并行處理,并且與ECB一樣消息塊必須填充到塊大小的整倍數。
CFB模式
CFB模式的全稱是Cipher FeedBack模式(密文反饋模式)。在CFB模式中,前一個分組的密文加密后和當前分組的明文XOR異或操作生成當前分組的密文。
所謂反饋,這里指的就是返回輸人端的意思,即前一個密文分組會被送回到密碼算法的輸入端。
CFB模式的解密和CBC模式的加密在流程上其實是非常相似的。
OFB 模式
OFB式的全稱是Output-Feedback模式(輸出反饋模式)。在OFB模式中,密碼算法的輸出會反饋到密碼算法的輸入中, 即上一個分組密碼算法的輸出是當前分組密碼算法的輸入(下圖)。
OFB模式并不是通過密碼算法對明文直接進行加密的,而是通過將 “明文分組" 和 “密碼算法的輸出” 進行XOR來
產生 “密文分組” 的,在這一點上OFB模式和CFB模式非常相似。
CFB模式和OFB模式對比
OFB模式和CFB模式的區別僅僅在于密碼算法的輸入。
CFB式中,密碼算法的輸人是前一個密文分組,也就是將密文分組反饋到密算法中,因此就有了“密文反饋模式”這個名字。
相對地,OFB模式中,密碼算法的輸入則是密碼算法的前一個輸出,也就是將輸出反饋給密碼算法,因此就有了“輸出反饋模式"這個名字。
如果將一個分組抽出來對CFB模式和OFB模式進行一個對比.就可以很容易看出它們之間的差異(下圖)。
CTR 模式
CTR模式的全稱是CounTeR模式(計數器模式)。CTR摸式是一種通過將逐次累加的計數器進行加密來生成密鑰流的流密碼(下圖)。
CTR模式中,每個分組對應一個逐次累加的計數器,并通過對計數器進行加密來生成密鑰流。也就是說,最終的密文分組是通過將計數器加密得到的比特序列,與明文分組進行XOR而得到的
CTR模式的特點
CTR模式的加密和解密使用了完全相同的結構,因此在程序實現上比較容易。這一特點和同為流密碼的OFB模式是一樣的。
此外,CTR模式中可以以任意順序對分組進行加密和解密,因此在加密和解密時需要用到的“計數器"的值可以由nonce和分組序號直接計算出來。這一性質是OFB模式所不具備的。
能夠以任意順序處理分組,就意味著能夠實現并行計算。在支持并行計算的系統中,CTR模式的速度是非常快的。
總結
總結
以上是生活随笔為你收集整理的常用密码技术-对称加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]关于信息安全认证CISP与CISS
- 下一篇: 公众号改名通知