AES Encrypt
NIST AES(128/192/256비트)로 평문을 암호화한다
개요
NIST FIPS 197 표준 AES(Advanced Encryption Standard, Rijndael) 128비트 블록 암호를 사용하여 평문을 암호화한다. 연결된 Key의 바이트 길이(16, 24, 32바이트)에 따라 각각 AES-128(10라운드), AES-192(12라운드), AES-256(14라운드)으로 자동 전환된다.
9가지 표준 운용 모드(기밀성 전용 ECB, CBC, CFB, OFB, CTR, XTS, 인증 암호화 AEAD GCM, CCM, 키 래핑 KW)를 모두 지원한다. 선택한 운용 모드(Cipher Mode)에 맞춰 필요한 입력 포트(IV, Nonce, AAD)와 출력 포트(Auth Tag)가 동적으로 전환된다. 각 모드의 상세 동작은 블록 암호 운용 모드를 참고한다.
사용 시점
- 현대 프로토콜의 표준 인증 암호화인 AES-GCM(또는 AES-CCM)으로 메시지와 추가 인증 데이터(AAD)를 동시에 보호할 때 사용한다.
- 레거시 시스템 호환이나 NIST SP 800-38A/38B/38C/38D/38E/38F 테스트 벡터 검증을 위해
CBC,CTR,ECB,CFB,OFB,XTS,KW모드를 실행할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
암호 운영 모드mode |
select기본값: ECB |
항상 노출 | 운용 모드를 선택한다. 모드에 따라 노출되는 포트와 패딩 활성 여부가 결정된다. 자세한 설명은 블록 암호 운용 모드를 참고한다. |
패딩 (CBC/ECB)padding |
select기본값: None |
항상 노출 | ECB 및 CBC 모드에서 암호화 전에 평문에 적용할 블록 패딩 방식이다(스트림·AEAD·XTS·KW 모드에서는 숨겨짐). 패딩 스킴을 참고한다.
|
오류 단일화errorUnify |
boolean기본값: false |
항상 노출 | 활성화하면 모든 내장 암호화 오류를 지정한 단일 오류 코드·메시지로 대체한다. |
단일화 오류 코드errorUnifyCode |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 코드이다. |
단일화 오류 메시지errorUnifyMessage |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 메시지이다. |
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 5개; 조건부 노출 포트는 아래 표와 같이 파라미터 설정에 따라 전환됨).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Key |
key |
Bytes |
필수 | 항상 노출 | 대칭 암호화 키 바이트 배열(Uint8Array). 일반 모드는 16바이트(AES-128), 24바이트(AES-192), 32바이트(AES-256)를 받으며, XTS 모드는 결합된 2개의 키인 32바이트(AES-128-XTS) 또는 64바이트(AES-256-XTS)를 받는다. |
Plaintext |
plaintext |
Bytes |
필수 | 항상 노출 | 암호화할 원시 평문 바이트 배열(Uint8Array)이다. XTS 모드에서는 최소 16바이트 이상이어야 하며, KW 모드에서는 8바이트의 배수(최소 16바이트 이상)인 래핑 대상 키 데이터여야 한다. |
IV |
iv |
Bytes |
선택 | mode가 CBC 또는 CTR 또는 CFB 또는 OFB 또는 XTS 일 때 |
16바이트(128비트) 초기화 벡터(CBC, CFB, OFB, CTR 카운터 블록, XTS 트윅). 연결하지 않으면 16바이트 0x00으로 기본 동작한다. |
Nonce |
nonce |
Bytes |
선택 | mode가 GCM 또는 CCM 일 때 |
AEAD 모드(GCM, CCM)용 12바이트(96비트) Nonce이다. 연결하지 않으면 12바이트 0x00으로 기본 동작한다(실무에서는 동일한 키로 Nonce를 절대 재사용하지 말아야 한다). |
AAD |
aad |
Bytes |
선택 | mode가 GCM 또는 CCM 일 때 |
AEAD 모드(GCM, CCM)용 선택적 추가 인증 데이터(Additional Authenticated Data)이다. 암호화되지는 않지만 Auth Tag 무결성 계산에 포함된다. |
출력 포트
포트 성격: 고정 출력 포트 (총 2개; 조건부 노출 포트는 아래 표와 같이 파라미터 설정에 따라 전환됨).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Ciphertext |
ciphertext |
Bytes |
항상 노출 | 생성된 암호문 바이트 배열(Uint8Array)이다(KW 모드에서는 입력보다 8바이트 긴 래핑된 키 출력). |
Auth Tag |
tag |
Bytes |
mode가 GCM 또는 CCM 일 때 |
AEAD 모드(GCM, CCM)에서 생성된 16바이트(128비트) 인증 태그(Authentication Tag)이다. |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다. 오류 통합(errorUnify)을 활성화하면 아래의 모든 오류 코드가 사용자가 지정한 단일 오류 코드와 메시지로 대체된다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
INVALID_KEY_LENGTH |
키 길이가 올바르지 않는다 | Key 길이가 유효하지 않을 때(일반 모드는 16/24/32바이트가 아닐 때, XTS 모드는 32/64바이트가 아닐 때) 발생한다. |
INVALID_IV_LENGTH |
IV 길이가 올바르지 않는다 | CBC/CFB/OFB/CTR/XTS에서 연결된 IV가 16바이트가 아닐 때 발생한다. |
INVALID_NONCE_LENGTH |
Nonce 길이가 올바르지 않는다 | GCM/CCM에서 연결된 Nonce가 12바이트가 아닐 때 발생한다. |
PLAINTEXT_NOT_BLOCK_ALIGNED |
NoPad 모드에서는 평문 길이가 블록 크기의 배수여야 한다 | ECB/CBC 모드에서 Padding = None인데 평문 길이가 16바이트의 양의 배수가 아니거나, KW 모드에서 입력이 8바이트의 배수가 아닐 때 발생한다. |
DATA_TOO_SHORT |
데이터 길이가 너무 짧다 | XTS 또는 KW 모드에서 평문 길이가 최소 요구 길이(16바이트)보다 짧을 때 발생한다. |
활용 예시
AES-256-GCM 인증 암호화(AEAD) 수행하기
32바이트 키와 12바이트 Nonce로 평문을 암호화하고 16바이트 인증 태그를 얻는다.
- AES Encrypt의 운용 모드를
GCM으로 설정한다. - 32바이트
Key, 12바이트Nonce, 평문Plaintext(및 선택적AAD)를 연결한다. Ciphertext와 16바이트Auth Tag출력을 Output Inspector나 AES Decrypt로 연결한다.
AES-128-CBC + PKCS#7 블록 암호화 수행하기
16바이트 키와 16바이트 IV로 가변 길이 평문을 CBC 모드로 암호화한다.
- 운용 모드를
CBC, 패딩을PKCS7로 설정한다. - 16바이트
Key, 16바이트IV, 평문Plaintext를 연결하면 16바이트 배수로 패딩·암호화된Ciphertext가 출력된다.