SEED Encrypt
KISA 국가표준 SEED 128/256비트 블록 암호 (RFC 4269)
개요
한국인터넷진흥원(KISA) 국가 표준 128비트(16바이트) 블록 암호인 SEED(TTAS.KO-12.0004 / ISO/IEC 18033-3 / RFC 4269)로 평문을 암호화한다.
16바이트 키를 사용하는 16라운드 SEED-128과 32바이트 키를 사용하는 24라운드 SEED-256을 연결된 Key 길이에 따라 자동 지원하며, ECB, CBC, CFB, OFB, CTR, GCM, CCM 모드를 제공한다.
사용 시점
- 국내 금융·공공기관 표준 암호 프로토콜이나 KISA SEED-128 / SEED-256 테스트 벡터를 구현·검증할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
암호 운영 모드mode |
select기본값: ECB |
항상 노출 | 128비트 블록 운용 모드(ECB, CBC, CFB, OFB, CTR, GCM, CCM)를 선택한다. 자세한 내용은 블록 암호 운용 모드를 참고한다.
|
패딩padding |
select기본값: None |
항상 노출 | ECB/CBC 모드에서 사용할 16바이트 블록 패딩 방식이다. 자세한 내용은 패딩 스킴을 참고한다.
|
오류 단일화errorUnify |
boolean기본값: false |
항상 노출 | 활성화하면 내장 오류를 지정한 단일 오류 코드·메시지로 대체한다. |
단일화 오류 코드errorUnifyCode |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 코드이다. |
단일화 오류 메시지errorUnifyMessage |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 메시지이다. |
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 5개; 조건부 노출 포트는 아래 표와 같이 파라미터 설정에 따라 전환됨).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Key |
key |
Bytes |
필수 | 항상 노출 | 16바이트(SEED-128) 또는 32바이트(SEED-256) 대칭키이다. |
Plaintext |
plaintext |
Bytes |
필수 | 항상 노출 | 암호화할 평문 바이트 배열(Uint8Array)이다. |
IV |
iv |
Bytes |
선택 | mode가 CBC 또는 CTR 일 때 |
16바이트 초기화 벡터(CBC, CFB, OFB, CTR)이다. |
Nonce |
nonce |
Bytes |
선택 | mode가 GCM 또는 CCM 일 때 |
12바이트 AEAD Nonce(GCM, CCM)이다. |
AAD |
aad |
Bytes |
선택 | mode가 GCM 또는 CCM 일 때 |
GCM/CCM 모드용 선택적 추가 인증 데이터(AAD)이다. |
출력 포트
포트 성격: 고정 출력 포트 (총 2개; 조건부 노출 포트는 아래 표와 같이 파라미터 설정에 따라 전환됨).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Ciphertext |
ciphertext |
Bytes |
항상 노출 | 암호화된 바이트 배열(Uint8Array)이다. |
Auth Tag |
tag |
Bytes |
mode가 GCM 또는 CCM 일 때 |
GCM/CCM 모드에서 출력되는 16바이트 인증 태그이다. |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다. 오류 통합(errorUnify)을 활성화하면 아래의 모든 오류 코드가 사용자가 지정한 단일 오류 코드와 메시지로 대체된다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
INVALID_KEY_LENGTH |
키 길이가 올바르지 않는다 | Key 길이가 16바이트(SEED-128) 또는 32바이트(SEED-256)가 아닐 때 발생한다. |
INVALID_IV_LENGTH |
IV 길이가 올바르지 않는다 | 연결된 IV가 16바이트가 아닐 때 발생한다. |
PLAINTEXT_NOT_BLOCK_ALIGNED |
NoPad 모드에서는 평문 길이가 블록 크기의 배수여야 한다 | ECB/CBC 모드에서 Padding = None인데 평문 길이가 16바이트의 양의 배수가 아닐 때 발생한다. |
INVALID_NONCE_LENGTH |
Nonce 길이가 올바르지 않는다 | 연결된 Nonce가 12바이트가 아닐 때 발생한다. |
활용 예시
KISA SEED-128-CBC 암호화 수행하기
16바이트 키와 16바이트 IV로 SEED-128 CBC 암호문을 생성한다.
- SEED Encrypt의 운용 모드를
CBC, 패딩을PKCS7로 설정하고 16바이트Key, 16바이트IV,Plaintext를 연결한다.