본문 바로가기
#포트폴리오 [Portfolio]

[Security] 고급 암호화 표준(Advanced Encryption Standard, AES)

by cy_mos 2019. 6. 27.
반응형
고급 암호화 표준(Advanced Encryption Standard, AES)

📔 고급 암호화 표준 (Advanced Encryption Standard, AES)

국가 표준으로 사용되었던 DES(Data Encryption Standard)의 취약점을 보안하기 위해 고안된 암호 알고리즘이다. DES는 대칭키 암호 방식으로 56bit의 길이를 가지는 암호 키를 사용하였는데, 매우 짧은 길이를 가지고 있어 공격에 취약한 약점이 있었다. 이러한 약점을 보완하기 위해 미국표준기술연구소에서는 새로운 암호 공모전을 열었으며, 이때 채택된 것이 바로 AES 암호 알고리즘이다. 이는 벨기에 출신의 암호학자인 존 데이먼(Joan Daemen)과 빈센트 라이먼(Vincent Rijmen)에 의해 제안되었으며, 제안한 알고리즘의 이름은 그들의 이름을 따 만든 라인달(Rijndael) 알고리즘이었다.

 

[네이버 지식백과]   AES 알고리즘   [Advanced Encryption Standard Algorithm] (두산백과)

 

AES 암호 알고리즘은 기존의 DES 암호 알고리즘과 다르게 파이스텔 암호(Feistel Cipher)를 가지고 있지 않으며, 암호 블록 크기는 128bit이다. 또한 알고리즘의 변경 없이도 128bit뿐만 아니라 192bit, 256bit 블록 크기로 확장이 가능하다.


📔 고급 암호화 표준 (Advanced Encryption Standard, AES) 작동원리

 

고급 암호화 표준 (Advanced Encryption Standard, AES) 작동원리

 

  1. 이 구조에서 주목할 만한 특징 중 하나는 이 구조가 페이스텔 구조가 아니라는 것이다. 전형적인 페이스텔 구조를 떠올려 보면 데이터 블록 반쪽을 다른 반쪽을 수정하는 데 사용했고 그 두 반쪽을 교환하였다. AES는 페이스텔 구조를 사용하지 않고 각 라운드에서 대체(substitution)와 치환(permutation)을 이용해서 데이터 블록 전체를 병렬 처리한다.
  2. 입력으로 사용하는 키를 44개의 32비트 워드 배열 w[i]로 확장한다. 4개의 서로 다른 워드(128비트)를 각 라운드에서 라운드 키로 사용한다.
  3. 다음 네 가지 단계를 이용하는데, 한 번의 치환과 세 번의 대체이다.
  • 바이트 대체(Substitute bytes): S-box라는 표를 이용하여 바이트 단위(byte-to-byte) 형태로 블록을 교환한다.
  • 행 이동(Shift rows) : 단순히 행과 행을 치환한다.
  • 열 섞기(Mix columns) : 열에 속한 모든 바이트를 순환 행렬을 사용해 함수로 열에 있는 각 바이트를 대체하여 변화시킨다.
  • 라운드 키 더하기(Add round key) : 확장된 키의 일부와 현재 블록을 비트별로 XOR한다.
  1. 암호와 복호를 위해서 라운드 키 더하기 단계에서 시작하고, 각 라운드에서는 4단계를 모두 포함하는 9라운드를 수행하고, 3단계로 구성된 10번째 라운드를 수행한다.
  2. 오직 라운드 키 더하기 단계에서만 키를 사용한다. 그래서 암호와 복호 과정의 시작과 끝은 항상 라운드 키 더하기 단계이다. 시작이나 끝에 수행되는 다른 단계는 키 없이 역방향 계산이 가능하기 때문에 보안을 강화시키는 데는 아무 역할도 하지 못한다.
  3. 라운드 키 더하기 단계는 그 자체가 강력하지 못대는 대신 다른 세 단계와 같이 작동하여 비트를 뒤섞는 역할을 한다. 하지만 각각은 키를 사용하지 않으므로 보안성을 제공하는 것은 아니다. 이 암호 단계를 살펴보면 블록에 XOR 암호화(라운드 키 더하기)를 하고, 그 다음 블록을 뒤섞고(다른 세 단계), 그 뒤에 다시 XOR 암호화를 하는 것으로 이를 번갈아서 적용하는 것을 볼 수 있다. 이 구조는 효과적이고 보안성을 매우 강화시킨다.
  4. 각 단계를 역으로 계산하기는 쉽다. 바이트 대체, 행이동, 열 섞기 단계는 복호 알고리즘에서 사용되는 역함수이다, 라운드 키 더하기 단계에서는 같은 라운드 키를 블록에 XOR 수행하여 역을 계산한다.
  5. 대부분 블록 암호가 그렇듯 복호 알고리즘에서는 확장 키를 순서를 뒤집어서 적용한다. 그러나 복호 알고리즘이 암호 알고리즘과 동일하지는 않다. 이것이 AES구조가 가지고 있는 특성이다.
  6. 4단계가 모두 역 계산이 가능하므로 복호화를 하면 평문을 얻을 수 있다는 것은 당연하다.
  7. 암호와 복호의 마지막 라운드는 오직 세 단계로만 구성된다. 이것이 AES구조가 가진 특성이고, 이 특성은 AES암호가 역으로 작동되기 위해 필요한 것이다.

📄 고급 암호화 표준 (Advanced Encryption Standard, AES) C++ Source Code

 


🚀 REFERENCE

 

AES encryption

Please fill out our survey to help us improving aesencryption.net. We appreciate your feedback!

aesencryption.net

 

고급 암호화 표준 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. SubBytes 단계는 AES의 4단계 중 하나이다. 고급 암호화 표준(Advanced Encryption Standard, AES)은 2001년 미국 표준 기술 연구소(NIST)에 의해 제정된 암호화 방식이다.[1] AES는 두 명의 벨기에 암호학자인 존 대먼과 빈센트 라이먼에 의해 개발된 Rijndael(레인달, [rɛindaːl][2][3]) 에 기반하며 AES 공모전에서 선정되었다. AES는 미국 정부가 채택한 이

ko.wikipedia.org

 

반응형

댓글