차차20-폴리1305 (ChaCha20-Poly1305)

정보보안학
한 줄 정의: ChaCha20-Poly1305는 스트림 암호 ChaCha20으로 데이터를 암호화하고 Poly1305 메시지 인증 코드로 무결성을 검증하는 인증암호(AEAD) 조합입니다.

쉽게 풀면

AES-GCM이 특수 하드웨어 가속에 최적화된 방식이라면, ChaCha20-Poly1305는 소프트웨어만으로도 빠르고 안전하게 동작하도록 설계된 방식이라고 볼 수 있습니다. 스마트폰이나 저사양 기기처럼 전용 암호화 칩이 없는 환경에서도 효율적으로 작동합니다. 편지를 암호화하는 동시에 위조 여부를 확인하는 도장을 찍는다는 기본 아이디어는 AES-GCM과 동일합니다.

왜 중요한가

모바일 기기나 임베디드 시스템처럼 AES 전용 하드웨어 가속(AES-NI)이 없는 환경에서의 성능 문제를 해결하기 위해 설계되었기 때문에, 정보보안학 논문에서는 TLS 프로토콜의 암호 스위트 선택, 모바일 보안, 경량 암호 연구에서 자주 비교 대상으로 등장합니다. 구글이 안드로이드와 TLS에서 채택한 사례가 대표적으로 인용됩니다.

논문에서는 이렇게 쓰입니다

"저사양 임베디드 환경에서 AES-GCM 대비 ChaCha20-Poly1305의 처리 속도 우위를 실험적으로 확인하였다."

하드웨어 가속이 없는 조건에서의 성능 비교 실험을 설명하는 문맥입니다.

"본 논문에서 제안한 프로토콜은 TLS 1.3의 암호 스위트로 ChaCha20-Poly1305를 채택하여 안전성과 효율성을 확보하였다."

프로토콜 설계 시 인증암호 알고리즘 선택의 근거를 설명하는 문맥입니다.

조금 더 깊게 보면

ChaCha20은 32비트 덧셈, 회전, XOR 연산만으로 구성된 스트림 암호로 256비트 키와 96비트 nonce, 32비트 카운터를 사용해 키스트림을 생성합니다. Poly1305는 소수 2^130-5를 법으로 하는 다항식 연산 기반 원타임 인증자로, ChaCha20이 만든 키를 이용해 메시지마다 새로운 인증 키를 사용합니다. 두 알고리즘을 결합한 방식은 RFC 8439에 표준화되어 있습니다.

주의할 점

AES-GCM과 마찬가지로 동일한 키에 대해 nonce를 재사용하면 안전성이 심각하게 훼손되므로, 구현 시 nonce 관리가 매우 중요합니다.

관련 용어