인증서 투명성
인증서 투명성 (Certificate Transparency, CT)은 공개적으로 감사 및 모니터링 가능한 인증서 발급 시스템을 구축하여 SSL/TLS 인증서 생태계의 보안을 강화하기 위한 공개 표준 및 프로젝트입니다. 이는 인증 기관(CA)이 잘못된 또는 악의적인 인증서를 발급하는 것을 감지하고 방지하는 데 목표를 둡니다. CT는 인증서가 발급되면 공개적으로 기록된 로그에 추가되도록 요구하며, 이를 통해 누구나 인증서 발급 내역을 감사할 수 있도록 합니다.
주요 목적:
- 악의적인 인증서 발급 방지: CA가 부적절하게 인증서를 발급하는 경우, 공개 로그를 통해 쉽게 발견될 수 있도록 합니다.
- 잘못된 인증서 발급 탐지: 도메인 소유자는 자신의 도메인에 대한 인증서가 예상치 못한 CA에 의해 발급되었는지 확인할 수 있습니다.
- 인증서 생태계 신뢰도 향상: CT를 통해 인증서 발급 과정의 투명성을 높여 전체적인 웹 보안 신뢰도를 개선합니다.
작동 방식:
- 인증서 발급 요청: 웹사이트 소유자는 CA에 인증서 발급을 요청합니다.
- 로그 서버 제출: CA는 인증서를 발급하기 전에 CT 로그 서버에 인증서 정보를 제출합니다. 로그 서버는 전 세계에 분산되어 있으며, 각 로그 서버는 자체적으로 관리됩니다.
- 서명된 타임스탬프 획득 (Signed Certificate Timestamp, SCT): 로그 서버는 인증서 정보를 받은 후, 해당 정보에 대한 서명된 타임스탬프(SCT)를 생성하여 CA에 반환합니다. SCT는 해당 인증서가 특정 시점에 로그에 기록되었음을 증명하는 역할을 합니다.
- SCT 포함: CA는 발급된 인증서에 SCT를 포함시키거나, 웹 서버에 SCT를 제공합니다.
- 클라이언트 검증: 웹 브라우저와 같은 클라이언트는 웹 서버에 접속할 때 인증서와 SCT를 함께 받습니다. 클라이언트는 SCT를 검증하여 인증서가 CT 로그에 기록되었는지 확인합니다.
- 감사 및 모니터링: 누구나 CT 로그를 감사하고 모니터링하여 잘못된 인증서 발급을 탐지할 수 있습니다.
구성 요소:
- 로그 서버 (Log Server): 인증서 정보를 저장하고 관리하는 서버입니다. 공개적으로 접근 가능하며, 수정 불가능한 기록을 유지합니다.
- 모니터 (Monitor): CT 로그를 지속적으로 모니터링하여 잘못된 인증서 발급을 탐지하는 주체입니다.
- 감사자 (Auditor): CT 로그의 무결성을 검증하고, 로그 서버가 CT 표준을 준수하는지 확인하는 주체입니다.
기술적 측면:
CT는 머클 트리 (Merkle Tree)를 기반으로 로그의 무결성을 보장합니다. 머클 트리는 대량의 데이터를 효율적으로 요약하고 검증할 수 있는 자료 구조입니다. CT 로그는 머클 트리 형태로 구성되어 있어, 작은 크기의 머클 루트를 통해 전체 로그의 무결성을 검증할 수 있습니다.
구현 현황:
많은 주요 브라우저 (Chrome, Firefox) 및 운영체제 (Android)에서 CT를 지원하고 있으며, 점차적으로 필수 요구 사항으로 자리 잡고 있습니다. 또한, Let's Encrypt와 같은 주요 CA에서도 CT를 의무적으로 적용하고 있습니다.