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를 권장한다.
사용 시점
- 순수 ChaCha20 키스트림(평문으로
0x00바이트 배열 입력)을 생성하거나 RFC 8439 §2.4.2 스트림 암호 테스트 벡터를 검증할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
오류 단일화errorUnify |
boolean기본값: false |
항상 노출 | 활성화하면 내장 오류를 지정한 단일 오류 코드·메시지로 대체한다. |
단일화 오류 코드errorUnifyCode |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 코드이다. |
단일화 오류 메시지errorUnifyMessage |
text기본값: "" (비움) |
errorUnify가 true 일 때 |
오류 통합 활성화 시 사용할 오류 메시지이다. |
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 3개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Key |
key |
Bytes |
필수 | 항상 노출 | 32바이트(256비트) ChaCha20 비밀 키이다. |
Data In |
data |
Bytes |
필수 | 항상 노출 | 키스트림과 XOR할 평문 또는 암호문 바이트 배열(Uint8Array)이다. |
Nonce |
nonce |
Bytes |
선택 | 항상 노출 | 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로 두 번 통과시켜 원본이 복원되는지 확인한다.
- 첫 번째 ChaCha20 Stream에 32바이트
Key, 12바이트Nonce, 평문Input Data를 연결해 암호문을 얻는다. - 두 번째 ChaCha20 Stream에 동일한
Key,Nonce와 첫 노드의Output Stream을 연결하면 원본 평문이 출력된다.