AES의 특징
1. 128비트 블록단위로 암호화하는 대칭 암호 알고리즘
2. 키의 비트 길이는 128, 192, 256비트
3. 10/12/14 라운드
4. SPN 구조
5. 바이트 단위의 연산 위주
AES의 구조

1. SubBytes
2. ShiftRows
3. MixColumns
4. AddRoundKey
- 마지막 라운드에는 MixColumns 수행하지 않음
- 구현 효율성과 암호화 / 복호화 대칭성에 유리하기 때문
SubBytes


Rijndaek field : GF(2^8) = GF(2)[X] / <m(x)>
M(x) = x^8+x^4+x^3+x+1
SubBytes 함수 : y = S(x) = Ax^(-1) + b
-> GF(2^8)에서 mod m(x) 상에서의 inverse계산
- >Affine 변환 적용(GF(2) 상)
AES의 S-Box

ShiftRows
각 행을 위로부터 0,1,2,3 만큼 왼쪽으로 회전
MixColumns 과 함께 확산효과를 위하여 사용

MixColumns

- 열 단위 확산함수
- 각 열을 GF(2^8) 상의 벡터로 간주한 선형 변환
- 각 열을 c(x) = 03x^3 + 01x^2 + 01x + 02와 mod x^4 + 1 상에서 곱한다.
- b(x) = c(x) * a(x) mod x^4 + 1
AES 라운드 함수의 테이블 구조 구현 1
- SubBytes, ShiftRows, MixColums


AES 라운드 함수의 테이블 구조 구현 2
- AddRoundKey


'Cipher analysis > AES' 카테고리의 다른 글
| [Python] AES Cipher 암호화, 복호화 구현하기 (0) | 2020.10.12 |
|---|---|
| [Python] AES, Hash 구현 - Crypto 모듈 이용 (0) | 2020.09.12 |