공시 한 판

정보보호론 개념서 · 대칭키 암호

AES와 Rijndael

설명 영상 AES와 Rijndael · 2:42

핵심 정리

AES는 미국 NIST가 표준으로 채택한 Rijndael 기반의 대칭키 알고리즘이다. AES는 암호화와 복호화에 같은 키를 쓰는 대칭키 블록 암호다. AES는 1977년 공표된 DES의 짧은 키 길이 등 한계를 보완하기 위해 고안된 후속 표준이며, DES를 대신해 새로운 표준이 되었다.

블록 크기는 128비트로 고정되어 있고, 키 크기는 128·192·256비트 중에서 고른다. 입력 블록은 128비트이며 이 단위로 암호화한다. 블록 크기는 키 길이처럼 선택하는 값이 아니라는 점을 먼저 구분해야 한다. 이 구분은 Rijndael 원형과 AES 표준을 가르는 기준이기도 하다.

구조는 Feistel이 아니라 치환-순열 네트워크(SPN)다. AES는 키 길이 128·192·256비트에 따라 10·12·14 라운드로 구성된다. 라운드 수는 키 길이와 짝을 이루므로, 키 길이를 알면 라운드 수도 정해진다.

키 길이를 늘리면 양자 공격에 대한 안전성 여유를 확보할 수 있다. 다만 이상적인 양자 컴퓨팅에서 그로버 알고리즘을 적용하면 AES-256은 약 128비트 안전성을 가진다. 따라서 키 길이를 늘리면 양자 환경에서 줄어든 안전성을 일부 보완할 수 있지만, 256비트라는 숫자가 곧 256비트 안전성을 뜻하지는 않는다.

자세히

키 길이와 라운드 수

AES의 세 키 길이는 각각 라운드 수와 짝을 이룬다. 128비트 키는 10라운드, 192비트 키는 12라운드, 256비트 키는 14라운드로 구성된다. 이 대응을 표로 정리하면 다음과 같다.

키 길이라운드 수블록 크기
128비트10128비트
192비트12128비트
256비트14128비트

표의 각 열은 키가 길어질수록 라운드 수도 늘어난다는 관계를 보여 준다. 블록 크기는 키 길이와 관계없이 128비트로 같다. 키 길이와 라운드 수의 짝을 묻는 선지가 자주 출제되므로, 세 쌍을 묶어 외우는 것이 효율적이다. 이때 키 길이는 세 가지라는 점도 함께 기억해야 한다.

표준 선정 경위

AES는 미국 NIST의 공모 절차에서 Rijndael이 채택되어 만들어진 표준이다. 공모 과정에서 대먼과 리즈먼이 제출한 Rijndael이 AES 알고리즘으로 선정되었다. 설계자가 벨기에 연구자이므로 국내에서 개발한 알고리즘이 아니라 외국에서 설계되어 국제 표준이 된 알고리즘으로 보아야 한다. 벨기에 연구자들이 설계한 Rijndael 알고리즘이 채택된 국제 표준이라는 진술로 정리할 수 있다.

공표 연도와 공표 기관은 한 묶음으로 외운다. AES는 2001년 미국 NIST가 FIPS-197로 공표한 표준이다. 같은 표준화 흐름에서 DES는 1977년에 공표되었으므로 두 표준의 공표 시점과 기관이 비교 대상이 된다. 기관과 번호가 선지에서 바뀌어 나올 수 있으므로 NIST와 FIPS-197을 짝으로 외운다.

라운드 연산과 복호화

암호화에서는 각 라운드에서 바이트 치환, 행 이동, 열 혼합, 라운드 키 덧셈 순으로 연산한다. 다만 마지막 라운드에서는 열 혼합을 빼고 나머지 세 단계만 수행하므로 라운드마다 연산 구성이 다르다. AES의 마지막 라운드에서는 MixColumns 연산을 수행하지 않는다. 첫 단계인 AddRoundKey는 초기 평문과 라운드 키를 비트별 XOR로 결합하는 연산이다.

복호화는 암호화와 같은 순서를 되밟지 않고 역연산으로 구성된다. 복호화에서 한 블록에 실행되는 처음 네 연산은 ARK, ISR, ISB, ARK 순서이다. ISR은 역 행 이동, ISB는 역 바이트 치환을 뜻한다. 암호 알고리즘과 복호 알고리즘의 연산 목록이 같지 않은 이유가 여기에 있다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 절 읽기