AES - Advanced Encryption Standard

- 대칭 암호 중 블럭 암호로 구현되었다.
- 16bytes = 128bits 의 블럭 사이즈 사용.
- key size는 3종류
- 128bits (10 rounds)
- 192bits (12 rounds)
- 256bits (14 rounds)
<aside>
💡 key size는 3종류가 있지만, block size는 128bits로 고정되어 있는 거 주의.
block size도 3종류 있다고 오해하면 안됨.
</aside>
- SPN(Substitution-permutation network) 로 설계되어 있다.
- 최초의 key를 1개 입력 받아 key expansion을 통해 각 라운드 별로 key를 발급해준다.
- 각 round 에서 16bytes 크기의 블럭을 입력받아 permutation과 substituion을 통해 암호화가 진행된다.
- 이전 round의 ciphertext는 다음 라운드의 plaintext로 사용된다.
- 대칭 암호 이므로 복호화는 암호화의 반대 과정으로 진행된다.
Substitute bytes
- 치환 규칙을 정해 놓은 테이블인 S-Boxes 테이블을 이용하여 1byte 입력을 1byte 출력으로 치환한다.
- AES는 표준이기 때문에 공격자도 S-Boxes 테이블을 알고 있다.

- 1byte = 8bits 에서 4bits씩 나눠서 0x00 ~ 0xff 로 표현하고 앞의 4bits는 x 열, 뒤의 4bits는 y열로 사용한다.
- 입력과 출력의 관계를 알기 어렵게 하는 것이 목표이다.