정보보안산업기사 필기

[암호학] AES (Advanced Encryption Standard)

zzadary1012 2026. 3. 25. 22:59

AES

: DES의 취약점을 보완하기 위해 만들어진 암호 알고리즘 

· 후보 : MARS, RC6, Rijndael, Serpent, Twofish → Rijndael이 채택됨 ("레인달"이라고 읽는다)

 

Q. 그렇다면 AES와 Rijndael이 정확히 같은 걸 지칭하는가?

A. 아니다 → AES는 Rijndael의 표준 규격을 정한 것 (Rijndael이 더 넓은 개념)

 

구분 Rijndael (원본 알고리즘) AES (표준 규격)
블록 크기 128, 160, 192, 224, 256비트 지원 128비트로 고정
키 길이 128, 160, 192, 224, 256비트 지원 128, 192, 256비트만 사용
라운드 수 블록과 키 길이에 따라 10~14회 가변적 키 길이에 따라 10, 12, 14회로 고정

[표 - Rijndael & AES]

 

▶ AES : Rijndael 중에서 "블록 크기가 128비트인 버전"만 추려서 표준화한 것

 

 

- 개관

· 평문의 길이 : 128비트 → 128비트짜리 암호문 출력

· 암호키의 길이 : 128, 192, 256비트 (AES-128, AES-192, AES-256)

→ 어떠한 경우에도 라운드 키 크기는 128비트임

· 라운드 횟수 : 10, 12, 14회

· SPN 구조 사용

 

 

- 구조

· AddRoundKey() : 라운드 키와 state를 XOR함

→ 왜하냐? 이후 수행될 연산들이 키의 개입 없이 평문 데이터만 가지고 이루어질시 보안에 취약

· SubBytes() : 비 선형성을 갖는 S-box를 적용하여 바이트 단위로 치환 수행 → 혼돈 제공

→ 16개의 독립된 바이트 단위의 변환 수행 (128비트 = 16바이트)

· ShiftRows() : 행 단위로 순환 시프트(Cyclic shift)를 수행 → 확산 제공

· MixColumns() : 열 단위로 혼합(mixing) → 확산 제공

→ 마지막 라운드에서는 MixColumns() 수행 X

 

 

- 방식

① 128비트의 평문이 입력되어 Pre-round transformation을 거친다.

→ 평문 ⊕ Key(0)

② 이후, N개의 라운드 함수를 거쳐 128비트의 암호문으로 출력된다.

 

- 라운드 함수

1) 구성

· SubBytes() 연산

· ShiftRows() 연산

· MixColumns() 연산

· AddRoundkey() 연산

 

2) 과정

① Pre-round transformation을 거친 데이터에 SubBytes() 연산을 한다.

② 이후 ShiftRows() 연산을 수행하고 MixColumns() 연산을 수행한다.

③ 마지막으로 state ⊕ key 연산을 진행한다.

 

Rijndael 암호화 및 복호화

 

 

※ 정리 ※

● Pre-round : AddRoundKey (한 번만 수행)

일반 라운드 : SubBytes → ShiftRows → MixColumns → AddRoundKey

마지막 라운드 :  SubBytes → ShiftRows → AddRoundKey (MixColumns 생략)

 

 

- 특징

· 알려진 블록 암호 알고리즘에 대한 모든 공격으로부터 안전하게 설계

· 하드웨어 / 소프트웨어 구현 시 효율적 → 응용에 적합

 

구분 DES AES
블록 크기 64비트 128비트
키 길이 64비트 128, 192, 256비트 이상
라운드 횟수 16회 10, 12, 14회
기본 구조 Feistel 구조 SPN 구조
암호화 프리미티브 치환, 전치 치환, 시프트, 비트 혼합
암호학적 프리미티 혼돈, 확산 혼돈, 확산

[표 - DES & AES 비교]

 

 

 

 

 

 

 

 

♠ 2026.03.25 / D-301 ♠

 

오늘은 AES에 대해 알아봤다. 이제 DES vs AES 관련 문제는 모두 풀 수 있겠다. 오늘 생각보다 빨리 끝났는데 내일 아침 일찍 근무 준비해야해서 남은 대칭키 알고리즘은 내일 공부하겠다. 한 6개정도 있는데, 이 알고리즘들은 DES나 AES처럼 원리를 따져가며 정리하지 않고 특징만 정리하는 식으로 공부하겠다. 

 

AES는 알고리즘 이름이 아니라, 특정 알고리즘의 표준 규격을 나타낸 것이다. 가장 많이 쓰이는 대칭키 알고리즘 중 하나로, Advanced Encryption Standard 이름을 보면 알 수 있듯이 DES에서 발전해서 AES라고 생각한다. 교재에 행이 시프트되고, 비트가 혼합되는 과정이 자세히 나와있지 않았으므로, 아마 자세한 원리에 대해선 시험에서 안 나올 것 같다.

 

.

.

.

 

요즘 1시간만 하고 가는데 내일은 진짜 2시간 꽉 채워서 공부하겠다. 이만