iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Software Development

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

Day12 - 對稱金鑰加密系統:區塊密碼(Block Cipher)

  • 分享至 

  • xImage
  •  

為什麼需要區塊密碼?

在前一章中,我們介紹了串流密碼(Stream Cipher):透過金鑰與 Nonce/IV 產生一段與明文長度相同的「金鑰流(Keystream)」,並以位元級別的 XOR 運算與明文逐字加密。串流密碼的優點是速度極快,但若重複使用相同的 Nonce,金鑰流重疊將會帶來嚴重的安全災難。

與串流密碼不同,區塊密碼(Block Cipher)則是將輸入的明文切分成固定大小的資料區塊(Block)(例如 64 位元或 128 位元),並以「區塊」為單位,使用一把固定長度的對稱金鑰進行轉換與加密。

觀念釐清:無論是串流密碼還是區塊密碼,我們使用的對稱金鑰(Secret Key)都是固定長度的短金鑰(如 128-bit 或 256-bit)。串流密碼是將金鑰「擴展為無限長度的金鑰流」;區塊密碼則是以金鑰為核心,對「固定大小的資料區塊」進行多輪複雜的數學變換。

然而,如果我們直接將明文切塊並用同一把金鑰獨立加密每一個區塊,相同的明文區塊將會產出完全相同的密文區塊,使得密文呈現可辨識的統計規律。為了打造夠強大的區塊加密法,密碼學家引進了兩大核心設計原則:混淆(Confusion)與擴散(Diffusion)。
https://ithelp.ithome.com.tw/upload/images/20260927/20128084ed7WqX6AeN.png

什麼是混淆與擴散

目的就是讓密文看起來更「亂」、更難從中看出規則,這個部分會由「加密演算法」負責

  • 混淆 Confusion
    透過加密操作弱化金鑰與密文之間的直接關聯,使攻擊者難以由密文推回金鑰或其結構。常見作法是替換(substitution)。
  • 擴散 Diffusion
    讓單一明文字元的影響分散到多個密文字元上,以隱藏明文的統計特性。常見作法包含位元或位元組的置換與混合。
    https://ithelp.ithome.com.tw/upload/images/20260927/20128084zsSuMCYQkP.png

區塊密碼的運作

看到上面我們可以看到資料被分成一塊一塊透過金鑰加密然後產生加密的區塊,但是如果沒有再進行加工就會看到重複的資料產生出一樣的結果這樣就有被破解的風險,所以區塊密碼還需要進行前置加工讓輸入的資料不同,後置加工的認證標籤可以保證訊息沒有被串改,我們將前置加工與後置加工稱為「操作模式」
https://ithelp.ithome.com.tw/upload/images/20260927/20128084vy2fzrb1iC.png

Reference

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

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

尚未有邦友留言

立即登入留言