티스토리 뷰

AES는 NIST(National Institute of Standards and Technology)에서 2001년에 만든 대칭키 블록 사이퍼이다. 공모전을 통해서 DES를 대체하려고 선택된 대칭키 블록 암호이다. 

 

AES는 128bits의 데이터를 복호화/암호화 한다. 10, 12, 14, 라운드를 사용한다. key size는 128, 192, 256 비트 중 하나이다. 

 

 

rounds

cipher key size

round key size

AES-128

10

128 bits

128 bits

AES-192

12

192 bits

128 bits

AES-256

14

256 bits

128 bits

 

pre-round는 addRoundKey함수만 수행한다. 

 

[Data Unit]

1word = 4byte

1block = 16byte

 

각각의 Round는 다음과 같은 형식으로 구성된다. 

 

[Transformations]

AES에서 사용하는 transformation의 4가지 타입은 다음과 같다. 

 

1) subsitution ( SubBytes )

2) permutation ( ShiftRows )

3) mixing ( MixColumns )

4) key-adding ( AddRoundKey )

 

 

1. substitution

다음 테이블을 이용해서 SubByte transformation을 해야한다. 

 

예를 들어, 

 

hex로 0C라는 숫자에 대해서, SubBytest Table을 통과하면 FE가 되고, FE는 binary로 11111110이다. 

 

 

Inverse SubBytes

 

반대로 FE에서 0C가 나오게 하는 테이블이다. 

 

 

이 두 표는 어떻게 만들어졌을까??

 

GF(2^8) 필드와 irreducible polynomial (x^8 + x^4 + x^3 + x + 1)을 이용해서 해결할 수 있다. 

갈로아 체인 GF는 내 블로그에서 갈로아 체로 검색하면 어떤 내용인지 볼 수 있다. 

 

 

SubBytes 식은 다음과 같다. 

2. permutation ( ShiftRows )

 

 

 

3) mixing ( MixColumns )

 

 

 

4) key-adding ( AddRoundKey )

 

 

이렇게 하면 한 라운드가 끝난다. 

 

 

Key Expansion

 

일단 AES-128에 대해서 다루면, 10 round이고, pre-round까지 11 round라서 44개의 word가 필요하다. 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함