Presentation is loading. Please wait.

Presentation is loading. Please wait.

密碼學與網路安全 第6章 其他的對稱式加密法.

Similar presentations


Presentation on theme: "密碼學與網路安全 第6章 其他的對稱式加密法."— Presentation transcript:

1 密碼學與網路安全 第6章 其他的對稱式加密法

2 多重加密和DES DES有被暴力法攻擊破解的可能,因此需要尋求替代方案 AES是另一種新的加密選擇

3 2DES 在每個區塊使用2DES加密 能簡化成單一階段 會遭到「中點交會攻擊」 C = EK2(EK1(P))
花費的成本是級數256 這並不會比破解單一DES所需要的成本級數255多太多

4 2DES

5 雙金鑰的3DES 三階段三金鑰的加密是抵抗中點交會攻擊法的方式 但能以E-D-E順序使用兩把金鑰
C = EK1(DK2(EK1(P))) 在第二階段使用解密程序並無關密碼學的強度 唯一的優點是讓3DES使用者可以解開用舊的單一DES所加密的資料 使用雙金鑰的3DES是很普及的DES替代方案,並且也已經被金鑰管理標準ANS X9.17和ISO 8732採納 目前並沒有實際可行的攻擊3DES的方法

6 3DES

7 三金鑰的3DES 雙金鑰3DES使用者可能還是會擔心遭到攻擊 目前許多研究人員都覺得三金鑰3DES才是更好的選擇
C = EK3(DK2(EK1(P))) 如果讓K3 = K2或K1 = K2,三金鑰3DES能與DES回溯相容 諸如PGP、S/MIME等網際網路應用已經採用三金鑰3DES

8 區塊密文的運作模式 NIST定義了四種區塊密文的運作模式(FIPS 81),這四種模式能將區塊密文套用在各式各樣的應用
運作模式是一種技巧,可以增強加密演算法的效果,或者讓演算法更適用於某種應用 例如將區塊密文應用在循序的資料區塊或資料串 新的應用需求出現,NIST提出了第五種的建議模式(Special Publication A) 這些模式是希望用在任何對稱式區塊密文,也包括了3DES和AES

9 ECB (電子編碼書模式) 一次處理一個明文區塊,而每個明文區塊是以相同的金鑰加密 每b個位元明文區塊以一把金鑰產生獨特的密文
對每個可能的64位元明文區塊組合都會有其相對應的密文區塊 若訊息的長度超過b位元,ECB的運作過程會將訊息切成b位元為單位的區塊 Ci = DESK1(Pi)

10 ECB (電子編碼書模式)

11 CBC (密文區塊串接模式 ) CBC模式每一個要加密的明文區塊在輸入到加密演算法之前,要先與前一個密文區塊做XOR運算,而每個區塊都使用相同的金鑰 依照各明文區塊的處理順序,將之前產生的區塊與目前區塊進行XOR的動作,稱為串接 每個明文區塊來說,輸入給加密函數的資料就不再與原來的明文區塊有固定關係 解密時,每個密文區塊都會送往解密演算法,解密的結果再與前一個密文區塊做XOR運算,最後才會產生明文區塊 要產生第一個密文區塊,需要初始向量 Ci = DESK1(Pi XOR Ci-1) C-1 = IV

12 CBC (密文區塊串接模式 )

13 CFB (密文回饋模式 ) DES加密本質上就是使用b位元區塊的區塊加密法 加密串流最讓人滿意的特色,是密文的長度與明文相同
但若使用CFB或OFB,就能讓DES變成串流加密 串流加密不需要將訊息補成大小固定的區塊就能夠即時運作 若在傳送字元串流使用字元導向的串流加密法,就能立即加密並傳送每個字元 加密串流最讓人滿意的特色,是密文的長度與明文相同 因此若傳送8位元字元,每個字元都應該加密,並產生8位元的加密文字 讓產生的結果低於8位元,可以有效的利用傳送效率 Ci = Pi XOR DESK1(Ci-1) C-1 = IV

14 CFB (密文回饋模式 )

