-
AES - 2Cryptography - Security/Dreamhack - Basic 2023. 5. 2. 09:40
AES 라운드 함수
SubBytes
SubBytes는 배열의 각 바이트를 S-Box를 참조하여 치환하는 함수이며 바이트의 상위 4비트가 행, 하위 4비트가 열을 결정한다
예를 들어 어떤 바이트가 2A라면, 해당 바이트는 S-box의 2행 A열을 참조하여 E5로 치환된다
ShiftRows
이 함수는 4가지 함수 중에서 유일하게 순열의 역할을 수행한다
아래와 같이 2행은 왼쪽으로 1칸, 3행은 왼쪽으로 2칸, 4행은 왼쪽으로 3칸을 밀어준다
복호화할 때는 반대로 2행, 3행, 4행을 각각 오른쪽으로 1칸, 2칸, 3칸씩 밉니다MixColumns
이 함수는 열 단위로 치환을 수행하는 함수이며 치환은 갈루아 필드 내에서의 행렬 연산으로 구해진다
위 사진에서 a만으로 구성된 배열은 오른쪽과 같이 나타낼 수 있다
복호화를 진행할 때는 오른쪽의 역행렬인 왼쪽을 곱해준다
AddRoundKey
이 함수는 키 생성 함수(Key Schedule)로 생성된 라운드 키의 배열을 각 바이트별로 XOR 한다
복호화할 때는 XOR의 성질을 이용하여 동일한 키를 배열에 XOR 해준다위 사진은 AddRoundKey 의 예시이며 아래는 결과이다
Key Schedule
키 생성 함수는 입력된 키로부터 각 라운드에 쓰일 라운드 키를 생성해 준다
설명을 하기 위해서 AES-128로 예를 들어보려고 한다
AES는 암호화, 복호화를 할 때 AddRoundKey를 11회 실행한다
따라서 1회를 기준으로 11회를 만들면 위와 같이 4행 44열의 배열이 만들어진다
각 열을 W1, W2와 같이 표시하도록 하겠다첫 번째 AddRoundKey에서는 입력된 키를 그대로 사용하므로 은 입력된 키의 각 열들과 같다
W4 이상은 RotWord, SubWord, Rcon을 적용하여 계산한다
RotWord
열을 위로 한번 회전시킨다
SubWord
SubBytes에서 사용한 것과 동일한 S-Box를 사용하여 각 바이트를 치환한다
Rcon
인 에 대해 의 최상위 바이트를 과 XOR한다
위 예시를 쭉 따라서 i = 4인 경우 이므로 Rcon의 결과는 위 사진처럼 나타난다
Rcon의 출력결과와 W(i-4) XOR 계산을 하면 최종적으로 결과가 나오게 된다
W43 까지 계속 반복을 하면 되고 1라운드에는 W4, W5, W6, W7이 생성된다
Dreamhack - Cryptography 공부내용 정리
관련된 문제는 사이트에 수록되어 있습니다
728x90'Cryptography - Security > Dreamhack - Basic' 카테고리의 다른 글
DES - 2 (0) 2023.05.08 DES - 1 (1) 2023.05.08 AES - 1 (0) 2023.05.01 현대암호 - 2 (0) 2023.04.07 현대 암호 - 1 (0) 2023.04.07