오늘은 대칭키 암호화 알고리즘의 대표주자인 AES에 대해 포스팅 하려 합니다.
- 대칭키 암호화 알고리즘
- 간단한 예시
(RSA와는 다르다! RSA와는!)
'각각의 문자를 key만큼씩 더한다'
라는 암호화 알고리즘을 생각해 봅시다.
원문 : KBS1tv
key가 1일 때
abcdefghijklmnopqrstuvwxyz 이니까
암호화: LCT2uw
복호화는 1씩 빼면 되겠죠?
여기서 키는 1로, 암호화와 복호화에 같은 키 1이 쓰였습니다.
이런 것을 대칭키 알고리즘이라고 합니다.
- AES
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)