NodeCrypto 도움말

ChaCha20 Stream

카테고리: 대칭키 암호 · 노드 타입 ID: symmetric-chacha20-stream

Poly1305 MAC 없는 순수 ChaCha20 스트림 암호 (RFC 8439)

개요

Poly1305 MAC 없이 순수 IETF ChaCha20 스트림 암호(RFC 8439 §2.4, 32바이트 키, 12바이트 Nonce)만 단독으로 실행하여 입력 바이트 배열과 키스트림을 XOR한다.

스트림 암호의 대칭적 XOR 특성($C = P \oplus \text{Keystream}$, $P = C \oplus \text{Keystream}$) 덕분에 동일한 노드가 암호화와 복호화 양쪽 역할을 모두 수행한다. 무결성 보호가 포함되어 있지 않으므로 실무 메시징에는 ChaCha20-Poly1305 Encrypt를 권장한다.

사용 시점

파라미터 설정

파라미터 (ID)타입 및 기본값노출 조건설명 및 옵션
오류 단일화
errorUnify
boolean
기본값: false
변수 참조 지원 ($var: bool)
항상 노출 활성화하면 내장 오류를 지정한 단일 오류 코드·메시지로 대체한다.
단일화 오류 코드
errorUnifyCode
text
기본값: "" (비움)
변수 참조 지원 ($var: string)
errorUnify가 true 일 때 오류 통합 활성화 시 사용할 오류 코드이다.
단일화 오류 메시지
errorUnifyMessage
text
기본값: "" (비움)
변수 참조 지원 ($var: string)
errorUnify가 true 일 때 오류 통합 활성화 시 사용할 오류 메시지이다.

포트 입출력 명세

포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.

입력 포트

포트 성격: 고정 입력 포트 (총 3개).

포트 이름포트 ID데이터 타입필수 여부노출 조건설명
Key key Bytes (32B) 필수 항상 노출 32바이트(256비트) ChaCha20 비밀 키이다.
Data In data Bytes 필수 항상 노출 키스트림과 XOR할 평문 또는 암호문 바이트 배열(Uint8Array)이다.
Nonce nonce Bytes (12B) 선택 항상 노출 12바이트(96비트) Nonce이다(미연결 시 12바이트 0x00 사용).

출력 포트

포트 성격: 고정 출력 포트 (총 1개).

포트 이름포트 ID데이터 타입노출 조건설명
Data Out data Bytes 항상 노출 키스트림과 XOR할 평문 또는 암호문 바이트 배열(Uint8Array)이다.

오류 케이스

실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다. 오류 통합(errorUnify)을 활성화하면 아래의 모든 오류 코드가 사용자가 지정한 단일 오류 코드와 메시지로 대체된다.

오류 코드기본 엔진 메시지발생 조건
INVALID_KEY_LENGTH 키 길이가 올바르지 않는다 Key가 정확히 32바이트가 아닐 때 발생한다.
INVALID_NONCE_LENGTH Nonce 길이가 올바르지 않는다 연결된 Nonce가 정확히 12바이트가 아닐 때 발생한다.

활용 예시

순수 ChaCha20 스트림 암·복호화하기

동일한 Key와 Nonce로 두 번 통과시켜 원본이 복원되는지 확인한다.

  1. 첫 번째 ChaCha20 Stream에 32바이트 Key, 12바이트 Nonce, 평문 Input Data를 연결해 암호문을 얻는다.
  2. 두 번째 ChaCha20 Stream에 동일한 Key, Nonce와 첫 노드의 Output Stream을 연결하면 원본 평문이 출력된다.