AES
Intro. 3DES로도 부족한 이유,
3 DES는 암호 해독에 대한 저항성이 크기 때문에 꽤나 안전하다.
하지만 단점이 있었으니 구현 속도가 느리다.
DEA 보다 라운드 수가 3배나 많기 때문에 당연히 느릴 수 밖에 없다.
또한 DEA와 3DES는 64비트 블록을 사용하였다.
현 시점에서는 보안을 위해 더 큰 비트 블록을 사용 할 때가 되었다.
AES는 무엇인가
3DES의 앞선 단점 때문에 AES가 등장하였다. 더 높은 보안성과 월등히 개선된 보안 알고리즘으로써!
- 블록 길이(크기) 128 비트 대칭 블록 암호
- 키의 길이는 128 192 256 비트를 지원
- 페이스텔 암호 구조 with 대칭 블록 암호가 아니다!
- 각 라운드에서 대체와 치환을 이용해 데이터 블록 전체를 병령 처리를 한다
AES 암호화 알고리즘
AES (Advanced Encryption Standard)는 DES와 달리 페이스텔 구조가 아닌 SPN (Substitution-Permutation Network) 구조를 사용합니다.
SPN 구조는 치환(Substitution)과 순열(Permutation) 연산을 반복하여 사용하는 구조입니다.
이 구조는 비트 수준이 아닌 바이트 수준의 연산을 수행하며, 블록 크기는 128비트로 고정되어 있습니다.
AES의 주요 단계와 연산은 다음과 같습니다.
- 바이트 대체 (SubBytes)
- 각 바이트를 미리 정의된 치환 테이블(S-box)을 사용하여 교체하는 과정입니다. 이 과정에서 치환 작업이 수행되며, 암호의 비선형성을 증가시키는 데 도움이 됩니다.
- 행 이동 (ShiftRows)
- 상태 행렬의 각 행을 일정한 오프셋만큼 순환 시프트하는 과정입니다. 이 과정은 데이터의 확산을 증가시키는 데 도움이 됩니다.
- 열 섞기 (MixColumns)
- 상태 행렬의 각 열에 선형 변환을 적용하는 과정입니다. 이 변환은 데이터의 확산을 더욱 강화하며, 여러 라운드를 거치면서 암호의 안전성을 높입니다.
- 라운드 키 더하기 (AddRoundKey)
- 현재 라운드의 키와 상태 행렬의 각 바이트를 XOR 연산하는 과정입니다.
- 이 연산은 암호와 키 스케줄링 알고리즘 사이의 연관성을 높여, 암호의 보안성을 강화합니다.
AES 알고리즘은 초기 라운드 키 더하기를 수행한 후, 위의 네 가지 연산을 일정 횟수의 라운드에 걸쳐 반복합니다
라운드 수는 키의 길이에 따라 결정되며, 각각 128비트 키의 경우 10 라운드, 192비트 키의 경우 12 라운드, 256비트 키의 경우 14 라운드를 수행합니다.
마지막 라운드에서는 열 섞기(MixColumns) 과정을 생략하고, 바이트 대체, 행 이동, 라운드 키 더하기를 수행한 후 암호화된 블록을 출력합니다.
복호화 과정은 암호화 과정의 역순으로 진행되며, 각 연산의 역 연산을 사용해 원래의 평문 블록을 복구합니다.
상태 행렬
상태 행렬(State Matrix)은 AES 암호화 알고리즘에서 사용되는 핵심 데이터 구조입니다.
평문 블록과 암호문 블록은 각각 4x4 크기의 상태 행렬로 표현되며, 각 요소는 바이트(8비트) 크기입니다.
따라서, 한 상태 행렬은 총 128비트의 정보를 저장합니다.
암호화 과정에서 상태 행렬은 여러 라운드에 걸쳐 변환되며, 각 라운드에서 바이트 대체, 행 이동, 열 섞기, 라운드 키 더하기 연산이 순차적으로 적용됩니다.
이 연산들을 통해 원본 평문 블록에 대한 정보가 점차 암호화되고, 최종적으로 암호문 블록으로 변환됩니다.
복호화 과정에서는 암호문 블록을 상태 행렬로 변환하고, 각 연산의 역 연산을 역순으로 적용하여 원래의 평문 블록을 복구합니다.
상태 행렬은 암호화 및 복호화 과정에서의 중간 결과물을 저장하고 처리하는 데 사용되는 핵심 구조입니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'Computer Science > Security' 카테고리의 다른 글
난수란 무엇인가 (0) | 2023.03.31 |
---|---|
의사 난수 (0) | 2023.03.30 |
3중 DES Overview (0) | 2023.03.29 |
DES Overview (0) | 2023.03.29 |
페이스텔 암호 구조 with 대칭 블록 암호 (1) | 2023.03.28 |