520 likes | 653 Vues
Cryptography and Network Security. Third Edition by William Stallings Lecture slides by Lawrie Brown. 第三章 – 區段加密與資料加密標準. Mungo 整個下午都在研究 Stern 的密碼,主要是藉助於他從 Nevin 廣場的信箱投遞口所抄下來的最後那個訊息。 Stern 非常有自信。他深知 London Central 知道那個投遞口。顯然他們不在乎 Mungo 多久去讀一次他們的訊息,所以他們的自信來自於密碼本身是不可解讀的。
E N D
Cryptography and Network Security Third Edition by William Stallings Lecture slides by Lawrie Brown
第三章 –區段加密與資料加密標準 Mungo 整個下午都在研究 Stern 的密碼,主要是藉助於他從 Nevin 廣場的信箱投遞口所抄下來的最後那個訊息。Stern 非常有自信。他深知 London Central 知道那個投遞口。顯然他們不在乎 Mungo 多久去讀一次他們的訊息,所以他們的自信來自於密碼本身是不可解讀的。 —Talking to Strange Men, Ruth Rendell
當代的區段加密法 • 現在來檢視當代的區段加密法 • 使用最廣泛的密碼學演算法類型之一 • 提供安全與/或確認服務 • 特別介紹 DES (資料加密標準)
區段加密 vs 資料流加密 • 區段加密法將訊息分為區段來處理,每次對一整個區段加解密 • 像是一次對非常多的字元進行取代 • 64 位元或更多 • 資料流加密在加解密時,一次處理一個位元或位元組 • 許多現今的加密法都是區段加密法 • 所以我們著重在區段加密
區段加密的原理 • 許多對稱式區段加密法都是以Feistel 加密法的結構為基礎 • 其興起來自於對「有效地解密」的需求 • 區段加密可視為極大量的取代加密法 • 對 64 位元的區段加密來說,需要 264個項目的表格 • 以較小的建構基石來處理 • 想法來自於混合式加密法
Claude Shannon 與取代-重排加密法 • Claude Shannon 在 1949 年提出了取代-重排 (S-P) 網路的想法 • 當代的取代-置換混合式加密法 • 成為當代區段式加密法的基礎 • S-P 網路是以我們曾看過的兩種基本密碼學運算為基礎: • 取代(S-box) • 重排 (P-box) • 造成訊息的混淆 與 擴散
混淆與擴散 • 我們需要可以完全消除原始訊息中的統計資訊的加密方式 • one-time pad 就可以達成這項要求 • Shannon 建議結合各項元素來達成下列目標: • 擴散– 將一段密文內的明文統計結構消除 • 混淆– 讓密文與鑰匙間的關係愈複雜愈好
Feistel 加密結構 • Horst Feistel 提出了 feistel 加密法 • 以不可逆的混合式加密為基礎 • 將輸入的區段分為兩半 • 分多個回合來處理 • 每回合對左半部資料執行取代運算 • 取代運算是右半部與子鑰匙的回合函數 • 然後交換左右兩半資料 • 實踐 Shannon 的取代-重排網路概念
Feistel 加密法的設計原理 • 區段大小 • 增加大小可以提升安全性,但是加解密會變慢 • 鑰匙大小 • 增加大小可以提升安全性,使得全面地搜尋鑰匙變得更困難,但是加解密會變慢 • 回合數 • 增加回合數可以提升安全性,但是加解密會變慢 • 子鑰匙的產生 • 複雜的方法可以使分析變困難,但是加解密會變慢 • 回合函數 • 複雜的方法可以使分析變困難,但是加解密會變慢 • 可用軟體快速加解密,以及易於分析 • 是近年來實用性與測試上的重要考量
資料加密標準 (DES) • 使用最廣的區段加密法 • NBS 機構 (現為 NIST)於 1977 年採用 • 為標準 FIPS PUB 46 • 用 56 位元的鑰匙對 64 位元的區段加密 • 已被廣泛採用 • 已受到安全性的質疑
DES 的歷史 • IBM 發展 Lucifer 加密法 • 由 Feistel所領導的團隊所研發 • 採用 64位元區段以及 128位元鑰匙 • 然後 NSA 及其他單位參與重新發展成商用加密法 • NBS 在 1973 年徵求構想書,希望能訂定國際加密標準 • IBM 提出其改版的 Lucifer 參加競爭,最後獲勝成為 DES
DES 的設計缺失 • 雖然 DES 已經是公開的標準 • 但是其設計仍被認為有缺陷 • 選用 56 位元的鑰匙 ( Lucifer 採用 128 位元) • 並且未公開其設計標準 • 其後的事件與公開的分析指出,其實其設計方式並無不妥 • DES 的使用變得很廣泛,特別在商用領域
啟始重排 IP • 資料加密的第一步 • IP 會重組輸入資料的位元順序 • 偶數位元移到左半邊 LH;奇數位元移到右半邊 RH • 結構上非常規律 (易於用硬體實作) • 請見書中的表格 3.2 • 範例:IP(675a6967 5e5a6b5a) = (ffb2194d 004df6fb)
DES 每回合的結構 • 使用兩半 L 與 R 各 32 位元 • 與任意的 Feistel 加密法一樣,都可以描述成: Li= Ri–1 Ri= Li–1 xor F(Ri–1, Ki) • 利用 32位元的 R 與 48位元的子鑰匙: • 利用重排 E 將 R 擴充成 48位元 • 與子鑰匙相加 • 傳給 8 個 S-box 來得到 32位元的結果 • 利用 32 位元的重排 P 來重排以上的結果
S-boxes • 共有八個 S-boxes;每個將 6 位元對應到 4 位元 • 每個 S-box 其實是由 4 個較小的 4 位元方塊所組成 • 外側的位元 1 與 6 (列 位元) 用來選取一列 • 內側的位元 2-5 (行 位元) 用來選取一行 • 產生 8 組 4 位元, 也就是 32 位元 • 列的選取受到資料與鑰匙的影響 • 這個性質稱為 autoclaving (autokeying) • example:S(18 09 12 3d 11 17 38 39) = 5fd25e03
DES 的鑰匙排程 • 產生每回合所需的子鑰匙 • 由以下程序組成: • 對鑰匙的啟始重排 (PC1),其中把 56 位元切成各 28 位元的兩半 • 接下來的 16 個步驟將會進行: • 從每半邊選取 24 位元; • 依照 PC2 進行重排,並且將結果傳給函數 f; • 根據鑰匙左旋排程K,將每一半旋轉 1 或 2 個位置
DES 的解密方式 • 解密必須解開資料的加密計算 • 以 Feistel 的設計來說,步驟跟加密一樣 • 以相反的順序使用子鑰匙 (SK16 … SK1) • IP 會還原加密時 FP 的最後一個步驟 • 第一回合會利用 SK16 來還原加密的第十六回合 • …. • 第十六回合會利用 SK1 來還原加密的第一回合 • 最後的 FP 會還原加密時一開始的 IP • 藉此還原成初始值
崩塌效應 • 加密演算法所需具備的關鍵特性 • 改變輸入或鑰匙的一個位元,會改變輸出約一半的位元 • 無法猜測鑰匙 • DES 具有高度的崩塌效應
DES 的強度 – 鑰匙大小 • 56位元鑰匙具有 256 = 7.2 x 1016可能值 • 暴力攻擊法似乎不管用 • 進來的科技進步使得破解成為可能 • 1997 年透過網路合作,花幾個月就可破解 • 1998 年使用特定硬體可在幾天內破解 • 1999 年結合以上方式可在 22 小時內破解! • 當然,前提是我們必須能辨識明文 • 現在讓我們看看另一種取代 DES的方式
DES 的強度 – 計時破解法 • 針對加密的實作方式來攻擊 • 根據我們對實作方式的瞭解,來推導出部分/全部的子鑰匙位元 • 特別是根據以下事實:不同的輸入值所需的計算時間也不同 • Smartcards 尤其會面臨這個問題
DES 的強度 – 分析破解法 • 有許多針對 DES 的分析破解方式 • 這些破解法取決於細部的加密結構 • 蒐集與加密法相關的資訊 • 最終可以解出部分/全部的子鑰匙位元 • 如果需要的話,可以用窮舉法求出剩餘的位元 • 這些方法基本上都算是統計攻擊法 • 其中包括 • 差異破解法 • 線性破解法 • 相關鑰匙破解法
差異破解法 • 密碼破解領域近年來公認最大的成就 • NSA 在 70 年代就得知此法(對照 DES 的設計) • Murphy, Biham & Shamir 於 1990提出 • 破解區段加密法的有效方法 • 對於破解現今大部分的區段加密法來說,已收到不同程度的效果 • DES 有效的抵擋此破解法(對照 Lucifer)
差異破解法 • 一種破解 Feistel 加密法的統計攻擊 • 利用先前未曾使用的加密架構 • S-P 網路的設計不良,使得我們可以從函數f的輸出來推導出輸入與鑰匙 • 因此,如果不知道鑰匙的話,就無法沿著加密步驟往回推出原值 • 差異破解法會比較一組相關的加密結果
差異破解法會比較一組加密結果 • 已知輸入間的差異 • 求出輸出間的差異 • 使用相同鑰匙的情況下
差異破解法 • 如果某種輸入差異造成某種輸出差異的機率為 p • 如果某種發生機率很高的輸出入差異組合出現的話, • 就可以推導出此回合所使用的子鑰匙 • 以此類推進行多回合 (機率遞減)
差異破解法 • 持續地對已知 XOR 結果的輸入組合加密,直到已知 XOR 結果的輸出組合出現 • 當我們看到 • 如果某回合的中間值符合我們需要的 XOR 結果,就是正確組合 • 如果不符合就是錯誤組合,相對比率 S/N 就是可供破解的資訊 • 可以推得此回合使用的鑰匙 • 正確組合表示使用相同的鑰匙 • 錯誤組合提供隨機值 • 如果回合數眾多的話,機率會變很低, 會需要許多的輸入組合,甚至超過 64 位元所能容納的量 • Biham 與 Shamir 提出了一個如何用 13 回合的迭代特性來破解完整的 16 回合 DES 的方法
線性破解法 • 近期的另一項成果 • 也是一種統計方法 • 必須以機率遞減的方式執行多回合 • 由 Matsui 等人在 90 年代初期發展出來 • 以求取線性近似值為基礎 • 需要 247 個已知明文才能破解 DES,仍舊不實用
線性破解法 • 在 p 不等於 ½ 的情況下,求出線性近似值 P[i1,i2,...,ia](+)C[j1,j2,...,jb] = K[k1,k2,...,kc] 此處的 ia,jb,kc 是 P,C,K 中的位元位置 • 列出鑰匙位元的線性方程式 • 利用 max likelihood 演算法來求出一個鑰匙位元 • 測試大量的加密結果 • 破解的機率為: |p–½|
區段加密法的設計原理 • 基本法則依舊遵循 1970年代的 Feistel • 回合個數 • 愈多愈好、窮舉破解法是最佳選擇 • 函數 f: • 提供 “混淆”、非線性、具備崩塌效應 • 鑰匙排程 • 複雜的子鑰匙產生方式、鑰匙的崩塌效應
運算模式 • 區段加密法針對固定大小的區段來加密 • 例如,DES 使用 56 位元鑰匙對 64 位元區段加密 • 對任意數量的資訊而言,加密法必須實際可用 • 供 DES 使用的四種 ANSI 標準:ANSI X3.106-1983 使用模式 • 現在有五種模式供 DES 與 AES來使用 • 有區段模式與資料流模式
電子密碼書模式 (ECB) • 訊息被切割成獨立的區段各自加密 • 因為每個區段的值被取代,就像密碼查表一樣,因而取此名稱 • 每個區段被獨立編碼 Ci = DESK1 (Pi) • 用途:安全地傳送單一訊息
ECB 的優缺點 • 重複的訊息會出現在密文中 • 如果剛好對齊區段邊界 • 特別是圖形資料 • 或是變化很少的訊息,衍生成密碼書破解問題 • 弱點在於訊息區段是各自加密的 • 主要用在傳送少量資料區段
密文區段串接模式 (CBC) • 訊息被切割成區段 • 但是這些區段透過加密程序彼此串接 • 前一個密文區段被串接在現在的明文區段,因而得此名稱 • 一開始採用啟始向量 (IV) Ci = DESK1(Pi XOR Ci-1) C-1 = IV • 用途:大量資料加密、確認性
CBC 的優缺點 • 每個密文區段取決於所有的訊息區段 • 因此,訊息的任何變化都會影響密文區段與明文區段 • 傳送者與接收者都必須知道啟始向量 (IV) • 如果 IV 以明文形式傳送,攻擊者就可以竄改第一個區段,然後再以修改 IV 的方式來補救 • 因此,IV 必須是定值 (例如 EFTPOS) 或是必須在傳送其他訊息之前,先用 ECB 模式傳送加密過的 IV • 訊息末端可能需要處理過短的區段 • 附加與資料無關的位元 (例如 nulls) • 或是在最後一個區段補上附加部分的長度 • 例如. [ b1 b2 b3 0 0 0 0 5] <- 3 個資料位元組、然後是 5 位元的附加部分+附加長度
密文反饋模式 (CFB) • 訊息被視為一連串的位元 • 訊息被加到區段加密的輸出 • 結果會反饋到下一個階段 (因而取此名稱) • 允許反饋任意數量的位元 (1、8、64 或其他數量) • 表示成 CFB-1、CFB-8、CFB-64 以此類推 • 全部採用 64 位元時效率最高 (CFB-64) Ci = Pi XOR DESK1(Ci-1) C-1 = IV • 用途:串流資料加密、確認性
CFB 的優缺點 • 資料以位元/位元組形式到達時適用此法 • 最常用的串流模式 • 當執行區段加密時,每 n 個位元會暫停一下,是其缺點 • 請注意:在加解密時都是執行加密運算 • 發生錯誤的話,此錯誤會擴散至其後的區段
輸出反饋模式 (OFB) • 訊息被視為一連串的位元 • 加密結果被加到訊息內 • 輸出會反饋到下一階段 (因而取此名稱) • 反饋的資料與訊息無關 • 可以事先計算好 Ci = Pi XOR Oi Oi = DESK1(Oi-1) O-1 = IV • 用途: 在充滿雜訊的通道上進行串流加密
OFB 的優缺點 • 當反饋資訊可能有錯、或是在訊息就緒前就必須先加密的話,就適用此法 • 看起來很像 CFB • 但是反饋的是加密的輸出,這部分與訊息無關 • 是 Vernam 加密法的一種變形 • 因此,絕不可以重複使用相同的序列 (鑰匙+IV) • 收送雙方必須保持同步,並且必須有一些回復機制來確保這件事 • 原先在標準書中的規格是反饋 m 個位元 • 後續研究顯示,只有OFB-64比較值得採用
計數器模式 (CTR) • 雖然很早就被提出來了,但仍算是「新的」模式 • 與 OFB 類似,但加密的是計數器內容、而不是反饋的資料 • 每個明文區段都需要不同的鑰匙與計數器值 (絕不重複使用) Ci = Pi XOR Oi Oi = DESK1(i) • 用途: 高速網路上的加密
CTR 的優缺點 • 效率 • 可以平行加密 • 可事先處理 • 在高速網路上表現良好 • 隨機選取加密好的資料區段 • 可證明其安全性 (與其他模式一樣安全) • 但是必須確保不會重複使用鑰匙/計數器值,否則會遭到破解 (對照 OFB)