의견.png

AES

해시넷
ksj4572 (토론 | 기여)님의 2019년 8월 1일 (목) 10:10 판 (AES 암호화 알고리즘)
이동: 둘러보기, 검색

AES(Advanced Encryption Standard)는 DES의 암호화 강도가 약해지면서 개발되었으며 향후 30년 정도 사용할 수 있는 안정성, 128비트 암호화 블록, 다양한 키의 길이(128/192/256 비트)를 갖추었으며 대칭형 암호화이다.

개요

AES는 암호화 키로 128, 192, 256 bit를 가질수 있는데 이를 AES-128, AES-192, AES-256 라고 한다. 사용하는 키에 따라 실행하는 라운드 수가 다르며 128bit 키 사용시에는 10라운드, 192bit에서는 12라운드, 256bit에서는 14라운드를 실행한다. 또한 AES는 DES와 다르게 Feistel Network를 사용하지 않는다. Feistel은 총 bit에서 반을 암호화 하는 방식인 반면에 AES는 대입치환 - Substitution-Permutation Network을 사용하는데, 용어 그대로 대입(Substitution)과 치환(Permutation)을 이용하여 암호화하는 방법이고 전체 bit를 암호화 하는 방식을 사용한다.[1]

역사

AES는 NIST에서 1997년 이후 DES의 안전성에 대한 논란이 일어나자 NIST는 DES를 대체할 차세대 표준 알고리즘 제정을 위한 프로젝트를 추진하였다. 이때 1997년 ~ 1998년 까지 12개국에서 총 15개의 알고리즘이 제안되었다. 정부는 구현하기 쉽고 신뢰성 있는 빠른 암호화가 필요하기에 속도, 다양성 및 계산 요구 사항 등이 검토되었었다. 그중에서 벨기에의 두 명의 암호 전문가 Joan Daemen 과 Vincent Rijm가 디자인한 Rjindael암호가 표준 암호로 선정이 되었다 이후 Advanced Encryption Standard 또는 AES라는 이름을 가지게 되었다.

AES 암호화 알고리즘

  • AES 알고리즘의 연산은 GF(Galois Field) 중 GF(2^8) 에서 이루어지며, AES 에서 사용하는 기약다항식은 m(x)=x^8+x^4+x^3+x+1로 정해져 있다.
  • AES 알고리즘에서 덧셈 연산은 XOR로 대체된다. 따라서 AES 내에서 뺄셈도 동일하게 XOR로 연산된다.
  • AES 알고리즘에서 8비트 곱셈 연산이 등장하는데, AES에서는 곱셈 연산을 (x2) 연산과 (+1) 연산을 통해 구한다. 이때 (x2) 연산을 AES에서는 보통 xtime 이라 부른다. 이때 xtime 연산은 8비트 입력값을 왼쪽으로 1비트 쉬프트하여 구현되는데, 이때 최상위 비트가 1인 경우 0x1b(00011011)를 XOR 한다. 이는 우선 2진수에서 왼쪽으로 1비트 쉬프트하면 곱하기2 연산이 된다는점과 AES에서 사용하는 기약다항식이 x^8+x^4+x^3+x+1이기 때문이다 기약다항식을 최상위 비트인 x^8을 제외하고 8비트 바이너리로 표현하면 0x1b가 된다.

AES 알고리즘에서 (x2) 연산과 (+1)을 통해 곱셈을 구현하는 법은

a 에 9를 곱한다고 가정하겠다. 이는 a*(2^3) + a 로 쓸수있다.(x2)연산이 xtime이므로 a를 xtime에 3번 통과시킨 결과와 a를 XOR 하면 a에 9를 곱한 결과가 나오는 식이다. [2]

DES와 AES의 차이

차이.PNG

각주

  1. 나를위한노트, 〈기초 암호학(2) - AES〉, 《티스토리》, 2019-03-01
  2. 감파고, 〈AES ( Advanced Encryption Standard ) 암/복호화 알고리즘〉, 《티스토리》

참고자료

같이 보기


  의견.png 이 AES 문서는 암호 알고리즘에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.