AES (advanced encryption standard)
Rijndael(레인달, [rɛindaːl]) 기반
AES 알고리즘은 소프트웨어는 물론 하드웨어로도 구현 가능
소프트웨어 구현은 다른 시스템간의 이식성이 좋고 구현이 간단하며 유연하지만 동작 속도가 느리며, 키의 노출 가능성이 높고 물리적 안정성이 보장되지 않는다는 단점
하드웨어로 구현할 경우 구현이 복잡하나 외부 침입에의한 알고리즘의 노출 가능성이 매우 낮으며, 암호키 노출 및 조작 가능성이 낮아 물리적 안정성이 보장
일반적으로 AES 알고리즘은 암호화와 복호화의 구조가 동일하지 않기 때문에 암호화 및 복호화가 개별적으로 설계
AES는 128비트, 192비트, 256비트 키 값으로 암호화 처리가 가능
입력으로 사용하는 키를 44개의 32비트 워드 배열 w[i]로 확장한다. 4개의 서로 다른 워드(128비트)를 각 라운드에서 라운드 키로 사용
AES는 암호화를 위해서 각 비트별로 10, 12, 14라운드를 활용하며 4 X 4 크기부터 8 X 8 크기의 행렬을 활용하여 연산을 수행한다.
AES는 대치(substitution), 치환(permutation), 뒤섞음(mixing), 키덧셈(key-adding)의 4가지 형태 변환을 통해 안정성을 확보할 수 있다
AES의 Round 내부 구성
- Substitute bytes
데이터를 Byte단위로 변환하는 기능
암호화는 S-Box
복호화는 Inverse S-Box
- Shift Rows
데이터를 행단위로 왼쪽(암호화) 또는 오른쪽(복호화)으로 순차적으로 이동시켜 데이터를 혼합하는 과정
- Mix Columns
Galoa Field의 곱셈연산을 통해 열안의 각 bit를 혼합하는 과정
- Add Round Key
Key Expansion을 통해 확장되어진 키와 입력 데이터를 32bit 블록별로 나누어 XOR연산을 수행
- Key Expansion
각 Round에 쓰일 Key 값을 확장하는 과정으로 한 번 확장된 Key는 입력된 Key 값이 바뀌지 않는 한 계속 유지 된다.
오직 Add Round Key 단계에서만 키를 사용한다. 그래서 암호와 복호 과정의 시작과 끝은 항상 Add Round Key 단계이다. 시작이나 끝에 수행되는 다른 단계는 키 없이 역방향 계산이 가능하기 때문에 보안을 강화시키는 데는 아무 역할도 하지 못한다.
암호와 복호의 마지막 라운드는 오직 세 단계로만 구성(Mix Columns 제외)
출처: https://www.koreascience.or.kr/article/JAKO201219858059814.pdf
https://ko.wikipedia.org/wiki/%EA%B3%A0%EA%B8%89_%EC%95%94%ED%98%B8%ED%99%94_%ED%91%9C%EC%A4%80
https://youtu.be/mlzxpkdXP58
댓글 영역