Top Banner
1- 1- 1 就就就就就就就 就就就 DES 就就就就就就就就就就就就就就 ( 就 56 就就 ) 就就就就就就就就就 就就就就就就就就 就就就 ,, Triple-DES 就就就就就就就就就就就就 就就就就就 Triple-DES 就就就就就就就就就就就就就就就 就就就就就就就就就 (NIST) 就 1997 就就就就就就就就就就就 就就就就就 就就就就就 ( 就就 AES) 傳傳傳傳傳傳傳傳 一、: AES
29

1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

Dec 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 11

就目前科技而言,現有之 DES 密碼系統所使用之金鑰長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高其安全性,便有了 Triple-DES 的構想。

隨著電腦技技的發展,可預見未來 Triple-DES 的加密演算法也勢必淘汰,有鑑於此,美國國家標準技術局 (NIST) 於 1997 年元月二日開始著手計劃公開徵求新一代加密標準 ( 簡稱 AES) 。

一、傳統的加解密法: AES

Page 2: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 22

• Advanced Encryption Standard (AES)

AES 為新一代 NIST/FIPS 的加密標準

• NIST 於 1998 年開始 15 個 AES 候選演算法之技術分析

• 1999 年選出五個候選演算法 :MARS, RC6, Rijndael, Serpent, Twofish

• NIST 於 2000 年選定 Rijndael 為新一代的加密標準

一、傳統的加解密法: AES

Page 3: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 33

有限體 GF(28)

一個位元組 ( byte) b 是由 8 個 bits b7 b6 b5 b4 b3 b2 b1 b0

所組成的,我們可以將它視為一個係數為 0 或 1 的多項式如下 :

b7 x7+ b6 x

6+ b5 x5+ b4 x

4+ b3 x3+ b2 x

2+ b1 x1+ b0 x

0

Example:

16 進位表示法’ 57’ 的 2 進位表示法為 01010111 ,它所對應的多項式則為 :

x6+ x4+ x2+ x+1 .

Page 4: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 44

Example 1:

(x6+ x4+ x2+ x+1) +( x7+ x+1)= x7+ x6+ x4+ x2 .

”01010111”+”10000011”=”11010100”

Example 2: (x6+ x4+ x2+ x+1)•( x7+ x+1) = x13 + x11 + x9 + x8

+ x7 + x7 + x5 + x3 + x2 + x +x6 + x4 + x2 + x + 1

= x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+1

x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+1 modulo x8+ x4+ x3+ x+1

= x7 + x6 + 1

有限體 GF(28) 下之運算

Page 5: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 55

有限體 GF(28) 下之運算

10xx0x0x0x0x x

___________________________________________________________________________

xxx0xxx0x0x0 x

xxx0x0x0x0x0x0 x

____________________________________________________________________________

0x0x0xx0x

xxx0xxx0x0x0x

10xx0xxxxx0xxx0xx0x1xxxx

1234567

34567891011

34567891011

12345

5678910111213

123456789101112131348

Page 6: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 66

Multiplication by xMultiplication by x

• Multiply b(x) with the polynomial x: b7x8+b6x7+b5x6+b4x5+b3x4+b2x3+b1x2+b0x

• If b7=0, the reduction is identity operation; if b7=1, m(x) must be subtracted (i.e. EXORed).

• That is, multiplication by x (‘02’) can be implemented by a left shift and a conditional EXOR with’1B’.

1xx0x x

____________________________________________________________________________

1

1xx0xxx00xx0x

00xx0x0x0x00xx0x1xxxx

1234

12345678

123456781348

0001 1011

Page 7: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 77

ExampleExample

• ‘57’ ‘13’ =‘FE’

‘57’ ’02’=xtime(57)=‘AE’

‘57’ ’04’=xtime(AE)=‘47’

‘57’ ’08’=xtime(47)=‘8E’

‘57’ ’10’=xtime(8E)=‘07’

‘57’ ‘13’ =‘57’(‘01’’02’’10’) = ‘57’’AE’’07’=‘FE’

Page 8: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 88

Polynomials with coefficients Polynomials with coefficients in GF(2in GF(288))

• Two polynomials over GF(28):a(y)=a3y3+a2y2+a1y+a0

b(y)=b3y3+b2y2+b1y+b0

• Their product c(y)=c6y6+c5y5+c4y4+c3y3+c2y2+c1y+c0

c0=a0 b0

c1=a1 b0 a0 b1

c2=a2 b0 a1 b1 a0 b2

c3=a3 b0 a2 b1 a1 b2+ a0 b3

c4=a3 b1 a2 b2 a1 b3

c5=a3 b2 a2 b3

c6=a3 b3

Page 9: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 99

Polynomials with coefficients in Polynomials with coefficients in GF(2GF(288))

• By reducing c(y) modulo a polynomial of degree 4, the result can be reduced to a polynomial of degree below 4.

• M(y)=y4+1 and

yi mod y4+1=yi mod 4.

Page 10: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1010

Polynomials with coefficients in Polynomials with coefficients in GF(2GF(288))

• Product of a( y ) and b( y ):

d( y ) = a( y ) b( y )= d3y3+d2y2+d1y+d0

d0 = ab0 ab1 ab2 ab3

d1 = ab0 ab1 ab2 ab3

d2 = ab0 ab1 ab2 ab3

d3 = ab0 ab1 ab2 ab3

• Two polynomials over GF(28):a(y)=a3y3+a2y2+a1y+a0

b(y)=b3y3+b2y2+b1y+b0

Page 11: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1111

Polynomials with coefficients in Polynomials with coefficients in GF(2GF(288))

circulant matrix:

Page 12: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1212

Polynomials with coefficients in Polynomials with coefficients in GF(2GF(288))

circulant matrix:

e5

81

66

04

30

5d

bf

d4

02010103

03020101

01030201

01010302

e5

81

?

?

30

5d

bf

d4

02010103

03020101

01030201

01010302

= 02d4 03bf 015d 0130 = 1011 00111101 10100101 11010011

0000=0000 0100=04

Page 13: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1313

Rijndael 演算法

Rijndael 是一個包含可變區塊長度和可變密鑰長度的區塊加密法 , 其區塊長度和密鑰長度可允許為 128, 192 或 256 bits

Nr Nb=4 Nb=6 Nb=8Nk=4 10 12 14Nk=6 12 12 14Nk=8 14 14 14

運算回合數與區塊長度和密鑰長度之關係

Page 14: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1414

Example of The State and the Cipher Key

32 88 31 E0

43 5A 31 37F6 30 98 17A8 8D A2 34

54 E1 31 E0

21 5A C1 37A6 C1 98 22A8 8D A2 55

128bits 之區塊長度表示法 (Nb = 4)

128bits 之密鑰長度表示法 (Nk = 4)

Page 15: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1515

Round 函數 Round(State, RoundKey)

{ ByteSub(State);

ShiftRow(State);

MixColumn(State);

AddRoundkey(State, RoundKey); }

FinalRound(State, Roundkey)

{ ByteSub(State);

ShiftRow(State);

AddRoundkey(State, RoundKey); }

Page 16: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1616

ByteSub 函數 y0 1 1 1 1 1 0 0 0 x0 0

y1 0 1 1 1 1 1 0 0 x1 1

y2 0 0 1 1 1 1 1 0 x2 1

y3 0 0 0 1 1 1 1 1 x3 0

y4 = 1 0 0 0 1 1 1 1 x4 + 0

y5 1 1 0 0 0 1 1 1 x5 0

y6 1 1 1 0 0 0 1 1 x6 1

y7 1 1 1 1 0 0 0 1 x7 1

 

Page 17: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1717

ShiftRow 函數Nb C1 C2 C3

4 1 2 36 1 2 38 1 3 4

a b c dm n o pj k I lw x y z

a b c dn o p mI l j kz w x y

不同的區塊長度所須旋轉的大小

ShiftRow 運算在狀態值表的情形 (Nb=4)

Page 18: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1818

在 MixColumn 函數中,狀態值表的每一行是被視為在 GF(28)中的多項式,並且乘上一個固定的多項式 C(x) 後再同餘於多項式 y4+1 ,而其中 C(y)=’03’y3+’01’y2+’01’y+’02’

我們可將其表示矩陣乘法。令 b(y)=c(y)a(y)

b0 02 03 01 01 a0

b1 = 01 02 03 01 a1

b2 01 01 02 03 a2

b3 03 01 01 02 a3 

MixColumn 函數

Page 19: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 1919

子金匙加法函數 (The Round Key Addition)

32 88 31 E0

43 5A 31 37F6 30 98 17A8 8D A2 34

54 E1 31 E0

21 5A C1 37A6 C1 98 22A8 8D A2 55

32 88 31 E0

43 5A 31 37F6 30 98 17A8 8D A2 34

(Nb = 4)

Page 20: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2020

Key Expansion

(Nk 6)

KeyExpansion(CipherKey , W)

