AES란?
벨기에 암호학자에 의해 개발되었다.
가능한 키 사이즈
128 비트부터 256비트까지 32비트 단위로 선택이 가능하다.
AES 규격 상으로 128, 192, 256 비트 3종류 사용
SPN(Substitution-Permutation Network)구조 사용
SPN (Substitution-Permutation Network)
암호화의 기본 모듈(라운드)를 여러 번 반복해서 수행한다.
평문 블록 -> R1 -> R2 -> ... -> Rn -> 암호문 블록
64비트 블록과 8비트 S-box 사용을 가정한 경우
SPN 특징
각 라운드 별로 역방향 연산이 가능하다
라운드 키를 아는 경우 라운드 키를 XOR 역연산 해주면 된다.
S-box&P-box은 일대일 함수로서 역연산이 가능하다
*DES에서 쓰였던 Feistel 구조와 차이점
Cons
-Feistel과 다르게 별도의 복호화 알고리즘 구현이 필요
-역방향 연산 가능 필요
Pros
-병렬연산 가능
-입력을 쪼갠 상태에서 동시에 라운드 진행 가능
AES
AES 디자인에 고려된 사항
1. 병렬처리 가능
2. 빠른 확산(Diffustion)
-2개의 라운드만 거쳐도 128 비트가 잘 확산된다. -2개의 라운드만 통과하여 얻은 state의 각 비트가 입력 state 128 비트에 모두 의존하여 계싼됨
3. 대수적 구조를 가진 S-box
-강한 비선형성
-DES와 달리 투명성
4. 라운드 키 스케줄에 S-box 적용
두 개의 비슷한 AES 키를 입력 받더라도, S-box의 비선형성으로 라운드 키가 많이 달라짐
*AES-128이 10라운드인 이유
6라운드까지 구성하는 경우 키 전수조사보다 빠른 공격이 존재한다. 10 라운드가 되면 어떠한 알려진 공격도 키 전수조사보다 빠르지 않기 때문에 10 라운드로 구성되었다.
여러 개의 SPN 라운드를 반복하며, 반복 횟수는 키 사이즈에 따라서 다르다.
표기 | 키 사이즈 | 라운드수 |
AES-128 | 128 비트 | 10 라운드 |
AES-192 | 192 비트 | 12 라운드 |
AES-256 | 256 비트 | 14 라운드 |
라운드
SubBytes, ShiftRow, MixColumns, AddRoundKey 4개의 세부 변환 라운드로 구성된다.
*마지막 라운드는 MixColumns를 제외한 3개의 세부 변환으로 구성한다.
State & Word
AES는 내부 데이터를 행렬로 표시하는데 이 행렬을 State라고 부른다.
128 비트 -> 16 바이트 -> 4*4 행렬(행렬의 각 성분이 1바이트이다!)
16 바이트 숫자의 state 변환
앞에서부터 열을 먼저 채운다.
1. SubBytes
State의 각 바이트를 S-box에 따라 다른 바이트로 substitution한다.
2^8가지의 입력값이 존재하여 2^8가지의 출력값이 존재한다.
비선형성 제공 (차분 공격, 선형 공격에 저항)
*S-box Table 읽는 법: 바이트의 앞쪽 4비트>행, 바이트의 뒷쪽 4비트>열
2. ShiftRow
State의 각 행에 대한 Permutation(순열)
정해진 숫자 만큼 왼쪽으로 순환이동한다. 선형 변환이며 확산 효과를 제공한다.
3. MixColumns
행렬 곱
곱하기 1, 곱하기 2, 곱하기 3 경우만 존재한다. (너무 느리기 때문)
더하기의 경우 F=GF(2^8)에서는 XOR 연산
4. AddRoundKey
128 비트 state와 128 비트 라운드 키를 XOR
두 입력의 XOR 차이를 그대로 유지
복호화
AddRoundKey
해당 라운드 키를 다시 XOR
InvSubBytes
AES에서는 S-box는 8비트 숫자들 간에 일대일 대응함수
InvShiftRows
왼쪽으로 순환 이동한 만큼 오른쪽으로 순환 이동하면 된다.
InvMixColumns
곱하기 행렬 X의 역행렬 C^-1을 곱하면 된다.
'활동들.. > Incognito' 카테고리의 다른 글
블록 암호 모드 (0) | 2022.11.11 |
---|---|
스트림 암호 (0) | 2022.11.05 |
rec&일회용 패드&블록암호 (0) | 2022.10.12 |
Feistal Network 3R 그리기 (0) | 2022.10.12 |
암호학 퀴즈 (0) | 2022.09.05 |