1. 程式人生 > >分組加密的四種模式(ECB、CBC、CFB、OFB)

分組加密的四種模式(ECB、CBC、CFB、OFB)

奇偶校驗位 strong word text change 相同 分組 mes 這一

加密一般分為對稱加密(Symmetric Key Encryption)和非對稱加密(Asymmetric Key Encryption)。
對稱加密又分為分組加密和序列password。
分組password。也叫塊加密(block cyphers)。一次加密明文中的一個塊。是將明文按一定的位長分組,明文組經過加密運算得到密文組,密文組經過解密運算(加密運算的逆運算),還原成明文組。


序列password。也叫流加密(stream cyphers),一次加密明文中的一個位。是指利用少量的密鑰(制亂元素)通過某種復雜的運算(password算法)產生大量的偽隨機位流,用於對明文位流的加密。


解密是指用相同的密鑰和password算法及與加密相同的偽隨機位流,用以還原明文位流。

分組加密算法中,有ECB,CBC,CFB,OFB這幾種算法模式。

1)ECB(Electronic Code Book)/電碼本模式

技術分享

技術分享

DES ECB(電子密本方式)事實上很easy。就是將數據依照8個字節一段進行DES加密或解密得到一段8個字節的密文或者明文,最後一段不足8個字節,依照需求補足8個字節進行計算,之後依照順序將計算所得的數據連在一起就可以。各段數據之間互不影響。


特點:

1.簡單。有利於並行計算。誤差不會被傳送。
2.不能隱藏明文的模式;
repetitions in message may show in cipher text/在密文中出現明文消息的反復
3.可能對明文進行主動攻擊;
加密消息塊相互獨立成為被攻擊的弱點/weakness due to encrypted message blocks being independent

2)CBC(Cipher Block Chaining)/密文分組鏈接方式

技術分享技術分享

DES CBC(密文分組鏈接方式)有點麻煩。它的實現機制使加密的各段數據之間有了聯系。事實上現的機理例如以下:

加密過程例如以下:

1)首先將數據依照8個字節一組進行分組得到D1D2......Dn(若數據不是8的整數倍,用指定的PADDING數據補位)

2)第一組數據D1與初始化向量I異或後的結果進行DES加密得到第一組密文C1(初始化向量I為全零)

3)第二組數據D2與第一組的加密結果C1異或以後的結果進行DES加密,得到第二組密文C2

4)之後的數據以此類推,得到Cn

5)按順序連為C1C2C3......Cn即為加密結果。

解密是加密的逆過程。過程例如以下:

1)首先將數據依照8個字節一組進行分組得到C1C2C3......Cn

2)將第一組數據進行解密後與初始化向量I進行異或得到第一組明文D1(註意:一定是先解密再異或)

3)將第二組數據C2進行解密後與第一組密文數據進行異或得到第二組數據D2

4)之後依此類推。得到Dn

5)按順序連為D1D2D3......Dn即為解密結果。

這裏註意一點,解密的結果並不一定是我們原來的加密數據,可能還含有你補得位。一定要把補位去掉才是你的原來的數據。

特點: 1. 不easy主動攻擊,安全性好於ECB,適合傳輸長度長的報文,是SSL、IPSec的標準。
each ciphertext block depends on all message blocks/每一個密文塊依賴於全部的信息塊
thus a change in the message affects all ciphertext blocks/明文消息中一個改變會影響全部密文塊
2. need Initial Vector (IV) known to sender & receiver/發送方和接收方都須要知道初始化向量
3.加密過程是串行的,無法被並行化(在解密時,從兩個鄰接的密文塊中就可以得到一個平文塊。因此。解密過程能夠被並行化)。



3)Cipher Feedback (CFB)/密文反饋模式

技術分享
密文反饋(CFB,Cipher feedback)模式類似於CBC。能夠將塊password變為自同步的流password;工作過程亦很相似,CFB的解密過程差點兒就是顛倒的CBC的加密過程:
須要使用一個與塊的大小同樣的移位寄存器。並用IV將寄存器初始化。然後。將寄存器內容使用塊password加密,然後將結果的最高x位與平文的x進行異或,以產生密文的x位。

下一步將生成的x位密文移入寄存器中。並對以下的x位平文反復這一過程。

解密過程與加密過程相似,以IV開始,對寄存器加密,將結果的高x與密文異或,產生x位平文。再將密文的以下x位移入寄存器。
與CBC相似,平文的改變會影響接下來全部的密文,因此加密過程不能並行化;而相同的,與CBC類似,解密過程是能夠並行化的。

4)Output Feedback (OFB)/輸出反饋模式

技術分享
輸出反饋模式(Output feedback, OFB)能夠將塊password變成同步的流password。它產生密鑰流的塊,然後將其與平文塊進行異或。得到密文。

與其他流password一樣,密文中一個位的翻轉會使平文中相同位置的位也產生翻轉。

這樣的特性使得很多錯誤校正碼,比如奇偶校驗位。即使在加密前計算而在加密後進行校驗也能夠得出正確結果。
每一個使用OFB的輸出塊與其前面全部的輸出塊相關。因此不能並行化處理。

然而,因為平文和密文僅僅在終於的異或過程中使用。因此能夠事先對IV進行加密。最後並行的將平文或密文進行並行的異或處理。
能夠利用輸入全0的CBC模式產生OFB模式的密鑰流。這樣的方法十分有用。由於能夠利用高速的CBC硬件實現來加速OFB模式的加密過程。



分組加密的四種模式(ECB、CBC、CFB、OFB)