分組密碼的模式

對稱密碼

對稱密碼算法可以分為分組密碼和流密碼:
分組密碼(block cipher)是每次只能處理特定長度的一塊(block)數據的密碼算法,一次能處理的數據長度成為分組長度(block length)
流密碼(stream cipher)是對數據流進行連續處理的一類密碼算法

分組密碼模式簡介

分組密碼一次只能處理特定長度的數據,但是通常情況下需要加密的明文數據長度是大於分組長度的,因此就需要將明文分為若干個block進行加密,不同分組之間的加密成為迭代,不同的分組迭代加密方式就是分組密碼的模式。
分組密碼常用的模式有5種:

  • ECB模式:Electronic CodeBook mode,電子密碼本模式
  • CBC模式:Cipher Block Chaining mode,密碼分組連接模式
  • CFB模式:Cipher FeedBack mode,密文反饋模式
  • OFB模式:Output FeedBack mode,輸出反饋模式
  • CTR模式:Counter mode,計數器模式

模式實現

ECB模式

ECB模式按照分組長度,將明文分為若干個分組,每個分組獨立加密得到密文,每個分組之間相互不影響。

  • 加密
    image

  • 解密
    image

針對ECB模式的攻擊

  • ECB模式每個分組獨立加密,相同的明文分組,最後輸出的密文是一樣的,因此,通過觀察密文分佈情況,就能大概確定明文分佈情況
  • 攻擊者操縱調整密文順序,導致接收者解密後得到的明文也發生變化

CBC模式

CBC為密文分組鏈接模式。

  • 加密:
    每次分組加密時,首先將明文和前一個分組密文進行XOR運算,然後再進行加密得到密文。第一個分組沒有可以XOR的密文分組,因此第一個分組是和IV進行XOR運算,然後再加密。
    image

  • 解密:
    解密時,從第一個密文分組到最後一個密文分組,先使用密鑰解密,然後和前一個密文進行XOR運算得到明文。第一個分組是解密後和IV進行XOR。
    image

針對CBC模式的攻擊

IV比特反轉:由於CBC模式第一個分組解密後,是通過與IV進行XOR操作,因此,攻擊者通過反轉IV中的某些比特,就可以操縱明文變化

CFB模式

CFB為密文反饋模式。

  • 加密
    加密時,將前一個密文加密後和當前分組明文進行XOR操作,得到當前分組的密文。第一個分組加密時,將IV進行加密後和第一組明文XOR
    image

  • 解密
    解密時,將前一個分組密文先加密,然後和當前分組密文進行XOR,得到明文。第一個分組解密,是將IV加密後和密文XOR
    image

針對CFB模式的攻擊

重放攻擊:Alice向Bob發生消息,由4個密文分組組成,中間人Mallory將後3個密文保存下來。Alice第二次向Bob發送消息時,Mallory將保存的3箇舊密文替換後發送給Bob,Bob解密時,第一個密文可以正常解密,第二個會報錯,第三個和第四個會變成Mallory替換的內容。

OFB模式

OFB為輸出反饋模式

  • 加密
    加密時,通過將IV加密,和第一個明文分組XOR得到第一個密文分組,對加密後的IV繼續加密,和第二個明文XOR,以此類推
    image

  • 解密
    解密時,將IV加密,和第一個密文分組XOR得到第一個明文分組,繼續對IV加密後的結果加密和第二個密文分組XOR,得到第二個明文,以此類推
    image

CTR模式

CTR為計數器模式,將主詞累加的計數器進行加密生成密鑰流,和明文XOR得到密文。

  • 加密
    第一個分組加密時,將計數器CTR加密,和第一個明文XOR,得到第一個密文,然後將計數器CTR加一,加密後和第二個明文XOR,以此類推
    image

  • 解密
    解密時,通過將CTR加密後和密文XOR得到明文。
    image