rfc9718v1.txt | rfc9718.txt | |||
---|---|---|---|---|
skipping to change at line 114 ¶ | skipping to change at line 114 ¶ | |||
DNS. Other organizations might have different formats and mechanisms | DNS. Other organizations might have different formats and mechanisms | |||
for distributing DNSSEC trust anchors for the root zone; however, | for distributing DNSSEC trust anchors for the root zone; however, | |||
most operators and software vendors have chosen to rely on the IANA | most operators and software vendors have chosen to rely on the IANA | |||
trust anchors. | trust anchors. | |||
The formats and distribution methods described in this document are a | The formats and distribution methods described in this document are a | |||
complement to, not a substitute for, the automated DNSSEC trust | complement to, not a substitute for, the automated DNSSEC trust | |||
anchor update protocol described in [RFC5011]. That protocol allows | anchor update protocol described in [RFC5011]. That protocol allows | |||
for secure in-band succession of trust anchors when trust has already | for secure in-band succession of trust anchors when trust has already | |||
been established. This document describes one way to establish an | been established. This document describes one way to establish an | |||
initial trust anchor that can be used by [RFC5011]. | initial trust anchor that can be used by the mechanism defined in | |||
[RFC5011]. | ||||
This document obsoletes [RFC7958]. | This document obsoletes [RFC7958]. | |||
1.1. Definitions | 1.1. Definitions | |||
The term "trust anchor" is used in many different contexts in the | The term "trust anchor" is used in many different contexts in the | |||
security community. Many of the common definitions conflict because | security community. Many of the common definitions conflict because | |||
they are specific to a specific system, such as just for DNSSEC or | they are specific to a specific system, such as just for DNSSEC or | |||
just for S/MIME messages. | just for S/MIME messages. | |||
In cryptographic systems with hierarchical structure, a trust anchor | In cryptographic systems with hierarchical structure, a trust anchor | |||
is an authoritative entity for which trust is assumed and not | is an authoritative entity for which trust is assumed and not | |||
derived. The format of the entity differs in different systems, but | derived. The format of the entity differs in different systems, but | |||
the basic idea, the decision to trust this entity is made outside of | all common uses of the term "trust anchor" share the basic idea that | |||
the system that relies on it, is common to all the common uses of the | the decision to trust this entity is made outside of the system that | |||
term "trust anchor". | relies on it. | |||
The root zone trust anchor formats published by IANA are defined in | The root zone trust anchor formats published by IANA are defined in | |||
Section 2. [RFC4033] defines a trust anchor as a "configured DNSKEY | Section 2. [RFC4033] defines a trust anchor as a "configured DNSKEY | |||
RR or DS RR hash of a DNSKEY RR". Note that the formats defined here | RR or DS RR hash of a DNSKEY RR". Note that the formats defined here | |||
do not match the definition of "trust anchor" from [RFC4033]; | do not match the definition of "trust anchor" from [RFC4033]; | |||
however, a system that wants to convert the trusted material from | however, a system that wants to convert the trusted material from | |||
IANA into a Delegation Signer (DS) RR can do so. | IANA into a Delegation Signer (DS) RR can do so. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. IANA DNSSEC Root Zone Trust Anchor Format and Semantics | 2. IANA DNSSEC Root Zone Trust Anchor Format and Semantics | |||
IANA publishes trust anchors for the root zone as an XML document | IANA publishes trust anchors for the root zone as an XML | |||
that contains the hashes of the DNSKEY records and optionally the | [W3C.REC-xml11-20060816] document that contains the hashes of the | |||
keys from the DNSKEY records. | DNSKEY records and optionally the keys from the DNSKEY records. | |||
This format and the associated semantics are described in the rest of | This format and the associated semantics are described in the rest of | |||
this section. | this section. | |||
Note that the XML document can have XML comments. For example, IANA | Note that the XML document can have XML comments. For example, IANA | |||
might use these comments to add pointers to important information on | might use these comments to add pointers to important information on | |||
the IANA website. XML comments are only used as human-readable | the IANA website. XML comments are only used as human-readable | |||
commentary, not extensions to the grammar. | commentary, not extensions to the grammar. | |||
The XML document contains a set of hashes for the DNSKEY records that | The XML document contains a set of hashes for the DNSKEY records that | |||
skipping to change at line 211 ¶ | skipping to change at line 212 ¶ | |||
element Flags { | element Flags { | |||
xsd:nonNegativeInteger { maxInclusive = "65535" } } | xsd:nonNegativeInteger { maxInclusive = "65535" } } | |||
2.2. XML Semantics | 2.2. XML Semantics | |||
The TrustAnchor element is the container for all of the trust anchors | The TrustAnchor element is the container for all of the trust anchors | |||
in the file. | in the file. | |||
The id attribute in the TrustAnchor element is an opaque string that | The id attribute in the TrustAnchor element is an opaque string that | |||
identifies the set of trust anchors. Its value has no particular | identifies the set of trust anchors. Its value has no particular | |||
semantics. Note that the id element in the TrustAnchor element is | semantics. Note that the id attribute in the TrustAnchor element is | |||
different than the id element in the KeyDigest element, described | different than the id attribute in the KeyDigest element described | |||
below. | below. | |||
The source attribute in the TrustAnchor element gives information | The source attribute in the TrustAnchor element gives information | |||
about where to obtain the TrustAnchor container. It is likely to be | about where to obtain the TrustAnchor container. It is likely to be | |||
a URL and is advisory only. | a URL and is advisory only. | |||
The Zone element in the TrustAnchor element states to which DNS zone | The Zone element in the TrustAnchor element states to which DNS zone | |||
this container applies. The element is in presentation format as | this container applies. The Zone element is in presentation format | |||
specified in [RFC1035], including the trailing dot. The root zone is | as specified in [RFC1035], including the trailing dot. The root zone | |||
indicated by a single period (.) character without any quotation | is indicated by a single period (.) character without any quotation | |||
marks. | marks. | |||
The TrustAnchor element contains one or more KeyDigest elements. | The TrustAnchor element contains one or more KeyDigest elements. | |||
Each KeyDigest element represents the digest of a past, current, or | Each KeyDigest element represents the digest of a past, current, or | |||
potential future DNSKEY record of the zone defined in the Zone | potential future DNSKEY record of the zone defined in the Zone | |||
element. The values for the elements in the KeyDigest element are | element. The values for the elements in the KeyDigest element are | |||
defined in [RFC4034]. The IANA registries for these values are | defined in [RFC4034]. The IANA registries for DNSSEC-related values | |||
described in [RFC9157]. | are described in [RFC9157]. | |||
The id attribute in the KeyDigest element is an opaque string that | The id attribute in the KeyDigest element is an opaque string that | |||
identifies the hash. Note that the id element in the KeyDigest | identifies the hash. Note that the id attribute in the KeyDigest | |||
element is different than the id element in the TrustAnchor element | element is different than the id attribute in the TrustAnchor element | |||
described above. | described above. | |||
The validFrom and validUntil attributes in the KeyDigest element | The validFrom and validUntil attributes in the KeyDigest element | |||
specify the range of times that the KeyDigest element can be used as | specify the range of times that the KeyDigest element can be used as | |||
a trust anchor. | a trust anchor. | |||
The KeyTag element in the KeyDigest element contains the key tag for | The KeyTag element in the KeyDigest element contains the key tag for | |||
the DNSKEY record represented in this KeyDigest. | the DNSKEY record represented in this KeyDigest. | |||
The Algorithm element in the KeyDigest element contains the DNSSEC | The Algorithm element in the KeyDigest element contains the DNSSEC | |||
skipping to change at line 267 ¶ | skipping to change at line 268 ¶ | |||
mandatory elements: the base64 representation of the public key for | mandatory elements: the base64 representation of the public key for | |||
the DNSKEY record represented in this KeyDigest and the flags of the | the DNSKEY record represented in this KeyDigest and the flags of the | |||
DNSKEY record represented in this KeyDigest. The publickeyinfo named | DNSKEY record represented in this KeyDigest. The publickeyinfo named | |||
pattern is optional and is new in this specification. It can be | pattern is optional and is new in this specification. It can be | |||
useful when IANA has a trust anchor that has not yet been published | useful when IANA has a trust anchor that has not yet been published | |||
in the DNS root and for calculating a comparison to the Digest | in the DNS root and for calculating a comparison to the Digest | |||
element. | element. | |||
2.3. XML Example | 2.3. XML Example | |||
The following is an example of what an XML [W3C.REC-xml11-20060816] | The following is an example of what the trust anchor file might look | |||
document for a trust anchor might look like. The full public key is | like. The full public key is only given for a trust anchor that does | |||
only given for a trust anchor that does not have a validFrom ttime in | not have a validFrom time in the past. | |||
the past. | ||||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<TrustAnchor id="E9724F53-1851-4F86-85E5-F1392102940B" | <TrustAnchor id="E9724F53-1851-4F86-85E5-F1392102940B" | |||
source="http://data.iana.org/root-anchors/root-anchors.xml"> | source="http://data.iana.org/root-anchors/root-anchors.xml"> | |||
<Zone>.</Zone> | <Zone>.</Zone> | |||
<KeyDigest id="Kjqmt7v" | <KeyDigest id="Kjqmt7v" | |||
validFrom="2010-07-15T00:00:00+00:00" | validFrom="2010-07-15T00:00:00+00:00" | |||
validUntil="2019-01-11T00:00:00+00:00"> <!-- This key | validUntil="2019-01-11T00:00:00+00:00"> <!-- This key | |||
is no longer valid, since validUntil is in the past --> | is no longer valid, since validUntil is in the past --> | |||
<KeyTag>19036</KeyTag> | <KeyTag>19036</KeyTag> | |||
skipping to change at line 354 ¶ | skipping to change at line 354 ¶ | |||
3. Root Zone Trust Anchor Retrieval | 3. Root Zone Trust Anchor Retrieval | |||
3.1. Retrieving Trust Anchors with HTTPS and HTTP | 3.1. Retrieving Trust Anchors with HTTPS and HTTP | |||
Trust anchors are available for retrieval using HTTPS and HTTP. | Trust anchors are available for retrieval using HTTPS and HTTP. | |||
In this section, all URLs are given using the "https:" scheme. If | In this section, all URLs are given using the "https:" scheme. If | |||
HTTPS cannot be used, replace the "https:" scheme with "http:". | HTTPS cannot be used, replace the "https:" scheme with "http:". | |||
The URL for retrieving the set of hashes in the XML file described in | The URL for retrieving the set of hashes in the XML document | |||
Section 2 is <https://data.iana.org/root-anchors/root-anchors.xml>. | described in Section 2 is <https://data.iana.org/root-anchors/root- | |||
anchors.xml>. | ||||
3.2. Accepting DNSSEC Trust Anchors | 3.2. Accepting DNSSEC Trust Anchors | |||
A validator operator can choose whether or not to accept the trust | A validator operator can choose whether or not to accept the trust | |||
anchors described in this document using whatever policy they want. | anchors described in this document using whatever policy they want. | |||
In order to help validator operators verify the content and origin of | In order to help validator operators verify the content and origin of | |||
trust anchors they receive, IANA uses digital signatures that chain | trust anchors they receive, IANA uses digital signatures that chain | |||
to an ICANN-controlled Certificate Authority (CA) over the trust | to an ICANN-controlled Certificate Authority (CA) over the trust | |||
anchor data. | anchor data. | |||
It is important to note that the ICANN CA is not a DNSSEC trust | It is important to note that the ICANN CA is not a DNSSEC trust | |||
anchor. Instead, it is an optional mechanism for verifying the | anchor. Instead, it is an optional mechanism for verifying the | |||
content and origin of the XML and certificate trust anchors. | content and origin of the XML and certificate trust anchors. | |||
The content and origin of the XML file can be verified using a | The content and origin of the XML document can be verified using a | |||
digital signature on the file. IANA provides a detached | digital signature on the file. IANA provides a detached | |||
Cryptographic Message Syntax (CMS) [RFC5652] signature that chains to | Cryptographic Message Syntax (CMS) [RFC5652] signature that chains to | |||
the ICANN CA with the XML file. This can be useful for validator | the ICANN CA with the XML document. This can be useful for validator | |||
operators who have received a copy of the ICANN CA's public key in a | operators who have received a copy of the ICANN CA's public key in a | |||
trusted out-of-band fashion. The URL for a detached CMS signature | trusted out-of-band fashion. The URL for a detached CMS signature | |||
for the XML file is <https://data.iana.org/root-anchors/root- | for the XML document is <https://data.iana.org/root-anchors/root- | |||
anchors.p7s>. | anchors.p7s>. | |||
Another method IANA uses to help validator operators verify the | Another method IANA uses to help validator operators verify the | |||
content and origin of trust anchors they receive is to use the | content and origin of trust anchors they receive is to use the | |||
Transport Layer Security (TLS) protocol for distributing the trust | Transport Layer Security (TLS) protocol for distributing the trust | |||
anchors. Currently, the CA used for "data.iana.org" is well known, | anchors. Currently, the CA used for "data.iana.org" is well known, | |||
that is, one that is a WebTrust-accredited CA. If a system | that is, one that is a WebTrust-accredited CA. If a system | |||
retrieving the trust anchors trusts the CA that IANA uses for the | retrieving the trust anchors trusts the CA that IANA uses for the | |||
"data.iana.org" web server, HTTPS SHOULD be used instead of HTTP in | "data.iana.org" web server, HTTPS SHOULD be used instead of HTTP in | |||
order to have assurance of data origin. | order to have assurance of data origin. | |||
skipping to change at line 474 ¶ | skipping to change at line 475 ¶ | |||
5. IANA Considerations | 5. IANA Considerations | |||
Each time IANA produces a new trust anchor, it MUST publish that | Each time IANA produces a new trust anchor, it MUST publish that | |||
trust anchor using the format described in this document. | trust anchor using the format described in this document. | |||
IANA MAY delay the publication of a new trust anchor for operational | IANA MAY delay the publication of a new trust anchor for operational | |||
reasons, such as having a newly created key in multiple facilities. | reasons, such as having a newly created key in multiple facilities. | |||
When a trust anchor that was previously published is no longer | When a trust anchor that was previously published is no longer | |||
suitable for use, IANA MUST update the trust anchor document | suitable for use, IANA MUST update the trust anchor file accordingly | |||
accordingly by setting a validUntil date for that trust anchor. The | by setting a validUntil date for that trust anchor. The validUntil | |||
validUntil attribute that is added MAY be a date in the past or in | attribute that is added MAY be a date in the past or in the future, | |||
the future, depending on IANA's operational choices. | depending on IANA's operational choices. | |||
More information about IANA's policies and procedures for how the | More information about IANA's policies and procedures for how the | |||
cryptographic keys for the DNS root zone are managed (also known as | cryptographic keys for the DNS root zone are managed (also known as | |||
"DNSSEC Practice Statements" or "DPSs") can be found at | "DNSSEC Practice Statements" or "DPSs") can be found at | |||
<https://www.iana.org/dnssec/procedures>. | <https://www.iana.org/dnssec/procedures>. | |||
[RFC7958] defined id-mod-dns-resource-record, value 70, which was | [RFC7958] defined id-mod-dns-resource-record, value 70, which was | |||
added to the "SMI Security for PKIX Module Identifier" registry. | added to the "SMI Security for PKIX Module Identifier" registry. | |||
This document does not use that identifier. | This document does not use that identifier. | |||
End of changes. 13 change blocks. | ||||
29 lines changed or deleted | 30 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |