SEED
IT 위키
더 많은 작업
SEED 는 1999년 2월 한국정보보호센터(지금의 한국인터넷진흥원)와 국내 암호 전문가들이 순수 국내 기술로 개발한 블록 암호다. 당시 인터넷 뱅킹·전자상거래에서 미국의 수출 규제로 강한 암호(128비트)를 쓰기 어려웠던 사정 때문에 만들어졌고, 국내 공인인증서와 금융권 보안 모듈, 액티브X 기반 보안 프로그램에 널리 쓰였다.
SEED 는 128비트 평문 블록을 64비트씩 왼쪽(L)과 오른쪽(R)으로 나누고, 오른쪽 64비트와 라운드 키를 F 함수에 넣은 결과를 왼쪽과 XOR 한 뒤 좌우를 바꾸는 과정을 16번 반복하는 Feistel 구조다. 암호화와 복호화가 같은 구조를 쓰고 라운드 키 순서만 거꾸로 넣으면 된다. 대치와 치환을 블록 전체에 반복하는 SPN 구조(AES, ARIA)와 다르다.
- F 함수는 64비트 입력을 32비트 두 개(C, D)로 나누어 라운드 키 Ki,0·Ki,1 과 XOR 한 뒤, G 함수를 세 번 거치면서 법 232 덧셈과 XOR 로 섞는다
- G 함수는 32비트 입력을 8비트 네 개로 나눠 두 종류의 8×8 S-박스(S1, S2)를 통과시킨 뒤, 비트 마스크와 XOR 로 다시 섞는 비선형 함수다
- 128비트 암호키를 32비트 워드 네 개(A, B, C, D)로 나눈다
- 라운드마다 Ki,0 = G(A + C − KCi), Ki,1 = G(B − D + KCi) 로 라운드 키 두 개를 만든다. KCi 는 라운드마다 다른 상수다
- 다음 라운드를 위해 앞 64비트(A‖B)와 뒤 64비트(C‖D)를 번갈아 8비트씩 회전한다. 즉 키를 64비트씩 좌우로 나누어 회전하고, 네 워드에 간단한 산술 연산(덧셈·뺄셈)과 G 함수를 적용해 라운드 키를 얻는다
- 16라운드 × 2 = 32개의 32비트 라운드 키가 나온다
- 1999년 9월 정보통신단체표준(TTA) 제정
- 2005년 국제 표준화 기구 ISO/IEC 18033-3 블록 암호 알고리즘 표준으로 제정
- 2005년 IETF 블록 암호 알고리즘 표준 제정
- IETF RFC 4269(알고리즘), TLS 암호 묶음에 SEED 를 넣은 RFC 4162 등
- 2009년 키를 256비트로 늘리고 24라운드를 쓰는 SEED 256 이 나왔다