본문 바로가기
cryptology

AES 란? AES 암호란?

by jinhyuk._.c 2022. 8. 12.

AES란?

 고급 암호화 표준(Advanced Encryption Standard)은 2001년 미국 표준 기술 연구소에 의해 제정된 암호화 방식입니다. AES는 두 명의 벨기에 암호학자인 요안 다먼과 빈센트 레이먼에 의해 개발된 Rijndael 에 기반하며 AES 공모전에서 선정되었습니다. AES 표준은 여러 Rijndael 알고리즘 중 블록 크기가 128비트인 알고리즘을 뜻합니다.

 그후 AES는 미국 정부가 채택한 이후 전 세계적으로 널리 사용되고 있습니다. 1977년 공표된 DES를 대체한 AES는, 암호화와 복호화 과정에서 동일한 키를 사용하는 대칭 키 알고리즘입니다. 또한 미국의 국가안보국에 의해 1급비밀에 사용할 수 있도록 승인된 알고리즘 중 최초로 공개되어 있는 알고리즘입니다. DES와의 차이점은 페이스텔 구조가 아닌 SPN 구조를 이용한다는 점입니다.

 

다음에서는 SPN 의 구조에 대해 알아보겠습니다,

 

SPN 구조란?

SPN은 Substitution - Permutation Network의 약자로말 그대로 Substitution Layer와 Permuation Layer를 이용하여 Confusion과 Diffusion을 만족시켜주는 암호입니다. 다음 그림으로 SPN구조를 보여드리겠습니다.

 

장점은 Feistel 구조와 반대로 병렬연산이 가능하다는 점이 있습니다.

단점은 복호화시 별도의 복호화 모듈을 구현해줘야 한다는 점이 있습니다.

 

다음은 AES 알고리즘에 대해 알아보겠습니다.

 

그림에서 보이는 순서를 알려드리면 다음  네가지 단계를 이용합니다.

 

1. Substitution Byte (바이트 치환)

암호문이 비 선형성을 갖도록 하기 위해 바이트 단위로 역 변환이 가능한 S-box를 이용하여 블록을 치환합니다.

연산은 크게 두 단계로 구성됩니다. 

 

첫번째는 각 바이트를 GF(2^8)위 다항식으로 표현하여 mod 8차 기약다항식 상에서의 역수를 구하는 것으로 확장 유클리드 호제법을 이용하여 수행합니다.

두번째는 GF(2)위에서 Affine변환을 적용하는 과정으로 다음과 같은 행렬을 사용합니다.

첫번째와 두번째를 통해 Sub byte 연산을 수행하면 현재 stat의 각 바이트는 아래 그림과 같이 다른 바이트로 치환됩니다.

위의 그림(Affine)변환의 결과 집합을 S-box로 표현하면 다음 그림과 같습니다.

2. Shift row (행 이동)

행단위로 Shift 연산하여 행과 행을 치환합니다.

3. Mix column (열 섞기)

열에 속한 모든 바이트를 순환 행렬을 사용해 함수로 열에 있는 각각의 바이트를 대체하여 변환시킵니다.

위의 그림처럼 각각 바이트에 특정행렬과 곱연산을 가하여 변환합니다.

위 그림에서 왼쪽의 행렬부분이 암호화에 쓰이는 행렬이며, 곱해지는 곳은 예시로 입력한 32비트 입력입니다. 연산은 행렬의 곱연산과 동일하게 이루어 집니다.

 

4. Add Round Key (라운드키 더하기 )
라운드 키와 현재 state 블록을 비트별로  각각 XOR 연산을 합니다. 이렇게 되면 암호화 과정의 state와 라운드 키는 동일한 크기를 가지며, 1라운드를 수행하기 전에 코기 평문과 라운드 키를 XOR하는 과정이 필요하므로 위와 같은 연산은 전체 암호화 과정에서 Nn+1번 수행하게 됩니다.

 

위와 같은 방법을 통해 AES의 효과는 다음과 같습니다.

1. 구현이 쉽고 메모리를 적게 소모합니다.

2. Rijdael 에 대한 유효한 공격은 현재로써는 아직 발견이 되지 않았습니다.

3. 암복호화가 빠릅니다.

 

다음 표로 DES 와 AES 의 차이를 보여드리겠습니다.

  DES AES
페이스텔 페이스텔 비페이스텔
블록크기 64비트 128비트
키길이 56비트 128, 192, 256 비트
암호화 프리미티브 전치, 치환  쉬프트, 비트혼합, 치환

 

이상으로 AES 까지 알아보았습니다. 다음 챕터에서는 ARIA 에 대해 알아보겠습니다.

 

 

 

*추가 정보로 AES가 '고급 암호화 표준'이 된 배경을 알려드리겠습니다.(궁금하면 읽어보셔도 좋습니다.)*

 

 미국에서 1997년 1월 2일 NIST(National Institute of Standards and Technology)는 DES를 대체할 목적으로 트리플DES와 같거나 더 나은 보안성을 갖고 개선된 암호 기법을 공모하였습니다. 선정될 암호의 정식 명칭은 1997년 9월 2일 AES(Advanced Encryption Standard)로 정해졌습니다.

 

 NIST는 암호론의 케르코프 원리(대칭 블록)에 의해 128비트 블록을 128혹은 192혹은 256비트 키 길이로 처리할 수 있고, 무료로 배포할 수 있어야 한다는 제한 조건이 있었습니다.

평가 항목으로는 다음과 같았습니다.

 

1. 보안

2. 계산적 효율성

3. 메모리 요구량

4. 하드웨어와 소프트웨어적 적합성

5. 유연성

 

 마감일인 1998년 1월 15일까지 21개의 암호 알고리즘이 제안되었고 그 중 15개 암호 알고리즘이 AES 후보로 선정되어 안전성을 평가 받았습니다. NIST는 15개의 암호 알고리즘에 대하여 제1차 AES 후보 대회를 1998년 8월 20일에 개최 하였고 제2차 AES 후보 대회를 1999년 3월에 개최하였으며 이후, 1999년 8월에는 5개의 후보 알고리즘을 최종 후보로 선정하여 많은 암호학자들로부터 안전성 평가를 받게 하였습니다. 이 때, 남은 5개 알고리즘의 이름은 MARS, RC6, 레인달(Rijndael), Serpent, Twofish였습니다. 그리고 2000년 4월 3차 대회가 개최되고 2000년 10월 2일 AES 알고리즘으로 레인달(Rijndael)을 선정하였습니다. 마지막 평가과정에서 남았던 5개의 알고리즘 중 4개의 알고리즘은 탈락했지만 안전성이 떨어지는 알고리즘은 절대 아니였습니다.

다만 Rijndael의 알고리즘이 안전성, 속도, 효율성, 구현 및 유연성이 다른 알고리즘들 보다 우수했을 뿐이었습니다.

 

 이어 NIST는 2001년 2월 28일에 연방 정보 처리 표준으로 AES를 공개/리뷰/배포 하면서 기밀성있는 정보에 DES를 대체하여 AES를 사용하기 시작하게되었습니다. 2001년 11월 16일에는 표준으로 채택되었으며 2001년 12월 4일에는 FIPS 197로 등록이 되었습니다.

반응형

'cryptology' 카테고리의 다른 글

SEED 암호화란?  (0) 2022.08.31
Twofish 암호화란?  (0) 2022.08.17
ARIA 암호란?? ARIA 에 대해 알아보자  (0) 2022.08.16
대칭키 암호 시스템과 DES 에 대해 알아보자  (0) 2022.08.12
암호학에 대해 알아보자  (0) 2022.08.12

댓글