270 likes | 450 Views
密碼學與網路安全 第 6 章 其他的對稱式加密法. 多重加密和 DES. DES 有被暴力法攻擊破解的可能,因此需要尋求替代方案 AES 是另一種新的加密選擇 保存既有軟硬體投資的作法,是利用 DES 和多把金鑰進行多重加密 3DE 是廣為使用的方式. 2 DES. 在每個區塊使用 2DES 加密 C = E K2 (E K1 (P)) 能簡化成單一階段 會遭到「中點交會攻擊」 對任何明文 P 來說,可能的金鑰總數有 2 112 已知明文攻擊可以成功攻破使用 112 位元金鑰的 2DES 花費的成本是級數 256
E N D
多重加密和DES • DES有被暴力法攻擊破解的可能,因此需要尋求替代方案 • AES是另一種新的加密選擇 • 保存既有軟硬體投資的作法,是利用DES和多把金鑰進行多重加密 • 3DE是廣為使用的方式
2DES • 在每個區塊使用2DES加密 • C = EK2(EK1(P)) • 能簡化成單一階段 • 會遭到「中點交會攻擊」 • 對任何明文P來說,可能的金鑰總數有2112 • 已知明文攻擊可以成功攻破使用112位元金鑰的2DES • 花費的成本是級數256 • 這並不會比破解單一DES所需要的成本級數255多太多
雙金鑰的3DES • 三階段三金鑰的加密是抵抗中點交會攻擊法的方式 • 但能以E-D-E順序使用兩把金鑰 • C = EK1(DK2(EK1(P))) • 在第二階段使用解密程序並無關密碼學的強度 • 唯一的優點是讓3DES使用者可以解開用舊的單一DES所加密的資料 • 使用雙金鑰的3DES是很普及的DES替代方案,並且也已經被金鑰管理標準ANS X9.17和ISO 8732採納 • 目前並沒有實際可行的攻擊3DES的方法
三金鑰的3DES • 雙金鑰3DES使用者可能還是會擔心遭到攻擊 • 目前許多研究人員都覺得三金鑰3DES才是更好的選擇 • C = EK3(DK2(EK1(P))) • 如果讓K3 = K2或K1 = K2,三金鑰3DES能與DES回溯相容 • 諸如PGP、S/MIME等網際網路應用已經採用三金鑰3DES
區塊密文的運作模式 • NIST定義了四種區塊密文的運作模式(FIPS 81),這四種模式能將區塊密文套用在各式各樣的應用 • 運作模式是一種技巧,可以增強加密演算法的效果,或者讓演算法更適用於某種應用 • 例如將區塊密文應用在循序的資料區塊或資料串 • 新的應用需求出現,NIST提出了第五種的建議模式(Special Publication 800-38A) • 這些模式是希望用在任何對稱式區塊密文,也包括了3DES和AES
ECB (電子編碼書模式) • 一次處理一個明文區塊,而每個明文區塊是以相同的金鑰加密 • 每b個位元明文區塊以一把金鑰產生獨特的密文 • 對每個可能的64位元明文區塊組合都會有其相對應的密文區塊 • 若訊息的長度超過b位元,ECB的運作過程會將訊息切成b位元為單位的區塊 Ci = DESK1(Pi)
CBC (密文區塊串接模式 ) • CBC模式每一個要加密的明文區塊在輸入到加密演算法之前,要先與前一個密文區塊做XOR運算,而每個區塊都使用相同的金鑰 • 依照各明文區塊的處理順序,將之前產生的區塊與目前區塊進行XOR的動作,稱為串接 • 每個明文區塊來說,輸入給加密函數的資料就不再與原來的明文區塊有固定關係 • 解密時,每個密文區塊都會送往解密演算法,解密的結果再與前一個密文區塊做XOR運算,最後才會產生明文區塊 • 要產生第一個密文區塊,需要初始向量 Ci = DESK1(Pi XOR Ci-1) C-1 = IV
CFB (密文回饋模式 ) • DES加密本質上就是使用b位元區塊的區塊加密法 • 但若使用CFB或OFB,就能讓DES變成串流加密 • 串流加密不需要將訊息補成大小固定的區塊就能夠即時運作 • 若在傳送字元串流使用字元導向的串流加密法,就能立即加密並傳送每個字元 • 加密串流最讓人滿意的特色,是密文的長度與明文相同 • 因此若傳送8位元字元,每個字元都應該加密,並產生8位元的加密文字 • 讓產生的結果低於8位元,可以有效的利用傳送效率 • Ci = Pi XOR DESK1(Ci-1)C-1 = IV
OFB (輸出回饋模式 ) • 加密函數的輸出會回饋到OFB的移位暫存器 • 不會傳送位元錯誤是OFB的優點 • 缺點是比CFB更容易遭受訊息串流的更改攻擊 • 請考慮在密文補滿位元,會在復原的明文補滿相對應的位元 • 能控制復原明文的更動 • 可能讓攻擊者對訊息的checksum和資料部分進行重要的更動 • 並且可以不被錯誤更正碼偵測到等之類的方式 • 而能改變密文
CTR (計數器模式 ) • 最近才引起ATM的網路安全以及IPSec等應用的興趣 • 對加密來說,會先加密計數器 • 然後再與明文區塊進行XOR運算,以產生密文區塊;但並沒有串接 • 若是解密,會以計數器值的相同順序 • 對每個加密的計數器與密文區塊進行XOR運算,就會重新獲得相對應的明文區塊
串流加密 • 一次加密明文的一個位元組 • 架構的金鑰是虛擬亂數位元產生器的輸入,並產生一連串看似隨機的8位元數字 • 這個產生器的輸出稱為「金鑰串流」,是一次進行一個串流和明文位元組的XOR運算 • Ci = Mi XOR StreamKeyi • 串流加密法類似第2章討論的單次金鑰加密法 • 不同的是單次金鑰加密法使用真的亂數串流 • 串流加密法使用虛擬亂數串流
串流加密法的特性 • 設計考量: • 加密序列應該要有較長的週期 • 金鑰串流應該儘可能接近真正的亂數串流 • 虛擬亂數產生器的結果是由輸入金鑰的值所決定 • 如果金鑰長度差不多相等,設計得宜的虛擬亂數產生器能讓串流加密法和區塊加密法一樣安全 • 串流加密法的主要優點是速度更快且程式碼更少
RC4 • RC4是由Ron Rivest在1987年為RSA Security公司所設計的串流加密法 • 是以位元組為運作單位,且金鑰長度是可變動 • 廣泛用在SSL/TLS、WEP和較新的WPA協定 • 有系統的從255個值裡挑出一個,而從S得到位元組k • 每當產生k之後,S裡的值就會重新排列
RC4 金鑰排程 • 一開始會以遞增的方式將S的值設成0到255 • 接著會產生臨時向量T • 如果金鑰K的長度是256位元組,K就會轉移成T; • 否則對長度為keylen位元組的金鑰而言,會先將從K複製T的前keylen個元素,然後再重複K,直到填滿T為止 • 整個動作如下: for i = 0 to 255 do S[i] = i T[i] = K[i mod keylen]) j = 0 for i = 0 to 255 do j = (j + S[i] + T[i]) (mod 256) swap (S[i], S[j])
RC4 加密 • 只要S向量起始之後,輸入金鑰就不再有用 • 產生串流會循環使用S[i] 所有的元素 • 並且會根據S目前的結構,交換S[i]與S的某個元素 • 到達S[255] 之後,整個過程會繼續從S[0] 開始 i = j = 0 for each message byte Mi i = (i + 1) (mod 256) j = (j + S[i]) (mod 256) swap(S[i], S[j]) t = (S[i] + S[j]) (mod 256) Ci = Mi XOR S[t]
RC4的強度 • 目前已經出版了許多分析如何攻擊RC4的論文 • 就算有適當的金鑰長度(如128位元),這些方法也都無法破解RC4 • 802.11無線區域網路的WEP協定,很容易會被某種特定的攻擊所破解 • 基本上,這個問題不在RC4本身 • 而是用作RC4輸入的金鑰的產生方式發生問題 • 這個問題並沒有出現在其他採用RC4的應用程式 • WEP的問題可以改變金鑰的產生方式來補救 • 這個問題也點出了設計安全系統的困難
總結 • 3DES • 運作模式 • ECB、CBC、CFB、OFB、CTR • 串流加密 • RC4