SEED 블록 암호의 Feistel 구조와 적용 범위
SEED의 Feistel 구조, 라운드 함수와 키 스케줄링, AES·ARIA·DES 비교 및 국내 활용 범위를 정리한다.
2026-08-14 · 최초 발행 2025-05-23
국내 표준 블록 암호로서의 SEED
SEED는 1999년 한국인터넷진흥원(KISA)에서 개발한 대칭키 블록 암호화 알고리즘이다. 128비트 블록과 128비트 키를 사용하며, Feistel 구조를 바탕으로 16회의 라운드 연산을 수행한다.
국내 전자상거래와 금융 시스템에서 표준 암호 알고리즘으로 채택됐고, 금융권과 공공기관의 데이터 보호 환경에서도 사용된다.
좌우 블록을 교환하는 Feistel 구조
SEED는 128비트 평문 블록을 각각 64비트인 좌측과 우측 블록으로 나눈다. 우측 블록은 F 함수를 거친 뒤 좌측 블록과 XOR 연산을 수행하며, 각 라운드에서는 좌우 블록의 위치가 교환된다. 이 과정을 16회 반복한 결과가 최종 암호문이 된다.
암호화와 복호화 과정이 유사하다는 점은 Feistel 구조의 특징이다.
평문이 암호문으로 바뀌는 과정
입력으로 받은 128비트(16바이트) 평문 블록은 좌측 L₀과 우측 R₀, 각각 64비트로 분할된다. 이후 각 라운드에서 다음 연산을 적용한다.
Li = Ri-1
Ri = Li-1 ⊕ F(Ri-1, Ki)
여기서 Li와 Ri는 i번째 라운드의 좌측·우측 블록이고, Ki는 해당 라운드의 키다. F는 라운드 함수, ⊕는 XOR 연산을 뜻한다.
F 함수는 64비트 입력을 G 함수로 처리한 뒤 비트를 재배열해 64비트 출력으로 내보낸다.
G 함수에는 치환 테이블(S-box) 적용, 비트 시프트와 XOR 연산, 키 스케줄링에 따른 라운드 키 적용이 포함된다.
마스터 키는 128비트이며, 키 스케줄링 과정에서 16개의 라운드 키가 만들어진다. 각 라운드 키는 64비트이고, 키 스케줄링은 복잡한 비선형 함수를 통해 수행된다. 마지막 라운드까지 끝나면 좌우 블록을 결합해 128비트 암호문 블록을 생성한다.
안전성 및 구현 환경에서의 특성
SEED는 차분 암호 분석과 선형 암호 분석에 강하며, 관련 키 공격에 대한 내성도 보유한다. 현재까지 알려진 실용적인 공격 방법은 없다.
소프트웨어 구현에서는 AES와 유사한 속도를 보이고, 하드웨어 구현에서도 자원을 효율적으로 사용한다. 8비트, 16비트, 32비트 프로세서에서 효율적으로 동작하며 특히 32비트 환경에서 최적화된 성능을 발휘한다.
금융·공공·기업 환경에서의 활용
금융 시스템에서는 인터넷 뱅킹 데이터, 신용카드 결제 정보, 금융 거래 메시지를 암호화하는 데 사용할 수 있다.
공공 시스템에서는 전자정부 서비스 데이터 보안, 공공기관 내부 문서 암호화, 개인정보보호 시스템에 적용된다. 민간 기업에서는 VPN(가상사설망) 암호화 프로토콜, 내부 중요 데이터 보호, 클라우드 서비스 데이터 암호화에 활용된다.
의사 코드로 보는 암호화 루프
function SEED_Encrypt(plaintext, key)
// 키 스케줄링
roundKeys = GenerateRoundKeys(key)
// 128비트 평문을 64비트씩 분할
L0, R0 = Split(plaintext)
// 16회 라운드 수행
for i = 1 to 16 do
L[i] = R[i-1]
R[i] = L[i-1] XOR F(R[i-1], roundKeys[i])
end for
// 최종 암호문 생성
ciphertext = Combine(L16, R16)
return ciphertext
end function
AES·DES·ARIA와 비교할 때의 위치
| 알고리즘 | 블록 크기 | 키 길이 | 라운드 수 | 구조 | 특징 |
|---|---|---|---|---|---|
| SEED | 128비트 | 128비트 | 16 | Feistel | 한국 표준 |
| AES | 128비트 | 128/192/256비트 | 10/12/14 | SPN | 국제 표준 |
| DES | 64비트 | 56비트 | 16 | Feistel | 이전 표준(취약) |
| ARIA | 128비트 | 128/192/256비트 | 12/14/16 | SPN | 한국 표준 |
SEED는 128비트 키 길이만 지원하며, AES는 128/192/256비트를 지원한다. 양자 컴퓨팅에 대한 내성 연구가 필요하고, 국제 표준으로서의 인지도는 AES보다 낮다. 하드웨어 가속 지원도 AES보다 제한적이다.