728x90
반응형
SPN (Substitution Permutation Network)
- 곱 암호의 일종
- S-Box : Substitution, P-Box : Permuttion을 여러 라운드에 걸쳐 반복함
- 페이스텔 구조에 비해 암호학적 안전성이 높음
AES 구조
- AES-128 > 키의 길이 : 128비트, 라운드 수 : 10, State : 4x4
- AES-192 > 키의 길이 : 192비트, 라운드 수 : 12, State : 4x6
- AES-256 > 키의 길이 : 256비트, 라운드 수 : 14. State : 4x8
State(상태 배열)로 재구성 (State의 각 칸에는 1바이트 저장)> AddRoundKey 함수 적용
매 라운드 : SubBytes > ShiftRows > Mixcolumns > AddRoundKey 를 적용
* 마지막 라운드에서는 Mixcolumns를 제외한 나머지 함수들만 적용
각 라운드 함수 : 역함수 존재 > AES 복호화
AES 라운드 함수
SubBytes
- 혼돈 구현
- SBox-inverse table 존재
- (4비트, 4비트) 단위로 행렬에서 테이블을 참조하여 치환
ShiftRows
- 각 행을 구성하는 바이트들을 쉬프트하는 함수
- Permutation의 역할을 수행
MixColumns
- 갈루아 필드 내에서의 행렬 연산으로 구함
- 최적화를 위해 미리 계산된 lookup table을 만들어 사용
AddRoundKey
- Key Schedule(키 생성 함수)로 생성된 라운드 키의 state를 바이트별로 XOR함
- 복호화 : XOR 성질을 이용해 동일한 키를 state에 XOR함
Key Schedule (키 생성 함수)
- 라운드 키 개수 : 라운드 개수 + 1
- 키 행렬 : 4 x 열 * 라운드 키 개수
- 키 행렬의 각 열을 \(W_0, W_1, ... W_43\) 으로 표현할 때 > \(W_0, W_1. W_2, W_3\)은 입력된 키의 각 열과 같음 (입력된 키를 그대로 사용하기 때문)
- \(W_{i≥4}\) 는 \(W_{i-1}\)에 RotWord > SubWord > Rcon을 적용하고 이를 W_{i-4}와 XOR하여 생성
RotWord
열을 위로 한번 회전
SubWord
SubBytes에서 사용한 것돠 동일한 S-Box를 사용해 각 바이트 치환
Rcon
- \(R\)이라는 1행짜리 행렬이 존재함
- \(W_i\)의 최상위 바이트를 \(R[i/4-1]\)과 XOR함
- 위의 결과와 \(W_{i-4}\)를 XOR
reference
- Dreamhack Cryptography> 블록암호 : AES
728x90
반응형
'Hacking > Cryptography' 카테고리의 다른 글
[키 교환] Diffie-Hellman Algorithm (1) | 2024.02.12 |
---|---|
[블록 암호] 운영모드 (0) | 2024.02.12 |
[블록 암호] DES (1) | 2024.02.10 |
현대 암호 (0) | 2024.02.09 |
고전 암호 (0) | 2024.02.09 |