跳到主要內容

RC6 加密演算法深度解析:AES 決選候選的對稱式區塊加密設計與核心機制

RC6 是什麼?

RC6(Rivest Cipher 6)由 Ronald Rivest 等人於 1998 年為 AES 競賽設計,是五位決選候選之一。它以 128 位元區塊、支援 128/192/256 位元金鑰,並引入整數乘法強化擴散,在安全性與效能間取得優異平衡。

RC6 源自 RC5 架構,保留資料相依旋轉(data-dependent rotation)的設計,並新增整數乘法運算,大幅提升非線性程度。標準規格定義為 RC6-32/20/b,代表字組寬度 32 位元、20 輪迭代、b 位元組金鑰長度。

核心運算機制

RC6 將 128 位元明文分為四個 32 位元字組(A、B、C、D),每輪依序執行以下步驟:先對 B、D 進行整數乘法與循環左移,產生旋轉量 t、u,再以 t、u 驅動 A、C 的循環移位,最後加入回合子金鑰完成混合。此「乘法驅動旋轉」機制使每輪的擴散效率遠優於純 XOR 設計。

金鑰排程採用與 RC5 相似的魔術常數展開法:以常數 P₃₂ = 0xB7E15163Q₃₂ = 0x9E3779B9 初始化子金鑰陣列,再與原始金鑰混合擴展,共生成 2r + 4 個子金鑰(r = 20 時共 44 個)。

💡 重點整理

  • 區塊與金鑰規格:128 位元區塊,支援 128/192/256 位元三種金鑰長度。
  • 整數乘法創新:引入 mod 2³² 乘法產生旋轉量,非線性強度優於 RC5。
  • 20 輪迭代:標準輪數提供充足安全邊際,目前無實用級全輪攻擊。
  • AES 落選原因:軟體效能優秀,但硬體實作面積較 Rijndael 大,最終由 Rijndael 勝出。

以下為 RC6 單輪核心邏輯的虛擬碼示意(r = 20):

for i in 1..20:
    t = (B * (2*B + 1)) <<< 5   # 整數乘法 + 循環左移
    u = (D * (2*D + 1)) <<< 5
    A = ((A XOR t) <<< u) + S[2*i]
    C = ((C XOR u) <<< t) + S[2*i+1]
    A, B, C, D = B, C, D, A    # 字組輪換

RC6 雖未成為 AES 標準,但其整數乘法驅動旋轉的設計思路對後續密碼學研究影響深遠。理解 RC6 有助於掌握 Feistel 網路的變體設計與資料相依運算的安全原理。

📚 參考文獻

  1. Rivest, R., Sidney, M., Voszila, L.(1998). The RC6™ Block Cipher. RSA Security — AES 競賽官方提交論文,完整規格原始來源。
    https://people.csail.mit.edu/rivest/pubs/RRSY98.pdf
  2. NIST AES Competition Archive — 五位決選候選演算法評估報告。