{ for( i =0 ; i < Nk ; i++)

W[i]=CipherKey[i] ;

for( j= Nk ; j < Nb*(Nr+1) ; j + = Nk )

{ W[ j ]=W[ j - Nk] ^ SubByte(Rotl(W[j-1])) ^ Rcon[j/ Nk] ;

for( i =1 ; i < Nk && i + j < Nb*(Nr+1) ; i ++)

W[i+j] = W[ i+j- Nk] ^ W[ i+j+1]; } }

Page 21: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2121

Key Expansion

(Nk > 6) KeyExpansion(CipherKey , W) { for( i =0 ; i < Nk ; i++) W[i]=CipherKey[i] ; for( j= Nk ; j < Nb*(Nr+1) ; j + = Nk ) { W[ j ]=W[ j - Nk] ^ SubByte(Rotl(W[j-1])) ^ Rcon[j/ Nk] ; for( i =1 ; i < 4 ; i ++) W[i+j] = W[ i+j- Nk] ^ W[ i+j-1]; W[j+4] = W[j+4- Nk]^ SubByte(W[j+3]) for( i =5 ; i < Nk ; i++) W[i+j] = W[ i+j- Nk] ^ W[ i+j-1]; } }

Page 22: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2222

加密演算法 Rijndael(State , CipherKey)

{

KeyExpansion(CipherKey , ExpandedKey) ;

AddRoundKey(State , ExpandedKey);

For ( i =1 ; I < Nr ; i++)

Round(State , ExpandedKey + Nb* i );

FinalRound(State , ExpandedKey + Nb * Nr );

}

Page 23: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2323

InvCipher(byte in[4 * Nb], byte out[4 * Nb], word w[Nb * (Nr + 1)])beginbytestate[4,Nb];state = inAddRoundKey(state, w + Nr * Nb)for round = Nr - 1 step -1 to 1 InvShiftRows(state)InvSubBytes(state)AddRoundKey(state, w + round * Nb)InvMixColumns(state)

end forInvShiftRows(state)InvSubBytes(state)AddRoundKey(state, w)out = stateend

Pseudo Code for the Inverse Cipher

Page 24: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2424

AES 的使用模式可參考 DES 的使用模式,有底下四種標準操作模式:

(1) 電子編碼模式( Electronic Codebook Mode, ECM ) (2) 密文塊串連模式( Cipher Block Chaining, CBC ) (3) 密文反饋模式( Cipher Feedback, CFB ) (4) 輸出反饋模式( Output Feedback, OFB )

AES 的使用模式

Page 25: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2525

(1) 電子編碼模式( Electronic Codebook Mode, ECM )

AES 的使用模式

AES K

M 1 , M 2 , ...

C 1 , C 2 , ..

AES K

M 1 , M 2 , ...

C 1 , C 2 , ..

加密 解密

Page 26: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2626

(2) 密文塊串連模式( Cipher Block Chaining, CBC )

AES 的使用模式

AES K

M 1 , M 2 , ...

C 1 , C 2 , ..

AES K

M 1 , M 2 , ...

C 1 , C 2 , ..

加密 解密

初始值 C 0

初始值 C 0

C i = E k ( M i C i -1 ) M i = D k ( C i ) C i -1

Page 27: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2727

(3) 密文反饋模式( Cipher Feedback, CFB )

AES 的使用模式

解密

M i = E k (I i-1 ) j C i

AES K

M 1 , M 2 , ... C 1 , C 2 , ..

初始值 I 0 暫存器

( j 位元 )

取左 j 位元

128- j j

AES K

M 1 , M 2 , ... C 1 , C 2 , ..

初始值 I 0 暫存器

128- j j

加密

I i = Shift j (I i-1 ): C i

C i = E k (I i-1 ) j M i I i = Shift j (I i-1 ): C i

Page 28: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2828

(4) 輸出反饋模式( Output Feedback, OFB )

AES 的使用模式

解密

M i = E k (I i-1 ) j C i

AES K

M 1 , M 2 , ... C 1 , C 2 , ..

初始值 I 0 暫存器

( j 位元 )

取左 j 位元

128- j j

加密

C i = E k (I i-1 ) j M i

I i = Shift j (I i-1 ): E k (I i-1 ) j

AES K

M 1 , M 2 , ... C 1 , C 2 , ..

初始值 I 0 暫存器

取左 j 位元

128- j j

I i = Shift j (I i-1 ): E k (I i-1 ) j

Page 29: 1-1 就目前科技而言,現有之 DES 密碼系統所使用之金鑰 長度過短 ( 僅 56 位元 ) ,其安全性已遭受質疑,為提高 其安全性,便有了 Triple-DES

1-1- 2929

AES 的使用模式

密文搜尋法 錯誤傳播 次序

ECM

CBC

CFB

OFB