iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
Software Development

我是Java工程師,關於密碼學我想懂的不多系列 第 15 篇

Day14 - 對稱金鑰加密系統 - 操作模式 (二):CFB與OFB

  • 分享至 

  • xImage
  •  

前言

在前一章介紹的 ECB 與 CBC 模式中,區塊加密引擎(如 AES)都是直接對明文區塊進行加密。

今天介紹的 CFB(Cipher Feedback) 與 OFB(Output Feedback) 模式則展現了密碼學中極為巧妙的思想:將「區塊密碼(Block Cipher)」轉化為「串流密碼(Stream Cipher)」。

在這兩種模式下,區塊加密引擎不再直接處理明文,而是專門用來生成動態的「金鑰流(Keystream)」,最後再與明文進行 XOR 運算。

核心共通點:
無需 Padding(填充):因為最終加密是透過 XOR 進行,資料長度可以精確到 Byte 甚至 Bit,解決了末尾區塊長度不足的問題。

一、 密文回授模式:CFB (Cipher Feedback)

1. 運算流程

CFB(Cipher Feedback, 密文回授模式)CFB 模式是一種自同步串流密碼(Self-synchronizing Stream Cipher)。它的特色是將「前一個區塊產出的密文」回授(Feed back)作為下一個區塊加密引擎的輸入。流程:輸入暫存器 初始向量(IV) 或 C_{i-1} ---> [ 加密演算法 ] ---> 金鑰流區塊 S_i加密演算法輸出後:密文生成:金鑰流區塊 S_i + 明文區塊 P_i ---> [ XOR 運算 ] ---> 最終密文 C_i回授推進:將剛產出的 密文 C_i 回授推入下一個區塊的輸入暫存器,作為下次呼叫加密引擎的輸入。
https://ithelp.ithome.com.tw/upload/images/20260929/20128084EojHEYlGjm.png

2. 特性分析

  • 有限的錯誤傳播 (Error Propagation):若傳輸過程中第 i 個密文區塊 C_i 發生了 1 位元損壞:
  • 解密當下的明文 P_i 對應位元會毀損。
  • 當 C_i 被推入暫存器參與第 i+1 區塊解密時,會導致第 i+1 個明文區塊 P_{i+1} 完全解密錯誤。
  • 但當 C_i 離開暫存器後,後續區塊的解密會自動恢復正常(自同步特性)。

二、 輸出回授模式:OFB (Output Feedback)

OFB 是一種同步串流密碼(Synchronous Stream Cipher)。它與 CFB 極為相似,但存在一個根本性的差異:回授給下一次加密引擎輸入的,是「加密引擎自身的輸出(金鑰流 S_i)」,而不是密文 C_i。

1. 運算流程

OFB 模式是一種同步串流密碼(Synchronous Stream Cipher)。它與 CFB 極為相似,但存在一個根本性的差異:回授給下一次加密引擎輸入的,是「加密引擎自身的輸出(金鑰流 S_i)」,而不是密文 C_i。流程:輸入暫存器 S_0(即初始向量(IV)) or S_{i-1} ---> [ 加密演算法 ] ---> 金鑰流區塊 S_i加密演算法輸出後:密文生成:金鑰流區塊 S_i + 明文區塊 P_i ---> [ XOR 運算 ] ---> 最終密文 C_i回授推進:將 金鑰流區塊 S_i 本身 回授推入下一個區塊的輸入暫存器,作為下次呼叫加密引擎的輸入。
https://ithelp.ithome.com.tw/upload/images/20260929/20128084N4uB1XquLy.png

2. 特性分析

  • 支援離線預先計算 (Pre-computation):由於金鑰流的生成完全獨立於明文與密文,系統可以在資料傳輸前,先預先計算好整串金鑰流。當資料抵達時直接進行高效率的 XOR 運算,傳輸延遲極低。
  • 無錯誤傳播 (No Error Propagation):若密文 C_i 在傳輸中損壞了 1 個 Bit,解密時只會影響明文 P_i 對應的 1 個 Bit,完全不會擴散或影響後續其他區塊。
  • IV/Nonce 重複的致命風險:由於金鑰流獨立生成,如果在同一把 Key 下重複使用了相同的 IV,將會產出完全相同的金鑰流。攻擊者只需將兩份密文做 XOR 即可還原明文(即典型的串流密碼 Nonce 重用漏洞)。

Reference

  • 密碼學導論課程 - 陳君明教授

上一篇
Day13 - 對稱金鑰加密系統 - 操作模式 (一):ECB、CBC 與 Padding 機制
下一篇
Day15 - 對稱金鑰加密系統 - 操作模式 (三):CTR與GCM
系列文
我是Java工程師,關於密碼學我想懂的不多 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言