SEED 블록 암호화 알고리즘 ( SEED Block Encryption Algorithm )

2011. 6. 9. 17:19카테고리 없음


SEED 블록 암호화 알고리즘 ( SEED Block Encryption Algorithm )

  SEED는 정보통신 및 정보보호의 비밀성 서비스를 제공하기 위하여 한국정보보호 진흥원이 주과니 되어 1998년 개발, 공개하여 한국 표준 암호 방식으로 선정한 128비트 블록 암호 방식이다. SEED는 암호 방식의 입력으로 평문 128비트와 암호화 키 128비트가 입력되어 128비트의 암호문을 출력한다.


@ 암호화 과정
 

- 그림과 같이 SEED의 평문 128비트는 좌측 64비트 L1와 우측 64비트 R0로 나뉘어 입력된다. 우측 64비트 R0는 암호화 보조키 64비트 K1과 함께 F 함수에 입력된다. 



- F 함수의 출력 64비트는 좌측 64비트 L0와 비트별로 XOR을 거쳐서 R1이 된다. 다시 우측 64비트 R1과 암호화 보조키  K2가 F 함수에 입력된다. F 함수의 출력 64비트는 좌측 64비트 L1과 XOR을 거쳐서 R2가 된다.

- 16라운드를 지난 후 마지막 단에서 L과 R을 한번더 바꿔준다. 



@  f 함수 
SEED 블록 암호화 알고리즘

- Feistel 구조를 갖는 블록 암호화 알고리즘은 f 함수의 특성에 따라 구분될 수 있다. SEED의 F 함수는 수정된 64비트 Feistel 형태로 구성 된다. f 함수는 각 32비트 블록 2개를 입력으로 받아, 32비트 블록 2개를 출력한다. 즉, 암호화 과정에서 64비트 블록과 64비트 라운드 키를 f 함수의 입력으로 처리하여 64비트 블록을 출력한다. ( C,D는 R이 나뉜것, K0,K1은 암호화 보조키가 나뉜것)



@ G 함수 

 - m3 부터 상위 2개 비트 (8비트씩)



@ S-Box

- G 함수 내부에서 사용되는 비선형 S-Box는당 그림의 식을 이용하여 생성된다.


SEED 블록 암호화 알고리즘


@ 보조키 생성 알고리즘 (라운드 키)

- 그림과 같이 128비트의 키는 4개의 32비트 블록으로 나누어져 키 생성 알고리즘에 입력된다. 32비트의 4개의 키는 각각 A, B, C, D로 나누어져 키 생성 알고리즘에 입력되며 SEED 블록 암호화 알고리즘 첫 라운드에 공급되는 보조키는 그림과 같은 절차로  결정된다.

SEED 블록 암호화 알고리즘

* 현재는 SEED 블록 암호화 알고리즘 대신 최근에 개발한 ARIA 알고리즘을 사용하는 추세이다.