rfc9289.original.xml | rfc9289.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | ||||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?> | ||||
<rfc | <!DOCTYPE rfc [ | |||
category="std" | <!ENTITY nbsp " "> | |||
docName="draft-ietf-nfsv4-rpc-tls-11" | <!ENTITY zwsp "​"> | |||
ipr="trust200902" | <!ENTITY nbhy "‑"> | |||
obsoletes="" | <!ENTITY wj "⁠"> | |||
scripts="Common,Latin" | ]> | |||
sortRefs="true" | ||||
submissionType="IETF" | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" consensus="true" | |||
symRefs="true" | category="std" ipr="trust200902" docName="draft-ietf-nfsv4-rpc-tls-11" numb | |||
tocDepth="3" | er="9289" | |||
tocInclude="true" | obsoletes="" updates="5531" submissionType="IETF" xml:lang="en" | |||
updates="5531" | tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" | |||
version="3" | version="3"> | |||
xml:lang="en"> | ||||
<front> | <front> | |||
<title abbrev="RPC-Over-TLS"> | <title abbrev="RPC-With-TLS"> | |||
Towards Remote Procedure Call Encryption By Default | Towards Remote Procedure Call Encryption by Default | |||
</title> | </title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-nfsv4-rpc-tls-11"/> | <seriesInfo name="RFC" value="9289"/> | |||
<author initials="T." surname="Myklebust" fullname="Trond Myklebust"> | <author initials="T." surname="Myklebust" fullname="Trond Myklebust"> | |||
<organization abbrev="Hammerspace" showOnFrontPage="true"> | <organization abbrev="Hammerspace" showOnFrontPage="true"> | |||
Hammerspace Inc | Hammerspace Inc. | |||
</organization> | </organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>4300 El Camino Real Ste 105</street> | <street>4300 El Camino Real, Suite 105</street> | |||
<city>Los Altos</city> | <city>Los Altos</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>94022</code> | <code>94022</code> | |||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>trond.myklebust@hammerspace.com</email> | <email>trond.myklebust@hammerspace.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="C." surname="Lever" fullname="Charles Lever" role="editor"> | <author initials="C." surname="Lever" fullname="Charles Lever" role="editor"> | |||
skipping to change at line 60 ¶ | skipping to change at line 56 ¶ | |||
<street/> | <street/> | |||
<city/> | <city/> | |||
<region/> | <region/> | |||
<code/> | <code/> | |||
<country>United States of America</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<email>chuck.lever@oracle.com</email> | <email>chuck.lever@oracle.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date year="2022" month="September" /> | |||
<area>Transport</area> | <area>Transport</area> | |||
<workgroup>Network File System Version 4</workgroup> | <workgroup>Network File System Version 4</workgroup> | |||
<keyword>network file system</keyword> | ||||
<keyword>remote procedure call</keyword> | ||||
<keyword>transport layer security</keyword> | ||||
<keyword>X.509</keyword> | ||||
<abstract> | <abstract> | |||
<t> | <t> | |||
This document describes a mechanism that, | This document describes a mechanism that, through the use of opportunistic | |||
through the use of opportunistic Transport Layer Security (TLS), | Transport Layer Security (TLS), enables encryption of Remote Procedure Call | |||
enables encryption of Remote Procedure Call (RPC) transactions | (RPC) transactions while they are in transit. The proposed mechanism | |||
while they are in-transit. | interoperates with Open Network Computing (ONC) RPC implementations that do | |||
The proposed mechanism interoperates with ONC RPC implementations | not support it. This document updates RFC 5531. | |||
that do not support it. | ||||
This document updates RFC 5531. | ||||
</t> | </t> | |||
</abstract> | </abstract> | |||
<note removeInRFC="true"> | ||||
<t> | ||||
Discussion of this draft takes place | ||||
on the NFSv4 working group mailing list (nfsv4@ietf.org), | ||||
which is archived at | ||||
<eref target="https://mailarchive.ietf.org/arch/browse/nfsv4/"/>. | ||||
Working Group information can be found at | ||||
<eref target="https://datatracker.ietf.org/wg/nfsv4/about/"/>. | ||||
</t> | ||||
<t> | ||||
The source for this draft is maintained in GitHub. | ||||
Suggested changes should be submitted as pull requests at | ||||
<eref target="https://github.com/chucklever/i-d-rpc-tls"/>. | ||||
Instructions are on that page as well. | ||||
</t> | ||||
</note> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section | <section | |||
anchor="section_8F035331-8EB8-4FBC-973A-673FBA5FE952" | anchor="section_8F035331-8EB8-4FBC-973A-673FBA5FE952" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t> | <t> | |||
In 2014 the IETF published | In 2014 the IETF published a document entitled "Pervasive Monitoring Is an | |||
a document entitled "Pervasive Monitoring Is an Attack" | Attack" <xref target="RFC7258" format="default" />, which | |||
<xref target="RFC7258" format="default" sectionFormat="of"/>, | recognized that unauthorized observation of network traffic had become | |||
which recognized that unauthorized observation | widespread and was a subversive threat to all who make use of the Internet at | |||
of network traffic had become widespread | large. It strongly recommended that newly defined Internet protocols should | |||
and | make a genuine effort to mitigate monitoring attacks. Typically, this | |||
was a subversive threat | mitigation includes encrypting data in transit. | |||
to all who make use of the Internet at large. | ||||
It strongly recommended that newly defined Internet protocols | ||||
should make a genuine effort to mitigate monitoring attacks. | ||||
Typically this mitigation includes encrypting data in transit. | ||||
</t> | </t> | |||
<t> | <t> | |||
The Remote Procedure Call version 2 protocol | The Remote Procedure Call version 2 protocol has been a Proposed Standard for | |||
has been a Proposed Standard for three decades | three decades (see | |||
(see | <xref target="RFC5531" format="default" /> | |||
<xref target="RFC5531" format="default" sectionFormat="of"/> | and its antecedents). Over twenty years ago, Eisler et al. first introduced | |||
and its antecedents). | RPCSEC_GSS as an in-transit encryption mechanism for RPC <xref | |||
Over twenty years ago, | target="RFC2203" format="default" />. However, experience | |||
Eisler et al. first introduced RPCSEC GSS | has shown that RPCSEC_GSS with in-transit encryption can be challenging to use | |||
as an in-transit encryption mechanism for RPC | in practice due to the following: | |||
<xref target="RFC2203" format="default" sectionFormat="of"/>. | ||||
However, experience has shown | ||||
that RPCSEC GSS with in-transit encryption | ||||
can be challenging to use in practice: | ||||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | ||||
<ul spacing="normal"> | ||||
<li> | <li> | |||
Parts of each RPC header remain in clear-text, | Parts of each RPC header remain in cleartext, | |||
constituting a loss of metadata confidentiality. | constituting a loss of metadata confidentiality. | |||
</li> | </li> | |||
<li> | <li> | |||
Offloading the GSS privacy service is not practical | Offloading the Generic Security Service (GSS) privacy service is not practical | |||
in large multi-user deployments | in large multi-user deployments | |||
since each message is encrypted using a key based | since each message is encrypted using a key based | |||
on the issuing RPC user. | on the issuing RPC user. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
However strong GSS-provided confidentiality is, | However strong GSS-provided confidentiality is, | |||
it cannot provide any security if the challenges | it cannot provide any security if the challenges | |||
of using it result in choosing not to deploy it at all. | of using it result in choosing not to deploy it at all. | |||
</t> | </t> | |||
<t> | <t> | |||
Moreover, the use of AUTH_SYS | Moreover, the use of AUTH_SYS | |||
remains common despite the adverse effects | remains common despite the adverse effects | |||
that acceptance of UIDs and GIDs | that acceptance of User Identifiers (UIDs) and Group Identifiers (GIDs) | |||
from unauthenticated clients brings with it. | from unauthenticated clients brings with it. | |||
Continued use is in part because: | Continued use is in part because: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
Per-client deployment and administrative costs | Per-client deployment and administrative costs | |||
for the only well-defined alternative to AUTH_SYS | for the only well-defined alternative to AUTH_SYS | |||
are expensive at scale. | are expensive at scale. | |||
For instance, administrators must provide keying material | For instance, administrators must provide keying material | |||
for each RPC client, including transient clients. | for each RPC client, including transient clients. | |||
</li> | </li> | |||
<li> | <li> | |||
GSS host identity management and user identity management | GSS host identity management and user identity management typically must be | |||
typically must be enforced in the same security realm. | enforced in the same security realm. However, cloud providers, for instance, | |||
However, cloud providers, for instance, might prefer | might prefer to remain authoritative for host identity but allow tenants to | |||
to remain authoritative for host identity | manage user identities within their private networks. | |||
but | ||||
allow tenants to manage user identities within their private networks. | ||||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
In view of the challenges with the | In view of the challenges with the currently available mechanisms for | |||
currently available mechanisms | authenticating and protecting the confidentiality of RPC transactions, this | |||
for | document specifies a transport-layer security mechanism that complements the | |||
authenticating | existing ones. The TLS <xref target="RFC8446" | |||
and | format="default"/> and Datagram Transport Layer Security (DTLS) | |||
protecting the confidentiality | <xref target="RFC9147" format="default" /> | |||
of RPC transactions, | protocols are well-established Internet building blocks that protect many | |||
this document specifies a transport-layer security mechanism | standard Internet protocols such as the Hypertext Transfer Protocol (HTTP) | |||
that complements the existing ones. | <xref target="RFC9110" format="default" />. | |||
The | ||||
Transport Layer Security | ||||
<xref target="RFC8446" format="default" sectionFormat="of"/> | ||||
(TLS) | ||||
and | ||||
Datagram Transport Layer Security | ||||
<xref target="I-D.ietf-tls-dtls13" format="default" sectionFormat="of"/> | ||||
(DTLS) | ||||
protocols are a well-established Internet building blocks | ||||
that protect many standard Internet protocols | ||||
such as the Hypertext Transport Protocol (HTTP) | ||||
<xref target="RFC2818" format="default" sectionFormat="of"/>. | ||||
</t> | </t> | |||
<t> | <t> | |||
Encrypting at the RPC transport layer accords several significant benefits: | Encrypting at the RPC transport layer accords several significant benefits: | |||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | <dl spacing="normal"> | |||
<dt>Encryption By Default:</dt> | <dt>Encryption by Default:</dt> | |||
<dd> | <dd> | |||
Transport encryption can be enabled | Transport encryption can be enabled | |||
without additional administrative tasks such as | without additional administrative tasks such as | |||
identifying client systems to a trust authority | identifying client systems to a trust authority | |||
and | and | |||
providing each with keying material. | providing each with keying material. | |||
</dd> | </dd> | |||
<dt>Encryption Offload:</dt> | <dt>Encryption Offload:</dt> | |||
<dd> | <dd> | |||
Hardware support for the GSS privacy service has not appeared in the marketplace . | Hardware support for the GSS privacy service has not appeared in the marketplace . | |||
skipping to change at line 237 ¶ | skipping to change at line 200 ¶ | |||
</dd> | </dd> | |||
<dt>Compatibility:</dt> | <dt>Compatibility:</dt> | |||
<dd> | <dd> | |||
The imposition of encryption at the transport layer | The imposition of encryption at the transport layer | |||
protects any upper-layer protocol that employs RPC, | protects any upper-layer protocol that employs RPC, | |||
without alteration of the upper-layer protocol. | without alteration of the upper-layer protocol. | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t> | <t> | |||
Further, | Further, | |||
<xref target="section_2AE49383-E6B2-4830-8407-995FEBF727F2" format="default" sec tionFormat="of"/> | <xref target="section_2AE49383-E6B2-4830-8407-995FEBF727F2" format="default" /> | |||
of the current document defines policies in line with | of the current document defines policies in line with | |||
<xref target="RFC7435" format="default" sectionFormat="of"/> | <xref target="RFC7435" format="default" /> | |||
which enable RPC-over-TLS to be deployed opportunistically | that enable RPC-with-TLS to be deployed opportunistically in environments that | |||
in environments that contain RPC implementations that do not support TLS. | contain RPC implementations that do not support TLS. However, specifications | |||
However, specifications for RPC-based upper-layer protocols | for RPC-based upper-layer protocols should choose to require even stricter | |||
should choose to require even stricter policies that guarantee | policies that guarantee encryption and host authentication are used for all RPC | |||
encryption | transactions to mitigate against pervasive monitoring attacks <xref | |||
and | target="RFC7258" format="default" />. Enforcing the use of | |||
host authentication | RPC-with-TLS is of particular importance for existing upper-layer protocols | |||
is used for all RPC transactions | whose security infrastructure is weak. | |||
to mitigate against pervasive monitoring attacks | ||||
<xref target="RFC7258" format="default" sectionFormat="of"/>. | ||||
Enforcing the use of RPC-over-TLS is of particular importance | ||||
for existing upper-layer protocols whose security infrastructure is weak. | ||||
</t> | </t> | |||
<t> | <t> | |||
The protocol specification in the current document assumes | The protocol specification in the current document assumes that support for | |||
that support for | ONC RPC <xref target="RFC5531" format="default"/>, TLS | |||
ONC RPC | <xref target="RFC8446" format="default" />, PKIX <xref | |||
<xref target="RFC5531" format="default" sectionFormat="of"/>, | target="RFC5280" format="default" />, DNSSEC/DNS-Based | |||
TLS | Authentication of Named Entities (DANE) <xref target="RFC6698" | |||
<xref target="RFC8446" format="default" sectionFormat="of"/>, | format="default" />, and optionally RPCSEC_GSS | |||
PKIX | <xref target="RFC2203" format="default" /> | |||
<xref target="RFC5280" format="default" sectionFormat="of"/>, | ||||
DNSSEC/DANE | ||||
<xref target="RFC6698" format="default" sectionFormat="of"/>, | ||||
and optionally | ||||
RPCSEC_GSS | ||||
<xref target="RFC2203" format="default" sectionFormat="of"/> | ||||
is available within the platform | is available within the platform | |||
where RPC-over-TLS support is to be added. | where RPC-with-TLS support is to be added. | |||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_024237C9-5504-49B4-A2D3-2D2A5EFBB967" | anchor="section_024237C9-5504-49B4-A2D3-2D2A5EFBB967" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Requirements Language</name> | <name>Requirements Language</name> | |||
<t> | <t> | |||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", | |||
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
"<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be | |||
in this document are to be interpreted | interpreted as described in BCP 14 | |||
as described in BCP 14 | <xref target="RFC2119" format="default" /> | |||
<xref target="RFC2119" format="default" sectionFormat="of"/> | <xref target="RFC8174" format="default" /> | |||
<xref target="RFC8174" format="default" sectionFormat="of"/> | ||||
when, and only when, they appear in all capitals, as shown here. | when, and only when, they appear in all capitals, as shown here. | |||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_0EB1100E-DAA8-4B2C-98AE-94258CFDCB1B" | anchor="section_0EB1100E-DAA8-4B2C-98AE-94258CFDCB1B" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Terminology</name> | <name>Terminology</name> | |||
<t> | <t> | |||
This document adopts the terminology introduced in | This document adopts the terminology introduced in | |||
<xref target="RFC6973" section="3" format="default" sectionFormat="of"/> | <xref target="RFC6973" section="3" format="default" sectionFormat="of"/> | |||
and assumes a working knowledge of | and assumes a working knowledge of | |||
the Remote Procedure Call (RPC) version 2 protocol | the RPC version 2 protocol | |||
<xref target="RFC5531" format="default" sectionFormat="of"/> | <xref target="RFC5531" format="default" /> | |||
and | and | |||
the Transport Layer Security (TLS) version 1.3 protocol | the TLS version 1.3 protocol | |||
<xref target="RFC8446" format="default" sectionFormat="of"/>. | <xref target="RFC8446" format="default" />. | |||
</t> | </t> | |||
<t> | <t> | |||
Note also that the NFS community long ago adopted the | Note also that the NFS community long ago adopted the | |||
use of the term "privacy" from documents such as | use of the term "privacy" from documents such as | |||
<xref target="RFC2203" format="default" sectionFormat="of"/>. | <xref target="RFC2203" format="default" />. | |||
In the current document, the authors use the term | In the current document, the authors use the term | |||
"privacy" only when referring specifically | "privacy" only when referring specifically | |||
to the historic GSS privacy service defined in | to the historic GSS privacy service defined in | |||
<xref target="RFC2203" format="default" sectionFormat="of"/>. | <xref target="RFC2203" format="default" />. | |||
Otherwise, the authors use the term "confidentiality", | Otherwise, the authors use the term "confidentiality", | |||
following the practices of contemporary security communities. | following the practices of contemporary security communities. | |||
</t> | </t> | |||
<t> | <t> | |||
We adhere to the convention that a "client" | We adhere to the convention that a "client" | |||
is a network host that actively initiates an association, | is a network host that actively initiates an association, | |||
and | and | |||
a "server" is a network host that passively accepts an association request. | a "server" is a network host that passively accepts an association request. | |||
</t> | </t> | |||
<t> | <t> | |||
RPC documentation historically refers to | RPC documentation historically refers to | |||
the authentication of a connecting host as "machine authentication" | the authentication of a connecting host as "machine authentication" | |||
or "host authentication". | or "host authentication". | |||
TLS documentation refers to the same as "peer authentication". | TLS documentation refers to the same as "peer authentication". | |||
In the current document there is little distinction between these terms. | In the current document, there is little distinction between these terms. | |||
</t> | </t> | |||
<t> | <t> | |||
The term "user authentication" in the current document refers specifically | The term "user authentication" in the current document refers specifically to | |||
to the RPC caller's credential, provided in the | the RPC caller's credential, provided in the "cred" and "verf" fields in each | |||
"cred" | RPC Call. | |||
and | ||||
"verf" | ||||
fields in each RPC Call. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_EC3FEED5-1DE0-454B-9AB3-CE47BA901583" | anchor="section_EC3FEED5-1DE0-454B-9AB3-CE47BA901583" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>RPC-Over-TLS in Operation</name> | <name>RPC-with-TLS in Operation</name> | |||
<section | <section | |||
anchor="section_0A03673B-14BA-4228-8A8A-F76AA318CA73" | anchor="section_0A03673B-14BA-4228-8A8A-F76AA318CA73" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Discovering Server-side TLS Support</name> | <name>Discovering Server-Side TLS Support</name> | |||
<t> | <t> | |||
The mechanism described in the current document | The mechanism described in the current document | |||
interoperates fully with RPC implementations | interoperates fully with RPC implementations | |||
that do not support RPC-over-TLS. | that do not support RPC-with-TLS. | |||
When an RPC-over-TLS-enabled peer encounters a peer that | When an RPC-with-TLS-enabled peer encounters a peer that | |||
does not support RPC-over-TLS, | does not support RPC-with-TLS, | |||
policy settings on the RPC-over-TLS-enabled peer determine | policy settings on the RPC-with-TLS-enabled peer determine | |||
whether RPC operation continues without the use of TLS, | whether RPC operation continues without the use of TLS | |||
or RPC operation is not permitted. | or is discontinued altogether. | |||
</t> | </t> | |||
<t> | <t> | |||
To achieve this interoperability, | To achieve this interoperability, | |||
we introduce a new RPC authentication flavor called AUTH_TLS. | we introduce a new RPC authentication flavor called AUTH_TLS. | |||
The AUTH_TLS authentication flavor signals that the client wants | The AUTH_TLS authentication flavor signals that the client wants | |||
to initiate TLS negotiation if the server supports it. | to initiate TLS negotiation if the server supports it. | |||
Except for the modifications described in this section, | Except for the modifications described in this section, | |||
the RPC protocol is unaware of security encapsulation | the RPC protocol is unaware of security encapsulation | |||
at the transport layer. | at the transport layer. | |||
The value of AUTH_TLS is defined in | The value of AUTH_TLS is defined in | |||
<xref target="section_2CD51855-CE40-4B8D-A220-F211C477964F" format="default" sec tionFormat="of"/>. | <xref target="section_2CD51855-CE40-4B8D-A220-F211C477964F" format="default" />. | |||
</t> | </t> | |||
<t> | <t> | |||
An RPC client begins its communication with an RPC server | An RPC client begins its communication with an RPC server | |||
by selecting a transport and destination port. | by selecting a transport and destination port. | |||
The choice of transport and port is | The choice of transport and port is | |||
typically based on the RPC program that is to be used. | typically based on the RPC program that is to be used. | |||
The RPC client might query the RPC server's RPCBIND service | The RPC client might query the RPC server's RPCBIND service | |||
to make this selection | to make this selection | |||
(The RPCBIND service is described in | (The RPCBIND service is described in | |||
<xref target="RFC1833" format="default" sectionFormat="of"/>). | <xref target="RFC1833" format="default" />). | |||
The mechanism described in the current document | The mechanism described in the current document | |||
does not support RPC transports other than TCP and UDP. | does not support RPC transports other than TCP and UDP. | |||
In all cases, an RPC server <bcp14>MUST</bcp14> listen on the same ports | In all cases, an RPC server <bcp14>MUST</bcp14> listen on the same ports | |||
for (D)TLS-protected RPC programs | for (D)TLS-protected RPC programs | |||
as the ports used when (D)TLS is not available. | as the ports used when (D)TLS is not available. | |||
</t> | </t> | |||
<t> | <t> | |||
To protect RPC traffic to a TCP port, | To protect RPC traffic to a TCP port, | |||
the RPC client opens a TCP connection to that port | the RPC client opens a TCP connection to that port | |||
and sends a NULL RPC procedure | and sends a NULL RPC procedure | |||
with an auth_flavor of AUTH_TLS on that connection. | with an auth_flavor of AUTH_TLS on that connection. | |||
To protect RPC traffic to a UDP port, | To protect RPC traffic to a UDP port, | |||
the RPC client sends a UDP datagram to that port | the RPC client sends a UDP datagram to that port | |||
containing a NULL RPC procedure with an auth_flavor of AUTH_TLS. | containing a NULL RPC procedure with an auth_flavor of AUTH_TLS. | |||
The client constructs this RPC procedure as follows: | The client constructs this RPC procedure as follows: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
The length of the opaque data constituting the credential | The length of the opaque data constituting the credential | |||
sent in the RPC Call message <bcp14>MUST</bcp14> be zero. | sent in the RPC Call message <bcp14>MUST</bcp14> be zero. | |||
</li> | </li> | |||
<li> | <li> | |||
The verifier accompanying the credential <bcp14>MUST</bcp14> be an AUTH_NONE | The verifier accompanying the credential <bcp14>MUST</bcp14> be an AUTH_NONE | |||
verifier of length zero. | verifier of length zero. | |||
</li> | </li> | |||
<li> | <li> | |||
The flavor value of the verifier in the RPC Reply message | The flavor value of the verifier in the RPC Reply message | |||
skipping to change at line 424 ¶ | skipping to change at line 374 ¶ | |||
</li> | </li> | |||
<li> | <li> | |||
The length of the verifier's body field is eight. | The length of the verifier's body field is eight. | |||
</li> | </li> | |||
<li> | <li> | |||
The bytes of the verifier's body field encode the ASCII characters | The bytes of the verifier's body field encode the ASCII characters | |||
"STARTTLS" as a fixed-length opaque. | "STARTTLS" as a fixed-length opaque. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
The RPC server signals its corresponding support for RPC-over-TLS | The RPC server signals its corresponding support for RPC-with-TLS | |||
by replying with | by replying with | |||
a reply_stat of MSG_ACCEPTED | a reply_stat of MSG_ACCEPTED | |||
and | and | |||
an AUTH_NONE verifier containing the "STARTTLS" token. | an AUTH_NONE verifier containing the "STARTTLS" token. | |||
The client <bcp14>SHOULD</bcp14> proceed with TLS session establishment, | The client <bcp14>SHOULD</bcp14> proceed with TLS session establishment, | |||
even if the Reply's accept_stat is not SUCCESS. | even if the Reply's accept_stat is not SUCCESS. | |||
If the AUTH_TLS probe was done via TCP, | If the AUTH_TLS probe was done via TCP, | |||
the RPC client <bcp14>MUST</bcp14> send the "ClientHello" message | the RPC client <bcp14>MUST</bcp14> send the "ClientHello" message | |||
on the same connection. | on the same connection. | |||
If the AUTH_TLS probe was done via UDP, | If the AUTH_TLS probe was done via UDP, | |||
skipping to change at line 475 ¶ | skipping to change at line 425 ¶ | |||
the RPC server <bcp14>MUST</bcp14> reject that RPC Call | the RPC server <bcp14>MUST</bcp14> reject that RPC Call | |||
by returning a reply_stat of MSG_DENIED | by returning a reply_stat of MSG_DENIED | |||
with a reject_stat of AUTH_ERROR | with a reject_stat of AUTH_ERROR | |||
and an auth_stat of AUTH_BADCRED. | and an auth_stat of AUTH_BADCRED. | |||
</t> | </t> | |||
<t> | <t> | |||
Once the TLS session handshake is complete, | Once the TLS session handshake is complete, | |||
the RPC client and server have established | the RPC client and server have established | |||
a secure channel for exchanging RPC transactions. | a secure channel for exchanging RPC transactions. | |||
A successful AUTH_TLS probe on one particular port/transport tuple | A successful AUTH_TLS probe on one particular port/transport tuple | |||
does not imply that RPC-over-TLS is available on that same server | does not imply that RPC-with-TLS is available on that same server | |||
using a different port/transport tuple, | using a different port/transport tuple, | |||
nor does it imply that | nor does it imply that | |||
RPC-over-TLS will be available in the future | RPC-with-TLS will be available in the future | |||
using the successfully probed port. | using the successfully probed port. | |||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_6EDEF553-C95A-47D7-ABBA-0B537FE3A959" | anchor="section_6EDEF553-C95A-47D7-ABBA-0B537FE3A959" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Authentication</name> | <name>Authentication</name> | |||
skipping to change at line 489 ¶ | skipping to change at line 439 ¶ | |||
using the successfully probed port. | using the successfully probed port. | |||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_6EDEF553-C95A-47D7-ABBA-0B537FE3A959" | anchor="section_6EDEF553-C95A-47D7-ABBA-0B537FE3A959" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Authentication</name> | <name>Authentication</name> | |||
<t> | <t> | |||
There is some overlap between the authentication | There is some overlap between the authentication | |||
capabilities of RPC and TLS. | capabilities of RPC and TLS. | |||
The goal of interoperability with implementations | The goal of interoperability with implementations | |||
that do not support TLS requires | that do not support TLS requires | |||
limiting the combinations that are allowed | limiting the combinations that are allowed | |||
and | and | |||
precisely specifying the role that each layer plays. | precisely specifying the role that each layer plays. | |||
</t> | </t> | |||
<t> | <t> | |||
Each RPC server that supports RPC-over-TLS <bcp14>MUST</bcp14> possess a unique global identity | Each RPC server that supports RPC-with-TLS <bcp14>MUST</bcp14> possess a unique global identity | |||
(e.g., a certificate that is signed by a well-known trust anchor). | (e.g., a certificate that is signed by a well-known trust anchor). | |||
Such an RPC server <bcp14>MUST</bcp14> request a TLS peer identity from each cli ent | Such an RPC server <bcp14>MUST</bcp14> request a TLS peer identity from each cli ent | |||
upon first contact. | upon first contact. | |||
There are two different modes of client deployment: | There are two different modes of client deployment: | |||
</t> | </t> | |||
<dl newline="true" spacing="normal"> | <dl newline="true" spacing="normal"> | |||
<dt>Server-only Host Authentication</dt> | <dt>Server-Only Host Authentication</dt> | |||
<dd> | <dd> | |||
In this type of deployment, | In this type of deployment, | |||
the client can authenticate the server host | the client can authenticate the server host | |||
using the presented server peer TLS identity, | using the presented server peer TLS identity, | |||
but the server cannot authenticate the client. | but the server cannot authenticate the client. | |||
In this situation, | In this situation, | |||
RPC-over-TLS clients are anonymous. | RPC-with-TLS clients are anonymous. | |||
They present no globally unique identifier to the server peer. | They present no globally unique identifier to the server peer. | |||
</dd> | </dd> | |||
<dt>Mutual Host Authentication</dt> | <dt>Mutual Host Authentication</dt> | |||
<dd> | <dd> | |||
In this type of deployment, | In this type of deployment, the client possesses an identity that is backed by | |||
the client possesses an identity that is backed by a trusted entity | a trusted entity (e.g., a pre-shared key or a certificate validated with a | |||
(e.g. a pre-shared key or a certificate validated with a certification path). | certification path). As part of the TLS handshake, both peers authenticate | |||
As part of the TLS handshake, both peers authenticate using the presented TLS id | using the presented TLS identities. If authentication of either peer fails, | |||
entities. | or if authorization based on those identities blocks access to the server, the | |||
If authentication of either peer fails, | peers <bcp14>MUST</bcp14> reject the association. Further explanation appears in | |||
or | <xref target="section_936921ED-67BB-46BF-B316-6740E07F6652"/>. | |||
if authorization based on those identities blocks access to the server, | ||||
the peers <bcp14>MUST</bcp14> reject the association. | ||||
Further explanation appears in | ||||
<xref target="section_936921ED-67BB-46BF-B316-6740E07F6652" format="default" sec | ||||
tionFormat="of"/>. | ||||
</dd> | </dd> | |||
</dl> | </dl> | |||
<t> | <t> | |||
In either of these modes, RPC user authentication is not affected | In either of these modes, RPC user authentication is not affected by the use | |||
by the use of transport layer security. | of transport layer security. When a client presents a TLS peer identity to an | |||
When a client presents a TLS peer identity to an RPC server, | RPC server, the protocol extension described in the current document provides | |||
the protocol extension described in the current document | no way for the server to know whether that identity represents one RPC user on | |||
provides no way for the server to know | that client or is shared amongst many RPC users. Therefore, a server | |||
whether that identity represents one RPC user on that client, | implementation cannot utilize the remote TLS peer identity to authenticate RPC | |||
or | users. | |||
is shared amongst many RPC users. | ||||
Therefore, a server implementation cannot utilize | ||||
the remote TLS peer identity to authenticate RPC users. | ||||
</t> | </t> | |||
<section | <section | |||
anchor="section_12D92596-F310-48C8-A4E0-B6CA038524E5" | anchor="section_12D92596-F310-48C8-A4E0-B6CA038524E5" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Using TLS with RPCSEC GSS</name> | <name>Using TLS with RPCSEC_GSS</name> | |||
<t> | <t> | |||
To use GSS, an RPC server has to possess a GSS service principal. | To use GSS, an RPC server has to possess a GSS service principal. | |||
On a TLS session, GSS mutual (peer) authentication occurs as usual, | On a TLS session, GSS mutual (peer) authentication occurs as usual, | |||
but only after a TLS session has been established for communication. | but only after a TLS session has been established for communication. | |||
Authentication of RPCSEC GSS users is unchanged by the use of TLS. | Authentication of RPCSEC_GSS users is unchanged by the use of TLS. | |||
</t> | </t> | |||
<t> | <t> | |||
RPCSEC GSS can also perform | RPCSEC_GSS can also perform per-request integrity or confidentiality | |||
per-request integrity or confidentiality protection. | protection. When operating over a TLS session, these GSS services become | |||
When operating over a TLS session, | largely redundant. An RPC implementation capable of concurrently using TLS | |||
these GSS services become largely redundant. | and RPCSEC_GSS <bcp14>MUST</bcp14> use Generic Security Service Application | |||
An RPC implementation capable of concurrently using TLS and RPCSEC GSS | Program Interface (GSS-API) channel binding, as defined in <xref | |||
<bcp14>MUST</bcp14> | target="RFC5056" format="default" />, to determine when an | |||
use GSS-API channel binding, as defined in | underlying transport provides a sufficient degree of confidentiality. | |||
<xref target="RFC5056" format="default" sectionFormat="of"/>, | RPC-with-TLS implementations <bcp14>MUST</bcp14> provide the "tls-exporter" | |||
to determine when an underlying transport | channel binding type, as defined in <xref target="RFC9266" format="default" />. | |||
provides a sufficient degree of confidentiality. | ||||
RPC-over-TLS implementations | ||||
<bcp14>MUST</bcp14> | ||||
provide the "tls-exporter" channel binding type, as defined in | ||||
<xref target="I-D.ietf-kitten-tls-channel-bindings-for-tls13" format="default" s | ||||
ectionFormat="of"/>. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_D93526DA-7B9D-419B-BE84-4AD8DA48577E" | anchor="section_D93526DA-7B9D-419B-BE84-4AD8DA48577E" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>TLS Requirements</name> | <name>TLS Requirements</name> | |||
<t> | <t> | |||
When peers negotiate a TLS session that is to transport RPC, | When peers negotiate a TLS session that is to transport RPC, | |||
the following restrictions apply: | the following restrictions apply: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
Implementations <bcp14>MUST NOT</bcp14> negotiate TLS versions prior to v1.3 | Implementations <bcp14>MUST NOT</bcp14> negotiate TLS versions prior to 1.3 | |||
(for TLS | (for TLS | |||
<xref target="RFC8446" format="default" sectionFormat="of"/> | <xref target="RFC8446" format="default" /> | |||
or DTLS | or DTLS <xref target="RFC9147" format="default" />, | |||
<xref target="I-D.ietf-tls-dtls13" format="default" sectionFormat="of"/> | respectively). Support for mandatory-to-implement cipher suites for the | |||
respectively). | negotiated TLS version is <bcp14>REQUIRED</bcp14>. | |||
Support for mandatory-to-implement ciphersuites | ||||
for the negotiated TLS version is <bcp14>REQUIRED</bcp14>. | ||||
</li> | </li> | |||
<li> | <li> | |||
Implementations | Implementations <bcp14>MUST</bcp14> conform to the recommendations for TLS | |||
<bcp14>MUST</bcp14> | usage specified in BCP 195 <xref target="RFC7525" format="default" />. | |||
conform to the recommendations for TLS usage specified in BCP 195 | Although RFC 7525 permits the use of TLS 1.2, the | |||
<xref target="RFC7525" format="default" sectionFormat="of"/>. | requirement to use TLS 1.3 or later for RPC-with-TLS takes precedence. | |||
Although RFC 7525 permits the use of TLS v1.2, | Further, because TLS 1.3 ciphers are qualitatively different than cipher | |||
the requirement to use TLS v1.3 or later for RPC-over-TLS takes precedence. | suites in previous versions of TLS, and RFC 7525 predates TLS 1.3, the cipher | |||
Further, because TLS v1.3 ciphers | suite recommendations in RFC 7525 do not apply to RPC-with-(D)TLS. A strict | |||
are qualitatively different than cipher suites in previous versions of TLS | TLS mode for RPC-with-TLS that protects against STRIPTLS attacks is discussed | |||
and RFC 7525 predates TLS v1.3, | in detail in <xref target="section_8894BDD2-0E0B-47A3-A2CB-70E4D93B55B0" | |||
the cipher suite recommendations in RFC 7525 do not apply to RPC-over-(D)TLS. | format="default" />. | |||
A strict TLS mode for RPC-over-TLS that protects against STRIPTLS attacks | ||||
is discussed in detail in | ||||
<xref target="section_8894BDD2-0E0B-47A3-A2CB-70E4D93B55B0" format="default" sec | ||||
tionFormat="of"/>. | ||||
</li> | </li> | |||
<li> | <li> | |||
Implementations <bcp14>MUST</bcp14> support | Implementations <bcp14>MUST</bcp14> support certificate-based mutual | |||
certificate-based mutual authentication. | authentication. Support for Pre-Shared Key (PSK) mutual authentication is | |||
Support for PSK mutual authentication | <bcp14>OPTIONAL</bcp14>; see | |||
is <bcp14>OPTIONAL</bcp14>; | <xref target="section_6DA9ED5F-BAD9-4126-95B7-E2331655A01E" format="default" /> | |||
see | ||||
<xref target="section_6DA9ED5F-BAD9-4126-95B7-E2331655A01E" format="default" sec | ||||
tionFormat="of"/> | ||||
for further details. | for further details. | |||
</li> | </li> | |||
<li> | <li> | |||
Negotiation of a ciphersuite providing confidentiality as | Negotiation of a cipher suite providing confidentiality as | |||
well as integrity protection is <bcp14>REQUIRED</bcp14>. | well as integrity protection is <bcp14>REQUIRED</bcp14>. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
Client implementations <bcp14>MUST</bcp14> include the | Client implementations <bcp14>MUST</bcp14> include the | |||
"application_layer_protocol_negotiation(16)" extension | "application_layer_protocol_negotiation(16)" extension | |||
<xref target="RFC7301" format="default" sectionFormat="of"/> | <xref target="RFC7301" format="default" /> | |||
in their "ClientHello" message | in their "ClientHello" message | |||
and <bcp14>MUST</bcp14> include the protocol identifier | and <bcp14>MUST</bcp14> include the protocol identifier | |||
defined in | defined in | |||
<xref target="section_58905D7A-06B1-4469-964A-DAC607DAC500" format="default" sec tionFormat="of"/> | <xref target="section_58905D7A-06B1-4469-964A-DAC607DAC500" format="default" /> | |||
in that message's ProtocolNameList value. | in that message's ProtocolNameList value. | |||
</t> | </t> | |||
<t> | <t> | |||
Similarly, in response to the "ClientHello" message, | Similarly, in response to the "ClientHello" message, | |||
server implementations <bcp14>MUST</bcp14> include the | server implementations <bcp14>MUST</bcp14> include the | |||
"application_layer_protocol_negotiation(16)" extension | "application_layer_protocol_negotiation(16)" extension | |||
<xref target="RFC7301" format="default" sectionFormat="of"/> | <xref target="RFC7301" format="default" /> | |||
in their "ServerHello" message | in their "ServerHello" message | |||
and <bcp14>MUST</bcp14> include only the protocol identifier | and <bcp14>MUST</bcp14> include only the protocol identifier | |||
defined in | defined in | |||
<xref target="section_58905D7A-06B1-4469-964A-DAC607DAC500" format="default" sec tionFormat="of"/> | <xref target="section_58905D7A-06B1-4469-964A-DAC607DAC500" format="default" /> | |||
in that message's ProtocolNameList value. | in that message's ProtocolNameList value. | |||
</t> | </t> | |||
<t> | <t> | |||
If the server responds incorrectly | If the server responds incorrectly | |||
(for instance, if the "ServerHello" message does not conform to the above requir ements), | (for instance, if the "ServerHello" message does not conform to the above requir ements), | |||
the client <bcp14>MUST NOT</bcp14> establish a TLS session for use with RPC | the client <bcp14>MUST NOT</bcp14> establish a TLS session for use with RPC | |||
on this connection. | on this connection. | |||
See | See | |||
<xref target="RFC7301" format="default" sectionFormat="of"/> | <xref target="RFC7301" format="default" /> | |||
for further details about how to form these messages properly. | for further details about how to form these messages properly. | |||
</t> | </t> | |||
<section | <section | |||
anchor="section_CC204592-F561-49BD-B1C9-DE0FF7F0E7AB" | anchor="section_CC204592-F561-49BD-B1C9-DE0FF7F0E7AB" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Base Transport Considerations</name> | <name>Base Transport Considerations</name> | |||
<t> | <t> | |||
There is traditionally a strong association between an RPC program | There is frequently a strong association between an RPC program and a | |||
and a destination port number. | particular destination port number. The use of TLS or DTLS does not change that | |||
The use of TLS or DTLS does not change that association. | association. Thus, it is frequently, though not always, the case that a | |||
Thus it is frequently -- | single TLS session carries traffic for only one RPC program. | |||
though not always -- | ||||
the case that a single TLS session | ||||
carries traffic for only one RPC program. | ||||
</t> | </t> | |||
<section | <section | |||
anchor="section_74B43C7E-5ADC-4FBD-B4EA-FF8F470994A8" | anchor="section_74B43C7E-5ADC-4FBD-B4EA-FF8F470994A8" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Protected Operation on TCP</name> | <name>Protected Operation on TCP</name> | |||
<t> | <t> | |||
The use of the Transport Layer Security (TLS) protocol | The use of the TLS protocol | |||
<xref target="RFC8446" format="default" sectionFormat="of"/> | <xref target="RFC8446" format="default" /> | |||
protects RPC on TCP connections. | protects RPC on TCP connections. | |||
Typically, | Typically, | |||
once an RPC client completes the TCP handshake, | once an RPC client completes the TCP handshake, | |||
it uses the mechanism described in | it uses the mechanism described in | |||
<xref target="section_0A03673B-14BA-4228-8A8A-F76AA318CA73" format="default" sec | <xref target="section_0A03673B-14BA-4228-8A8A-F76AA318CA73" format="default" /> | |||
tionFormat="of"/> | to discover RPC-with-TLS support for that RPC program on that connection. | |||
to discover RPC-over-TLS support for that RPC program on that connection. | ||||
Until an AUTH_TLS probe is done on a connection, | Until an AUTH_TLS probe is done on a connection, | |||
the RPC server treats all traffic as RPC messages. | the RPC server treats all traffic as RPC messages. | |||
If spurious traffic appears on a TCP connection | If spurious traffic appears on a TCP connection | |||
between the initial clear-text AUTH_TLS probe | between the initial cleartext AUTH_TLS probe | |||
and | and | |||
the TLS session handshake, | the TLS session handshake, | |||
receivers <bcp14>MUST</bcp14> discard that data without response | receivers <bcp14>MUST</bcp14> discard that data without response | |||
and then <bcp14>SHOULD</bcp14> drop the connection. | and then <bcp14>SHOULD</bcp14> drop the connection. | |||
</t> | </t> | |||
<t> | <t> | |||
The protocol convention specified in the current document | The protocol convention specified in the current document | |||
assumes there can be no more than one concurrent TLS session | assumes there can be no more than one concurrent TLS session | |||
per TCP connection. | per TCP connection. | |||
This is true of current generations of TLS, | This is true of current generations of TLS, | |||
but might be different in a future version of TLS. | but might be different in a future version of TLS. | |||
</t> | </t> | |||
<t> | <t> | |||
Once a TLS session is established on a TCP connection, | Once a TLS session is established on a TCP connection, | |||
no further clear-text communication can occur on that connection | no further cleartext communication can occur on that connection | |||
until the session is terminated. | until the session is terminated. | |||
The use of TLS does not alter RPC record framing used on TCP transports. | The use of TLS does not alter RPC record framing used on TCP transports. | |||
</t> | </t> | |||
<t> | <t> | |||
Furthermore, | Furthermore, | |||
if an RPC server responds with PROG_UNAVAIL | if an RPC server responds with PROG_UNAVAIL | |||
to an RPC Call within an established TLS session, | to an RPC Call within an established TLS session, | |||
that does not imply that RPC server will subsequently | that does not imply that RPC server will subsequently | |||
reject the same RPC program on a different TCP connection. | reject the same RPC program on a different TCP connection. | |||
</t> | </t> | |||
<t> | <t> | |||
Reverse-direction operation occurs only on connected transports such as TCP | Reverse-direction operation occurs only on connected transports such as TCP | |||
(see | (see <xref target="RFC8167" section="2" format="default" | |||
<xref target="RFC8167" section="2" format="default" sectionFormat="of"/>). | sectionFormat="of"/>). To protect reverse-direction RPC operations, the RPC | |||
To protect reverse-direction RPC operations, | server does not establish a separate TLS session on the TCP connection but | |||
the RPC server does not establish a separate TLS session on the TCP connection, | instead uses the existing TLS session on that connection to protect these | |||
but instead uses the existing TLS session on that connection to protect | operations. | |||
these operations. | ||||
</t> | </t> | |||
<t> | <t> | |||
When operation is complete, | When operation is complete, | |||
an RPC peer terminates a TLS session by sending a TLS Closure Alert. | an RPC peer terminates a TLS session by sending a TLS closure alert. | |||
It may then close the TCP connection. | It may then close the TCP connection. | |||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_B8BF600E-96DC-4C82-AADF-D593826E9B75" | anchor="section_B8BF600E-96DC-4C82-AADF-D593826E9B75" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Protected Operation on UDP</name> | <name>Protected Operation on UDP</name> | |||
<t> | <t> | |||
RFC Editor: | The use of the DTLS protocol | |||
In the following section, | <xref target="RFC9147" format="default" /> | |||
please replace TBD with the connection_id extension number | ||||
that is to be assigned in | ||||
<xref target="I-D.ietf-tls-dtls-connection-id" format="default" sectionFormat="o | ||||
f"/>. | ||||
And, please remove this Editor's Note | ||||
before this document is published. | ||||
</t> | ||||
<t> | ||||
The use of the Datagram Transport Layer Security (DTLS) protocol | ||||
<xref target="I-D.ietf-tls-dtls13" format="default" sectionFormat="of"/> | ||||
protects RPC carried in UDP datagrams. | protects RPC carried in UDP datagrams. | |||
As soon as a client initializes a UDP socket | As soon as a client initializes a UDP socket | |||
for use with an RPC service, | for use with an RPC service, | |||
it uses the mechanism described in | it uses the mechanism described in | |||
<xref target="section_0A03673B-14BA-4228-8A8A-F76AA318CA73" format="default" sec | <xref target="section_0A03673B-14BA-4228-8A8A-F76AA318CA73" format="default" /> | |||
tionFormat="of"/> | to discover RPC-with-DTLS support for that RPC program on that port. | |||
to discover RPC-over-DTLS support for that RPC program on that port. | ||||
If spurious traffic appears on a 5-tuple between | If spurious traffic appears on a 5-tuple between | |||
the initial clear-text AUTH_TLS probe | the initial cleartext AUTH_TLS probe | |||
and | and | |||
the DTLS association handshake, | the DTLS association handshake, | |||
receivers | receivers | |||
<bcp14>MUST</bcp14> | <bcp14>MUST</bcp14> | |||
discard that traffic without response. | discard that traffic without response. | |||
</t> | </t> | |||
<t> | <t> | |||
Using DTLS does not introduce | Using DTLS does not introduce | |||
reliable | reliable | |||
or | or | |||
skipping to change at line 781 ¶ | skipping to change at line 702 ¶ | |||
semantics to RPC on UDP. | semantics to RPC on UDP. | |||
The use of DTLS record replay protection is <bcp14>REQUIRED</bcp14> | The use of DTLS record replay protection is <bcp14>REQUIRED</bcp14> | |||
when transporting RPC traffic. | when transporting RPC traffic. | |||
</t> | </t> | |||
<t> | <t> | |||
Each RPC message <bcp14>MUST</bcp14> fit in a single DTLS record. | Each RPC message <bcp14>MUST</bcp14> fit in a single DTLS record. | |||
DTLS encapsulation has overhead, | DTLS encapsulation has overhead, | |||
which reduces the Packetization Layer Path MTU (PLPMTU) | which reduces the Packetization Layer Path MTU (PLPMTU) | |||
and thus the maximum RPC payload size. | and thus the maximum RPC payload size. | |||
A possible PLPMTU discovery mechanism is offered in | A possible PLPMTU discovery mechanism is offered in | |||
<xref target="RFC8899" format="default" sectionFormat="of"/>. | <xref target="RFC8899" format="default" />. | |||
</t> | </t> | |||
<t> | <t> | |||
The current document does not specify a mechanism | The current document does not specify a mechanism | |||
that enables a server to distinguish between | that enables a server to distinguish between | |||
DTLS traffic | DTLS traffic | |||
and | and | |||
unprotected RPC traffic | unprotected RPC traffic | |||
directed to the same port. | directed to the same port. | |||
To make this distinction, | To make this distinction, | |||
each peer matches ingress datagrams | each peer matches ingress datagrams | |||
that appear to be DTLS traffic to existing DTLS session state. | that appear to be DTLS traffic to existing DTLS session state. | |||
A peer treats any datagram that fails the matching process as an RPC message. | A peer treats any datagram that fails the matching process as an RPC message. | |||
</t> | </t> | |||
<t> | <t> | |||
Multi-homed RPC clients and servers may send protected RPC messages | Multihomed RPC clients and servers may send protected RPC messages | |||
via network interfaces that were not involved in the handshake that | via network interfaces that were not involved in the handshake that | |||
established the DTLS session. | established the DTLS session. | |||
Therefore, when protecting RPC traffic, | Therefore, when protecting RPC traffic, | |||
each DTLS handshake <bcp14>MUST</bcp14> include the "connection_id(TBD)" extensi on | each DTLS handshake <bcp14>MUST</bcp14> include the "connection_id(54)" extensio n | |||
described in | described in | |||
<xref target="I-D.ietf-tls-dtls13" section="9" format="default" sectionFormat="o | <xref target="RFC9147" section="9" format="default" sectionFormat="of"/>, | |||
f"/>, | and RPC-with-DTLS peer endpoints | |||
and RPC-over-DTLS peer endpoints | ||||
<bcp14>MUST</bcp14> | <bcp14>MUST</bcp14> | |||
provide a ConnectionID | provide a ConnectionID | |||
with a non-zero length. | with a nonzero length. | |||
Endpoints implementing RPC programs | Endpoints implementing RPC programs | |||
that expect a significant number of concurrent clients | that expect a significant number of concurrent clients | |||
<bcp14>SHOULD</bcp14> | <bcp14>SHOULD</bcp14> | |||
employ ConnectionIDs of at least 4 bytes in length. | employ ConnectionIDs of at least 4 bytes in length. | |||
</t> | </t> | |||
<t> | <t> | |||
Sending a TLS Closure Alert terminates a DTLS session. | Sending a TLS closure alert terminates a DTLS session. Because neither DTLS | |||
Because neither DTLS nor UDP provide in-order delivery, | nor UDP provide in-order delivery, after session closure there can be | |||
after session closure there can be ambiguity | ambiguity as to whether a datagram should be interpreted as DTLS protected or | |||
as to whether a datagram should be interpreted as DTLS protected or not. | not. Therefore, receivers <bcp14>MUST</bcp14> discard datagrams exchanged | |||
Therefore receivers | using the same 5-tuple that just terminated the DTLS session for a sufficient | |||
<bcp14>MUST</bcp14> | length of time to ensure that retransmissions have ceased and packets already | |||
discard datagrams | in the network have been delivered. In the absence of more specific data, a | |||
exchanged using the same 5-tuple that just | period of 60 seconds is expected to suffice. | |||
terminated the DTLS session for a | ||||
sufficient length of time to ensure that retransmissions have ceased and | ||||
packets already in the network have been delivered. | ||||
In the absence of more specific data, | ||||
a period of 60 seconds is expected to suffice. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_BFCC24B1-E6D4-4ABC-A5F3-B71E8E96878F" | anchor="section_BFCC24B1-E6D4-4ABC-A5F3-B71E8E96878F" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Protected Operation on Other Transports</name> | <name>Protected Operation on Other Transports</name> | |||
<t> | <t> | |||
skipping to change at line 843 ¶ | skipping to change at line 759 ¶ | |||
toc="default"> | toc="default"> | |||
<name>Protected Operation on Other Transports</name> | <name>Protected Operation on Other Transports</name> | |||
<t> | <t> | |||
Transports that provide intrinsic TLS-level security | Transports that provide intrinsic TLS-level security | |||
(e.g., QUIC) | (e.g., QUIC) | |||
need to be addressed separately from the current document. | need to be addressed separately from the current document. | |||
In such cases, the use of TLS is not opportunistic | In such cases, the use of TLS is not opportunistic | |||
as it can be for TCP or UDP. | as it can be for TCP or UDP. | |||
</t> | </t> | |||
<t> | <t> | |||
RPC-over-RDMA can make use of transport layer security | RPC-over-RDMA can make use of transport layer security | |||
below the RDMA transport layer | below the RDMA transport layer | |||
<xref target="RFC8166" format="default" sectionFormat="of"/>. | <xref target="RFC8166" format="default" />. | |||
The exact mechanism is not within the scope of the current document. | The exact mechanism is not within the scope of the current document. | |||
Because there might not be other provisions | Because there might not be other provisions | |||
to exchange client and server certificates, | to exchange client and server certificates, | |||
authentication material exchange | authentication material exchange | |||
needs to be provided by facilities | needs to be provided by facilities | |||
within a future version | within a future version | |||
of the RPC-over-RDMA transport protocol. | of the RPC-over-RDMA transport protocol. | |||
</t> | </t> | |||
</section> | </section> | |||
skipping to change at line 875 ¶ | skipping to change at line 792 ¶ | |||
TLS can perform peer authentication | TLS can perform peer authentication | |||
using any of the following mechanisms. | using any of the following mechanisms. | |||
</t> | </t> | |||
<section | <section | |||
anchor="section_7A68F518-2C02-4705-8218-4F13E51372F4" | anchor="section_7A68F518-2C02-4705-8218-4F13E51372F4" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>X.509 Certificates Using PKIX Trust</name> | <name>X.509 Certificates Using PKIX Trust</name> | |||
<t> | <t> | |||
X.509 certificates are specified in | X.509 certificates are specified in | |||
<xref target="X.509" format="default" sectionFormat="of"/>. | <xref target="X.509" format="default"/>. | |||
<xref target="RFC5280" format="default" sectionFormat="of"/> | <xref target="RFC5280" format="default"/> | |||
provides a profile of Internet PKI X.509 public key infrastructure. | provides a profile of Internet PKI X.509 public key infrastructure. | |||
RPC-over-TLS implementations are | RPC-with-TLS implementations are | |||
<bcp14>REQUIRED</bcp14> | <bcp14>REQUIRED</bcp14> | |||
to support the PKIX mechanism described in | to support the PKIX mechanism described in | |||
<xref target="RFC5280" format="default" sectionFormat="of"/>. | <xref target="RFC5280" format="default"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
The rules and guidelines defined in | The rules and guidelines defined in | |||
<xref target="RFC6125" format="default" sectionFormat="of"/> | <xref target="RFC6125" format="default"/> | |||
apply to RPC-over-TLS certificates | apply to RPC-with-TLS certificates | |||
with the following considerations: | with the following considerations: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
The DNS-ID identifier type is a subjectAltName extension | The DNS-ID identifier type is a subjectAltName extension that contains a | |||
that contains a dNSName, as defined in | dNSName, as defined in <xref target="RFC5280" sectionFormat="of" | |||
<xref target="RFC5280" section="4.2.1.6" format="default" sectionFormat="of"/>. | section="4.2.1.6"/>. Support for the DNS-ID identifier type | |||
Support for the DNS-ID identifier type is | is <bcp14>REQUIRED</bcp14> in RPC-with-TLS client and server implementations. | |||
<bcp14>REQUIRED</bcp14> | Certification authorities that issue such certificates <bcp14>MUST</bcp14> | |||
in RPC-over-TLS client and server implementations. | ||||
Certification authorities that issue such certificates | ||||
<bcp14>MUST</bcp14> | ||||
support the DNS-ID identifier type. | support the DNS-ID identifier type. | |||
</li> | </li> | |||
<li> | <li> | |||
To specify the identity of an RPC peer as | To specify the identity of an RPC peer as a domain name, the certificate | |||
a domain name, | <bcp14>MUST</bcp14> contain a subjectAltName extension that contains a | |||
the certificate | dNSName. DNS domain names in RPC-with-TLS certificates <bcp14>MUST NOT</bcp14> | |||
<bcp14>MUST</bcp14> | contain the wildcard character '*' within the identifier. | |||
contain a subjectAltName extension that contains a dNSName. | ||||
DNS domain names in RPC-over-TLS certificates | ||||
<bcp14>MUST NOT</bcp14> | ||||
contain the wildcard character '*' | ||||
within the identifier. | ||||
</li> | </li> | |||
<li> | <li> | |||
To specify the identity of an RPC peer as | To specify the identity of an RPC peer as a network identifier (netid) or a univ | |||
a network identifier (netid) | ersal network address (uaddr), the certificate <bcp14>MUST</bcp14> contain a sub | |||
or | jectAltName extension that contains an iPAddress. | |||
a universal network address (uaddr), | ||||
the certificate | ||||
<bcp14>MUST</bcp14> | ||||
contain a subjectAltName extension that contains an iPAddress. | ||||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
When validating a server certificate, | When validating a server certificate, | |||
an RPC-over-TLS client implementation | an RPC-with-TLS client implementation | |||
takes the following into account: | takes the following into account: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
Certificate validation | Certificate validation | |||
<bcp14>MUST</bcp14> | <bcp14>MUST</bcp14> | |||
include the verification rules as per | include the verification rules as per | |||
<xref target="RFC5280" section="6" format="default" sectionFormat="of"/> | <xref target="RFC5280" section="6" format="default" sectionFormat="of"/> | |||
and | and | |||
<xref target="RFC6125" section="6" format="default" sectionFormat="of"/>. | <xref target="RFC6125" section="6" format="default" sectionFormat="of"/>. | |||
</li> | </li> | |||
<li> | <li> | |||
Server certificate validation | Server certificate validation | |||
skipping to change at line 951 ¶ | skipping to change at line 858 ¶ | |||
include a check on whether | include a check on whether | |||
the locally configured expected | the locally configured expected | |||
DNS-ID | DNS-ID | |||
or | or | |||
iPAddress subjectAltName | iPAddress subjectAltName | |||
of the server that is contacted | of the server that is contacted | |||
matches its presented certificate. | matches its presented certificate. | |||
</li> | </li> | |||
<li> | <li> | |||
For RPC services accessed by their | For RPC services accessed by their | |||
network identifiers (netids) | netids | |||
and | and | |||
universal network addresses (uaddr), | uaddrs, | |||
the iPAddress subjectAltName | the iPAddress subjectAltName | |||
<bcp14>MUST</bcp14> | <bcp14>MUST</bcp14> | |||
be present in the certificate | be present in the certificate | |||
and | and | |||
<bcp14>MUST</bcp14> | <bcp14>MUST</bcp14> | |||
exactly match the address represented by the universal network address. | exactly match the address represented by the universal network address. | |||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
An RPC client's | An RPC client's domain name and IP address are often assigned dynamically; | |||
domain name | thus, RPC servers cannot rely on those to verify client certificates. | |||
and | Therefore, when an RPC-with-TLS client presents a certificate to an | |||
IP address | RPC-with-TLS server, the server takes the following into account: | |||
are often assigned dynamically, | ||||
thus RPC servers cannot rely on those to verify client certificates. | ||||
Therefore, when an RPC-over-TLS client presents a certificate | ||||
to an RPC-over-TLS server, | ||||
the server takes the following into account: | ||||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
The server | The server <bcp14>MUST</bcp14> use a procedure conformant to <xref | |||
<bcp14>MUST</bcp14> | target="RFC5280" section="6" format="default" sectionFormat="of"/> to | |||
use a procedure conformant to | validate the client certificate's certification path. | |||
<xref target="RFC5280" section="6" format="default" sectionFormat="of"/>) | ||||
to validate the client certificate's certification path. | ||||
</li> | </li> | |||
<li> | <li> | |||
The tuple (serial number of the presented certificate; Issuer) | The tuple (serial number of the presented certificate; Issuer) uniquely | |||
uniquely identifies the RPC client. | identifies the RPC client. The meaning and syntax of these fields is defined | |||
The meaning and syntax of these fields is defined in | in <xref target="RFC5280" section="4" format="default" sectionFormat="of"/>. | |||
<xref target="RFC5280" section="4" format="default" sectionFormat="of"/>). | ||||
</li> | </li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
RPC-over-TLS implementations | RPC-with-TLS implementations | |||
<bcp14>MAY</bcp14> | <bcp14>MAY</bcp14> | |||
allow the configuration | allow the configuration | |||
of a set of additional properties of the certificate | of a set of additional properties of the certificate | |||
to check for a peer's authorization to communicate | to check for a peer's authorization to communicate | |||
(e.g., | (e.g., | |||
a set of allowed values in subjectAltName:URI, | a set of allowed values in subjectAltName:URI, | |||
a set of allowed X.509v3 Certificate Policies, | a set of allowed X.509v3 Certificate Policies, | |||
or | or | |||
a set of extended key usages). | a set of extended key usages). | |||
</t> | </t> | |||
skipping to change at line 1001 ¶ | skipping to change at line 901 ¶ | |||
<bcp14>MAY</bcp14> | <bcp14>MAY</bcp14> | |||
allow the configuration | allow the configuration | |||
of a set of additional properties of the certificate | of a set of additional properties of the certificate | |||
to check for a peer's authorization to communicate | to check for a peer's authorization to communicate | |||
(e.g., | (e.g., | |||
a set of allowed values in subjectAltName:URI, | a set of allowed values in subjectAltName:URI, | |||
a set of allowed X.509v3 Certificate Policies, | a set of allowed X.509v3 Certificate Policies, | |||
or | or | |||
a set of extended key usages). | a set of extended key usages). | |||
</t> | </t> | |||
<t> | <t> | |||
When the configured set of trust anchors changes | When the configured set of trust anchors changes (e.g., removal of a | |||
(e.g., removal of a CA from the list of trusted CAs; | Certification Authority (CA) from the list of trusted CAs; issuance of a new Cer | |||
issuance of a new CRL for a given CA), | tificate Revocation List (CRL) | |||
implementations | for a given CA), implementations <bcp14>SHOULD</bcp14> reevaluate the | |||
<bcp14>SHOULD</bcp14> | certificate originally presented in the context of the new configuration and | |||
reevaluate the certificate originally presented | ||||
in the context of the new configuration | ||||
and | ||||
terminate the TLS session if the certificate is no longer trustworthy. | terminate the TLS session if the certificate is no longer trustworthy. | |||
</t> | </t> | |||
<section | <section | |||
anchor="section_685D3F88-94FF-4C91-8CCB-860DBA602B2F" | anchor="section_685D3F88-94FF-4C91-8CCB-860DBA602B2F" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Extended Key Usage Values</name> | <name>Extended Key Usage Values</name> | |||
<t> | <t> | |||
<xref target="RFC5280" section="4.2.1.12" format="default" sectionFormat="of"/> | <xref target="RFC5280" section="4.2.1.12" format="default" sectionFormat="of"/> | |||
specifies the extended key usage X.509 certificate extension. | specifies the extended key usage X.509 certificate extension. | |||
This extension, which may appear in end-entity certificates, | This extension, which may appear in end-entity certificates, | |||
indicates one or more purposes for which the certified public key may be used | indicates one or more purposes for which the certified public key may be used | |||
in addition to or in place of the basic purposes indicated in the key usage exte nsion. | in addition to or in place of the basic purposes indicated in the key usage exte nsion. | |||
</t> | </t> | |||
<t> | <t> | |||
The current document defines two new KeyPurposeId values: | The current document defines two new KeyPurposeId values: | |||
one that identifies the RPC-over-TLS peer as an RPC client, | one that identifies the RPC-with-TLS peer as an RPC client, | |||
and | and | |||
one that identifies the RPC-over-TLS peer as an RPC server. | one that identifies the RPC-with-TLS peer as an RPC server. | |||
</t> | </t> | |||
<t> | <t> | |||
The inclusion of the RPC server value (id-kp-rpcTLSServer) | The inclusion of the RPC server value (id-kp-rpcTLSServer) | |||
indicates that the certificate has been issued | indicates that the certificate has been issued | |||
for allowing the holder to process RPC transactions. | for allowing the holder to process RPC transactions. | |||
</t> | </t> | |||
<t> | <t> | |||
The inclusion of the RPC client value (id-kp-rpcTLSClient) | The inclusion of the RPC client value (id-kp-rpcTLSClient) | |||
indicates that the certificate has been issued | indicates that the certificate has been issued | |||
for allowing the holder to request RPC transactions. | for allowing the holder to request RPC transactions. | |||
skipping to change at line 1052 ¶ | skipping to change at line 949 ¶ | |||
</section> | </section> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_6DA9ED5F-BAD9-4126-95B7-E2331655A01E" | anchor="section_6DA9ED5F-BAD9-4126-95B7-E2331655A01E" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Pre-Shared Keys</name> | <name>Pre-shared Keys</name> | |||
<t> | ||||
This mechanism is <bcp14>OPTIONAL</bcp14> to implement. | ||||
In this mode, the RPC peer can be uniquely identified | ||||
by keying material that has been shared out-of-band | ||||
(see | ||||
<xref target="RFC8446" section="2.2" format="default" sectionFormat="of"/>). | ||||
The | ||||
PSK Identifier | ||||
<bcp14>SHOULD</bcp14> | ||||
be exposed at the RPC layer. | ||||
</t> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section | ||||
anchor="section_88BBA4D6-ED42-4FE6-A208-9D277B68729A" | ||||
numbered="true" | ||||
removeInRFC="true" | ||||
toc="default"> | ||||
<name>Implementation Status</name> | ||||
<t> | <t> | |||
This section records the status of known implementations of the | This mechanism is <bcp14>OPTIONAL</bcp14> to implement. In this mode, the RPC | |||
protocol defined by this specification at the time of posting of | peer can be uniquely identified by keying material that has been shared | |||
this Internet-Draft, and is based on a proposal described in | out of band (see <xref target="RFC8446" section="2.2" format="default" | |||
<xref target="RFC7942" format="default" sectionFormat="of"/>. | sectionFormat="of"/>). The PSK Identifier <bcp14>SHOULD</bcp14> be exposed at th | |||
The description of implementations in this section is | e RPC layer. | |||
intended to assist the IETF in its decision processes in | ||||
progressing drafts to RFCs. | ||||
</t> | ||||
<t> | ||||
Please note that the listing of any individual implementation here | ||||
does not 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 available implementations or their features. | ||||
Readers are advised to note that other implementations may exist. | ||||
</t> | </t> | |||
<section | ||||
anchor="section_94AA7844-E393-4353-A35D-DA01D13C909B" | ||||
numbered="true" | ||||
removeInRFC="false" | ||||
toc="default"> | ||||
<name>DESY NFS server</name> | ||||
<dl newline="false" spacing="normal" indent="11"> | ||||
<dt>Organization:</dt> | ||||
<dd> | ||||
DESY | ||||
</dd> | ||||
<dt>URL:</dt> | ||||
<dd> | ||||
<eref target="https://desy.de"/> | ||||
</dd> | ||||
<dt>Maturity:</dt> | ||||
<dd> | ||||
Implementation will be based on mature versions of the current document. | ||||
</dd> | ||||
<dt>Coverage:</dt> | ||||
<dd> | ||||
The bulk of this specification is implemented including DTLS. | ||||
</dd> | ||||
<dt>Licensing:</dt> | ||||
<dd> | ||||
LGPL | ||||
</dd> | ||||
<dt>Implementation experience:</dt> | ||||
<dd> | ||||
The implementer has read and commented on the current document. | ||||
</dd> | ||||
</dl> | ||||
</section> | </section> | |||
<section | ||||
anchor="section_B387F281-958F-470D-B4D4-1D85907B89F1" | ||||
numbered="true" | ||||
removeInRFC="false" | ||||
toc="default"> | ||||
<name>Hammerspace NFS server</name> | ||||
<dl newline="false" spacing="normal" indent="11"> | ||||
<dt>Organization:</dt> | ||||
<dd> | ||||
Hammerspace | ||||
</dd> | ||||
<dt>URL:</dt> | ||||
<dd> | ||||
<eref target="https://hammerspace.com"/> | ||||
</dd> | ||||
<dt>Maturity:</dt> | ||||
<dd> | ||||
Prototype software based on early versions of the current document. | ||||
</dd> | ||||
<dt>Coverage:</dt> | ||||
<dd> | ||||
The bulk of this specification is implemented. | ||||
The use of DTLS functionality is not implemented. | ||||
</dd> | ||||
<dt>Licensing:</dt> | ||||
<dd> | ||||
Proprietary | ||||
</dd> | ||||
<dt>Implementation experience:</dt> | ||||
<dd> | ||||
No comments from implementors. | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
<section | ||||
anchor="section_BF03B3A2-4483-4404-9E7A-F60FCD850F31" | ||||
numbered="true" | ||||
removeInRFC="false" | ||||
toc="default"> | ||||
<name>Linux NFS server and client</name> | ||||
<dl newline="false" spacing="normal" indent="11"> | ||||
<dt>Organization:</dt> | ||||
<dd> | ||||
The Linux Foundation | ||||
</dd> | ||||
<dt>URL:</dt> | ||||
<dd> | ||||
<eref target="https://www.kernel.org"/> | ||||
</dd> | ||||
<dt>Maturity:</dt> | ||||
<dd> | ||||
Not complete. | ||||
</dd> | ||||
<dt>Coverage:</dt> | ||||
<dd> | ||||
The bulk of this specification has yet to be implemented. | ||||
The use of DTLS functionality is not planned. | ||||
</dd> | ||||
<dt>Licensing:</dt> | ||||
<dd> | ||||
GPLv2 | ||||
</dd> | ||||
<dt>Implementation experience:</dt> | ||||
<dd> | ||||
A Linux in-kernel prototype is underway, | ||||
but implementation delays have resulted from the challenges of | ||||
handling a TLS handshake in a kernel environment. | ||||
Those issues stem from the architecture of TLS and the kernel, | ||||
not from the design of the RPC-over-TLS protocol. | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
<section | ||||
anchor="section_86689813-E907-4046-ADF1-58E2BF668546" | ||||
numbered="true" | ||||
removeInRFC="false" | ||||
toc="default"> | ||||
<name>FreeBSD NFS server and client</name> | ||||
<dl newline="false" spacing="normal" indent="11"> | ||||
<dt>Organization:</dt> | ||||
<dd> | ||||
The FreeBSD Project | ||||
</dd> | ||||
<dt>URL:</dt> | ||||
<dd> | ||||
<eref target="https://www.freebsd.org"/> | ||||
</dd> | ||||
<dt>Maturity:</dt> | ||||
<dd> | ||||
Prototype software based on early versions of the current document. | ||||
</dd> | ||||
<dt>Coverage:</dt> | ||||
<dd> | ||||
The bulk of this specification is implemented. | ||||
The use of DTLS functionality is not planned. | ||||
</dd> | ||||
<dt>Licensing:</dt> | ||||
<dd> | ||||
BSD | ||||
</dd> | ||||
<dt>Implementation experience:</dt> | ||||
<dd> | ||||
Implementers have read and commented on the current document. | ||||
</dd> | ||||
</dl> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_2AE49383-E6B2-4830-8407-995FEBF727F2" | anchor="section_2AE49383-E6B2-4830-8407-995FEBF727F2" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
skipping to change at line 1246 ¶ | skipping to change at line 970 ¶ | |||
</section> | </section> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_2AE49383-E6B2-4830-8407-995FEBF727F2" | anchor="section_2AE49383-E6B2-4830-8407-995FEBF727F2" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t> | <t> | |||
One purpose of the mechanism described in the current document | One purpose of the mechanism described in the current document | |||
is to protect RPC-based applications against threats | is to protect RPC-based applications against threats | |||
to the confidentiality of RPC transactions | to the confidentiality of RPC transactions | |||
and | and | |||
RPC user identities. | RPC user identities. | |||
A taxonomy of these threats appears in | A taxonomy of these threats appears in | |||
<xref target="RFC6973" section="5" format="default" sectionFormat="of"/>. | <xref target="RFC6973" section="5" format="default" sectionFormat="of"/>. | |||
Also, | Also, | |||
<xref target="RFC7525" section="6" format="default" sectionFormat="of"/> | <xref target="RFC7525" section="6" format="default" sectionFormat="of"/> | |||
contains a detailed discussion | contains a detailed discussion | |||
of technologies used in conjunction with TLS. | of technologies used in conjunction with TLS. | |||
<xref target="RFC5280" section="8" format="default" sectionFormat="of"/> | <xref target="RFC5280" section="8" format="default" sectionFormat="of"/> | |||
covers important considerations about handling certificate material securely. | covers important considerations about handling certificate material securely. | |||
Implementers should familiarize themselves with these materials. | Implementers should familiarize themselves with these materials. | |||
</t> | </t> | |||
<t> | <t> | |||
Once a TLS session is established, | Once a TLS session is established, | |||
the RPC payload carried on TLS version 1.3 is forward-secure. | the RPC payload carried on TLS version 1.3 is forward secure. | |||
However, implementers need to be aware that replay attacks | However, implementers need to be aware that replay attacks | |||
can occur during session establishment. | can occur during session establishment. | |||
Remedies for such attacks are discussed in detail in | Remedies for such attacks are discussed in detail in | |||
<xref target="RFC8446" section="8" format="default" sectionFormat="of"/>. | <xref target="RFC8446" section="8" format="default" sectionFormat="of"/>. | |||
Further, the current document does not | Further, the current document does not | |||
provide a profile that defines the use of 0-RTT data | provide a profile that defines the use of 0-RTT data | |||
(see | (see | |||
Appendix E.5 of | <xref target="RFC8446" format="default" sectionFormat="of" section="E.5"/>). | |||
<xref target="RFC8446" format="default" sectionFormat="of"/>). | Therefore, RPC-with-TLS implementations <bcp14>MUST NOT</bcp14> | |||
Therefore, RPC-over-TLS implementations MUST NOT | ||||
use 0-RTT data. | use 0-RTT data. | |||
</t> | </t> | |||
<section | <section | |||
anchor="section_51737BB5-2B65-441E-AD1D-7EBF5123C079" | anchor="section_51737BB5-2B65-441E-AD1D-7EBF5123C079" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>The Limitations of Opportunistic Security</name> | <name>The Limitations of Opportunistic Security</name> | |||
<t> | <t> | |||
Readers can find the definition of Opportunistic Security in | Readers can find the definition of Opportunistic Security in | |||
<xref target="RFC7435" format="default" sectionFormat="of"/>. | <xref target="RFC7435" format="default"/>. | |||
A discussion of its underlying principals | A discussion of its underlying principles | |||
appears in Section 3 of that document. | appears in Section <xref target="RFC7435" sectionFormat="bare" section="3"></xre | |||
</t> | f> of that document.</t> | |||
<t> | <t> | |||
The purpose of using an explicitly opportunistic approach | The purpose of using an explicitly opportunistic approach | |||
is to enable interoperation | is to enable interoperation | |||
with implementations that do not support RPC-over-TLS. | with implementations that do not support RPC-with-TLS. | |||
A range of options is allowed by this approach, | A range of options is allowed by this approach, | |||
from "no peer authentication or encryption" | from "no peer authentication or encryption" | |||
to | to | |||
"server-only authentication with encryption" | "server-only authentication with encryption" | |||
to | to | |||
"mutual authentication with encryption". | "mutual authentication with encryption". | |||
The actual security level may indeed | The actual security level may indeed | |||
be selected based on policy and without user intervention. | be selected based on policy and without user intervention. | |||
</t> | </t> | |||
<t> | <t> | |||
In environments where interoperability is a priority, | In environments where interoperability is a priority, | |||
the security benefits of TLS are partially or entirely waived. | the security benefits of TLS are partially or entirely waived. | |||
Implementations of the mechanism described in the current document | Implementations of the mechanism described in the current document | |||
must take care to accurately represent to all RPC consumers | must take care to accurately represent to all RPC consumers | |||
the level of security that is actually in effect, | the level of security that is actually in effect, | |||
and are <bcp14>REQUIRED</bcp14> to provide an audit log | and are <bcp14>REQUIRED</bcp14> to provide an audit log | |||
of RPC-over-TLS security mode selection. | of RPC-with-TLS security mode selection. | |||
</t> | </t> | |||
<t> | <t> | |||
In all other cases, | In all other cases, | |||
the adoption, implementation, and deployment of | the adoption, implementation, and deployment of | |||
RPC-based upper-layer protocols that enforce the use of | RPC-based upper-layer protocols that enforce the use of | |||
TLS authentication and encryption | TLS authentication and encryption | |||
(when similar RPCSEC GSS services are not in use) | (when similar RPCSEC_GSS services are not in use) | |||
is strongly encouraged. | is strongly encouraged. | |||
</t> | </t> | |||
<section | <section | |||
anchor="section_8894BDD2-0E0B-47A3-A2CB-70E4D93B55B0" | anchor="section_8894BDD2-0E0B-47A3-A2CB-70E4D93B55B0" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>STRIPTLS Attacks</name> | <name>STRIPTLS Attacks</name> | |||
<t> | <t> | |||
A classic form of attack on network protocols that initiate an association | The initial AUTH_TLS probe occurs in cleartext. | |||
in plain-text to discover support for TLS is a man-in-the-middle | An on-path attacker can alter a cleartext handshake to make it | |||
that alters the plain-text handshake to make it appear as though | appear as though TLS support is not available on one or both peers. | |||
TLS support is not available on one or both peers. | ||||
Client implementers can choose from the following to mitigate | Client implementers can choose from the following to mitigate | |||
STRIPTLS attacks: | STRIPTLS attacks: | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
A TLSA record | A TLSA record | |||
<xref target="RFC6698" format="default" sectionFormat="of"/> | <xref target="RFC6698" format="default"/> | |||
can alert clients that TLS is expected to work, | can alert clients that TLS is expected to work, and provide a binding of | |||
and provide a binding of hostname to X.509 identity. | a hostname to the X.509 identity. If TLS cannot be negotiated or authentication | |||
If TLS cannot be negotiated or authentication fails, | fails, the client disconnects and reports the problem. When an opportunistic | |||
the client disconnects and reports the problem. | security policy is in place, a client <bcp14>SHOULD</bcp14> check for the | |||
When an opportunistic security policy is in place, | existence of a TLSA record for the target server before initiating an | |||
a client | RPC-with-TLS association. | |||
<bcp14>SHOULD</bcp14> | ||||
check for the existence of a TLSA record for the target | ||||
server before initiating an RPC-over-TLS association. | ||||
</li> | </li> | |||
<li> | <li> | |||
Client security policy can require | Client security policy can require | |||
that a TLS session is established on every connection. | that a TLS session is established on every connection. | |||
If an attacker spoofs the handshake, | If an attacker spoofs the handshake, | |||
the client disconnects and reports the problem. | the client disconnects and reports the problem. | |||
This policy prevents an attacker from causing the client to silently fall back t | ||||
o plaintext. | This policy prevents an attacker from causing the association to | |||
fall back to cleartext silently. | ||||
If TLSA records are not available, this approach is strongly encouraged. | If TLSA records are not available, this approach is strongly encouraged. | |||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_9C03417D-1D3D-4D43-BC43-6F7387736AF7" | anchor="section_9C03417D-1D3D-4D43-BC43-6F7387736AF7" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Privacy Leakage Before Session Establishment</name> | <name>Privacy Leakage before Session Establishment</name> | |||
<t> | <t> | |||
As mentioned earlier, | As mentioned earlier, | |||
communication between an RPC client and server | communication between an RPC client and server | |||
appears in the clear on the network | appears in the clear on the network | |||
prior to the establishment of a TLS session. | prior to the establishment of a TLS session. | |||
This clear-text information usually includes | This cleartext information usually includes | |||
transport connection handshake exchanges, | transport connection handshake exchanges, | |||
the RPC NULL procedure probing support for TLS, | the RPC NULL procedure probing support for TLS, | |||
and the initial parts of TLS session establishment. | and the initial parts of TLS session establishment. | |||
Appendix C of | <xref target="RFC8446" sectionFormat="of" section="C" format="default"/> | |||
<xref target="RFC8446" format="default" sectionFormat="of"/> | discusses precautions that can mitigate exposure during the exchange of | |||
discusses precautions that can mitigate exposure during | connection handshake information and TLS certificate material that might | |||
the exchange of connection handshake information | enable attackers to track the RPC client. Note that when PSK authentication | |||
and | is used, the PSK identifier is exposed during the TLS handshake and can be | |||
TLS certificate material that might enable attackers | used to track the RPC client. | |||
to track the RPC client. | ||||
Note that when PSK authentication is used, | ||||
the PSK identifier is exposed during the TLS handshake, | ||||
and can be used to track the RPC client. | ||||
</t> | </t> | |||
<t> | <t> | |||
Any RPC traffic that appears on the network before | Any RPC traffic that appears on the network before | |||
a TLS session has been established is vulnerable to | a TLS session has been established is vulnerable to | |||
monitoring or undetected modification. | monitoring or undetected modification. | |||
A secure client implementation limits or prevents | A secure client implementation limits or prevents | |||
any RPC exchanges that are not protected. | any RPC exchanges that are not protected. | |||
</t> | </t> | |||
<t> | <t> | |||
The exception to this edict is | The exception to this edict is | |||
skipping to change at line 1413 ¶ | skipping to change at line 1132 ¶ | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_B9F8A982-CB0E-40FC-9460-680E89DB0001" | anchor="section_B9F8A982-CB0E-40FC-9460-680E89DB0001" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>TLS Identity Management on Clients</name> | <name>TLS Identity Management on Clients</name> | |||
<t> | <t> | |||
The goal of the RPC-over-TLS protocol extension | The goal of RPC-with-TLS is to hide the content of RPC requests while they are | |||
is to hide the content of RPC requests while they are in transit. | in transit. RPC-with-TLS protocol by itself cannot protect against | |||
The RPC-over-TLS protocol by itself cannot protect | exposure of a user's RPC requests to other users on the same client. | |||
against exposure of a user's RPC requests to other users on the same client. | ||||
</t> | </t> | |||
<t> | <t> | |||
Moreover, client implementations are free to transmit RPC requests | Moreover, client implementations are free to transmit RPC requests | |||
for more than one RPC user using the same TLS session. | for more than one RPC user using the same TLS session. | |||
Depending on the details of the client RPC implementation, | Depending on the details of the client RPC implementation, | |||
this means that the client's TLS credentials | this means that the client's TLS credentials | |||
are potentially visible to every RPC user that shares a TLS session. | are potentially visible to every RPC user that shares a TLS session. | |||
Privileged users may also be able to access this TLS identity. | Privileged users may also be able to access this TLS identity. | |||
</t> | </t> | |||
<t> | <t> | |||
skipping to change at line 1446 ¶ | skipping to change at line 1164 ¶ | |||
anchor="section_552B02A0-F19E-4B46-809C-672A6AE931A1" | anchor="section_552B02A0-F19E-4B46-809C-672A6AE931A1" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Security Considerations for AUTH_SYS on TLS</name> | <name>Security Considerations for AUTH_SYS on TLS</name> | |||
<t> | <t> | |||
Using a TLS-protected transport | Using a TLS-protected transport | |||
when the AUTH_SYS authentication flavor is in use | when the AUTH_SYS authentication flavor is in use | |||
addresses several longstanding weaknesses in AUTH_SYS | addresses several longstanding weaknesses in AUTH_SYS | |||
(as detailed in | (as detailed in | |||
<xref target="section_C7FB9DB5-5F4F-45AD-8BF7-74FFCA08BEBB" format="default" sec tionFormat="of"/>). | <xref target="section_C7FB9DB5-5F4F-45AD-8BF7-74FFCA08BEBB" format="default"/>). | |||
TLS augments AUTH_SYS by providing both | TLS augments AUTH_SYS by providing both | |||
integrity protection and confidentiality | integrity protection and confidentiality | |||
that AUTH_SYS lacks. | that AUTH_SYS lacks. | |||
TLS protects | TLS protects | |||
data payloads, | data payloads, | |||
RPC headers, | RPC headers, | |||
and | and | |||
user identities | user identities | |||
against monitoring and alteration while in transit. | against monitoring and alteration while in transit. | |||
</t> | </t> | |||
<t> | <t> | |||
TLS guards against in-transit insertion and deletion of RPC messages, | TLS guards against in-transit insertion and deletion of RPC messages, thus | |||
thus ensuring the integrity of the message stream | ensuring the integrity of the message stream between RPC client and server. | |||
between RPC client and server. | DTLS does not provide full message stream protection, but it does enable | |||
DTLS does not provide full message stream protection, | receivers to reject nonparticipant messages. In particular, transport-layer | |||
but it does enable receivers to reject non-participant messages. | encryption plus peer authentication protects receiving eXternal Data | |||
In particular, transport layer encryption plus peer authentication | Representation (XDR) decoders from deserializing untrusted data, a common | |||
protects receiving XDR decoders from deserializing untrusted data, | coding vulnerability. However, these decoders would still be exposed to | |||
a common coding vulnerability. | untrusted input in the case of the compromise of a trusted peer or Certification | |||
However, these decoders would still be exposed to untrusted input | Authority. | |||
in the case of the compromise of a trusted peer or Certificate Authority. | ||||
</t> | </t> | |||
<t> | <t> | |||
The use of TLS enables strong authentication | The use of TLS enables strong authentication | |||
of the communicating RPC peers, | of the communicating RPC peers, | |||
providing a degree of non-repudiation. | providing a degree of non-repudiation. | |||
When AUTH_SYS is used with TLS, | When AUTH_SYS is used with TLS, | |||
but the RPC client is unauthenticated, | but the RPC client is unauthenticated, | |||
the RPC server still acts on RPC requests | the RPC server still acts on RPC requests | |||
for which there is no trustworthy authentication. | for which there is no trustworthy authentication. | |||
In-transit traffic is protected, but the RPC client itself | In-transit traffic is protected, but the RPC client itself | |||
skipping to change at line 1509 ¶ | skipping to change at line 1226 ¶ | |||
</t> | </t> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_55D006D3-8CA6-4D7F-AF0D-BFB0FFEF7595" | anchor="section_55D006D3-8CA6-4D7F-AF0D-BFB0FFEF7595" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Best Security Policy Practices</name> | <name>Best Security Policy Practices</name> | |||
<t> | <t> | |||
RPC-over-TLS implementations and deployments | RPC-with-TLS implementations and deployments | |||
are strongly encouraged to adhere to the following policies | are strongly encouraged to adhere to the following policies | |||
to achieve the strongest possible security with RPC-over-TLS. | to achieve the strongest possible security with RPC-with-TLS. | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false"> | <ul spacing="normal"> | |||
<li> | <li> | |||
When using AUTH_NULL or AUTH_SYS, both peers are | When using AUTH_NULL or AUTH_SYS, both peers are | |||
<bcp14>RECOMMENDED</bcp14> | <bcp14>RECOMMENDED</bcp14> | |||
to have DNSSEC TLSA records, | to have DNSSEC TLSA records, | |||
keys with which to perform mutual peer authentication | keys with which to perform mutual peer authentication | |||
using one of the methods described in | using one of the methods described in | |||
<xref target="section_936921ED-67BB-46BF-B316-6740E07F6652" format="default" sec tionFormat="of"/>, | <xref target="section_936921ED-67BB-46BF-B316-6740E07F6652" format="default"/>, | |||
and | and | |||
a security policy that requires mutual peer authentication | a security policy that requires mutual peer authentication | |||
and | and | |||
rejection of a connection when host authentication fails. | rejection of a connection when host authentication fails. | |||
</li> | </li> | |||
<li> | <li> | |||
RPCSEC GSS provides integrity and privacy services | RPCSEC_GSS provides integrity and privacy services that are largely redundant | |||
which are largely redundant when TLS is in use. | when TLS is in use. These services <bcp14>SHOULD</bcp14> be disabled in that | |||
These services | case. | |||
<bcp14>SHOULD</bcp14> | ||||
be disabled in that case. | ||||
</li> | </li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_7B126473-2A13-453B-9BCA-66BC11B7B018" | anchor="section_7B126473-2A13-453B-9BCA-66BC11B7B018" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t> | ||||
RFC Editor: In the following subsections, | ||||
please replace RFC-TBD with the RFC number assigned to this document. | ||||
And, please remove this Editor's Note | ||||
before this document is published. | ||||
</t> | ||||
<section | <section | |||
anchor="section_2CD51855-CE40-4B8D-A220-F211C477964F" | anchor="section_2CD51855-CE40-4B8D-A220-F211C477964F" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>RPC Authentication Flavor</name> | <name>RPC Authentication Flavor</name> | |||
<t> | <t> | |||
Following Appendix B of | Following <xref target="RFC5531" format="default" section="B" | |||
<xref target="RFC5531" format="default" sectionFormat="of"/>, | sectionFormat="of"/>, an entry has been added to the "RPC | |||
the authors request a single new entry | Authentication Flavor Numbers" registry. The purpose of the new authentication | |||
in the RPC Authentication Flavor Numbers registry. | flavor is to signal the use of TLS with RPC. This new flavor is not a | |||
The purpose of the new authentication flavor | pseudo-flavor. | |||
is to signal the use of TLS with RPC. | ||||
This new flavor is not a pseudo-flavor. | ||||
</t> | </t> | |||
<t> | <t> | |||
The fields in the new entry are assigned as follows: | The fields in the new entry have been assigned as follows: | |||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Identifier String:</dt> | <dt>Identifier String:</dt> | |||
<dd> | <dd> | |||
AUTH_TLS | AUTH_TLS | |||
</dd> | </dd> | |||
<dt>Flavor Name:</dt> | <dt>Flavor Name:</dt> | |||
<dd> | <dd> | |||
TLS | TLS | |||
</dd> | </dd> | |||
<dt>Value:</dt> | <dt>Value:</dt> | |||
<dd> | <dd> | |||
7 (to be confirmed by IANA) | 7 | |||
</dd> | </dd> | |||
<dt>Description:</dt> | <dt>Description:</dt> | |||
<dd> | <dd> | |||
Indicates support for RPC-over-TLS. | Indicates support for RPC-with-TLS | |||
</dd> | </dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd> | <dd> | |||
RFC-TBD | RFC 9289 | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_58905D7A-06B1-4469-964A-DAC607DAC500" | anchor="section_58905D7A-06B1-4469-964A-DAC607DAC500" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>ALPN Identifier for SUNRPC</name> | <name>ALPN Identifier for SunRPC</name> | |||
<t> | <t> | |||
Following | Following | |||
<xref target="RFC7301" section="6" format="default" sectionFormat="of"/>, | <xref target="RFC7301" section="6" format="default" sectionFormat="of"/>, | |||
the authors request the allocation of the following value | the following value has been allocated | |||
in the "Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry. | in the "TLS Application-Layer Protocol Negotiation (ALPN) Protocol IDs" registry | |||
. | ||||
The "sunrpc" string identifies SunRPC when used over TLS. | The "sunrpc" string identifies SunRPC when used over TLS. | |||
</t> | </t> | |||
<dl newline="false" spacing="normal"> | <dl newline="false" spacing="normal"> | |||
<dt>Protocol:</dt> | <dt>Protocol:</dt> | |||
<dd> | <dd> | |||
SunRPC | SunRPC | |||
</dd> | </dd> | |||
<dt>Identification Sequence:</dt> | <dt>Identification Sequence:</dt> | |||
<dd> | <dd> | |||
0x73 0x75 0x6e 0x72 0x70 0x63 ("sunrpc") | 0x73 0x75 0x6e 0x72 0x70 0x63 ("sunrpc") | |||
</dd> | </dd> | |||
<dt>Reference:</dt> | <dt>Reference:</dt> | |||
<dd> | <dd> | |||
RFC-TBD | RFC 9289 | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_62E5E930-706A-4216-9A32-D7AC5952A507" | anchor="section_62E5E930-706A-4216-9A32-D7AC5952A507" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Object Identifier for PKIX Extended Key Usage</name> | <name>Object Identifier for PKIX Extended Key Usage</name> | |||
skipping to change at line 1628 ¶ | skipping to change at line 1335 ¶ | |||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_62E5E930-706A-4216-9A32-D7AC5952A507" | anchor="section_62E5E930-706A-4216-9A32-D7AC5952A507" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Object Identifier for PKIX Extended Key Usage</name> | <name>Object Identifier for PKIX Extended Key Usage</name> | |||
<t> | <t> | |||
RFC Editor: In the following subsection, | Per the Specification Required policy defined in <xref target="RFC8126" | |||
please replace XXX and YYY with the IANA numbers assigned to these new entries. | section="4.6" format="default" sectionFormat="of"/>, the following new values | |||
And, please remove this Editor's Note | have been registered in the "SMI Security for PKIX Extended Key Purpose" | |||
before this document is published. | registry (1.3.6.1.5.5.7.3) (see | |||
</t> | <xref target="section_685D3F88-94FF-4C91-8CCB-860DBA602B2F" format="default"/> | |||
<t> | ||||
Per the Specification Required policy as defined in | ||||
<xref target="RFC8126" section="4.6" format="default" sectionFormat="of"/>, | ||||
the authors request the reservation of the following new values: | ||||
</t> | ||||
<ul spacing="normal" bare="false" empty="false"> | ||||
<li> | ||||
The RPC-over-TLS ASN.1 module in the | ||||
"SMI Security for PKIX Extended Key Purpose" registry (1.3.6.1.5.5.7.3) | ||||
(see | ||||
<xref target="section_685D3F88-94FF-4C91-8CCB-860DBA602B2F" format="default" sec | ||||
tionFormat="of"/> | ||||
and | and | |||
<xref target="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0" format="default" sec | <xref target="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0" format="default"/>). | |||
tionFormat="of"/>. | </t> | |||
</li> | <table> | |||
<li> | <thead> | |||
The RPC-over-TLS client certificate extended key usage (1.3.6.1.5.5.7.3.XXX). | <tr> | |||
The description of this new entry should be "id-kp-rpcTLSClient". | <th>Decimal</th> | |||
</li> | <th>Description</th> | |||
<li> | <th>Reference</th> | |||
The RPC-over-TLS server certificate extended key usage (1.3.6.1.5.5.7.3.YYY). | </tr> | |||
The description of this new entry should be "id-kp-rpcTLSServer". | </thead> | |||
</li> | <tbody> | |||
</ul> | <tr> | |||
<td>33</td> | ||||
<td>id-kp-rpcTLSClient</td> | ||||
<td>RFC 9289</td> | ||||
</tr> | ||||
<tr> | ||||
<td>34</td> | ||||
<td>id-kp-rpcTLSServer</td> | ||||
<td>RFC 9289</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="section_1FB29AC3-A737-4822-B396-D33919905567" numbered="true" r | ||||
emoveInRFC="false" toc="default"> | ||||
<name>Object Identifier for ASN.1 Module</name> | ||||
<t> | <t> | |||
IANA should use the current document (RFC-TBD) as the reference for the new entr ies. | Per the Specification Required policy defined in <xref target="RFC8126" section= "4.6" format="default" sectionFormat="of"/>, the following new value has been re gistered in the "SMI Security for PKIX Module Identifier" registry (1.3.6.1.5.5. 7.0) (see <xref target="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0"/>). | |||
</t> | </t> | |||
<table> | ||||
<thead> | ||||
<tr> | ||||
<th>Decimal</th> | ||||
<th>Description</th> | ||||
<th>Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>105</td> | ||||
<td>id-mod-rpcWithTLS-2021</td> | ||||
<td>RFC 9289</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | </section> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9266. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-iet | xml"/> | |||
f-tls-dtls13-38.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | xml"/> | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-iet | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5056. | |||
f-tls-dtls-connection-id-07.xml"/> | xml"/> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5280. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.draft-iet | xml"/> | |||
f-kitten-tls-channel-bindings-for-tls13-00.xml"/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5531. | |||
xml"/> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6125. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/ | xml"/> | |||
> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7301. | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | xml"/> | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5056.xml"/ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7525. | |||
> | xml"/> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5280.xml"/ | xml"/> | |||
> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174. | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | xml"/> | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5531.xml"/ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8446. | |||
> | xml"/> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9147. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6125.xml"/ | xml"/> | |||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7301.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7525.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"/ | ||||
> | ||||
<reference anchor="X.509"> | <reference anchor="X.509"> | |||
<front> | <front> | |||
<title> | <title> | |||
ITU-T X.509 - Information technology - | Information technology – Open Systems | |||
The Directory: Public-key and attribute certificate frameworks. | Interconnection – The Directory: Public-key and | |||
attribute certificate frameworks | ||||
</title> | </title> | |||
<seriesInfo name="ISO/IEC" value="9594-8"/> | <seriesInfo name="ISO/IEC" value="9594-8"/> | |||
<seriesInfo name="CCITT Recommendation" value="X.509"/> | <seriesInfo name="ITU-T Recommendation" value="X.509"/> | |||
<author> | <author> | |||
<organization showOnFrontPage="true"> | <organization> | |||
International Telephone and Telegraph Consultative Committee | International Telecommunication Union | |||
</organization> | </organization> | |||
</author> | </author> | |||
<date month="October" year="2019"/> | <date month="October" year="2019"/> | |||
<abstract> | ||||
<t> | ||||
Recommendation ITU-T X.509 | ISO/IEC 9594-8 defines frameworks for public-key in | ||||
frastructure (PKI) and privilege management infrastructure (PMI). | ||||
It introduces the basic concept of asymmetric cryptographic techniques. | ||||
It specifies the following data types: public-key certificate, attribute certifi | ||||
cate, certificate revocation list (CRL) and attribute certificate revocation lis | ||||
t (ACRL). | ||||
It also defines several certificates and CRL extensions, and it defines director | ||||
y schema information allowing PKI and PMI related data to be stored in a directo | ||||
ry. | ||||
In addition, it defines entity types, such as certification authority (CA), attr | ||||
ibute authority (AA), relying party, privilege verifier, trust broker and trust | ||||
anchor. | ||||
It specifies the principles for certificate validation, validation path, certifi | ||||
cate policy, etc. | ||||
It also includes a specification for authorization validation lists that allow f | ||||
or fast validation and restrictions on communications. | ||||
</t> | ||||
</abstract> | ||||
</front> | </front> | |||
</reference> | </reference> | |||
<reference anchor="X.680" target="https://www.itu.int/rec/T-REC-X.680"> | ||||
<front> | ||||
<title>Information technology - Abstract Syntax Notation One (ASN.1) | ||||
: Specification of basic notation</title> | ||||
<author> | ||||
<organization>ITU-T</organization> | ||||
</author> | ||||
<date year="2021" month="February"/> | ||||
</front> | ||||
<seriesInfo name="ITU-T Recommendation" value="X.680"/> | ||||
</reference> | ||||
<reference anchor="X.690" target="https://www.itu.int/rec/T-REC-X.690"> | ||||
<front> | ||||
<title>Information technology - ASN.1 encoding rules: | ||||
Specification of Basic Encoding Rules (BER), Canonical Encoding | ||||
Rules (CER) and Distinguished Encoding Rules (DER) | ||||
</title> | ||||
<author> | ||||
<organization>ITU-T</organization> | ||||
</author> | ||||
<date year="2021" month="February"/> | ||||
</front> | ||||
<seriesInfo name="ITU-T Recommendation" value="X.690"/> | ||||
</reference> | ||||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1833. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.1833.xml"/ | xml"/> | |||
> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2203. | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | xml"/> | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2203.xml"/ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9110. | |||
> | xml"/> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6698. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2818.xml"/ | xml"/> | |||
> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6973. | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | xml"/> | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6698.xml"/ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7258. | |||
> | xml"/> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7435. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6973.xml"/ | xml"/> | |||
> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8166. | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | xml"/> | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7258.xml"/ | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8167. | |||
> | xml"/> | |||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8899. | |||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7435.xml"/ | xml"/> | |||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8166.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8167.xml"/ | ||||
> | ||||
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" | ||||
href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8899.xml"/ | ||||
> | ||||
</references> | </references> | |||
</references> | </references> | |||
<section | <section | |||
anchor="section_C7FB9DB5-5F4F-45AD-8BF7-74FFCA08BEBB" | anchor="section_C7FB9DB5-5F4F-45AD-8BF7-74FFCA08BEBB" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Known Weaknesses of the AUTH_SYS Authentication Flavor</name> | <name>Known Weaknesses of the AUTH_SYS Authentication Flavor</name> | |||
<t> | <t> | |||
The ONC RPC protocol, as specified in | ||||
<xref target="RFC5531" format="default" sectionFormat="of"/>, | The ONC RPC protocol, as specified in <xref target="RFC5531" format="default"/>, | |||
provides several modes of security, | provides several modes of security, commonly | |||
traditionally referred to as "authentication flavors". | referred to as "authentication flavors". Some of these flavors provide much | |||
Some of these flavors provide much more than an authentication service. | more than an authentication service. We refer to these as authentication | |||
We refer to these as | flavors, security flavors, or simply, flavors. One of the earliest and most | |||
authentication flavors, | basic flavors is AUTH_SYS, also known as AUTH_UNIX. | |||
security flavors, | <xref target="RFC5531" format="default" sectionFormat="of" section="A"/> | |||
or simply, | ||||
flavors. | ||||
One of the earliest and most basic flavors is AUTH_SYS, | ||||
also known as AUTH_UNIX. | ||||
Appendix A of | ||||
<xref target="RFC5531" format="default" sectionFormat="of"/> | ||||
specifies AUTH_SYS. | specifies AUTH_SYS. | |||
</t> | </t> | |||
<t> | <t> | |||
AUTH_SYS assumes that the RPC client and server | AUTH_SYS assumes that the RPC client and server | |||
both use POSIX-style user and group identifiers | both use POSIX-style user and group identifiers | |||
(each user and group can be distinctly represented | (each user and group can be distinctly represented | |||
as a 32-bit unsigned integer). | as a 32-bit unsigned integer). | |||
It also assumes that the client and server | It also assumes that the client and server | |||
both use the same mapping of user and group to an integer. | both use the same mapping of user and group to an integer. | |||
One user ID, one primary group ID, and up to 16 supplemental group IDs | One user ID, one primary group ID, and up to 16 supplemental group IDs | |||
are associated with each RPC request. | are associated with each RPC request. | |||
The combination of these identifies the entity on the client | The combination of these identifies the entity on the client | |||
that is making the request. | that is making the request. | |||
</t> | </t> | |||
<t> | <t> | |||
A string identifies peers (hosts) in each RPC request. | A string identifies peers (hosts) in each RPC request. | |||
<xref target="RFC5531" format="default" sectionFormat="of"/> | <xref target="RFC5531" format="default"/> | |||
does not specify any requirements for this string | does not specify any requirements for this string | |||
other than that is no longer than 255 octets. | other than that it is no longer than 255 octets. | |||
It does not have to be the same from request to request. | It does not have to be the same from request to request. | |||
Also, it does not have to match the DNS hostname of the sending host. | Also, it does not have to match the DNS hostname of the sending host. | |||
For these reasons, | For these reasons, | |||
even though most implementations fill in their hostname in this field, | even though most implementations fill in their hostname in this field, | |||
receivers typically ignore its content. | receivers typically ignore its content. | |||
</t> | </t> | |||
<t> | <t> | |||
Appendix A of | <xref target="RFC5531" format="default" sectionFormat="of" section="A"/> | |||
<xref target="RFC5531" format="default" sectionFormat="of"/> | ||||
contains a brief explanation of security considerations: | contains a brief explanation of security considerations: | |||
</t> | </t> | |||
<blockquote> | <blockquote> | |||
It should be noted that use of this flavor of authentication does not | It should be noted that use of this flavor of authentication does not | |||
guarantee any security for the users or providers of a service, in | guarantee any security for the users or providers of a service, in | |||
itself. The authentication provided by this scheme can be considered | itself. The authentication provided by this scheme can be considered | |||
legitimate only when applications using this scheme and the network | legitimate only when applications using this scheme and the network | |||
can be secured externally, and privileged transport addresses are | can be secured externally, and privileged transport addresses are | |||
used for the communicating end-points (an example of this is the use | used for the communicating end-points (an example of this is the use | |||
of privileged TCP/UDP ports in UNIX systems -- note that not all | of privileged TCP/UDP ports in UNIX systems -- note that not all | |||
skipping to change at line 1849 ¶ | skipping to change at line 1563 ¶ | |||
other than inclusion of an unprotected domain name. | other than inclusion of an unprotected domain name. | |||
</li> | </li> | |||
<li> | <li> | |||
The use of 32-bit unsigned integers as user and group identifiers | The use of 32-bit unsigned integers as user and group identifiers | |||
is problematic because these data types are | is problematic because these data types are | |||
not cryptographically signed or otherwise verified by any authority. | not cryptographically signed or otherwise verified by any authority. | |||
In addition, the mapping of these integers to users and groups | In addition, the mapping of these integers to users and groups | |||
has to be consistent amongst a server and its cohort of clients. | has to be consistent amongst a server and its cohort of clients. | |||
</li> | </li> | |||
<li> | <li> | |||
Because the user and group ID fields are not integrity-protected, | Because the user and group ID fields are not integrity protected, | |||
AUTH_SYS does not provide non-repudiation. | AUTH_SYS does not provide non-repudiation. | |||
</li> | </li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0" | anchor="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
skipping to change at line 1861 ¶ | skipping to change at line 1575 ¶ | |||
</li> | </li> | |||
</ol> | </ol> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0" | anchor="section_B08B45C1-1E10-4F7A-935B-1198BAF255C0" | |||
numbered="true" | numbered="true" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>ASN.1 Module</name> | <name>ASN.1 Module</name> | |||
<t> | <t> | |||
RFC Editor: In the following section, | The following module adheres to ASN.1 specifications <xref target="X.680"/> an | |||
please replace XXX and YYY with the IANA numbers assigned to these new entries. | d <xref target="X.690"/>. | |||
And, please remove this Editor's Note | ||||
before this document is published. | ||||
</t> | </t> | |||
<sourcecode name="" type="asn.1" markers="true"> | <sourcecode name="" type="asn.1" markers="true"> | |||
<![CDATA[ | <![CDATA[ | |||
RPCwithTLS-2021 | ||||
{ iso(1) identified-organization(3) dod(6) internet(1) | ||||
security(5) mechanisms(5) pkix(7) id-mod(0) | ||||
id-mod-rpcWithTLS-2021(105) } | ||||
DEFINITIONS IMPLICIT TAGS ::= | ||||
BEGIN | ||||
-- OID Arc | -- OID Arc | |||
id-kp OBJECT IDENTIFIER ::= | id-kp OBJECT IDENTIFIER ::= | |||
{ iso(1) identified-organization(3) dod(6) internet(1) | { iso(1) identified-organization(3) dod(6) internet(1) | |||
security(5) mechanisms(5) pkix(7) kp(3) } | security(5) mechanisms(5) pkix(7) kp(3) } | |||
-- Extended Key Usage Values | -- Extended Key Usage Values | |||
id-kp-rpcTLSClient OBJECT IDENTIFIER ::= { id-kp XXX } | id-kp-rpcTLSClient OBJECT IDENTIFIER ::= { id-kp 33 } | |||
id-kp-rpcTLSServer OBJECT IDENTIFIER ::= { id-kp YYY } | id-kp-rpcTLSServer OBJECT IDENTIFIER ::= { id-kp 34 } | |||
END | ||||
]]> | ]]> | |||
</sourcecode> | </sourcecode> | |||
</section> | </section> | |||
<section | <section | |||
anchor="section_4959412F-37AD-42B8-9169-D477148F81A8" | anchor="section_4959412F-37AD-42B8-9169-D477148F81A8" | |||
numbered="false" | numbered="false" | |||
removeInRFC="false" | removeInRFC="false" | |||
toc="default"> | toc="default"> | |||
<name>Acknowledgments</name> | <name>Acknowledgments</name> | |||
<t> | <t> | |||
Special mention goes to | Special mention goes to | |||
<contact fullname="Charles Fisher"/>, | <contact fullname="Charles Fisher"/>, | |||
author of | author of | |||
<eref target="https://www.linuxjournal.com/content/encrypting-nfsv4-stunnel-tls" | <eref target="https://www.linuxjournal.com/content/encrypting-nfsv4-stunnel-tls" | |||
> | brackets="angle"> | |||
"Encrypting NFSv4 with Stunnel TLS" | "Encrypting NFSv4 with Stunnel TLS"</eref>. His article inspired the | |||
</eref>. | mechanism described in the current document. | |||
His article inspired the mechanism described in the current document. | ||||
</t> | </t> | |||
<t> | <t> | |||
Many thanks to | Many thanks to | |||
<contact fullname="Tigran Mkrtchyan"/> | ||||
<contact fullname="Benjamin Coddington"/>, | ||||
<contact fullname="Tigran Mkrtchyan"/>, | ||||
and | and | |||
<contact fullname="Rick Macklem"/> | <contact fullname="Rick Macklem"/> | |||
for their work on prototype implementations and feedback on the current document . | for their work on prototype implementations and feedback on the current document . | |||
Also, thanks to | ||||
<contact fullname="Benjamin Kaduk"/> | ||||
for his expert guidance on the use of PKIX and TLS | ||||
and to <contact fullname="Russ Housley"/> for his ASN.1 expertise and for provid | ||||
ing other proper finishing touches. | ||||
In addition, the authors thank the other members of the IESG for | ||||
their astute review comments. These contributors made this a significantly bette | ||||
r document. | ||||
</t> | </t> | |||
<t> | <t> | |||
Thanks to | Thanks to | |||
<contact fullname="Derrell Piper"/> | <contact fullname="Derrell Piper"/> | |||
for numerous suggestions that improved both | for numerous suggestions that improved both | |||
this simple mechanism | this simple mechanism | |||
and | and | |||
the current document's security-related discussion. | the current document's security-related discussion. | |||
</t> | </t> | |||
<t> | <t> | |||
Many thanks to | Many thanks to | |||
Transport Area Director | Transport Area Director | |||
<contact fullname="Magnus Westerlund"/> | <contact fullname="Magnus Westerlund"/> | |||
for his sharp questions and careful reading | for his sharp questions and careful reading | |||
of the final revisions of the current document. | of the final revisions of the current document. | |||
The text of | The text of | |||
<xref target="section_B8BF600E-96DC-4C82-AADF-D593826E9B75" format="default" sec tionFormat="of"/> | <xref target="section_B8BF600E-96DC-4C82-AADF-D593826E9B75" format="default"/> | |||
is mostly his contribution. | is mostly his contribution. | |||
Also, thanks to | ||||
<contact fullname="Benjamin Kaduk"/> | ||||
for his expert guidance on the use of PKIX and TLS. | ||||
In addition, | ||||
the authors thank the other members of the IESG for | ||||
their astute review comments. | ||||
These contributors made this a significantly better document. | ||||
</t> | </t> | |||
<t> | <t> | |||
The authors are additionally grateful to | The authors are additionally grateful to | |||
<contact fullname="Bill Baker"/>, | <contact fullname="Bill Baker"/>, | |||
<contact fullname="David Black"/>, | <contact fullname="David Black"/>, | |||
<contact fullname="Alan DeKok"/>, | <contact fullname="Alan DeKok"/>, | |||
<contact fullname="Lars Eggert"/>, | <contact fullname="Lars Eggert"/>, | |||
<contact fullname="Olga Kornievskaia"/>, | <contact fullname="Olga Kornievskaia"/>, | |||
<contact fullname="Greg Marsden"/>, | <contact fullname="Greg Marsden"/>, | |||
<contact fullname="Alex McDonald"/>, | <contact fullname="Alex McDonald"/>, | |||
<contact fullname="Justin Mazzola Paluska"/>, | <contact fullname="Justin Mazzola Paluska"/>, | |||
<contact fullname="Tom Talpey"/>, | <contact fullname="Tom Talpey"/>, | |||
<contact fullname="Martin Thomson"/>, | <contact fullname="Martin Thomson"/>, | |||
and | and | |||
<contact fullname="Nico Williams"/>, | <contact fullname="Nico Williams"/> | |||
for their input and support of this work. | for their input and support of this work. | |||
</t> | </t> | |||
<t> | <t> | |||
Finally, special thanks to | Finally, special thanks to | |||
NFSV4 Working Group Chair and document shepherd | NFSV4 Working Group Chair and document shepherd | |||
<contact fullname="David Noveck"/>, | <contact fullname="David Noveck"/>, | |||
NFSV4 Working Group Chairs | NFSV4 Working Group Chairs | |||
<contact fullname="Spencer Shepler"/> | <contact fullname="Spencer Shepler"/> | |||
and | and <contact fullname="Brian Pawlowski"/>, and NFSV4 Working Group Secretary | |||
<contact fullname="Brian Pawlowski"/>, | ||||
and | ||||
NFSV4 Working Group Secretary | ||||
<contact fullname="Thomas Haynes"/> | <contact fullname="Thomas Haynes"/> | |||
for their guidance and oversight. | for their guidance and oversight. | |||
</t> | </t> | |||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 177 change blocks. | ||||
804 lines changed or deleted | 519 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |