21
대대대대대대 대대대대대대 AES AES 대대대 대대대 : : 대대대 대대대

Aes

Embed Size (px)

Citation preview

Page 1: Aes

대칭알고리즘대칭알고리즘AESAES

▪ ▪ 발표자 발표자 : : 최명현 최명현

Page 2: Aes

DES challenge DES challenge

DESDES

ChallengChallengee

일자일자 해독시간해독시간 수상자수상자 비고비고

II19971997 년년 11월월 9696 일일 R.VerserR.Verser

-DESHALL -DESHALL 팀구성팀구성-- 인터넷의 위력 입증인터넷의 위력 입증-- 약 약 24.6%24.6% 의 키 공간 조사의 키 공간 조사

IIII19981998 년년 11월월 4141 일일 Distributed.NetDistributed.Net

-- 약 약 22,00022,000 명 참여명 참여-- 약 약 50,000 CPU 50,000 CPU 링크링크

II-2II-2 19981998 년년 77월월 5656 시간시간 EFFEFF

-DES Cracker -DES Cracker 라는 칩사용라는 칩사용 ($250,000)($250,000)-- 초당 초당 880880 억개의 키를 조사하는 속도억개의 키를 조사하는 속도

IIIIII 19991999 년년 11월월

2222 시간시간1515 분분

EFF EFF &&Distrubuted.NetDistrubuted.Net

-Deep Crack -Deep Crack 사용사용-- 약 약 1010 만대의 만대의 PC PC 이용이용-- 초당 초당 2,4502,450 억개의 키 조사속도 억개의 키 조사속도

Page 3: Aes

AES (Advanced Encryption AES (Advanced Encryption Standard)Standard)

19971997 Aes Aes 알고리즘 공모알고리즘 공모 • • 대칭키 블록 암호 알고리즘대칭키 블록 암호 알고리즘 • • 입출력 크기 입출력 크기 : 128: 128 비트비트 • • 키 크기 키 크기 : 128/192/256: 128/192/256 비트비트

19981998 1515 개 후보 알고리즘 선정개 후보 알고리즘 선정

19991999 다섯개 알고리즘 최종후보다섯개 알고리즘 최종후보 • • MARS ,RC6 ,Rijndael ,Serpent ,MARS ,RC6 ,Rijndael ,Serpent ,

TwofishTwofish

20012001 Rijndael Rijndael 채택채택 • • 개발자개발자 : J.Daemen, v.Rijmen: J.Daemen, v.Rijmen

Page 4: Aes

AES PseudoAES(in,out,key){ KeyExpansion(Key,RoundKey)

state = in

AddRoundKey (state,RoundKey[0])

for round=1 step 1 to Nr-1 SubBytes(stats) ShiftRows(stats) MixColumns(stats) AddRoundKey(stats,RoundKey[i] end for SubBytes(stats) ShiftRows(stats) AddRoundKey(stats,RoundKeyp[Nr])

out = stats }

Page 5: Aes

Smplified Rijndael SchemeSmplified Rijndael Scheme암호화암호화 복호화복호화

Page 6: Aes

Rijndeal StructureRijndeal Structure• • 블록사이즈 블록사이즈 : 128 : 128 비트 비트 , , 키 사이즈 키 사이즈 : 128/192/256 : 128/192/256 비트 비트

► ► Linear mixing Linear mixing layerlayer

여러 라운드에 걸친 높은 확산 여러 라운드에 걸친 높은 확산

ShiftRow(state) , MixColumn(statShiftRow(state) , MixColumn(state)e)

► ► Non-linear Non-linear Layer Layer

S-boxS-box 의 병렬 적용 의 병렬 적용

ByteSub(state)ByteSub(state)

► ► Key Addition Key Addition Layer Layer

중간 중간 statestate 에 라운드 키의 에 라운드 키의 EXOREXOR

AddRoundKey(state)AddRoundKey(state)

• • 구조 구조 : 10 / 12 / 14 : 10 / 12 / 14 라운드의 라운드의 SPN SPN 구조 구조 - Byte - Byte 단위의 연산을 이용단위의 연산을 이용 - - 세개의 세개의 layerlayer 로 구성 로 구성

141414141414Nk=8Nk=8

141412121212Nk=6Nk=6

141412121010Nk=4Nk=4

Nb=8Nb=8Nb=6Nb=6Nb=4Nb=4Nr Nr

Nr : rounds Nr : rounds

Nb : block size / 32bitNb : block size / 32bit

Nk : key size / 32bitNk : key size / 32bit

Page 7: Aes

StateState

Rijndael 연산들은 상태 (state) 라고 하는 2 차원 바이트배열에 수행된다 State 는 2 차원 배열로 구성된다 . 행은 4 행으로 구성되고 ,

각 행은 Nb 바이트로 구성된다 .

EAEA 0404 6565 8585

8383 4545 5D5D 9696

5C5C 3333 9898 B0B0

F0F0 2D2D ADAD C5C5

NNbb =4 =4 일때의 일때의 block state block state 와 와 NNk k = 4 = 4 일때의 일때의 key stakey statete

ex) 128ex) 128 비트 입력 비트 입력 : EA 83 5C F0 04 45 33 2D 65 5D 98 AD : EA 83 5C F0 04 45 33 2D 65 5D 98 AD 85 96 B0 C585 96 B0 C5

AA0,00,0 AA0,10,1 AA0,20,2 AA0,30,3

AA1,11,1 AA1,11,1 AA1,21,2 AA1,31,3

AA2,02,0 AA2,12,1 AA2,22,2 AA2,32,3

AA3,03,0 AA3,13,1 AA3,23,2 AA3,33,3

KK0,00,0 KK0,10,1 KK0,20,2 KK0,30,3

KK1,11,1 KK1,11,1 KK1,21,2 KK1,31,3

KK2,02,0 KK2,12,1 KK2,22,2 KK2,32,3

KK3,03,0 KK3,13,1 KK3,23,2 KK3,33,3

Page 8: Aes

GF(2GF(288)) 에서 곱셈에 대한 역원 에서 곱셈에 대한 역원

◈◈ 곱셈에 대한 역원 찾기곱셈에 대한 역원 찾기 만약 만약 GCD(d,f)=1GCD(d,f)=1 이라면 그때 이라면 그때 dd 는 는 modulo f modulo f 상에서 곱셈에 대한 역원을 갖는다상에서 곱셈에 대한 역원을 갖는다 . . 양의 정수 양의 정수 d<fd<f 에 대해에 대해 , dd-1=1 mod f, dd-1=1 mod f 인 인 d-1<fd-1<f 가 존재가 존재 • • Extended Euclid(d,f)Extended Euclid(d,f)

1. (X1. (X11, X, X22, X, X33)<-(1,0,f);(Y)<-(1,0,f);(Y11, Y, Y22, Y, Y33)<-(0,1,d))<-(0,1,d)

2. If X2. If X33= 0 return X= 0 return X33=GCD(d,f); no inverse=GCD(d,f); no inverse

3. If X3. If X33 = 1 return Y3=GCD(d,f); Y2=d-1 mod f = 1 return Y3=GCD(d,f); Y2=d-1 mod f

4. Q = X4. Q = X3 3 // YY33

5. (T5. (T11, T, T22, T, T33) <- (X) <- (X11-QY-QY11, X, X22-QY-QY22, X, X33-QY-QY33))

6. (X6. (X11, X, X22, X, X33) <- (Y) <- (Y11, Y, Y22, Y, Y33))

7. (Y7. (Y11, Y, Y22, Y, Y33) <- (T) <- (T11, T, T22, T, T33))

8. Goto 28. Goto 2

Page 9: Aes

ex) GF(28) 에서 95 의 곱셈에 대한 역구하기

GCD(95,m(x))=1m(x)=x8 +x4 +x3+x+1 b(x)=x7 +x4 +x2+1

A1(x)=1 , A2(x)=0 , A3(x) = x8 +x4 +x3+x+1 B1(x)=0 , B2(x)=1 , B3(x) = x7 +x4 +x2+1 1.Q(x)=(x8 +x4 +x3+x+1) /(x7 +x4 +x2+1) = x [T1,T2,T3]<-[1-x·0 ,0-x·1 , (x8 +x4 +x3+x+1) –x·(x7 +x4 +x2+1)] A1(x)=0 A2(x)=1 A3(x)=x7 +x4 +x2+1 B1(x)=1 B2(x)=x B3(x)=x5 +x4+1

2.Q(x)= (x7 +x4 +x2+1) / (x5 +x4+1) = x2 +x+1 [T1,T2,T3]<-[0-(x2 +x+1)·1 ,1-(x2 +x+1)·x , (x7 +x4 +x2+1) –(x2 +x+1)·(x5 +x4 +1)] A1(x)=1 A2(x)=x A3(x)=x5 +x4 +1 B1(x)=x2 +x+1 B2(x)=x3+x2 +x+1 B3(x)=x

