AES 선정기준은 안전성, 비용, 구현 효율성으로 구성된 3가지가 있다. 안전성은 기존의 DES가 선형 공격과 차분 공격에 취약했기 때문에 이 공격들에 대해 안전하다는 증명을 해야 한다는 것이다. 비용은 AES를 적용해 다양한 형태로 구현이 가능해야하고 스마트카드에서도 사용할 수 있을 만큼 비용이 적게 들고 계산 효율도 좋아야한다는 것이다. 계산 효율은 속도 및 메모리 요구량이 커버할 수 있는 지를 의미한다. 구현은 구현할 때 얼마나 유연성이 있는지, 알고리즘이 얼마나 단순한지, 쉽게 구현할 수 있는 지에 대한 것이다.

 

AES 라운드에는 크기에 따라 10, 12, 14 라운드가 있다. 각 라운드의 마스터 키는 128, 192, 256 비트의 크기로 각각 다르지만 라운드 키는 항상 128비트다. StateByte16개 모인 Block을 순서대로 세로로 4칸씩 배치하여 4x4 행렬을 만든 것이다. , 텍스트 16 문자를 Hexadecimal로 바꾸는데 Hexadecimal이 블록 형태이므로 그것을 State가 되도록 배치한다. 그리고 이 State가 라운드 내부로 들어가게 되면 SubBytes - ShiftRows - MixColumns - AddRoundKey의 단계를 거친다. 또한 첫번째 라운드가 시행되기 전에 StateRoundKey를 더해주고 마지막 라운드에서는 MixColumns 단계를 시행하지 않는다. 이는 복호화시 동형을 만들기 위함이다.

 

라운드는 앞서 말했듯이 SubBytes, ShiftRows, MixColumns, AddRoundKey로 구성되어 있다. 먼저, 스테이트를 SubBytes한다. SubBytes는 바이트를 다른 것으로 대체하는 것인데 DES에서 사용한 치환과는 매커니즘이 다르다. AESSubBytes는 각 바이트를 4비트씩 2개의 16진수로 계산하여 왼쪽 4비트를 행, 오른쪽 4비트를 열로 사용해 테이블을 읽는다. 그래서 해당 행과 열에 해당하는 값으로 치환하는 것이다. InvSubBytes를 통해 원래 값으로 복원이 가능하다. 또한 작은 것들(ex : 스마트카드) 등에서도 구현하려면 테이블이 작아야 한다. 테이블이 크면 메모리가 부족할 수 있기 때문에 연산을 통해서도 치환을 할 수 있도록 되어있다. 이 때 기약 다항식을 사용하는 데 이를 통해 연산 후에 늘어나는 자릿수를 줄여준다. ShiftRowsState의 행을 왼쪽으로 Shift해주는 것이다. 이때 순환이동으로 Shift를 수행하고 바이트 단위로 교환한다. 0RowShift하지 않고 1Row1-byte만큼, 2Row2-byte만큼, 3Row3-byte만큼 Shift한다. MixColumns는 기존의 State 열과 상수 매트릭스를 곱해서 새로운 열을 만드는 것이다. MixColumns도 마찬가지로 InvMixColumns를 통해 원래 값으로 복원이 가능하다. AddRoundKeyState 각 열에 Round Key word를 더한다. 그리고 Round Key word를 한 번 더 XOR하면 역변환된다.

 

 

* 위의 글은 www.kocw.net/home/search/kemView.do?kemId=1320013 5주차 강의를 보고 제가 작성한 내용입니다.

'시스템보안(이론)' 카테고리의 다른 글

해시 함수  (0) 2020.08.15
메시지 인증  (0) 2020.08.14
DES 2  (0) 2020.08.11
DES  (0) 2020.08.10
관용 암호  (0) 2020.08.10