15 OFB (輸出回饋模式 ) 加密函數的輸出會回饋到OFB的移位暫存器 不會傳送位元錯誤是OFB的優點
缺點是比CFB更容易遭受訊息串流的更改攻擊 請考慮在密文補滿位元,會在復原的明文補滿相對應的位元 能控制復原明文的更動 可能讓攻擊者對訊息的checksum和資料部分進行重要的更動 並且可以不被錯誤更正碼偵測到等之類的方式 而能改變密文

16 OFB (輸出回饋模式 )

17 CTR (計數器模式 ) 最近才引起ATM的網路安全以及IPSec等應用的興趣 對加密來說,會先加密計數器
然後再與明文區塊進行XOR運算,以產生密文區塊;但並沒有串接 若是解密,會以計數器值的相同順序 對每個加密的計數器與密文區塊進行XOR運算,就會重新獲得相對應的明文區塊

18 CTR (計數器模式 )

19 串流加密 一次加密明文的一個位元組 架構的金鑰是虛擬亂數位元產生器的輸入,並產生一連串看似隨機的8位元數字
這個產生器的輸出稱為「金鑰串流」,是一次進行一個串流和明文位元組的XOR運算 Ci = Mi XOR StreamKeyi 串流加密法類似第2章討論的單次金鑰加密法 不同的是單次金鑰加密法使用真的亂數串流 串流加密法使用虛擬亂數串流

20 串流加密結構

21 串流加密法(Stream Ciphers)
串流加密基本上就是要從一個短的金鑰,進而產生一組次序夠亂且長度夠長的二元訊號,「次序夠亂又難猜測」是串流密碼學所追求的目標。 藉由虛擬亂數位元產生器(pseudo-random bit generator,PRBG)來產生金鑰序列(keystream)在目前是非常廣泛的,而所謂亂數就是無法預測,就一個亂數序列來說,要有很大序列週期,不同長度樣式要平均分散在序列上,一般來說,金鑰序列產生器有三項安全需求: 1.金鑰序列週期要夠大,超過訊息長度。 2.金鑰序列要容易計算產生。 3.金鑰序列難被預測。 假設一個虛擬亂數位元產生器最初有n位元輸出,a(0),a(1),…., a(n-1),在計算上它應該是無法由前面的n位元推算出n+1位元,也就是a(n)是0或1的機率該各佔百分之50。 到目前為止,沒有一套世界標準與檢測方法可用來確定虛擬亂數位元產生器是否難以被預測,除了用各種已知攻擊方式去嘗試外,還沒有破解的理論存在。

22 線性同餘產生器(Linear congruence generator,LCG)
遞迴形式: Xi+1 = a Xi + b mod m (a,b,m)代表亂數產生器的參數也可當作私密金鑰,X0作為亂數產生器的初始值 如果參數經過適當挑選,Xi值就會介於[0,m-1]區間,而區間所有整數都一一出現後才會重複。 例如一個數列Xi = 5Xi mod 16且X0=1產生的序列是{1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,1,8,……}。 然而LCG產生的序列在密碼學上是不夠安全的,因為只要給一小段充足的序列長度,就可以推算出參數m,a,b。截短的LCG (僅使用前面幾個位元) 也已經被證實是不安全。

23 反饋移位暫存器(Feedback shift register,FSR)
由n個正反器(flip-flop)以及反饋函數(feedback function)所組成 a(t) = g(a(t-1),a(t-2),….,a(t-n+1)) ⊕ a(t-n)

24 FSR 根據g可以決定FSR是線性反饋移位暫存器(Linear Feedback Shift Register,LFSR),或是非線性反饋移位暫存器(Non-Linear Feedback Shift Register,NLFSR) g若是線型函數則稱為LFSR,反之則稱為NLFSR 在FSR中每一個單獨儲存元件稱作階(stage) 二元訊號a(0),a(1),a(2),…..a(n-1)儲存在暫存器做為初始值,暫存器的內容稱為狀態 FSR序列的週期是由階數與反饋連接方式所決定 n階FSR序列所能產生的最大週期是2n