3.Q(x)=(x5+x4 +1) / x = x4 +x3

[T1,T2,T3]<-[1-(x4 +x3)·(x2 +x+1) ,x-(x4 +x3)·(x3+x2 +x+1) , (x5 +x4 +1) –(x4 +x3)·x] <-[x6 +x3 , x7+x3 +x ,1] A1(x)=x2 +x+1 A2(x)=x3+x2 +x+1 A3(x)=x B1(x)=x6 +x3 B2(x)=x7+x3 +x B3(x)=1

B3(x)=1 이므로 B2(x)=B(x)-1 mod m(x) B2(x)=x7+x3 +x = 8A

∴ 95-1 = 8A

GF(2GF(288)) 에서 곱셈에 대한 역원에서 곱셈에 대한 역원

Page 10: Aes

Substitute Bytes Substitute Bytes TransformationTransformation

◈ ◈ state state 의 각 바이트를 치환의 각 바이트를 치환 • • 각 바이트를 각 바이트를 16x16 s-box16x16 s-box 를 이용하여 치환를 이용하여 치환 • • 88 비트를 상위 비트를 상위 44 비트가 행비트가 행 , , 하위 하위 44 비트가 열로 사용비트가 열로 사용 ..

Page 11: Aes

Substitute Bytes TransformationSubstitute Bytes Transformation

• • S-box()S-box() 는 기약다항식 는 기약다항식 m(x) = xm(x) = x8 8 +x+x4 4 +x+x33+x+1+x+1 을 사용하여 구성한다을 사용하여 구성한다 . . • • 구성방법 구성방법

• • 먼저 먼저 s-box()s-box() 에 에 00,01,...,FF 00,01,...,FF 순으로 초기화 한다순으로 초기화 한다 . . • • 이 값들을 이 값들을 GF(2GF(288)) 에서 곱셈에 대한 역원으로 매핑한다에서 곱셈에 대한 역원으로 매핑한다 . 00 -> 00 . 00 -> 00 • • 한 항의 값이 한 항의 값이 bb77bb66bb55bb44bb33bb22bb11bb0 0 이면 다음 식에 의해 변형된다이면 다음 식에 의해 변형된다 . .

bbi i ’’ =b=bi i ⊕ b ⊕ b(i+4)mod 8 (i+4)mod 8 ⊕ b⊕ b(i+6)mod 8 (i+6)mod 8 ⊕ b⊕ b(i+7)mod 8 (i+7)mod 8 ⊕ c⊕ cii

i i 를 를 0 ~ 70 ~ 7 까지 대입하여 정리하면 아래식이 나온다 까지 대입하여 정리하면 아래식이 나온다 . . 그리고 뒤에 그리고 뒤에 6363 은 임의로 주어진 은 임의로 주어진 1 1 바이트 수 이다 바이트 수 이다 ..

95 =95 =

9595-1-1 = 8A = 8A

Page 12: Aes

S-boxS-box

Page 13: Aes

• • Inverse s-box Inverse s-box 는 는 s-box()s-box() 의 의 bi ’ =bi ⊕ b(i+4)mod 8 ⊕ b(i+6)mod 8 ⊕ b(i+7)mod 8 ⊕ ci 의 역을 적용한 의 역을 적용한

다음 다음 GF(2GF(288)) 에서 곱셈에 대한 역원으로 구성한다에서 곱셈에 대한 역원으로 구성한다 . . 역변환은 역변환은 bbi i ’ = b’ = b(i+2)mod 8 (i+2)mod 8 ⊕ b⊕ b(i+5)mod 8 (i+5)mod 8 ⊕ b⊕ b(i+7)mod 8 (i+7)mod 8 ⊕ d⊕ dii

이며 바이트 이며 바이트 dd 는 는 6363 의 곱셈에 대한 역원인 의 곱셈에 대한 역원인 05 05 이다이다 . .

Inverse Substitute Bytes Inverse Substitute Bytes TransformationTransformation

b´0

b´1

b´2

b´3

b´4

b´5

b´6

b´7

b0

b1

b2

b3

b4

b5

b6

b7

0 0 1 0 0 1 0 1

1 0 0 1 0 0 1 0

0 1 0 0 1 0 0 1

1 0 1 0 0 1 0 0

0 1 0 1 0 0 1 0

0 0 1 0 1 0 0 1

1 0 0 1 0 1 0 0

0 1 0 0 1 0 1 0

== +

10100000

Page 14: Aes

Inverse S-boxInverse S-box

Page 15: Aes

Shift row TransformationShift row Transformation

• • 각행을 행의 각행을 행의 index index 만큼 왼쪽으로 만큼 왼쪽으로 circular shift circular shift 함 함 . .

Page 16: Aes

Mix ColumnMix Column • • Mix columnMix column 에서는 에서는 statestate 의 의 columncolumn 이 이 GF()GF() 에서의 다항식 에서의 다항식 a(x)a(x) 가 고정된 다항식 가 고정된 다항식 c(x)c(x) 에 대해 에 대해

a(x) ⊕ c(x) mod (xa(x) ⊕ c(x) mod (x44+1) +1) 연산을 행한다연산을 행한다 . . • • c(x) = c(x) = ’’0303’’ x x3 3 + + ’’0101’’ x x2 2 + + ’’0101’’ x + x + ’’0202’’ • • d(x) = ’0B’xd(x) = ’0B’x33 + ’0D’x + ’0D’x22 + ’09’x + ’0E’ + ’09’x + ’0E’ • • m(x) = xm(x) = x44+1+1

최고차항이 최고차항이 44 차 보다 작은 두 다항식 차 보다 작은 두 다항식 a(x) b(x)a(x) b(x) 가 있다고 가정하면 가 있다고 가정하면 a(x)= a3x3 +a2x2 +a1x+a0 , b(x)= b3x3 +b2x2 +b1x+b0 이다이다

c(x)= a(x)b(x) 하면 c(x)= c6x6 +c5x5 +c4x4 +c3x3 +c2x2 +c1x1+c0

c0 = a0•b0c1 = a1•b0 a0 •b1c2 = a2•b0 a1•b1 a0•b2c3 = a3•b0 a2•b1 a1•b2 a0•b3c4 = a3•b1 a2•b2 a1•b3c5 = a3•b2 a2•b3c6 = a3•b3

Page 17: Aes

Mix ColumnMix Column

c(x)c(x) 의 최고차항이 의 최고차항이 44 보다 크기때문에 보다 크기때문에 mod m(x) mod m(x) 연산을 연산을 해주면 그값은 아래와 같다해주면 그값은 아래와 같다 . .

c(x)mod m(x)= d(x) = dc(x)mod m(x)= d(x) = d3x3 +d2x2 +d1x+d0 = c= c3x3 +c2x2+c6x2 +c1x+c5x+c4 +c0

dd00 = a = a00 b•b• 00 a a33 b•b• 11 a a22 b•b• 22 a a11 b•b• 33

dd11 = a = a11 b•b• 00 a a00 b•b• 11 a a33 b•b• 22 a a22•• bb33

dd22 = a = a22 b•b• 00 a a11 b•b• 11 a a00 b•b• 22 a a33•• bb33

dd33 = a = a33 b•b• 00 a a22 b•b• 11 a a11 b•b• 22 a a00•• bb33

위 식을 간단히 하면 아래와 같이 된다위 식을 간단히 하면 아래와 같이 된다 ..

b0

b1

b2

b3

d0

d1

d2

d3

==

aa0 0 aa3 3 aa2 2 aa11

aa1 1 aa0 0 aa3 3 aa22

aa2 2 aa1 1 aa0 0 aa33

aa3 3 aa2 2 aa1 1 aa00

b0

b1

b2

b3

d0

d1

d2

d3

==

02 03 01 0102 03 01 01

01 02 03 0101 02 03 01

01 01 02 0301 01 02 03

03 01 01 0203 01 01 02

Page 18: Aes

Mix ColumnMix Column

02 03 01 0102 03 01 01

01 02 03 0101 02 03 01

01 01 02 0301 01 02 03

03 01 01 0203 01 01 02

876E46A6

==

473794ED

Page 19: Aes

The round key additionThe round key addition

• • 라운드 키는 키 스케줄에 의해 생성된 키들과 라운드 키는 키 스케줄에 의해 생성된 키들과 statestate 의 의 EXOR EXOR 이다이다 . .

Page 20: Aes

Key expansion Pseudo code Key expansion Pseudo code

Page 21: Aes

Key expansionKey expansion

••128 128 비트 키를 비트 키를 4Nr+4 4Nr+4 개의 개의 3232 비트 워드로 비트 워드로 확장 확장