대칭 키 암호화에서 가장 대표적인 암호화 알고리즘은 DES, AES이다.
DES의 key 길이는 56 bits이었다.
이러한 짧은 key 때문에 1999년 초 DES III challenge에서 22시간 15분 만에 DES 암호화 알고리즘을 공격하는 것에 성공한다.
이 사건 이후 새로운 대칭 키 암호화 알고리즘을 위한 대회를 NIST에서 열었다.
그리고 2000년 10월 NIST에서 새로운 대칭 키 암호화 알고리즘인 AES 발표하게 된다.
AES(Advanced Encryption Standard)의 input, output은 128 bits 크기의 4x4바이트 행렬 형식의 block이다.
즉, plain text, cipher text가 128 bits라는 뜻이다.
AES는 128, 192, 256 bits의 key 크기를 가지는 각각의 버전이 있다.
특징 \ 종류 | AES-128 | AES-192 | AES-256 |
---|---|---|---|
Block Size | 128 bits | 128 bits | 128 bits |
Key Length | 128 bits | 192 bits | 256 bits |
# Round | 10 | 12 | 14 |
참고로 라운드 키의 크기는 모든 버전이 128 bits로 동일하다.
AES의 기본 구조는 아래와 같다.
각 라운드의 함수는 아래와 같다.
왼쪽이 encryption round, 오른쪽이 decryption round이다.
AES에서는 128 bits의 round key를 (round의 수 + 1)개만큼 만들게 된다.
Round key의 수가 (round의 수 + 1)개인 이유는 pre round 때문이다.
Round key는 하나의 주 암호화 key를 통해 생성된다.
Plain Text의 차이가 처음엔 1 bit이지만 10 round에는 58 bits인 것을 확인할 수 있다.
이렇게 입력값의 미세한 변화에도 출력값에 상당한 변화가 일어나는 성질을 산사태 효과(avalanche effect)라고 한다.
AES-128 기준 brute force 방법으로 공격할 경우 가능한 경우의 수는 이다.
만약 극단적으로 CPU 1 clock 당 1개의 경우의 수를 계산할 수 있고, CPU는 5.2GHz의 clock을 가진다고 가정하자.
따라서 AES-128의 key를 brute force 방법으로 공격하여 성공하는 데까지 걸리는 시간은 2036007713422350692190년이다.