암호_
SEED
정지홍
2024. 9. 20. 17:32
SEED 알고리즘이란?
- 1999년에 개발된 우리나라의 128비트 블록 암호 알고리즘
- 피어스텔 구조
- 라운드 함수에 관계없이 역변환 가능(암호화 복호화 하는 과정이 같다.)
- 블록간 완전한 확산 가능 및 수행 속도가 빠르고, sw/hw구현이 용이
- 전수조사를 피하기 위한 128비트의 블록 크기 및 키 크기 사용.
- 단, 블록 암호 알고리즘의 구조상 취약점인 차분해독법 및 선형 해독법에 안전해야함.
- 차분해독법 ( differential cryptanalysis , DC)
- 선형해독법 ( Linear cryptanalysis , LC )
SEED의 전체적인 구조
- 데이터를 8,16,32 비트 단위로 처리한다.
- 블록 암호 방식이며, 입출력 및 키의 크기는 128비트
- 라운드수는 16라운드
- 피어스텔구조
- 연산은 xor과 2^32의 모듈러 연산만 사용. ( 두 값의 합을 32비트 내에서 유지하기 위함.)
- 64비트의 16개의 라운드키가 생성됨.
SEED의 F함수
- 입력받은 데이터를 섞고 변형하는데 사용.
- 이는 각 라운드에서 암호화 과정을 복잡하게 만들어서 보안성을 높임.
- 64비트의 피어스텔 암호 알고리즘으로 구성됨.
- 입력값 : 32비트의 2개의 블록을 입력으로 받아서, 32비트의 2개의 블록을 출력
- 즉, 64비트( C , D ) 와 64비트 키 Ki( =( K[i,0] , K[i,1] ) ) 를 입력으로 받음.
- input block ( C,D ) => output block ( C' , D' )



SEED의 초기의 G함수
- 두개의 8비트 s-box를 사용
- 입력의 각 바이트를 비션형 변환 후, 그 결과 32비트를 4비트 왼쪽 회전 이동 후 출력
- 즉, 다시 말하면....


SEED의 수정된 G함수
- 기존의 G함수에서 효율성의 저하 없이 안전성를 강화하고자 수정되었다.
- 초기의 G함수는 충분한 diffusion(확산)을 주지 못하였다.
- 이유는 단순히 4비트를 회전 이동만 시켜서 diffusion을 못준거임.
- 그래서 G함수에서 회전 이동 대신에 다른 permutation을 사용.
- 즉, s-box의 출력들을 적절한 permutation으로 섞어주는것.
- 그래서 여기서는 xor을 사용할것이다.


키 생성 알고리즘
- 1. 128비트의 암호키를 64비트씩 좌우 2개로 나눈다.
- 2. 이들을 교대로 8비트식 좌/우로 회전 시킨다.
- 3. 결과의 4워드들에 대해서 간단한 산술연산 및 G함수를 적용해서 라운드 키 생성
- ===> SEED의 키 생성 알고리즘은 제한된 환경에서의 효율성을 위해서, 암호화나 복호화시 라운드 키를 간단히 계산할 수 있게 설계함.


