- 比如在AES的情形下,容許一次加密的明文為128bits,那我們必須先把加密文件切割成若干個128 bits 才能進行加密處理。
- 將加密算法配合至各種需要(如上述第一個情形),同時也能增加密文的強度
- ECB : Electric Codebook
- Let Plain text to P1,P2,P3,...Pn
- Let Cipher text to C1,C2,C3,...Cn
- 把明文分成若干的block,各自加密,或將密文分成若干的block,各自解密
- 弱點:重複的block + 重複的Key → 重複的密文,面對頻率分析相當危險
- 比如加密星期二寄出的Email,Tuesday重複被加密成同樣的密文
- 重複觀察就知道,這都是禮拜二寄出的,可以借此解出金鑰
- CBC:Cipher Block Chaining
- 一樣把明文分成若干塊
- 把目前明文跟前份密文做Xor,之後再將完成Xor的明文送入加密演算法
- 第一份明文需要一個初始向量(Initial Vector)做Xor
- 限制:
- Bit Flipping Attack
- 因為傳送中有一點缺失,密文將大量改變 -> DoS
- 需要一個IV,要讓sender and receiver 知道且不可重複
上述模式在明文被分割成若干區塊前不可執行,需要補綴處理至區塊大小
接下來的模型將明文當作位元流,可以對即時的資料進行加密
接下來的模型將明文當作位元流,可以對即時的資料進行加密
- CFB:
- 將明文視為位元流
- 首先將明文切割為兩部分b-s與s
- 將明文加密,捨棄b-s的明文,將s部分的密文與前一部份的s明文Xor得密文C
- 把新明文左移s位,插入C至新明文
- 限制:
- 會有延遲,無法併行處理資料
- 跟CBC mode一樣,錯誤容易擴散
- 那麼,有偵測錯的方法嗎?
- 可以加入除錯碼,可以及時發現錯誤,但要犧牲一個bit
- PCBC mode
- OFB:
- 同樣的,把明文作為位元流
- 一開始加密一個初始向量
- 將加密後的初始向量分別傳到:
- 1.第二個block
- 2.與P1做Xor -> 得密文C1
- 再來對先前傳至第二個block的IV做加密,完成後分別傳到第3個block ......
- 優點:
- 不依賴產生出的P1或C1, 所以不產生時間延遲
- 錯誤不會擴散
- CTR (Counter):
- 加密方法:將Counter i 加密,與Pi進行Xor得到密文Ci,持續進行直到完全加密
- 解密方法:將Counter i 加密,與Ci進行Xor得到明文Pi,持續進行直到完全解密
- 每進行一次運算,便會將Counter++,所以稱為計數器模式
- Counter 不應該被重複使用,避免相同明文出現相同密文
- 類似於ECB的觀念,但放入加密器的是會變動Counter,而且Counter總是128位,所以可以視作密鑰流處理
- 確保資料的正確性
- message authentication
- CBC - Residue, or CMAC , NMAC
- HMAC
- 核心觀念:建立一個除錯碼以及演算出除錯碼的方式,由傳送方跟接收方約定而成,接收方在獲得密文後再進行驗證。
沒有留言:
張貼留言