iT邦幫忙

2026 iThome 鐵人賽

DAY 17
0
Software Development

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

Day16 - 對稱金鑰加密系統:DES 加密演算法

  • 分享至 

  • xImage
  •  

前言

DES(Data Encryption Standard,資料加密標準) 於 1977 年被美國 NIST(當時的 NBS)採納為官方聯邦標準,是密碼學史上第一個公開且被大規模商業應用的對稱式區塊加密演算法。

雖然 DES 在現代已因金鑰過短(僅 56 位元)而被完全淘汰,但它所建立的 Feistel 網路結構 以及密碼學大師香農(Claude Shannon)提出的 混淆(Confusion)與擴散(Diffusion) 原則,直接奠定了 AES 等現代對稱密碼學的設計基礎。

一、 DES 核心規格與參數

參數項目 規格值 說明
區塊大小 (Block Size) 64 bits (8 Bytes) 資料一次被切割為 64 位元進行加密
金鑰名義長度 64 bits 使用者輸入的原始金鑰長度
金鑰有效長度 56 bits 每 8 個 Bit 中的第 8 位元被固定用於奇偶校驗(Parity Check)
迭代輪數 (Rounds) 16 輪 經過 16 輪重複的 Feistel 網路結構運算
| **子金鑰數量與長度**      | **16 組 48-bit 子金鑰** | 由 56-bit 有效金鑰經 Key Schedule 生成K1 ...K16            |

二、 運算流程與 Feistel 網路結構

DES 採用經典的 Feistel 網路(Feistel Cipher) 架構。Feistel 網路最大的優勢在於:加密與解密採用完全相同的演算法結構,解密時只需將 16 組子金鑰的使用順序完全反轉K16 -> K1 即可。
https://ithelp.ithome.com.tw/upload/images/20261001/20128084Vj3BxkeN9E.png

  1. E-Box 擴展置換(Expansion):將 32-bit 的 R_{i-1}$ 透過重複採樣擴展為 48 bits,以與 48-bit 的子金鑰進行 XOR 運算。
  2. S-Box 非線性代換(Substitution):
  • 將 48-bit 拆為 8 組 6-bit 的區塊,分別送入 8 個不同的 S-Box(S1~S8)。
  • 每個 S-Box 輸入 6 bits,輸出 4 bits。
  • 密碼學核心:S-Box 是 DES 演算法中「唯一」的非線性元件!沒有 S-Box,整個 DES 就只是一堆線性方程,可以在幾微秒內被一次聯立方程式解開。S-Box 提供了強大的**混淆(Confusion)**能力。

  1. P-Box 置換(Permutation):將 S-Box 輸出的 32 位元再次打亂重排(擴散 Diffusion),確保當前區塊的影響能快速傳播到下一輪的所有位元。

三、 DES 的漏洞

DES 被淘汰的最核心原因只有一個:有效金鑰長度過短(56 bits)。

  • 金鑰空間狹小:2^56 約 10^16 種組合。
  • 暴力破解歷史:
  • 1977 年:DES 發表時,密碼學家已警告 56-bit 不夠安全。
  • 1998 年:電子前哨基金會(EFF)耗資 25 萬美元打造了專用破譯機 Deep Crack,僅用 56 小時 就在全金鑰搜尋中找到了 DES 金鑰。
  • 現代現狀:使用一組高階顯示卡(GPU)群或雲端運算,可以在數分鐘至幾小時內暴力窮舉出所有的 DES 金鑰。

四、 Java 實作

在 Java 中,雖然 Cipher.getInstance("DES/CBC/PKCS5Padding") 依然存在於標準庫中(為了向下相容古老舊系統),但所有現代新系統開發中,嚴禁使用 DES 與 3DES。

KeyGenerator keyGen = KeyGenerator.getInstance("DES"); // 金鑰僅 56 bits,極度危險
// 主演算法/操作模式/填充機制
Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");

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

尚未有邦友留言

立即登入留言