AES 암호화 알고리즘 조사



[참고문헌]

[용어정의]
  • AES (Advanced Encryption Standard) : 대칭키를 쓰는 블럭 암호이다.

[특징]
  • 암호화 키는 128, 192, 256의 세 가지 중 하나가 될 수 있으며, 키의 길이에 따라 실행하는 라운드 수가 각각 10, 12, 14 이다.

[모드]
  • ECB (Electronic Code Block) : 가장 단순한 모드로, 블록 단위로 순차적으로 암호화 하는 구조이다. 한 개의 블록만 해독되면 나머지 블록도 해독이 되는 단점이 있다. 암호문이 블록의 배수가 되기 때문에 복호화 후 평문을 알기 위해 패딩을 해야 한다.
  • CBC (Cipher Block Chaining) : 블록 암호화 운영 모드 중 보안 성이 제일 높은 암호화 방법으로 가장 많이 사용된다. 평문의 각 블록은 XOR 연산을 통해 이전 암호문과 연산되고 첫 번째 암호문에 대해서 IV (Initial Vector)가 암호문 대신 사용된다. 암호문이 블록의 배수가 되기 때문에 평문을 얻기 위해서 패딩을 해야한다. 암호화가 병렬처리가 아닌 순차적으로 수행되어야 한다.
  • CFB (Cipher FeedBack) : 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다. 패딩이 필요없다. 최초의 키생성 버퍼로 IV가 사용된다. CBC 모드와 마찬가지로 암호화는 순차적으로, 복호화는 병렬적으로 처리할 수 있다.
  • OFB (Output FeedBack) : 블록 암호화를 스트림 암호화처럼 구성해 평문과 암호문의 길이가 같다. 패딩이 필요없다. 암호화 함수는 키 생성에만 사용되며, 암호화 방법과 복호화 방법이 동일해 암호문을 한번 더 암호화하면 평문이 나온다.
  • CTR (CounTeR) : 블록을 암호화할 때 마다 1씩 증가해가는 카운터를 암호화해서 키 스트림을 만든다. 즉, 카운터를 암호화한 비트열과 평문블록과의 XOR을 취한 결과가 암호문 블록이 된다. CTR 모드는 OFB와 같은 스트림 암호의 일종이다. 암복호화 시 병렬처리가 가능하다.

[PKCS#7 패딩]
  • AES가 블럭 암호화 알고리즘인 만큼 다른 모든 블럭 암호화 알고리즘처럼 패딩하여 블럭의 빈 자리를 채울 필요가 있다.
  • 블럭의 크기가 k 바이트 (k=1~255) 일 때 패딩하고자 하는 데이터의 바이트 단위 길이가 k의 배수가 되는데 필요한 나머지 바이트 개수 n 만큼 n을 붙인다.

 [BEST]
  • ECB 모드에 PCKS7 패딩이 기본값으로 사용됨