| rfc9589xml2.original.xml | rfc9589.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc toc="yes"?> | ||||
| <?rfc tocdepth="3"?> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
| category="std" | ||||
| docName="draft-ietf-sidrops-cms-signing-time-07" | ||||
| updates="6488" | ||||
| ipr="trust200902" | ||||
| submissionType="IETF" | ||||
| consensus="true"> | ||||
| <front> | ||||
| <title abbrev="RPKI CMS Signing-Time">On the use of the CMS signing-time attri | ||||
| bute in RPKI Signed Objects</title> | ||||
| <author fullname="Job Snijders" initials="J." surname="Snijders"> | <!DOCTYPE rfc [ | |||
| <organization>Fastly</organization> | <!ENTITY nbsp " "> | |||
| <address> | <!ENTITY zwsp "​"> | |||
| <postal> | <!ENTITY nbhy "‑"> | |||
| <street /> | <!ENTITY wj "⁠"> | |||
| <city>Amsterdam</city> | ]> | |||
| <code /> | ||||
| <country>Netherlands</country> | ||||
| </postal> | ||||
| <email>job@fastly.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Tom Harrison" initials="T." surname="Harrison"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
| <organization abbrev="APNIC">Asia Pacific Network Information Centre</organi | tf-sidrops-cms-signing-time-07" number="9589" updates="6488" obsoletes="" ipr="t | |||
| zation> | rust200902" submissionType="IETF" consensus="true" sortRefs="true" symRefs="true | |||
| <address> | " tocInclude="true" tocDepth="3" version="3" xml:lang="en" > | |||
| <postal> | ||||
| <street>6 Cordelia St</street> | ||||
| <city>South Brisbane</city> | ||||
| <code>4101</code> | ||||
| <country>Australia</country> | ||||
| <region>QLD</region> | ||||
| </postal> | ||||
| <phone/> | ||||
| <email>tomh@apnic.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <date /> | <front> | |||
| <title abbrev="RPKI CMS Signing-Time">On the Use of the Cryptographic Messag | ||||
| e Syntax (CMS) Signing-Time Attribute in Resource Public Key Infrastructure (RPK | ||||
| I) Signed Objects</title> | ||||
| <seriesInfo name="RFC" value="9589"/> | ||||
| <author fullname="Job Snijders" initials="J." surname="Snijders"> | ||||
| <organization>Fastly</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <postalLine>Amsterdam</postalLine> | ||||
| <postalLine>The Netherlands</postalLine> | ||||
| </postal> | ||||
| <email>job@fastly.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Tom Harrison" initials="T." surname="Harrison"> | ||||
| <organization abbrev="APNIC">Asia Pacific Network Information Centre</orga | ||||
| nization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>6 Cordelia St</street> | ||||
| <city>South Brisbane</city> | ||||
| <code>4101</code> | ||||
| <country>Australia</country> | ||||
| <region>QLD</region> | ||||
| </postal> | ||||
| <email>tomh@apnic.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="May" year="2024"/> | ||||
| <area>RPKI</area> | <area>OPS</area> | |||
| <workgroup>SIDROPS</workgroup> | <workgroup>SIDROPS</workgroup> | |||
| <keyword>CMS</keyword> | ||||
| <keyword>signing-time</keyword> | ||||
| <abstract> | <keyword>CMS</keyword> | |||
| <keyword>signing-time</keyword> | ||||
| <t> | <abstract> | |||
| <t> | ||||
| In the Resource Public Key Infrastructure (RPKI), Signed Objects are defin ed as Cryptographic Message Syntax (CMS) protected content types. | In the Resource Public Key Infrastructure (RPKI), Signed Objects are defin ed as Cryptographic Message Syntax (CMS) protected content types. | |||
| Signed Objects contain a signing-time attribute, representing the purporte d time at which the object was signed by its issuer. | A Signed Object contains a signing-time attribute, representing the purpor ted time at which the object was signed by its issuer. | |||
| RPKI repositories are accessible using the rsync and RPKI Repository Delta protocols, allowing Relying Parties (RPs) to synchronize a local copy of the RP KI repository used for validation with the remote repositories. | RPKI repositories are accessible using the rsync and RPKI Repository Delta protocols, allowing Relying Parties (RPs) to synchronize a local copy of the RP KI repository used for validation with the remote repositories. | |||
| This document describes how the CMS signing-time attribute can be used to avoid needless retransfers of data when switching between different synchronizat ion protocols. | This document describes how the CMS signing-time attribute can be used to avoid needless retransfers of data when switching between different synchronizat ion protocols. | |||
| This document updates RFC 6488 by mandating the presence of the CMS signin g-time attribute and disallowing the use of the binary-signing-time attribute. | This document updates RFC 6488 by mandating the presence of the CMS signin g-time attribute and disallowing the use of the binary-signing-time attribute. | |||
| </t> | ||||
| </abstract> | ||||
| <note title="Requirements Language"> | ||||
| <t> | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHO | ||||
| ULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in t | ||||
| his document are to be interpreted as described in BCP 14 <xref target="RFC2119" | ||||
| /> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as | ||||
| shown here. | ||||
| </t> | </t> | |||
| </note> | </abstract> | |||
| </front> | ||||
| </front> | <middle> | |||
| <section> | ||||
| <middle> | <name>Introduction</name> | |||
| <t> | ||||
| <section title="Introduction"> | In the Resource Public Key Infrastructure (RPKI) <xref target="RFC6480"/>, | |||
| <t> | Signed Objects are defined as Cryptographic Message Syntax (CMS) <xref target=" | |||
| In the Resource Public Key Infrastructure (RPKI) <xref target="RFC6480" /> | RFC5652"/> <xref target="RFC6268"/> protected content types by way of a standard | |||
| , Signed Objects are defined as Cryptographic Message Syntax (CMS) <xref target= | template <xref target="RFC6488"/>. | |||
| "RFC5652"/> <xref target="RFC6268"/> protected content types by way of a standar | ||||
| d template <xref target="RFC6488" />. | ||||
| That template includes an optional CMS signing-time attribute, representin g the time at which the object was signed by its issuer. | That template includes an optional CMS signing-time attribute, representin g the time at which the object was signed by its issuer. | |||
| At the time when the standard template was defined, rsync was the only dis tribution mechanism for RPKI repositories. | At the time when the standard template was defined, rsync was the only dis tribution mechanism for RPKI repositories. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | Since the publication of the standard template, a new, additional protocol | |||
| Since the publication of the standard template, a new, additional protocol | for distribution of RPKI repositories has been developed: the RPKI Repository D | |||
| for distribution of RPKI repositories has been developed: the RPKI Repository D | elta Protocol (RRDP) <xref target="RFC8182"/>. | |||
| elta Protocol (RRDP) <xref target="RFC8182" />. | While RPKI repository operators must provide rsync service, RRDP is typica | |||
| While RPKI repository operators must provide rsync service, RRDP is typica | lly deployed alongside it as well, and is preferred by default by most Relying P | |||
| lly deployed alongside it as well, and preferred by default by most RP implement | arty (RP) implementations. | |||
| ations. | ||||
| However, RP implementations also support fallback to rsync in the event of problems with the RRDP service. | However, RP implementations also support fallback to rsync in the event of problems with the RRDP service. | |||
| As deployment experience with RRDP has increased, the usefulness of optimi zing switchovers by RPs from one mechanism to the other has become apparent. | As deployment experience with RRDP has increased, the usefulness of optimi zing switchovers by RPs from one mechanism to the other has become apparent. | |||
| </t> | ||||
| <t> | ||||
| This document describes how Repository Operators <xref target="RFC6481" /> | ||||
| and RPs can use the CMS signing-time attribute to minimize the burden of switch | ||||
| ing over from RRDP to rsync. | ||||
| Additionally, this document updates <xref target="RFC6488" /> by mandating | ||||
| the presence of the CMS signing-time attribute and disallowing the use of the b | ||||
| inary-signing-time attribute. | ||||
| </t> | ||||
| </section> | ||||
| <section title="Optimized switchover from RRDP to rsync"> | ||||
| <t> | ||||
| To avoid needless re-transfers of unchanged files in consecutive rsync syn | ||||
| chronizations, <xref target="I-D.timbru-sidrops-publication-server-bcp"/> recomm | ||||
| ends the use of so-called 'deterministic' (normalized) timestamps for files. | ||||
| When the content of a file is unchanged, Repository Operators SHOULD ensur | ||||
| e that the last modification timestamp of the file remains unchanged as well. | ||||
| </t> | ||||
| <t> | ||||
| This document advances the aforementioned concept by describing a synchron | ||||
| ization strategy through which needless transfers are also avoided upon first us | ||||
| e of rsync, by leveraging data previously fetched via RRDP. | ||||
| </t> | ||||
| <t> | ||||
| At the time of writing, all commonly used RP implementations will first at | ||||
| tempt synchronization via RRDP, as described in <xref target="I-D.ietf-sidrops-p | ||||
| refer-rrdp"/>. | ||||
| If synchronization via RRDP fails for some reason (e.g. malformed XML, exp | ||||
| ired TLS certificate, HTTP connection timeout), the RP will attempt to synchroni | ||||
| ze via rsync instead. | ||||
| </t> | ||||
| <t> | ||||
| In the rsync synchronization protocol, a file's last modification timestam | ||||
| p (from here on 'mod-time') and filesize are used to determine whether the gener | ||||
| al-purpose rsync synchronization algorithm needs to be executed for the file. | ||||
| This is the default mode for both the original rsync implementation <xref | ||||
| target="rsync"/> and the OpenBSD implementation <xref target="openrsync"/>. | ||||
| If the sender's copy of the file and the receiver's copy of the file both | ||||
| have the same mod-time and filesize, the files are assumed to contain the same c | ||||
| ontent, and will be omitted from the list of files to be transferred. | ||||
| Ensuring consistency with respect to mod-time for both senders and receive | ||||
| rs helps to reduce the burden of rsync synchronization in terms of network bandw | ||||
| idth, disk I/O operations, and CPU usage. | ||||
| </t> | ||||
| <t> | ||||
| In order to reduce the burden of the rsync synchronization (following an R | ||||
| RDP failure), Repository Operators and RPs SHOULD adhere to the following guidel | ||||
| ines. | ||||
| </t> | ||||
| <section title="Guidance for Repository Operators"> | ||||
| <t> | ||||
| When serializing RPKI Signed Objects to a filesystem hierarchy for publi | ||||
| cation via rsync, the mod-time of the file containing the Signed Object SHOULD b | ||||
| e set to the value of the CMS signing-time attribute contained within the Signed | ||||
| Object. | ||||
| </t> | </t> | |||
| </section> | ||||
| <section title="Guidance for Relying Parties" anchor="rpguidance"> | ||||
| <t> | <t> | |||
| When serializing RPKI Signed Objects retrieved via RRDP to a filesystem | This document describes how Repository Operators <xref target="RFC6481"/> | |||
| hierarchy, the mod-time of the file containing the Signed Object SHOULD be set t | and RPs can use the CMS signing-time attribute to minimize the burden of switchi | |||
| o the value of the CMS signing-time attribute contained within the Signed Object | ng over from RRDP to rsync. | |||
| . | Additionally, this document updates <xref target="RFC6488"/> by mandating | |||
| the presence of the CMS signing-time attribute and disallowing the use of the bi | ||||
| nary-signing-time attribute. | ||||
| </t> | </t> | |||
| <section> | ||||
| <name>Requirements Language</name> | ||||
| <t> | ||||
| The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
| "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | ||||
| ", | ||||
| "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
| "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
| be | ||||
| interpreted as described in BCP 14 <xref target="RFC2119"/> <xref | ||||
| target="RFC8174"/> when, and only when, they appear in all capitals, as | ||||
| shown here. | ||||
| </t> | ||||
| </section> | ||||
| </section> | ||||
| <section> | ||||
| <name>Optimized Switchover from RRDP to rsync</name> | ||||
| <t> | <t> | |||
| If an RP uses RRDP to synthesize a filesystem hierarchy for the reposito | To avoid needless retransfers of unchanged files in consecutive rsync sync | |||
| ry, then synchronizing to the corresponding directory directly is an option. | hronizations, <xref target="I-D.timbru-sidrops-publication-server-bcp"/> recomme | |||
| Alternatively, the RP can synchronize to a new (empty) directory using t | nds the use of so-called 'deterministic' (normalized) timestamps for files. | |||
| he <em>--compare-dest=DIR</em> rsync feature, in order to avoid retrieving files | When the content of a file is unchanged, Repository Operators <bcp14>SHOUL | |||
| that are already available by way of the synthesized filesystem hierarchy stemm | D</bcp14> ensure that the last modification timestamp of the file remains unchan | |||
| ing from previous RRDP fetches. | ged as well. | |||
| The <em>DIR</em> component is to be substituted with the name of the dir | ||||
| ectory containing previously fetched and validated RPKI data (in its original DE | ||||
| R-encoded form, to ensure the filesize parameter matches). | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| From the <xref target="rsync" /> man page for <em>--compare-dest=DIR</em >: | This document advances the aforementioned concept by describing a synchron ization strategy through which needless transfers are also avoided upon first us e of rsync, by leveraging data previously fetched via RRDP. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| <list style="empty"> | At the time of writing, all commonly used RP implementations will first at | |||
| <t> | tempt synchronization via RRDP, as described in <xref target="I-D.ietf-sidrops-p | |||
| This option instructs rsync to use <em>DIR</em> on the destination m | refer-rrdp"/>. | |||
| achine as an additional hierarchy to compare destination files against doing tra | If synchronization via RRDP fails for some reason (e.g., malformed XML, ex | |||
| nsfers (if the files are missing in the destination directory). | pired TLS certificate, HTTP connection timeout), the RP will attempt to synchron | |||
| If a file is found in <em>DIR</em> that is identical to the sender's | ize via rsync instead. | |||
| file, the file will NOT be transferred to the destination directory. | ||||
| This is useful for creating a sparse backup of just files that have | ||||
| changed from an earlier backup. | ||||
| </t> | ||||
| </list> | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| From the <xref target="openrsync" /> man page for <em>--compare-dest=dir | In the rsync synchronization protocol, a file's last modification timestam | |||
| ectory</em>: | p ('mod-time' from here on) and file size are used to determine whether the gene | |||
| ral-purpose rsync synchronization algorithm needs to be executed for the file. | ||||
| This is the default mode for both the original rsync implementation <xref | ||||
| target="rsync"/> and the OpenBSD implementation <xref target="openrsync"/>. | ||||
| If the sender's copy of the file and the receiver's copy of the file both | ||||
| have the same mod-time and file size, the files are assumed to contain the same | ||||
| content, and they will be omitted from the list of files to be transferred. | ||||
| Ensuring consistency with respect to mod-time for both senders and receive | ||||
| rs helps to reduce the burden of rsync synchronization in terms of network bandw | ||||
| idth, disk I/O operations, and CPU usage. | ||||
| </t> | </t> | |||
| <t> | <t> | |||
| <list style="empty"> | In order to reduce the burden of the rsync synchronization (following an R | |||
| <t> | RDP failure), Repository Operators and RPs <bcp14>SHOULD</bcp14> adhere to the f | |||
| Use <em>directory</em> as an alternate base directory to compare fi | ollowing guidelines. | |||
| les against on the destination machine. | ||||
| If file in <em>directory</em> is found and identical to the sender' | ||||
| s file, the file will not be transferred. | ||||
| </t> | ||||
| </list> | ||||
| </t> | </t> | |||
| </section> | <section> | |||
| </section> | <name>Guidance for Repository Operators</name> | |||
| <section title="Presence of the CMS signing-time attribute in public repositor | ||||
| ies"> | ||||
| <t> | ||||
| Analysing the <xref target="rpkiviews"/> archives containing millions of R | ||||
| PKI Signed Objects discovered via the five Regional Internet Registry (RIR) Trus | ||||
| t Anchors (TAs) from June 6th, 2022 until January 29th, 2024, each Signed Object | ||||
| contained a CMS signing-time attribute. | ||||
| </t> | ||||
| <t> | ||||
| The above means that all of the commonly-used TAs and their subordinate Ce | ||||
| rtification Authorities (CAs) produce Signed Objects that contain a CMS signing- | ||||
| time attribute. | ||||
| This means that making the CMS signing-time attribute mandatory would not | ||||
| cause any existing commonly-used TA or CA to become non-compliant. | ||||
| </t> | ||||
| <t> | ||||
| As of January 29th, 2024, for 83.8% of Signed Objects the CMS signing-time | ||||
| timestamp matches the file's mod-time observed via rsync. | ||||
| This means that it is already the case that RPs would see a significant re | ||||
| duction in the amount of processing required in rsync if they adopted the strate | ||||
| gy outlined in <xref target="rpguidance"/>. | ||||
| </t> | ||||
| <t> | ||||
| In the above-mentioned period of time, no Signed Objects were discovered w | ||||
| ith a CMS binary-signing-time <xref target="RFC6019"/> attribute in the specifie | ||||
| d repositories. | ||||
| Therefore, disallowing the use of the CMS binary-signing-time attribute wo | ||||
| uld not cause any existing commonly-used TA or CA to become non-compliant. | ||||
| </t> | ||||
| </section> | ||||
| <section title="Update to RFC 6488"> | ||||
| <t> | ||||
| This section updates <xref target="RFC6488"/> to make the CMS signing-time | ||||
| attribute mandatory and to disallow the presence of the CMS binary-signing-time | ||||
| attribute. | ||||
| </t> | ||||
| <t> | ||||
| In section 2.1.6.4, the paragraph starting with "The signedAttrs element M | ||||
| UST be present and ..." and ending in "Other signed attributes MUST NOT be inclu | ||||
| ded." is replaced with the following text: | ||||
| </t> | ||||
| <t> | ||||
| <list style="empty"> | ||||
| <t> | <t> | |||
| The signedAttrs element MUST be present and MUST include the content-t | When serializing RPKI Signed Objects to a filesystem hierarchy for publi | |||
| ype, message-digest, and signing-time attributes <xref target="RFC5652"/>. | cation via rsync, the mod-time of the file containing the Signed Object <bcp14>S | |||
| Other signed attributes MUST NOT be included. | HOULD</bcp14> be set to the value of the CMS signing-time attribute contained wi | |||
| thin the Signed Object. | ||||
| </t> | </t> | |||
| </list> | </section> | |||
| </t> | <section anchor="rpguidance"> | |||
| <t> | <name>Guidance for Relying Parties</name> | |||
| In section 2.1.6.4.3, the first sentence "The signing-time attribute MAY b | ||||
| e present." is replaced with the following text: | ||||
| </t> | ||||
| <t> | ||||
| <list style="empty"> | ||||
| <t> | <t> | |||
| The signing-time attribute MUST be present. | When serializing RPKI Signed Objects retrieved via RRDP to a filesystem | |||
| hierarchy, the mod-time of the file containing the Signed Object <bcp14>SHOULD</ | ||||
| bcp14> be set to the value of the CMS signing-time attribute contained within th | ||||
| e Signed Object. | ||||
| </t> | ||||
| <t> | ||||
| If an RP uses RRDP to synthesize a filesystem hierarchy for the reposito | ||||
| ry, then synchronizing to the corresponding directory directly is an option. | ||||
| Alternatively, the RP can synchronize to a new (empty) directory using t | ||||
| he <tt>--compare-dest=DIR</tt> rsync feature, in order to avoid retrieving files | ||||
| that are already available by way of the synthesized filesystem hierarchy stemm | ||||
| ing from previous RRDP fetches. | ||||
| The <tt>DIR</tt> component is to be substituted with the name of the dir | ||||
| ectory containing previously fetched and validated RPKI data (in its original DE | ||||
| R-encoded form, to ensure the file size parameter matches). | ||||
| </t> | </t> | |||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| In section 2.1.6.4.3, the sentence "Note that the presence or absence of t | ||||
| he signing-time attribute MUST NOT affect the validity of the signed object (as | ||||
| specified in Section 3)." is removed. | ||||
| </t> | ||||
| <t> | ||||
| Section 2.1.6.4.4 is removed in its entirety. | ||||
| </t> | ||||
| <t> | ||||
| In section 3, the paragraph starting with "The signedAttrs field in the Si | ||||
| gnerInfo object is present ..." (1.f) is replaced with the following text: | ||||
| </t> | ||||
| <t> | ||||
| <list style="empty"> | ||||
| <t> | <t> | |||
| The signedAttrs field in the SignerInfo object is present and contains the content-type attribute (OID 1.2.840.113549.1.9.3), the message-digest attrib ute (OID 1.2.840.113549.1.9.4), and the signing-time attribute (1.2.840.113549.1 .9.5). | From the <xref target="rsync"/> man page for <tt>--compare-dest=DIR</tt> : | |||
| </t> | </t> | |||
| </list> | <!-- DNE --> | |||
| </t> | <blockquote> | |||
| <t> | ||||
| <t> | This option instructs rsync to use <tt>DIR</tt> on the destination m | |||
| In section 3, the paragraph starting with "The signedAttrs field in the Si | achine as an additional hierarchy to compare destination files against doing tra | |||
| gnerInfo object does not ..." (1.g) is replaced with the following text: | nsfers (if the files are missing in the destination directory). | |||
| </t> | If a file is found in <tt>DIR</tt> that is identical to the sender's | |||
| <t> | file, the file will NOT be transferred to the destination directory. | |||
| <list style="empty"> | This is useful for creating a sparse backup of just files that have | |||
| changed from an earlier backup. | ||||
| </t> | ||||
| </blockquote> | ||||
| <!-- End of DNE --> | ||||
| <t> | <t> | |||
| The signedAttrs field in the SignerInfo object does not contain any att ributes other than the following three: the content-type attribute (OID 1.2.840. 113549.1.9.3), the message-digest attribute (OID 1.2.840.113549.1.9.4), and the signing-time attribute (OID 1.2.840.113549.1.9.5). | From the <xref target="openrsync"/> man page for <tt>--compare-dest=dire ctory</tt>: | |||
| </t> | </t> | |||
| </list> | <!-- DNE --> | |||
| </t> | <blockquote> | |||
| <t> | ||||
| <t> | Use <tt>directory</tt> as an alternate base directory to compare fil | |||
| In section 9 ("Informative References"), <xref target="RFC6019"/> is remov | es against on the destination machine. | |||
| ed from the list. | If file in <tt>directory</tt> is found and identical to the sender's | |||
| </t> | file, the file will not be transferred. | |||
| </section> | </t> | |||
| </blockquote> | ||||
| <!-- End of DNE --> | ||||
| </section> | ||||
| </section> | ||||
| <section> | ||||
| <name>Presence of the CMS Signing-Time Attribute in Public Repositories</n | ||||
| ame> | ||||
| <t> | ||||
| Analyzing the <xref target="rpkiviews"/> archives containing millions of R | ||||
| PKI Signed Objects discovered via the five Regional Internet Registry (RIR) Trus | ||||
| t Anchors (TAs) from 6 June 2022 to 29 January 2024, each Signed Object containe | ||||
| d a CMS signing-time attribute. | ||||
| </t> | ||||
| <t> | ||||
| The above means that all of the commonly used TAs and their subordinate Ce | ||||
| rtification Authorities (CAs) produce Signed Objects that contain a CMS signing- | ||||
| time attribute. | ||||
| This means that making the CMS signing-time attribute mandatory would not | ||||
| cause any existing commonly used TA or CA to become non-compliant. | ||||
| </t> | ||||
| <t> | ||||
| As of 29 January 2024, for 83.8% of Signed Objects, the CMS signing-time t | ||||
| imestamp matches the file's mod-time observed via rsync. | ||||
| This means that it is already the case that RPs would see a significant re | ||||
| duction in the amount of processing required in rsync if they adopted the strate | ||||
| gy outlined in <xref target="rpguidance"/>. | ||||
| </t> | ||||
| <t> | ||||
| In the above-mentioned period of time, no Signed Objects were discovered w | ||||
| ith a CMS binary-signing-time <xref target="RFC6019"/> attribute in the specifie | ||||
| d repositories. | ||||
| Therefore, disallowing the use of the CMS binary-signing-time attribute wo | ||||
| uld not cause any existing commonly used TA or CA to become non-compliant. | ||||
| </t> | ||||
| </section> | ||||
| <section> | ||||
| <name>Updates to RFC 6488</name> | ||||
| <t> | ||||
| This section updates <xref target="RFC6488"/> to make the CMS signing-time | ||||
| attribute mandatory and to disallow the presence of the CMS binary-signing-time | ||||
| attribute. | ||||
| </t> | ||||
| <ul spacing="normal"> | ||||
| <li> | ||||
| <t> | ||||
| In Section <xref target="RFC6488" section="2.1.6.4" sectionFormat="bare"/> | ||||
| , this paragraph is replaced as follows.</t> | ||||
| <t>OLD</t> | ||||
| <blockquote> | ||||
| <t> | ||||
| The signedAttrs element MUST be present and MUST include the content- | ||||
| type and message-digest attributes <xref target="RFC5652"/>. The signer <bc | ||||
| p14>MAY</bcp14> also | ||||
| include the signing-time attribute <xref target="RFC5652"/>, the binary-sign | ||||
| ing-time | ||||
| attribute <xref target="RFC6019"/>, or both attributes. Other signed attrib | ||||
| utes | ||||
| <bcp14>MUST NOT</bcp14> be included. | ||||
| </t> | ||||
| </blockquote> | ||||
| <section title="Security Considerations"> | <t>NEW</t> | |||
| <t> | <blockquote> | |||
| <t> | ||||
| The signedAttrs element <bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp1 | ||||
| 4> include the content-type, message-digest, and signing-time attributes <xref t | ||||
| arget="RFC5652"/>. | ||||
| Other signed attributes <bcp14>MUST NOT</bcp14> be included. | ||||
| </t> | ||||
| </blockquote> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| In Section <xref target="RFC6488" section="2.1.6.4.3" sectionFormat="bare"/>, th | ||||
| e first sentence is replaced as follows.</t> | ||||
| <t>OLD</t> | ||||
| <blockquote> | ||||
| <t> | ||||
| The signing-time attribute <bcp14>MAY</bcp14> be present. | ||||
| </t> | ||||
| </blockquote> | ||||
| <t>NEW</t> | ||||
| <blockquote> | ||||
| <t> | ||||
| The signing-time attribute <bcp14>MUST</bcp14> be present. | ||||
| </t> | ||||
| </blockquote> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| In Section <xref target="RFC6488" section="2.1.6.4.3" sectionFormat="bare"/>, | ||||
| the sentence "Note that the presence or absence of the signing-time attribute <b | ||||
| cp14>MUST NOT</bcp14> affect the validity of the signed object (as specified in | ||||
| Section 3)." is removed. | ||||
| </t> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| Section <xref target="RFC6488" section="2.1.6.4.4" sectionFormat="bare"/> | ||||
| is removed in its entirety. | ||||
| </t> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| In Section <xref target="RFC6488" section="3" sectionFormat="bare"/>, item | ||||
| 1.f is replaced as follows. | ||||
| </t> | ||||
| <t>OLD</t> | ||||
| <blockquote> | ||||
| <ol type="a" start="6"> | ||||
| <li> | ||||
| The signedAttrs field in the SignerInfo object is present and | ||||
| contains both the content-type attribute (OID | ||||
| 1.2.840.113549.1.9.3) and the message-digest attribute (OID | ||||
| 1.2.840.113549.1.9.4). | ||||
| </li> | ||||
| </ol> | ||||
| </blockquote> | ||||
| <t>NEW</t> | ||||
| <blockquote> | ||||
| <ol type="a" start="6"> | ||||
| <li> | ||||
| The signedAttrs field in the SignerInfo object is present and contain | ||||
| s the content-type attribute (OID 1.2.840.113549.1.9.3), the message-digest attr | ||||
| ibute (OID 1.2.840.113549.1.9.4), and the signing-time attribute (1.2.840.113549 | ||||
| .1.9.5). | ||||
| </li> | ||||
| </ol> | ||||
| </blockquote> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| In Section <xref target="RFC6488" section="3" sectionFormat="bare"/>, item | ||||
| 1.g is replaced as follows.</t> | ||||
| <t>OLD</t> | ||||
| <blockquote> | ||||
| <ol type="a" start="7"> | ||||
| <li>The signedAttrs field in the SignerInfo object does not | ||||
| contain any attributes other than the following four: the | ||||
| content-type attribute (OID 1.2.840.113549.1.9.3), the | ||||
| message-digest attribute (OID 1.2.840.113549.1.9.4), the | ||||
| signing-time attribute (OID 1.2.840.113549.1.9.5), and the | ||||
| binary-signing-time attribute (OID 1.2.840.113549.1.9.16.2.46). Note | ||||
| that the signing-time and | ||||
| binary-signing-time attributes MAY be present, but they are | ||||
| not required. | ||||
| </li> | ||||
| </ol> | ||||
| </blockquote> | ||||
| <t>NEW</t> | ||||
| <blockquote> | ||||
| <ol type="a" start="7"> | ||||
| <li> | ||||
| The signedAttrs field in the SignerInfo object does not contain any att | ||||
| ributes other than the following three: the content-type attribute (OID 1.2.840. | ||||
| 113549.1.9.3), the message-digest attribute (OID 1.2.840.113549.1.9.4), and the | ||||
| signing-time attribute (OID 1.2.840.113549.1.9.5). | ||||
| </li> | ||||
| </ol> | ||||
| </blockquote> | ||||
| </li> | ||||
| <li> | ||||
| <t> | ||||
| In Section <xref target="RFC6488" section="9" sectionFormat="bare">Informa | ||||
| tive References</xref>, <xref target="RFC6019"/> is removed from the list. | ||||
| </t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| <section> | ||||
| <name>Security Considerations</name> | ||||
| <t> | ||||
| No requirement is imposed concerning the correctness of the signing time a ttribute. | No requirement is imposed concerning the correctness of the signing time a ttribute. | |||
| It does not provide reliable information on the time the signature was pro duced and it bears no relevance for seamless switchover between RRDP and rsync. | It does not provide reliable information on the time the signature was pro duced and it bears no relevance for seamless switchover between RRDP and rsync. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| While the Security Considerations in <xref target="RFC6019"/> mandate that | Although the Security Considerations in <xref target="RFC6019"/> mandate that | |||
| the signing-time and binary-signing-time attributes, if both present, MUST prov | the | |||
| ide the same date and time; a potential for ambiguity is removed by restricting | signing-time and binary-signing-time attributes (if both present) <bcp14>MUST | |||
| the RPKI Signed Object profile to have only one field to store the purported sig | </bcp14> | |||
| ning time. | provide the same date and time, there is still a chance that an object will | |||
| </t> | have values for these attributes that do not represent the same date and | |||
| </section> | time. Restricting the RPKI Signed Object profile to a single field for | |||
| storing the signing time removes any potential for ambiguity. | ||||
| <section title="IANA Considerations"> | </t> | |||
| <t> | </section> | |||
| <section> | ||||
| <name>IANA Considerations</name> | ||||
| <t> | ||||
| This document has no IANA actions. | This document has no IANA actions. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </middle> | ||||
| <section title="Acknowledgements"> | <back> | |||
| <t> | <displayreference target="I-D.timbru-sidrops-publication-server-bcp" to="RPK | |||
| The authors would like to thank | I-PUB-SERV"/> | |||
| <contact fullname="Ties de Kock"/>, | <displayreference target="I-D.ietf-sidrops-prefer-rrdp" to="RPKI-REP-REQS"/> | |||
| <contact fullname="Niels Bakker"/>, | <references> | |||
| <contact fullname="Mikael Abrahamsson"/>, | <name>References</name> | |||
| <contact fullname="Russ Housley"/>, | <references> | |||
| <contact fullname="Zaheduzzaman Sarker"/>, | <name>Normative References</name> | |||
| <contact fullname="Éric Vyncke"/>, | ||||
| <contact fullname="Mahesh Jethanandani"/>, | ||||
| and | ||||
| <contact fullname="Roman Danyliw"/>, | ||||
| for their helpful review of this document. | ||||
| </t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <references title="Normative References"> | ||||
| <?rfc include="reference.RFC.2119.xml"?> | ||||
| <?rfc include="reference.RFC.8174.xml"?> | ||||
| <?rfc include="reference.RFC.8182.xml"?> | ||||
| <?rfc include="reference.RFC.5652.xml"?> | ||||
| <?rfc include="reference.RFC.6268.xml"?> | ||||
| <?rfc include="reference.RFC.6480.xml"?> | ||||
| <?rfc include="reference.RFC.6481.xml"?> | ||||
| <?rfc include="reference.RFC.6488.xml"?> | ||||
| <reference anchor="rsync" target="https://rsync.samba.org/"> | ||||
| <front> | ||||
| <title>rsync</title> | ||||
| <author fullname="Andrew Tridgell"/> | ||||
| <author fullname="Paul Mackerras"/> | ||||
| <author fullname="Wayne Davison"/> | ||||
| <date year="2022" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="openrsync" target="https://www.openrsync.org/"> | ||||
| <front> | ||||
| <title>openrsync</title> | ||||
| <author fullname="Claudio Jeker"/> | ||||
| <author fullname="Florian Obser"/> | ||||
| <author fullname="Kristaps Dzonsons"/> | ||||
| <date year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references title="Informative References"> | ||||
| <?rfc include="reference.RFC.6019.xml"?> | ||||
| <?rfc include="reference.RFC.9286.xml"?> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.timb | ||||
| ru-sidrops-publication-server-bcp.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.ietf | ||||
| -sidrops-prefer-rrdp.xml"/> | ||||
| <reference anchor="rpkitouch" target="https://github.com/job/rpkitouch"> | ||||
| <front> | ||||
| <title>rpkitouch</title> | ||||
| <author fullname="Job Snijders"> | ||||
| <organization>Fastly</organization> | ||||
| </author> | ||||
| <date month="June" year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="rsyncit" target="https://github.com/RIPE-NCC/rsyncit/"> | ||||
| <front> | ||||
| <title>rsyncit</title> | ||||
| <author> | ||||
| <organization>RIPE NCC</organization> | ||||
| </author> | ||||
| <date month="November" year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="apnicrepository" target="https://rpki.apnic.net/"> | ||||
| <front> | ||||
| <title>APNIC Repository</title> | ||||
| <author> | ||||
| <organization>APNIC</organization> | ||||
| </author> | ||||
| <date year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="rpki-rrdp-tools-py" target="https://github.com/ties/rpki- | ||||
| rrdp-tools-py/"> | ||||
| <front> | ||||
| <title>rpki-rrdp-tools-py</title> | ||||
| <author fullname="Ties de Kock"/> | ||||
| <date month="November" year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="krill-sync" target="https://github.com/NLnetLabs/krill-sy | ||||
| nc/commit/1df59eac3112384e11b44c2da3010f63925ec50e"> | ||||
| <front> | ||||
| <title>krill-sync - 0.3.0 development branch</title> | ||||
| <author> | ||||
| <organization>NLNet Labs</organization> | ||||
| </author> | ||||
| <date month="December" year="2023"/> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="rpkiviews" target="http://www.rpkiviews.org/"> | ||||
| <front> | ||||
| <title>rpkiviews</title> | ||||
| <author fullname="Job Snijders"/> | ||||
| <date month="June" year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="rpki-client" target="https://www.rpki-client.org/"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
| <front> | 119.xml"/> | |||
| <title>rpki-client</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <author fullname="Claudio Jeker"/> | 174.xml"/> | |||
| <author fullname="Job Snijders"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
| <author fullname="Kristaps Dzonsons"/> | 182.xml"/> | |||
| <author fullname="Theo Buehler"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
| <date month="June" year="2023" /> | 652.xml"/> | |||
| </front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| </reference> | 268.xml"/> | |||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 480.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 481.xml"/> | ||||
| <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
| 488.xml"/> | ||||
| <reference anchor="PAM23" target="https://www.iijlab.net/en/members/romain/p | <reference anchor="rsync" target="https://rsync.samba.org/"> | |||
| df/romain_pam23.pdf"> | <front> | |||
| <front> | <title>rsync</title> | |||
| <title>RPKI Time-of-Flight: Tracking Delays in the Management, Control, | <author /> | |||
| and Data Planes</title> | <date year="2024"/> | |||
| <author fullname="Romain Fontugne"/> | </front> | |||
| <author fullname="Amreesh Phokeer"/> | </reference> | |||
| <author fullname="Cristel Pelsser"/> | ||||
| <author fullname="Kevin Vermeulen"/> | ||||
| <author fullname="Randy Bush"/> | ||||
| <date month="February" year="2023" /> | ||||
| </front> | ||||
| </reference> | ||||
| <reference anchor="ls" target="https://pubs.opengroup.org/onlinepubs/9699919 | <reference anchor="openrsync" target="https://www.openrsync.org/"> | |||
| 799/utilities/ls.html"> | <front> | |||
| <front> | <title>openrsync</title> | |||
| <title>ls - The Open Group Base Specifications Issue 7</title> | <author /> | |||
| <author> | <date year="2023"/> | |||
| <organization>IEEE and The Open Group</organization> | </front> | |||
| </author> | </reference> | |||
| <date year="2018"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | </references> | |||
| <references> | ||||
| <name>Informative References</name> | ||||
| <section removeInRFC="true" title="Considerations and Alternative Approaches"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
| <t> | 019.xml"/> | |||
| A slightly different approach that has been suggested is to normalize file | ||||
| mod-times based on the Signed Object's embedded End-Entity (EE) X.509 notBefore | ||||
| timestamp value. | ||||
| A downside of this approach is that objects from CAs not using one-time us | ||||
| e EE certificates, per section 5.1.1 of <xref target="RFC9286" /> would result i | ||||
| n multiple objects signed at different points in time with the same mod-times. | ||||
| </t> | ||||
| <t> | ||||
| Additionally, CAs might backdate the notBefore timestamp to increase the v | ||||
| alidity window of the Signed Object, which in turn decreases insight for RPKI op | ||||
| erators as to when exactly the Signed Object purportedly came into existence. | ||||
| Along similar lines, the notBefore timestamp may be set in the future for | ||||
| contractual reasons. | ||||
| Setting the mod-time of a file to a future date may be unintuitive for use | ||||
| rs, and some programs (e.g. GNU make) will warn on encountering files with such | ||||
| mod-times. | ||||
| </t> | ||||
| <t> | ||||
| There is also an increased chance of two distinct objects published to the | ||||
| same path having the same mod-time and filesize under this approach, due to CAs | ||||
| setting the notBefore timestamp to some stable value for a given object and rei | ||||
| ssuance often not changing the file size (e.g. where a prefix or a max-length va | ||||
| lue is changed in a ROA). | ||||
| In such a situation, if the receiver has the first copy of a file, rsync r | ||||
| etrieval will skip the second copy of the file, and the synchronization operatio | ||||
| n for the associated repository will result in a "failed fetch", per section 6.6 | ||||
| of <xref target="RFC9286" />, due to an inconsistency between the file's hash a | ||||
| nd the hash listed in the associated manifest. | ||||
| That in turn necessitates further retrieval operations on the part of the | ||||
| receiver. | ||||
| The chance of two distinct objects being issued with the same mod-time and | ||||
| filesize when CMS signing-time is used to set the mod-time is much smaller, sin | ||||
| ce it requires that those distinct objects be issued in very close succession. | ||||
| </t> | ||||
| <t> | ||||
| Another downside of using notBefore is that Repository operators would nee | ||||
| d to deserialize both the CMS envelope and the X.509 EE certificate contained th | ||||
| erein to extract a timestamp, instead of merely parsing the CMS envelope. | ||||
| </t> | ||||
| <t> | ||||
| Ensuring the mod-time is set to the CMS signing-time gives RPKI operators | ||||
| a headstart when using tools like <xref target="ls"/>, in the sense that the mod | ||||
| -time aligns with the purported time of object issuance. | ||||
| </t> | ||||
| <t> | ||||
| The CMS signing-time attribute has proven useful in researching and tracki | ||||
| ng delays in various layers of the RPKI <xref target="PAM23"/>. | ||||
| Mandating the CMS signing-time to be present might aid future researchers | ||||
| studying the RPKI ecosystem. | ||||
| </t> | ||||
| <t> | ||||
| The <em>--checksum</em> option to rsync disables the mod-time and filesize | ||||
| comparison check in favour of a check based on a whole-file checksum. | ||||
| This check is slower than the mod-time and filesize check, but (in instanc | ||||
| es where the file content has not changed) faster than the general-purpose rsync | ||||
| synchronization algorithm. | ||||
| Since ensuring consistency between the mod-time and filesize on both sides | ||||
| of the transaction is straightforward, there is no particular reason to pursue | ||||
| an approach based on rsync's <em>--checksum</em> feature. | ||||
| </t> | ||||
| </section> | ||||
| <section removeInRFC="true" title="Implementation status"> | <!-- [I-D.timbru-sidrops-publication-server-bcp] IESG state: I-D Exists as of 04 | |||
| <t> | /29/24--> | |||
| This section records the status of known implementations of the protocol d | <xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | |||
| efined by this specification at the time of posting of this Internet-Draft, and | timbru-sidrops-publication-server-bcp.xml"/> | |||
| is based on a proposal described in RFC 7942. | ||||
| The description of implementations in this section is intended to assist t | ||||
| he IETF in its decision processes in progressing drafts to RFCs. | ||||
| Please note that the listing of any individual implementation here does no | ||||
| t imply endorsement by the IETF. | ||||
| Furthermore, no effort has been spent to verify the information presented | ||||
| here that was supplied by IETF contributors. | ||||
| This is not intended as, and must not be construed to be, a catalog of ava | ||||
| ilable implementations or their features. | ||||
| Readers are advised to note that other implementations may exist. | ||||
| </t> | ||||
| <t> | <!-- [I-D.ietf-sidrops-prefer-rrdp] Long form in order to fix initials of G. Mic | |||
| According to RFC 7942, "this will allow reviewers and working groups to as | haelson--> | |||
| sign due consideration to documents that have the benefit of running code, which | ||||
| may serve as evidence of valuable experimentation and feedback that have made t | ||||
| he implemented protocols more mature. | ||||
| It is up to the individual working groups to use this information as they | ||||
| see fit". | ||||
| </t> | ||||
| <t> | <reference anchor="I-D.ietf-sidrops-prefer-rrdp" target="https://datatracker.iet | |||
| <list style="symbols"> | f.org/doc/html/draft-ietf-sidrops-prefer-rrdp-02"> | |||
| <t><xref target="rpkitouch"/> - a timestamp setter utility for both rsyn | <front> | |||
| c servers and RRDP clients by Job Snijders in C.</t> | <title>Resource Public Key Infrastructure (RPKI) Repository Requirements</ti | |||
| <t><xref target="rpki-client"/> - a Relying Party implementation by Open | tle> | |||
| BSD in C, a client side implementation.</t> | <author fullname="Tim Bruijnzeels" initials="T." surname="Bruijnzeels"> | |||
| <t><xref target="rsyncit"/> - a RRDP-to-rsync sync tool by RIPE NCC in J | <organization>NLnet Labs</organization> | |||
| ava, run on the server side.</t> | </author> | |||
| <t><xref target="apnicrepository"/> - the public APNIC RPKI repository - | <author fullname="Randy Bush" initials="R." surname="Bush"> | |||
| the APNIC rsync server normalizes timestamps.</t> | <organization>Internet Initiative Japan & Arrcus, Inc.</organization> | |||
| <t><xref target="rpki-rrdp-tools-py"/> - a number of client-side RRDP ut | </author> | |||
| ilities by Ties de Kock in Python.</t> | <author fullname="George G. Michaelson" initials="G." surname="Michaelson"> | |||
| <t><xref target="krill-sync"/> - a RRDP-to-rsync sync tool by NLNet Labs | <organization>APNIC</organization> | |||
| in Rust, run on the server side.</t> | </author> | |||
| </list> | <date day="23" month="December" year="2022"/> | |||
| </t> | </front> | |||
| <seriesInfo name="Internet-Draft" value="draft-ietf-sidrops-prefer-rrdp-02"/> | ||||
| </reference> | ||||
| </section> | <reference anchor="rpkiviews" target="https://www.rpkiviews.org/"> | |||
| <front> | ||||
| <title>rpkiviews</title> | ||||
| <author /> | ||||
| </front> | ||||
| </reference> | ||||
| </back> | </references> | |||
| </references> | ||||
| <section numbered="false"> | ||||
| <name>Acknowledgements</name> | ||||
| <t> | ||||
| The authors would like to thank <contact fullname="Ties de Kock"/>, | ||||
| <contact fullname="Niels Bakker"/>, <contact fullname="Mikael | ||||
| Abrahamsson"/>, <contact fullname="Russ Housley"/>, <contact | ||||
| fullname="Zaheduzzaman Sarker"/>, <contact fullname="Éric Vyncke"/>, | ||||
| <contact fullname="Mahesh Jethanandani"/>, and <contact fullname="Roman | ||||
| Danyliw"/>, for their helpful review of this document. </t> </section> | ||||
| </back> | ||||
| </rfc> | </rfc> | |||
| End of changes. 43 change blocks. | ||||
| 553 lines changed or deleted | 438 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||