russ's revisons

This commit is contained in:
Randy Bush 2021-02-12 14:53:00 -08:00
parent 06ae3da805
commit e4cbe4a2d4

View file

@ -31,7 +31,6 @@
</address>
</author>
<!--
<author fullname="Russ Housley" initials="R" surname="Housley">
<organization abbrev="Vigil Security">Vigil Security, LLC</organization>
<address>
@ -45,7 +44,6 @@
<email>housley@vigilsec.com</email>
</address>
</author>
-->
<author initials="R." surname="Austein" fullname="Rob Austein">
<organization abbrev="Arrcus">Arrcus, Inc.</organization>
@ -59,11 +57,11 @@
<abstract>
<t>The Layer-3 Discovery and Liveness protocol OPEN PDU may contain
a key and a certificate, which can be used to verify signatures on
subsequent PDUs. This document describes two mechanisms based on
a public key and a certificate, which can be used to verify signatures
on subsequent PDUs. This document describes two mechanisms based on
digital signatures, one that is Trust On First Use (TOFU), and one
that uses certificates to provide authentication as well as session
integrity.</t>
that uses a trust anchor signture over the public key to provide
authentication as well as session integrity.</t>
</abstract>
@ -72,7 +70,7 @@
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/> when,
BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when,
and only when, they appear in all capitals, as shown here.</t>
</note>
@ -83,14 +81,9 @@
<section anchor="intro" title="Introduction">
<t>This draft is being published without incorporating changes from
an excellent security review. This is being done so a couple of
other drafts can reference it. While all comments will, of course,
be appreciated, readers may want to wait for the -01 version.</t>
<t>The Layer-3 Discovery and Liveness protocol <xref
target="I-D.ietf-lsvr-l3dl"/> OPEN PDU contains an algorithm
identifier, a key, and a certificate, which can be used to verify
identifier, a key, and a L3DL certificate, which can be used to verify
signatures on subsequent PDUs. This document describes two methods
of key generation and signing for use by L3DL, Trust On First Use
(TOFU) and a PKI-based mechanism to provide authentication as well
@ -98,17 +91,16 @@
<t>The Key in the OPEN PDU SHOULD be the public key of an asymmetric
key pair. The sender signs with the private key, of course. The
device sending the OPEN may use one key for all links, a different
device sending the OPEN PDU may use one key for all links, a different
key for each link, or some mix(es) thereof.</t>
<t>In the TOFU method the key sent in the OPEN PDU is generated on
the sending device, is believed without question by the receiver,
and used to verify all subsequent PDUs from the same sender with the
same Key Type and Algorithm.</t>
same public key and algorithm.</t>
<t>With the PKI-mechanism, an enrollment step is performed. The
public key is put into a certificate <xref target="RFC5280"/>, which
is signed by the the operational environment's trust anchor. In
<t>With the PKI method, an enrollment step is performed. The public
key is signed by the the operational environment's trust anchor. In
this way, the relying party can be confident that the public key is
under control of the identified L3DL protocol entity.</t>
@ -121,12 +113,32 @@
PKI-based keys may be verified against the trust anchor when the
OPEN PDU is received.</t>
<t>In the PKI method the OPEN key MUST be verified against the trust
anchor for the operational domain. The OPEN key is then used to
verify all subsequent PDUs in the session.</t>
<t>In the PKI method the public key in the OPEN PDU MUST be verified
against the trust anchor for the operational domain. The OPEN PDU
public key is then used to verify all subsequent PDUs in the
session. A mechanism for 'rolling' from the current public key
to a fresh one is described in <xref target="roll"/>.</t>
</section>
<section anchor="algo" title="Signature Algorithm Identifiers">
<t>To avoid the creation of yet another IANA registry for
digital signature algorithm identifiers, this specification makes
use of the existing IANA registry for "DNS Security Algorithm Numbers"
<xref target="IANA"/>. In this registry, each signature algorithm is
identified by an 8-bit value. The entries in this registry with "Y"
in the "Zone Signing" column are appropriate for use with this
protocol.</t>
<t>For interoperability, all implementations of this protocol
MUST support the RSASHA256 algorithm (identified by the value 8).
Implementation MAY support any other registered "Zone Signing"
signature algorithms.</t>
</section>
<section anchor="tofu" title="Trust On First Use Method">
<t>There are three parts to using a key: signing PDUs, verifying
@ -149,13 +161,13 @@
</t>
<t>
Generate the signature as specified for the chosen signature
suite, using the private member of the asymmetric key pair.
In general this will involve first hashing the "message to
be signed" then signing the hash, but the precise details
may vary with the specific algorithm. The result will be a
sequence of octets, the length of which MUST be equal to the
setting of the "Signature Length" field.
Generate the signature as specified for the chosen algorithm,
using the private key of the asymmetric key pair. In general,
this will involve first hashing the "message to be signed" then
signing the hash, but the precise details may vary with the
specific signature algorithm. The result will be a sequence of
octets, the length of which MUST be equal to the value in the
"Signature Length" field.
</t>
<t>
@ -284,12 +296,12 @@
<section anchor="pki" title="Public Key Infrastructure Method">
<t>
Using a PKI, <xref target="RFC5280"/>, is almost the same as using
TOFU, but with one additional step: during verification of an OPEN
PDU, after extracting the Key field from the PDU but before
attempting to use it to verify the PDU's signature, the receiver
MUST verify the received key against the PKI to confirm that it's
an authorized key.
Using a PKI is almost the same as using TOFU, but with one
additional step: during verification of an OPEN PDU, after
extracting the Key field from the PDU but before attempting to use
it to verify the OPEN PDU signature, the receiver MUST verify the
received key against the PKI to confirm that it's an authorized
key.
</t>
<t>
@ -303,17 +315,18 @@
<t>
Verifying an OPEN PDU using the PKI method requires the public
key of the trust anchor, which the receiver uses to verify the
certificate, thereby demonstrating that the supplied is
certificate, thereby demonstrating that the supplied public key
represents an authorized L3DL speaker in this administrative
domain.
</t>
<t>
We use the term "certificate" here in the generic sense. These
are not X.509 certificates: X.509 is much more complicated than
we need for L3DL. The certificates used here are just
signatures of one key (the session key supplied in the Key field
of the OPEN PDU) by another key (the trust anchor).
We use the term "certificate" here in the generic sense, not as
defined in <xref target="RFC5280"/>. X.509 certificates are not
used here; X.509 certificates are more complicated than needed
for L3DL. The L3DL certificates are just signatures of one key
(the public key supplied in the Key field of the OPEN PDU) that
can be verified by another trusted public key (the trust anchor).
</t>
<section anchor="pki-open-signing" title="Signing OPEN PDU with PKI">
@ -372,17 +385,17 @@
<t>
Require TOFU: sender MUST supply key and receiver MUST
check, certificate not needed and ignored if sent.
check, but L3DL certificates not needed and ignored if sent.
</t>
<t>
Allow TOFU: sender must supply key and receiver MUST check,
Allow TOFU: sender MUST supply key and receiver MUST check,
receiver SHOULD check certificate if supplyed by sender.
</t>
<t>
Require PKI: sender MUST supply key and certificate,
receiver MUST check both.
Require PKI: sender MUST supply key and L3DL certificate,
receiver MUST check signature and verify the L3DL certificate.
</t>
</list>
@ -395,9 +408,13 @@
<t>Modern key management allows for agility in 'rolling' to a new
key or even algorithm in case of key expiry, key compromise, or
merely prudence. Declaring a new key with an L3DL OPEN PDU would
cause serious churn in topology as a new OPEN may cause a withdraw
of previously announced encapsulations. Therefore, a gentler
rekeying is needed.</t>
cause serious churn in topology as a new OPEN PDU may cause a
withdraw of previously announced encapsulations. Therefore, a
gentler rekeying is needed.</t>
<t>Prior to 'rolling' to a new key or new algorithm, a new public/private
key pair is generated. If PKI is being used, then the trust anchor
also signs the new public key to create a new L3DL certificate.</t>
<!--
protocol "Type = 8:8,Payload Length:16,New Key Algor:8,New Key Length:16,New Key ...:32,New Cert Length:16,New Certificate ...:32,Old Sig Type:8,Old Signature Length:16,Old Signature ...:40"
@ -408,7 +425,7 @@
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 8 | Payload Length | New Key Algor |
| Type = 8 | Payload Length | New Key Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| New Key Length | New Key ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@ -416,7 +433,7 @@
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| New Certificate ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Old Sig Type | Old Signature Length | |
| Old Key Type | Old Signature Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
| Old Signature ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
@ -424,14 +441,14 @@
</figure>
<t>The New Key Type, New Key Length, New Key, New Cert Length, and
New Certificate field declare the replacement algorithm suite,
key, and certificate.</t>
New Certificate fields declare the replacement algorithm, key, and
L3DL certificate.</t>
<t>The NEWKEY PDU is signed using the current (soon to be old)
algorithm suite and key.</t>
algorithm and key.</t>
<t>The sender and the receiver should be cautious of algorithm suite
downgrade attacks.</t>
<t>The sender and the receiver should be cautious of signature
algorithm downgrade attacks.</t>
<t>To avoid possible race conditions, the receiver SHOULD accept
signatures using either the new or old key for a configurable time
@ -441,16 +458,16 @@
<t>If the sender does not receive an ACK in the normal window,
including retransmission, then the sender MAY choose to allow a
session reset by either issuing a new OPEN or by letting the
session reset by either issuing a new OPEN PDU or by letting the
receiver eventually have a signature failure (error code 3) on a
PDU.</t>
<t>
The rekeying operation changes the session key and algorithm
suite described in <xref target="tofu-other-verifying"/>. The
NEWKEY PDU itself is verified using the old algorithm and
session key, subsequent PDUs are verified with the new algorithm
and session key recorded after the NEWKEY PDU has been accepted.
The rekeying operation changes the session key and the associated
algorithm described in <xref target="tofu-other-verifying"/>. The
NEWKEY PDU itself is verified using the old algorithm and session
key. After the NEWKEY PDU has been accepted, subsequent PDUs are
verified with the new algorithm and the new session key.
</t>
</section>
@ -464,19 +481,19 @@
And data integrity is a positive side effect of the signature
covering the payload.</t>
<t>The PKI-based method offers assurance that the certificate, and
hence the keying material, provided in the OPEN PDU are authorized
by a central authority, e.g. the network's network security team. The
<t>The PKI method offers assurance that the L3DL certificate, and
hence the public key, provided in the OPEN PDU are authorized
by a central authority, e.g. the network's security team. The
onward assurance of talking to the same peer and data integrity are
the same as in the TOFU method.</t>
<t>With the PKI-based method, automated device provisioning could
restrict which certificates are allowed from which peers
<t>With the PKI method, automated device provisioning could
restrict which L3DL certificates are allowed from which peers
on a per interface basis. This would complicate key rolls. Where
one draws the line between rigidity, flexibility, and security
varies.</t>
<t>The REKEY PDU is open to abuse to create an algorithm suite
<t>The REKEY PDU is open to abuse to create a signature algorithm
downgrade attack.</t>
</section>
@ -508,26 +525,26 @@
</section>
<section anchor="acks" title="Acknowledgments">
<t>The authors thank Russ Housley for advice and reviews.</t>
</section>
</middle>
<back>
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include="reference.RFC.5280"?>
<?rfc include="reference.RFC.8174"?>
<?rfc include="reference.I-D.ietf-lsvr-l3dl"?>
<reference anchor="IANA" target="https://www.iana.org/assignments/dns-sec-alg-numbers/dns-sec-alg-numbers.xhtml">
<front>
<title>DNS Security Algorithm Numbers</title>
<author/>
<date/>
</front>
</reference>
</references>
<!--
<references title="Informative References">
<?rfc include="reference.RFC.5280"?>
</references>
-->
</back>