정보보안/암호학2009. 2. 23. 12:30

ㅁ AES(Advanced Encryption Standard)의 개발 배경
    - DES의 경우 5년마다 안정성 평가를 받아왔다고 하더군요. 그런데 컴퓨터의 속도와 기법들의 발전으로 이제는 그 암호가 뚫리는데(전사공격이겠죠~) 불과 몇시간 안걸리게 되었다고 하네요. 그래서 그걸 대신하게 된 알고리즘이 AES입니다. 

ㅁ AES의 특징
    - Rijndael 대칭암호 알고리즘이 AES로 선정
    - DES의 페이스텔 구조와 달리 SPN구조 이용
    - 블록길이 128비트, 키의 비트길이 128, 192, 256비트중 선택 가능 
    - 큰 키를 쓰면 좀 더 안정성이 크다
    - 라운드수를 반복할수록 안정성이 크다 

ㅁ AES의 구조 - AES는 크게 SubBytes, ShiftRows, MixColumn, Add Round Key 네 단계로 나뉜다
    - SubBytes단계 : 이 단계에서는 메세지를 정방행렬로 구성하였을 때, 그 배열에 있는 각각의 바이트들은 1바이트(=8비트)를 인풋으로 1바이트(=8비트)를 출력하는 S박스를 이용해 업데이트한다.  

하나당 1 Byte라 하고, 한 바이트의 메세지를 an이라 하면

이런식으로 16바이트(=128bit)가 나열되어 있을것이다. 이 S박스는 단일치환암호(=일정 범위안에서 치환되어지는 암호)와 같은 논리로 0~255의 범위안에서 진행된다) 

    - ShiftRows단계 : 이 단계에서 '유일한 비선형연산'이 이루어 진다. 아래 그림에서 보듯이 각 행(Row)에 따라 행의 단위만큼 이동된다. 즉, Row-1만큼씩 이동됨을 볼 수 있을것이다.

ShiftRows한 결과를 보자. 이 연산이 왜 비선형 연산인지는 이미 행렬이 말해주고 있다
그렇다면 결과를 보도록 하자.
이 그림에서는 01 02, 03으로 나타나서 조금 아쉬운데 그림을 달리생각해서 0~15로 치환해서 보자

0   1   2   3                0   1   2   3
4   5   6   7      -->     5   6   7   4
8   9  10 11      -->     10 11  8   9 
12 13 14 15                15 12 13 14

이렇게 보면 메세지가 완전히 섞인게 보일것이다.

이러한 연산으로 짧은 단계로 우수한 암호능력을 보인달까? 그렇게 생각하자~^^ 

    - MixColumns단계 : 이 단계는 각각의 COLUMN들이 고정된 다항식 c(x) = 0.3x3 + 0.1x2 + 0.1x + 0.2에 의해서 치환이 된다

     - Add Round Key단계 : 이 단계에서는 MixColumns의 출력과 라운드 키의 XOR값을 구하는 단계이다.


이렇게 네 단계를 거쳐서 AES가 작동하게 된다. 이러한 라운드를 실제 Rijndeal에서는 10~14회 반복한다

10round = 128bit                /               12round = 192bit                /               14round = 256bit

마지막으로 구조상 알아두여야 할 것은 가장 마지막 라운드에는 MixColumns 단계를 거치지 않는다는 것이다.
그래서 함수상으로 정리해 보았다

round(state, rKey) {
 ByteSub(state);
 ShiftRow(state);
 MixColumn(state);
 AddRoundKey(state, rKey);
}

마지막 라운드
round(state, rKey) {
 ByteSub(state);
 ShiftRow(state);
 AddRoundKey(state, rKey);
}

이런식으로 구성이 된다.

위에서 보면 알듯이 1회의 라운드에서 입력의 모든 비트를 암호화하고 있다.

1회의 라운드에서 입력의 반비트밖에 암호화 하지 않는 페이스텔 구조에 비에 라운드를 적게할 수 있는것이다

또, SubBytes는 바이트마다, ShiftRows는 행마다, MixColumns는 열마다 병렬처리가 가능하다는 장점도 있다.

출처 : http://blog.naver.com/tkdgjs99/

Posted by Huikyun