25 LFSR反饋函數 線性反饋移位暫存器(LFSR)的反饋函數形式為:
a(t)=c1a(t-1) ⊕ c2a(t-2) ⊕...⊕cn-1a(t-n+1) ⊕ a(t-n) 係數ci為0或1,而⊕代表XOR LFSR的反饋可以用反饋多項式(feedback polynomial) f(x)表示 f(x)=1+c1x+c2xn cn-1xn-1+xn 反饋多項式決定輸出序列的週期與統計性質,而LFSR的初始值不可全部是零。

26 虛擬亂數產生器設計技巧 在公開文獻已有許多技術可保證金鑰序列的不可預期性 兩種簡單的金鑰序列設計技術:
非線性前饋轉換(nonlinear feed-forward transformation) 步進控制(step control)

27 串流加密法的特性 設計考量: 如果金鑰長度差不多相等,設計得宜的虛擬亂數產生器能讓串流加密法和區塊加密法一樣安全
加密序列應該要有較長的週期 金鑰串流應該儘可能接近真正的亂數串流 虛擬亂數產生器的結果是由輸入金鑰的值所決定 如果金鑰長度差不多相等,設計得宜的虛擬亂數產生器能讓串流加密法和區塊加密法一樣安全 串流加密法的主要優點是速度更快且程式碼更少

28 RC4 RC4是由Ron Rivest在1987年為RSA Security公司所設計的串流加密法 是以位元組為運作單位,且金鑰長度是可變動
廣泛用在SSL/TLS、WEP和較新的WPA協定 有系統的從255個值裡挑出一個,而從S得到位元組k 每當產生k之後,S裡的值就會重新排列

29 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 j = (j + S[i] + T[i]) (mod 256) swap (S[i], S[j])

30 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]

31 RC4

32 RC4的強度 目前已經出版了許多分析如何攻擊RC4的論文 就算有適當的金鑰長度(如128位元),這些方法也都無法破解RC4
802.11無線區域網路的WEP協定,很容易會被某種特定的攻擊所破解 基本上,這個問題不在RC4本身 而是用作RC4輸入的金鑰的產生方式發生問題 這個問題並沒有出現在其他採用RC4的應用程式 WEP的問題可以改變金鑰的產生方式來補救 這個問題也點出了設計安全系統的困難

33 RC5 密碼系統 (一) 編碼程序 子鑰匙數目:t = 2r +2,S[0], S[1], ..., s[t-1]。
RSA Data Security Inc. 公司主要產品。 允許使用者自行定義: 鑰匙長度 區段大小 重覆編碼次數 RC5 參數 由三個參數所描述,如 RC5-w/r/b 表示: w :表示每字的位元數 (兩個字元),如區塊長度為 64 bits,則 w = 32。 r :編碼回合次數,由 0, 1, ..., 255。越高混淆程度越高。 b :鑰匙長度,以位元組表示。 譬如:RC5-32/12/16,則表示區塊為 64 bits、編碼為 12 次、鑰匙長度為 128 bits。 編碼程序 子鑰匙數目:t = 2r +2,S[0], S[1], ..., s[t-1]。 鑰匙長度:w (如 32 bits) 初始排列與每一回合都使用到 2 把鑰匙。 五種運算子: 加法運算子 減法運算子 XOR 運算子 左移旋轉運算子 右移旋轉運算子

34 RC5 密碼系統 (二) 編碼程序 加密運算程序: LE0 = A + S[0] RE0 = B + S[1]
For n = 1 to r do LEn = ((LEn-1 ⊕ REn-1) <<< REn-1 ) + S[2 n ] REn = ((REn-1 ⊕ LEn ) <<< LEn ) + S[2 n +1]; 解密運算程序: for n = r down to 1 do RDn-1 = (((RDn – S[2n+1]) >>> LDn) ⊕ LDn) LDn-1 = (((LDn – S[2n]) >>> RDn-1) ⊕ RDn-1); B = RD0 – S[1]; A = LD0 – S[0];

35 RC5 密碼系統 (三) 運作程序

36 總結 3DES 運作模式 ECB、CBC、CFB、OFB、CTR 串流加密 RC4 RC5 Chapter 6 summary.


Download ppt "密碼學與網路安全 第6章 其他的對稱式加密法."

Similar presentations


Ads by Google