AES CFB/OFB/ECB/CBC/CTR優缺點


AES CFB/OFB/ECB/CBC/CTR優缺點

摘自:http://www.metsky.com/archives/418.html

 

AES常見加密模式有CFB/OFB/ECB/CBC/CTR,本文概述這些算法特點,讓大家更快的了解AES,當然天緣也不是專業做算法的,工作中也只是使用到才會學習一點,如有錯誤,歡迎指出。

一、Cipher feedback(CFB)

CFB算法優點:

同明文不同密文,分組密鑰轉換為流密碼。

CFB算法缺點:

串行運算不利並行,傳輸錯誤可能導致后續傳輸塊錯誤。

二、Output feedback(OFB)

OFB算法優點:

同明文不同密文,分組密鑰轉換為流密碼。

OFB算法缺點:

串行運算不利並行,傳輸錯誤可能導致后續傳輸塊錯誤。

三、Electronic codebook(ECB)

ECB算法優點:

簡單、孤立,每個塊單獨運算。適合並行運算。傳輸錯誤一般只影響當前塊。

ECB算法缺點:

同明文輸出同密文,可能導致明文攻擊。我們平時用的AES加密很多都是ECB模式的,此模式加密不需要向量IV。

四、Cipher-block chaining(CBC)

CBC算法優點:

串行化運算,相同明文不同密文

CBC算法缺點:

需要初始向量,不過這其實不算缺點,下文的CTR也是需要隨機數的。如果出現傳輸錯誤,那么后續結果解密后可能全部錯誤。

此外,還有Propagating cipher-block chaining(PCBC)加密模式,

五、Counter mode(CTR)

CTR算法優點:

無填充,同明文不同密文,每個塊單獨運算,適合並行運算。

CTR算法缺點:

可能導致明文攻擊。

補充:

關於Padding補位問題,上文加密模式中,比如CBC等對輸入塊是有要求的,必須是塊的整數倍,對不是整塊的數據,要求進行填充,填充的方法有很多種,常見的有PKCS5和PKCS7、ISO10126等。

例如按照16字節分組的話:

  • 對不足16字節部分(假設差n個滿16字節),填充n個字節(n范圍(1,15]),且每字節值均為n。
  • 對正好16字節部分,則填充一個block,也就是補16個字節,每字節值為16

參考1:PKCS #7: Cryptographic Message Syntax

參考2:PKCS #5: Password-Based Cryptography Specification

所以上述算法中,默認:

需要Padding的有:CBC(,PCBC也需要,本文未涉及該加密模式)、ECB。

不需要Padding的有:CFB、OFB、CTR。

參考資料:

http://hi.baidu.com/doomsword/blog/item/ec73eb2b18f95435d52af120.html

http://hi.baidu.com/tweetyf/item/36d2f94a8639320ae8350480

http://zh.wikipedia.org/wiki/塊密碼的工作模式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM