이 정책에 관한 질문은 CT 정책 포럼(ct-policy@chromium.org)으로 보내 주세요.
인증서 투명성을 선택하는 앱에서 연결의 전송 계층 보안 (TLS) 인증서가 검증되면 Android 인증서 투명성 (CT) 정책에 대한 규정 준수 여부가 평가됩니다. 이 정책을 충족하는 서명된 인증서 타임스탬프 (SCT)가 포함된 인증서는 CT 규정을 준수하는 것으로 간주됩니다.
CT 규정 준수는 인증서와 함께 제공되는 SCT 집합이 이 정책에 정의된 인증서 유효성 검사 중에 인기 있는 TLS 라이브러리(내장 Conscrypt 포함)에서 시행하는 기술 요구사항 집합을 충족함으로써 달성됩니다.
CT 로그 상태
Android의 CT 규정 준수는 CT 로그의 SCT를 평가하고 검사 시 이러한 로그가 올바른 상태에 있는지 확인하여 결정됩니다. CT 로그가 있을 수 있는 상태 집합은 다음과 같습니다.
Pending
Qualified
Usable
ReadOnly
Retired
Rejected
Android의 CT 규정 준수 요구사항을 이해하는 데 도움이 되도록 이러한 상태의 정의, 각 상태의 로그 요구사항, 이러한 상태가 Android 동작에 미치는 영향은 Chrome 문서의 CT 로그 수명 주기 설명에 자세히 설명되어 있습니다.
CT 규정 준수 인증서
TLS 인증서는 SCT가 Android에 전달되는 방식에 따라 나중에 정의된 기준을 하나 이상 충족하는 SCT 집합이 함께 제공되는 경우 CT 규정 준수입니다. Android의 CT 시행 앱에서는 공개적으로 신뢰할 수 있는 모든 TLS 인증서가 성공적으로 검증되려면 CT를 준수해야 합니다. 하지만 CT에 로깅되지 않았거나 SCT가 충분하지 않은 인증서는 잘못 발급된 것으로 간주되지 않습니다.
CT 규정 준수 여부를 위해 인증서를 평가할 때 Android는 SCT가 몇 개 있는지, SCT를 발급한 CT 로그를 누가 운영하는지, 인증서가 검증될 때와 SCT가 CT 로그에 의해 생성될 때 SCT를 발급한 CT 로그가 어떤 상태였는지 등 여러 요소를 고려합니다.
SCT가 Android에 표시되는 방식에 따라 다음 기준 중 하나를 충족하여 CT 규정 준수를 달성할 수 있습니다.
삽입된 SCT:
- 확인 시점에
Qualified
,Usable
또는ReadOnly
였던 CT 로그의 삽입된 SCT가 하나 이상 있어야 합니다. - 확인 시점에
Qualified
,Usable
,ReadOnly
또는Retired
인 서로 다른 CT 로그가 N개 이상에서 삽입된 SCT가 있습니다(N은 다음 표에 정의됨). - 요구사항 2를 충족하는 SCT 중 최소 2개의 SCT는 Android에서 인식하는 서로 다른 CT 로그 운영자로부터 발급되어야 합니다.
- 요구사항 2를 충족하는 SCT 중 하나 이상은 Android에서 RFC 6962를 준수하는 것으로 인식하는 로그에서 발급되어야 합니다.
인증서 수명 | 고유한 CT 로그의 SCT 수 |
---|---|
180일 이하 | 2 |
180일 초과 | 3 |
OCSP 또는 TLS를 통해 제공되는 SCT:
- 확인 시
Qualified
,Usable
또는ReadOnly
이었던 CT 로그의 SCT가 2개 이상 - 요구사항 1을 충족하는 SCT 중 최소 2개의 SCT는 Android에서 인식하는 서로 다른 CT 로그 운영자로부터 발급되어야 합니다.
- 요구사항 1을 충족하는 SCT 중 하나 이상은 Android에서 RFC6962를 준수하는 것으로 인식하는 CT 로그에서 발급되어야 합니다.
삽입된 SCT와 OCSP 또는 TLS를 사용하여 제공되는 SCT 모두에 대해 로그 운영자 고유성은 로그 목록의 운영자 섹션 내에 별도의 항목이 있는 것으로 정의됩니다.
CT 로그가 수명 중에 운영자를 변경하는 드문 경우에 CT 로그는 선택적으로 previous_operators
목록을 포함하며, 이 로그가 이전 운영자에 의해 운영된 최종 타임스탬프가 함께 제공됩니다.
로그 운영자 변경으로 인해 기존 인증서가 손상되지 않도록 각 SCT의 로그 운영자는 SCT 타임스탬프를 previous_operators
타임스탬프(있는 경우)와 비교하여 SCT 발급 시점의 운영자로 결정됩니다.
중요사항
핸드셰이크에 표시된 SCT의 조합이 앞서 나온 CT 규정 준수 기준 중 하나를 충족하는 한, SCT의 상태와 관계없이 추가 SCT는 인증서의 CT 규정 준수 상태에 긍정적 또는 부정적 영향을 미치지 않습니다.
인증서의 CT 규정 준수에 기여하려면 로그의 Retired
타임스탬프(있는 경우) 전에 SCT가 발급되어야 합니다.
Android는 CT 로그 Retired
타임스탬프에 대한 CT 규정 준수를 평가하기 위해 제시된 모든 SCT 중에서 가장 빠른 SCT를 사용합니다.
이는 인증서 로깅 요청을 제출하는 과정에서 CT 로그가 폐기되는 특이 사례를 고려한 것입니다.
'삽입된 SCT'는 인증서 자체 내에서 SignedCertificateTimestampList
X.509v3 확장 프로그램을 사용하여 제공되는 SCT를 의미합니다. 많은 TLS 서버가 OCSP 스테이플링이나 TLS 확장 프로그램을 지원하지 않으므로 CA는 Android에서 성공적인 검증이나 EV 처리를 보장하기 위해 발급된 인증서에 SCT를 삽입할 준비를 해야 합니다.
Android에 CT 로그가 추가되는 방식
CT 로그가 Qualified
가 되는 기준과 Retired
가 되는 상황은 Chrome CT 로그 정책에서 확인할 수 있습니다.
CT 강제 적용 시간 초과
Google은 매일 새로운 log_list_timestamp
가 포함된 새로운 CT 로그 목록을 게시합니다. Android 기기는 하루에 한 번씩 확인을 위해 이 목록의 최신 버전을 다운로드하려고 시도합니다. 특정 시점에 기기에서 로그 목록을 사용할 수 없거나 로그 목록의 타임스탬프가 70일보다 오래된 경우 CT 시행이 사용 중지됩니다.
이 제한 시간은 CT 생태계에 새 CT 로그가 Qualified
가 된 후 정해진 시간 내에 안전하게 사용 가능한 상태로 전환될 수 있다는 중요한 보증을 제공합니다.
Android 로그 목록
Android 로그 목록은 매일 업데이트되는 log_list.json에 게시됩니다. 이 로그 목록은 안정적인 API, SLA 또는 가용성 보장 없이 제공됩니다.
Android는 CT 및 WebPKI 생태계와 호환되거나 해당 생태계의 콘텐츠를 조사하려는 인증서 제출자 (예: 인증 기관)와 CT 모니터 및 감사자가 사용할 수 있도록 CT 로그 목록을 제공합니다.
Android CT 로그 목록에 대한 무단 의존은 사용자뿐만 아니라 Android 사용자 및 CT 생태계 전체를 위험에 빠뜨립니다. 앱에 CT 시행을 추가하는 방법을 살펴보고 있다면 Android 플랫폼에서 지원하는 메커니즘을 사용하세요.
이 정책에 따르지 않고 Android CT 로그 목록을 사용하면 위험이 따르며 애플리케이션이나 라이브러리가 손상될 수 있습니다. Android는 Android 사용자의 안전과 보안을 유지하기 위해 CT 생태계의 사고에 대응하여 CT 로그 목록을 변경할 수 있어야 합니다. Android에서는 승인되지 않은 사용을 방해하기 위해 로그 목록에 대한 사전 공지되지 않은 변경사항을 포함하여 CT 로그 목록에 대한 서드 파티 종속 항목이 이러한 인시던트에 대응하는 Android의 기능을 위험에 빠뜨리지 않도록 조치를 취할 수 있습니다.