2015년 6월 1일 월요일

대칭키 암호화 알고리즘, AES


오늘은 대칭키 암호화 알고리즘의 대표주자인 AES에 대해 포스팅 하려 합니다.

  • 대칭키 암호화 알고리즘
암호화와 복호화에 같은 암호 키를 쓰는 암호 알고리즘입니다.

  • 간단한 예시
대칭키는 RSA와 다르게 간단한 예시를 통해 대강 이해해 볼 수 있습니다.

(RSA와는 다르다! RSA와는!)

'각각의 문자를 key만큼씩 더한다'

라는 암호화 알고리즘을 생각해 봅시다.

원문  : KBS1tv

key가 1일 때

abcdefghijklmnopqrstuvwxyz 이니까

암호화: LCT2uw

복호화는 1씩 빼면 되겠죠?

여기서 키는 1로, 암호화와 복호화에 같은 키 1이 쓰였습니다.

이런 것을 대칭키 알고리즘이라고 합니다.
  • AES
Rijndael 암호에 기반한 블록 암호 방식으로
AES공모전에서 21개의 알고리즘 경쟁중 1등으로 선정되어
2001년 미국 표준 기술 연구소(NIST)에 의해 표준으로 제정되었습니다.

미 국가안보국에 의해 1급비밀에 사용할 수 있도록 승인된 알고리즘 중

최초로 공개되어 있는 알고리즘입니다.
-------------AES--------------

S-Box
ShiftRows
MixColumns
AddRoundKey
----------
이후
BASE64로 인코딩
PKCS7 / PKCS5 Padding
------------------------------

라는 과정을 거치는데요,


직접 구현해보지는 않았습니다.


C 구현 (https://github.com/saju/misc/blob/master/misc/openssl_aes.c?p=36)

Java 구현 (http://aesencryption.net/#Java-aes-encryption-example)