Certificate Transparency: Domain Label RedactionComodo CA, Ltd.rob.stradling@comodo.comGoogle UK Ltd.eranm@google.com
Security
TRANS (Public Notary Transparency)Internet-DraftThis document defines mechanisms to allow DNS domain name labels that are
considered to be private to not appear in public Certificate Transparency (CT)
logs, while still retaining most of the security benefits that accrue from using
Certificate Transparency.Some domain owners regard certain DNS domain name labels within their registered
domain space as private and security sensitive. Even though these domains are
often only accessible within the domain owner’s private network, it’s common for
them to be secured using publicly trusted Transport Layer Security (TLS) server
certificates.Certificate Transparency v1 and v2
describe protocols for publicly logging the existence of TLS server certificates
as they are issued or observed. Since each TLS server certificate lists the
domain names that it is intended to secure, private domain name labels within
registered domain space could end up appearing in CT logs, especially as TLS
clients develop policies that mandate CT compliance. This seems like an
unfortunate and potentially unnecessary privacy leak, because it’s the
registered domain names in each certificate that are of primary interest when
using CT to look for suspect certificates.TODO: Highlight better the differences between registered domains and
subdomains, referencing the relevant DNS RFCs.The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be
interpreted as described in .We propose three mechanisms, in increasing order of implementation complexity,
to allow certain DNS domain name labels to not appear in public CT logs:Using wildcard certificates () is the simplest
option, but it only covers certain use cases.Logging a name-constrained intermediate CA certificate in place of the
end-entity certificate () covers more, but not all, use
cases.Therefore, we define a domain label redaction mechanism ()
that covers all use cases, at the cost of considerably increased
implementation complexity.We anticipate that TLS clients may develop policies that impose additional
compliancy requirements on the use of the and
mechanisms.To ensure effective redaction, CAs and domain owners should note the privacy
considerations ().TODO(eranm): Do we need to further expand (either here or in the following
subsections) on when each of the mechanisms is/isn’t suitable?TODO: Previously, these mechanisms were defined in earlier revisions of CTv2
, and nothing was said about compatibility with
CTv1. But now, given that these mechanisms have been decoupled from
, and given that at least one major TLS client has
announced a policy of mandatory CT compliance that will almost certainly take
effect before CTv2 is widely deployed, we should consider making some
or all of these mechnanisms compatible with both CTv1 and CTv2.A certificate containing a DNS-ID of *.example.com could be used to
secure the domain topsecret.example.com, without revealing the label
topsecret publicly.Since TLS clients only match the wildcard character to the complete leftmost
label of the DNS domain name (see Section 6.4.3 of ), a different
mechanism is needed when any label other than the leftmost label in a DNS-ID is
considered private (e.g., top.secret.example.com). Also, wildcard certificates
are prohibited in some cases, such as Extended Validation Certificates
.An intermediate CA certificate or intermediate CA precertificate that contains
the Name Constraints extension MAY be logged in place of end-entity
certificates issued by that intermediate CA, as long as all of the following
conditions are met:there MUST be a non-critical extension (OID 1.3.101.76, whose extnValue OCTET
STRING contains ASN.1 NULL data (0x05 0x00)). This extension is an explicit
indication that it is acceptable to not log certificates issued by this
intermediate CA.there MUST be a Name Constraints extension, in which: permittedSubtrees MUST specify one or more dNSNames.excludedSubtrees MUST specify the entire IPv4 and IPv6 address ranges.Below is an example Name Constraints extension that meets these conditions:Each SCT (and optional corresponding inclusion proof and STH) presented by a TLS
server MAY correspond to an intermediate CA certificate or intermediate CA
precertificate (to which the server certificate chains) that meets the
requirements in . This extends section TBD of CT v2
, which specifies that each SCT always corresponds
to the server certificate or to a precertificate that corresponds to that
certificate.Each SCT (and optional corresponding inclusion proof and STH) included by a
certification authority in a Transparency Information X.509v3 extension in the
singleExtensions of a SingleResponse in an OCSP response MAY correspond to
an intermediate CA certificate or intermediate CA precertificate (to which the
certificate identified by the certID of that SingleResponse chains) that
meets the requirements in . This extends section TBD of CT
v2 , which specifies that each SCT always
corresponds to the certificate identified by the certID of that
SingleResponse or to a precertificate that corresponds to that certificate.Each SCT (and optional corresponding inclusion proof and STH) included by a
certification authority in a Transparency Information X.509v3 extension in a
certificate MAY correspond to an intermediate CA certificate or intermediate CA
precertificate (to which the certificate chains) that meets the requirements in
. This extends section TBD of CT v2
, which specifies that each SCT always corresponds
to a precertificate that corresponds to that certificate.TODO: Refactor this section to avoid repetition.Before considering any SCT to be invalid, a TLS client MUST attempt to validate
it against the server certificate and against each of the zero or more suitable
name-constrained intermediates in the chain. These certificates may be evaluated
in the order they appear in the chain, or indeed, in any order.TODO: Shall we specify that there MUST be no more than ONE name-constrained
intermediate in the chain?TODO: Shall we specify that all presented SCTs MUST correspond to the same
(end-entity or name-constrained intermediate) certificate?When creating a precertificate, the CA MAY include a redactedSubjectAltName
() extension that contains, in a redacted form,
the same entries that will be included in the certificate’s subjectAltName
extension. When the redactedSubjectAltName extension is present in a
precertificate, the subjectAltName extension MUST be omitted (even though it
MUST be present in the corresponding certificate).Wildcard * labels MUST NOT be redacted, but one or more non-wildcard labels in
each DNS-ID can each be replaced with a redacted label as follows:label is the case-sensitive label to be redacted.prefix is the “?” character (ASCII value 63).index is the 1 byte index of a hash function in the CT hash algorithm registry
(section TBD of ). The value 255 is reserved.keyid_len is the 1 byte length of the keyid.keyid is the keyIdentifier from the Subject Key Identifier extension
(section 4.2.1.2 of ), excluding the ASN.1 OCTET STRING tag and length
bytes.label_len is the 1 byte length of the label.|| denotes concatenation.BASE32 is the Base 32 Encoding function (section 6 of ). Pad
characters MUST NOT be appended to the encoded data.LABELHASH is the hash function identified by index.The redactedSubjectAltName extension is a non-critical extension
(OID 1.3.101.77) that is identical in structure to the subjectAltName extension,
except that DNS-IDs MAY contain redacted labels ().When used, the redactedSubjectAltName extension MUST be present in both the
precertificate and the corresponding certificate.This extension informs TLS clients of the DNS-ID labels that were redacted and
the degree of redaction, while minimizing the complexity of TBSCertificate
reconstruction (). Hashing the redacted labels
allows the legitimate domain owner to identify whether or not each redacted
label correlates to a label they know of.TODO: Consider the pros and cons of this ‘un’redaction feature. If the cons
outweigh the pros, switch to using Andrew Ayer’s alternative proposal of hashing
a random salt and including that salt in an extension in the certificate (and
not including the salt in the precertificate).Only DNS-ID labels can be redacted using this mechanism. However, CAs can use
the mechanism to allow DNS domain name labels in other
subjectAltName entries to not appear in logs.TODO: Should we support redaction of SRV-IDs and URI-IDs using this mechanism?If the redactedSubjectAltName extension is present, TLS clients MUST check that
the subjectAltName extension is present, that the subjectAltName extension
contains the same number of entries as the redactedSubjectAltName extension, and
that each entry in the subjectAltName extension has a matching entry at the same
position in the redactedSubjectAltName extension. Two entries are matching if
either:The two entries are identical; orBoth entries are DNS-IDs, have the same number of labels, and each label in
the subjectAltName entry has a matching label at the same position in the
redactedSubjectAltName entry. Two labels are matching if either:
The two labels are identical; or,Neither label is * and the label from the redactedSubjectAltName entry is
equal to REDACT(label from subjectAltName entry) ().If any of these checks fail, the certificate MUST NOT be considered compliant.Section TBD of describes how TLS clients can
reconstruct the TBSCertificate component of a precertificate from a certificate,
so that associated SCTs may be verified.If the redactedSubjectAltName extension () is present
in the certificate, TLS clients MUST also:Verify the redactedSubjectAltName extension against the subjectAltName
extension according to .Once verified, remove the subjectAltName extension from the TBSCertificate.Redaction of domain name labels () carries the same risks as
the use of wildcards (e.g., section 7.2 of ). If the entirety of the
domain space below the unredacted part of a domain name is not registered by a
single domain owner (e.g., REDACT(label).com, REDACT(label).co.uk and other
entries), then the domain name may be considered by clients
to be overly redacted.CAs should take care to avoid overly redacting domain names in precertificates.
It is expected that monitors will treat precertificates that contain overly
redacted domain names as potentially misissued. TLS clients MAY consider a
certificate to be non-compliant if the reconstructed TBSCertificate
() contains any overly redacted domain names.TODO(eranm): Describe how the CT ecosystem would be harmed if the use of
redaction becomes too widespread.Although the mechanisms described in this document remove the need for private
labels to appear in CT logs, they do not guarantee that this will never happen.
For example, anyone who encounters a certificate could choose to submit it to
one or more logs, thereby rendering the redaction futile.Domain owners are advised to take the following steps to minimize the likelihood
that their private labels will become known outside their closed communities:Avoid registering private labels in public DNS.Avoid using private labels that are predictable (e.g., “www”, labels
consisting only of numerical digits, etc). If a label has insufficient entropy
then redaction will only provide a thin layer of obfuscation, because it will
be feasible to recover the label via a brute-force attack.Avoid using publicly trusted certificates to secure private domain space.Avoid enabling unrestricted access for DNS zone transfer (AXFR) requests (see
section 5 of ).CAs are advised to carefully consider each request to redact a label using the
mechanism. When a CA believes that redacting a particular
label would be futile, we advise rejecting the redaction request. TLS clients
may have policies that forbid redaction, so label redaction should only be used
when it’s absolutely necessary and likely to be effective.The authors would like to thank Andrew Ayer and TBD for their valuable
contributions.A big thank you to Symantec for kindly donating the OIDs from the 1.3.101 arc
that are used in this document.Key words for use in RFCs to Indicate Requirement LevelsIn many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.The Base16, Base32, and Base64 Data EncodingsThis document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) ProfileThis memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. [STANDARDS-TRACK]DNS Zone Transfer Protocol (AXFR)The standard means within the Domain Name System protocol for maintaining coherence among a zone's authoritative name servers consists of three mechanisms. Authoritative Transfer (AXFR) is one of the mechanisms and is defined in RFC 1034 and RFC 1035.The definition of AXFR has proven insufficient in detail, thereby forcing implementations intended to be compliant to make assumptions, impeding interoperability. Yet today we have a satisfactory set of implementations that do interoperate. This document is a new definition of AXFR -- new in the sense that it records an accurate definition of an interoperable AXFR mechanism. [STANDARDS-TRACK]Representation and Verification of Domain-Based Application Service Identity within Internet Public Key Infrastructure Using X.509 (PKIX) Certificates in the Context of Transport Layer Security (TLS)Many application technologies enable secure communication between two entities by means of Internet Public Key Infrastructure Using X.509 (PKIX) certificates in the context of Transport Layer Security (TLS). This document specifies procedures for representing and verifying the identity of application services in such interactions. [STANDARDS-TRACK]Certificate TransparencyThis document describes an experimental protocol for publicly logging the existence of Transport Layer Security (TLS) certificates as they are issued or observed, in a manner that allows anyone to audit certificate authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs.Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.Certificate Transparency Version 2.0This document describes version 2.0 of the Certificate Transparency (CT) protocol for publicly logging the existence of Transport Layer Security (TLS) server certificates as they are issued or observed, in a manner that allows anyone to audit certification authority (CA) activity and notice the issuance of suspect certificates as well as to audit the certificate logs themselves. The intent is that eventually clients would refuse to honor certificates that do not appear in a log, effectively forcing CAs to add all issued certificates to the logs. Logs are network services that implement the protocol operations for submissions and queries that are defined in this document.Guidelines For The Issuance And Management Of Extended Validation CertificatesCA/Browser ForumPublic Suffix ListMozilla Foundation