SEED 알고리즘의 구조와 국내 표준 블록 암호 활용

SEED 알고리즘의 Feistel 구조, 키 스케줄링, 암복호화 흐름, 안전성, 구현 성능과 활용 범위를 정리한다.

2026-08-14 · 최초 발행 2025-06-08

국내 표준 암호로 자리 잡은 SEED

SEED는 1999년 한국인터넷진흥원(KISA)이 개발한 128비트 블록 암호화 알고리즘이다. 대한민국의 국가 표준 암호화 알고리즘으로서 전자상거래, 금융거래, 무선통신 등 국내 정보보호 인프라에 활용된다.

국내 정보보호 기술의 자립화와 국제 표준 기술 확보가 개발 배경이었다. 국내 표준은 TTAS.KO-12.0004/R1(2005)이며, 국제적으로는 ISO/IEC 18033-3(2010)에 포함됐다.

SEED는 128비트 블록 크기와 128비트 키 길이를 사용한다. Feistel 구조를 바탕으로 16라운드 암호화를 수행하며, 안전성과 구현 효율성을 함께 고려한 설계다.

평문을 좌우 블록으로 나누는 Feistel 구조

SEED는 128비트 평문을 64비트씩 좌·우 블록으로 분할해 처리한다. 각 라운드에서는 F 함수와 키 스케줄링으로 만들어진 라운드 키를 적용한다.

라운드 구조라운드 iF 함수 Ki 적용XOR 연산입력 평문 128비트초기치환16라운드 반복최종치환암호문 128비트

F 함수는 64비트를 입력받아 64비트를 반환한다. 입력은 32비트 단위의 L과 R로 나뉘고, G 함수를 통한 비선형 변환 뒤 바이트 단위 치환과 XOR 연산이 이어진다.

64비트 입력32비트 L, R로 분할G 함수 적용바이트 단위 치환XOR 연산64비트 출력

키 스케줄링은 128비트 마스터 키에서 라운드에 필요한 64비트 길이의 라운드 키 32개(K0, K1, ..., K31)를 생성한다. 라운드마다 두 개의 라운드 키가 사용된다.

마스터 키는 32비트 워드 4개로 분할한다. 이후 상수 값과 비트 회전 연산으로 키를 확장하고, 라운드별로 서로 다른 키를 만들어 보안성을 높인다.

라운드 키의 순서가 암호화와 복호화를 가른다

암호화는 128비트 평문을 64비트 L0, R0로 나누는 데서 시작한다. 각 라운드의 상태 변화는 다음과 같다.

  • Li = Ri-1
  • Ri = Li-1 ⊕ F(Ri-1, K2i-2, K2i-1)

16라운드가 끝나면 L16과 R16을 결합해 암호문을 만든다.

평문 P초기 분할: L0, R0라운드 1: L1 = R0, R1 = L0F(R0, K0, K1)라운드 2-15 반복라운드 16: L16 = R15, R16 =L15 F(R15, K30, K31)결합: C = L16 || R16암호문 C

복호화는 암호화의 역과정이며, 라운드 키 적용 순서를 반대로 한다. 128비트 암호문을 64비트 L16, R16으로 분할한 뒤 역순 라운드를 수행한다.

  • Ri-1 = Li
  • Li-1 = Ri ⊕ F(Li, K2i-2, K2i-1)

마지막으로 L0과 R0을 결합하면 원본 평문을 복원할 수 있다.

암호문 C초기 분할: L16, R16라운드 16: R15 = L16, L15 =R16 F(L16, K30, K31)라운드 15-2 역순 반복라운드 1: R0 = L1, L0 = R1F(L1, K0, K1)결합: P = L0 || R0평문 P

암호학적 강도와 구현 단계의 위험

SEED는 차분 암호 분석에 대해 최소 8라운드 이상에서 안전하고, 선형 암호 분석에 대해서는 최소 10라운드 이상에서 안전한 것으로 정리된다. 관련 키 공격은 키 스케줄링의 복잡성으로 방어하며, 전수 공격의 복잡도는 2^128로 현재 기술로는 불가능하다.

알고리즘 자체에서 심각한 취약점은 발견되지 않았지만, 실제 구현은 부채널 공격의 대상이 될 수 있다. 전력 분석 공격, 타이밍 공격, 캐시 공격을 고려해 구현 단계에서 추가 보안 조치를 적용해야 한다.

구현 환경에 따른 성능과 최적화

하드웨어 구현에서는 FPGA로 약 10,000 게이트, ASIC으로 약 20,000 게이트 수준의 최적화 구현이 가능하다. 하드웨어에서는 초당 수 Gbps를 처리할 수 있다.

소프트웨어는 32비트 프로세서에 최적화된 설계다. Intel Core i7에서는 약 150-200MB/s, ARM 프로세서에서는 약 20-50MB/s 성능이 제시된다. OpenSSL, BouncyCastle 등 주요 암호 라이브러리도 지원한다.

구현 성능을 높이는 방식으로는 S-box 연산을 미리 계산한 테이블로 바꾸는 테이블 룩업, 여러 블록을 함께 처리하는 병렬 모드, SIMD 명령어를 활용하는 비트 슬라이싱이 있다.

금융·공공 인프라에서의 사용 범위

국내에서는 공인인증서 기반 전자서명 시스템, 금융권 보안 통신(HTTPS, SSL/TLS), 무선랜 보안(WPA-SEED), 전자정부 시스템 데이터 암호화, 국가 기관 간 정보 교환 보안에 활용된다.

국제적으로는 ISO/IEC 국제 표준 암호 알고리즘으로 인정받았고, TLS/SSL 프로토콜의 공식 암호 스위트로 등록됐다. OpenSSL, NSS, BouncyCastle 등의 국제 암호 라이브러리에도 포함돼 있다.

SEED-CBC-SHASEED-CTRSEED-GCMWPA2-SEED사용자 브라우저 서버모바일 뱅킹은행 서버전자정부 시스템행정정보 DB공공 Wi-Fi사용자 기기

양자 시대와 대체 알고리즘의 선택

SEED의 키 길이는 128비트이며, 양자 컴퓨팅 시대에 대비한 보안 강화가 필요하다. AES의 하드웨어 가속 지원과 비교하면 처리 속도가 상대적으로 느릴 수 있고, AES나 ChaCha20보다 국제적 활용도도 제한적이다.

국내 개발 알고리즘 가운데 ARIA는 128/192/256비트 키를 지원하는 블록 암호이며, LEA는 경량 환경에 최적화된 블록 암호다. HIGHT는 IoT 디바이스용 경량 블록 암호에 해당한다. 국제 표준 알고리즘으로는 가장 널리 사용되는 블록 암호 AES와 높은 성능을 제공하는 스트림 암호 ChaCha20이 있다.

SEED는 국내 정보보호 인프라에서 데이터 기밀성을 보장하는 역할을 해왔다. 앞으로는 양자 컴퓨팅과 새로운 공격 기법에 대비해 키 길이 확장, 포스트 양자 암호와의 결합, 차세대 암호 알고리즘의 개발과 표준화가 함께 검토될 필요가 있다.

SEED블록 암호국가표준 암호정보보호Feistel 구조