[정보보안] 8. AES
2021. 10. 25. 16:15ㆍComputer Sciences/Security
1. 등장 배경
- DES가 깨지면서 DES를 대체할 암호 알고리즘이 필요해짐
- NIST에서는 암호 알고리즘 프로젝트를 전 세계에 공표함.
- 128비트의 블럭
- 128비트, 192비트, 256비트의 키 길이를 준수할 것
- 벨기에 연구자 Joan Daemen과 Vincent Rijmen이 설계한 블록 암호 Rijndael이 채택됨
선정 기준
- 안전성: 128비트 키에 대한 안정성 요구
- 비용: 하드웨어, 소프트웨어 등을 고려한 구현 환경
- ⇒ 계산 효율성, 저장 공간 등의 해결
- 구현: 유연성과 단순성
- ⇒ 어느 플랫폼 상에서도 구현되어야 함
2. 라운드 구조
AES는 128비트 평문을 128비트 암호문으로 출력한다.
- non-Feistel 구조
- DES처럼 L과 R을 분리하고 R은 따로 P-Box, S-Box, E-Box 연산을 거치고 다음 라운드에 L과 R을 바꿔서 입력하는 방식이 아니라 순차적인 방식이다. AES는 SPN 구조이다.
- 라운드 - 10, 12, 14 라운드를 사용함
- 각 라운드 별로 키의 비트도 128, 196, 256을 사용함
3. 데이터 단위
- 기본적으로 AES는 bit, byte, word, block, state의 5가지 단위를 사용하여 계산함
- STATE는 16개의 문자를 4x4 행렬로 표현한다. 빈 칸은 z로 입력한다.
- 예시
- 평문 AES uses a matrix이를 행렬로 변환하면 아래와 같다.
- 예시
4. 암호화 과정의 라운드 함수 - State
암호화 과정은 다음의 과정을 순서대로 수행한다.
- sub byte: 대치
- 16개의 독립된 바이트 단위의 변환을 수행한다.
- 4x4 행렬로 나타내고 독립적으로 S-Box 변환테이블의 값을 가져온다. 블록 암호는 S-Box가 필수이다.
- 이 행렬을 S-Box로 대치하면 아래와 같다.
- shift rows: 치환
- 4바이트 단위로 된 행을 왼쪽으로 규칙적으로 이동해서 뒤섞는 처리이다.
- 이때 이동하는 수는 State 행렬의 행 번호(0~3)에 의존한다.
- 0번째 행은 이동하지 않는다.
- 1번째 행은 1바이트만큼 순환이동한다.
- 2번째 행은 2바이트만큼 순환이동한다.
- 3번째 행은 3바이트만큼 순환이동한다.즉 sub byte의 결과를 shitf rows 과정을 거치면 다음과 같다.
- mix columns: 뒤섞기
- 행렬 계산을 통해 값을 섞는다. 열 행렬에 상수 정방행렬을 곱하는 연산이다.
- 4바이트 값을 비트 연산을 사용하여 다른 4바이트 값으로 변환처리한다.
- 행렬 계산이 들어가 계산식이 복잡해지기 때문에 이 과정은 가급적 생략하는 경우가 많다.
- add round key: 키 더하기
- 라운드마다 제공되는 키 값과 XOR를 수행한다.
5. AES 동작과 해석
1. 동작
- 암호화 1라운드는 sub bytes → shift rows → mix columns → add round key 순으로 처리한다.
- sub bytes는 바이트마다, shift rows는 행마다, mix columns는 열마다 병렬 처리를 수행한다.
- AES는 128, 192, 256 비트 키를 사용하고, 키 크기에 따라 각각 10, 12, 14 라운드를 갖는 세 버전이 있다. 그러나 마스터 키의 크기가 달라도 라운드 키는 모두 128비트이다.
2. 해석
- 안정성
- DES를 대체할 수 있는 안정성을 가지고 있다.
- 구현
- 단순함
- 비용
- 싸다
- 수행시간
- 고속으로 수행 가능하다.
- 수학적 해독
- 현재까지 차분 공격과 선형 공격에 대해 보고되지 않음
6. 결론
DES
- 사용 X
- 과거 소프트웨어와의 호환성 유지를 위해서만 사용
트리플 DES
- 호환성 때문에 앞으로도 당분간은 사용됨
- 점차 AES로 대체될 것
SEED 및 ARIA
- 우리나라 표준
AES(Rijndael)
- 고속
- 다양한 플랫폼
- 현재까지 안전
- 사용 권장
- Rijndael 외에 최종 후보 5개도 사용 가능
'Computer Sciences > Security' 카테고리의 다른 글
[정보보안] 9. 공개 키 암호 (0) | 2021.10.25 |
---|---|
[정보보안] 7. 블록 암호 - DES (0) | 2021.10.25 |
[정보보안] 6. 현대 암호 (0) | 2021.10.25 |
[정보보안] 5. 접근 제어 (0) | 2021.10.25 |
[정보보안] 4. 난수 (0) | 2021.10.25 |