ChaCha20은 덧셈·회전·XOR 연산을 사용하는 스트림 암호이다. RFC 8439는 IETF 프로토콜용 구성을 정의한다.
원리
해당 구성은 256비트 키와 96비트 nonce, 블록 카운터를 사용한다. 키 스트림과 평문을 XOR해 암호화한다.
예시
같은 키를 유지하면서 메시지를 처리하려면 nonce가 겹치지 않는 관리 체계를 마련하고 카운터 범위도 지켜야 한다.
주의할 점
ChaCha20만 사용하는 것과 ChaCha20-Poly1305 인증 암호는 다르다. 기본 암호화만으로 메시지 변조 여부를 검증할 수 있다고 가정하지 않는다.