draft-ietf-dhc-sedhcpv6-11.txt | draft-ietf-dhc-sedhcpv6-12.txt | |||
---|---|---|---|---|
DHC Working Group S. Jiang | DHC Working Group S. Jiang | |||
Internet-Draft Huawei Technologies Co., Ltd | Internet-Draft Huawei Technologies Co., Ltd | |||
Intended status: Standards Track L. Li | Intended status: Standards Track L. Li | |||
Expires: September 9, 2016 Y. Cui | Expires: October 26, 2016 Y. Cui | |||
Tsinghua University | Tsinghua University | |||
T. Jinmei | T. Jinmei | |||
Infoblox Inc. | Infoblox Inc. | |||
T. Lemon | T. Lemon | |||
Nominum, Inc. | Nominum, Inc. | |||
D. Zhang | D. Zhang | |||
March 8, 2016 | April 24, 2016 | |||
Secure DHCPv6 | Secure DHCPv6 | |||
draft-ietf-dhc-sedhcpv6-11 | draft-ietf-dhc-sedhcpv6-12 | |||
Abstract | Abstract | |||
The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) enables | The Dynamic Host Configuration Protocol for IPv6 (DHCPv6) enables | |||
DHCPv6 servers to pass configuration parameters. It offers | DHCPv6 servers to pass configuration parameters. It offers | |||
configuration flexibility. If not secured, DHCPv6 is vulnerable to | configuration flexibility. If not secured, DHCPv6 is vulnerable to | |||
various attacks. This document analyzes the security issues of | various attacks. This document analyzes the security issues of | |||
DHCPv6 and specifies the secure DHCPv6 mechanism for authentication | DHCPv6 and specifies the secure DHCPv6 mechanism for authentication | |||
and encryption of messages between a DHCPv6 client and a DHCPv6 | and encryption of messages between a DHCPv6 client and a DHCPv6 | |||
server. | server. | |||
skipping to change at page 1, line 43 ¶ | skipping to change at page 1, line 43 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 9, 2016. | This Internet-Draft will expire on October 26, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Requirements Language and Terminology . . . . . . . . . . . . 3 | 2. Requirements Language and Terminology . . . . . . . . . . . . 3 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. Security Issues of DHCPv6 . . . . . . . . . . . . . . . . . . 4 | 4. Security Issues of DHCPv6 . . . . . . . . . . . . . . . . . . 4 | |||
5. Secure DHCPv6 Overview . . . . . . . . . . . . . . . . . . . 5 | 5. Secure DHCPv6 Overview . . . . . . . . . . . . . . . . . . . 5 | |||
5.1. Solution Overview . . . . . . . . . . . . . . . . . . . . 5 | 5.1. Solution Overview . . . . . . . . . . . . . . . . . . . . 5 | |||
5.2. New Components . . . . . . . . . . . . . . . . . . . . . 6 | 5.2. New Components . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.3. Support for Algorithm Agility . . . . . . . . . . . . . . 7 | 5.3. Support for Algorithm Agility . . . . . . . . . . . . . . 7 | |||
5.4. Applicability . . . . . . . . . . . . . . . . . . . . . . 7 | 5.4. Applicability . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6. DHCPv6 Client Behavior . . . . . . . . . . . . . . . . . . . 8 | 6. DHCPv6 Client Behavior . . . . . . . . . . . . . . . . . . . 9 | |||
7. DHCPv6 Server Behavior . . . . . . . . . . . . . . . . . . . 11 | 7. DHCPv6 Server Behavior . . . . . . . . . . . . . . . . . . . 12 | |||
8. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 12 | 8. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 14 | |||
9. Processing Rules . . . . . . . . . . . . . . . . . . . . . . 12 | 9. Processing Rules . . . . . . . . . . . . . . . . . . . . . . 14 | |||
9.1. Timestamp Check . . . . . . . . . . . . . . . . . . . . . 12 | 9.1. Timestamp Check . . . . . . . . . . . . . . . . . . . . . 14 | |||
10. Extensions for Secure DHCPv6 . . . . . . . . . . . . . . . . 14 | 10. Extensions for Secure DHCPv6 . . . . . . . . . . . . . . . . 16 | |||
10.1. New DHCPv6 Options . . . . . . . . . . . . . . . . . . . 14 | 10.1. New DHCPv6 Options . . . . . . . . . . . . . . . . . . . 16 | |||
10.1.1. Certificate Option . . . . . . . . . . . . . . . . . 14 | 10.1.1. Certificate Option . . . . . . . . . . . . . . . . . 16 | |||
10.1.2. Timestamp Option . . . . . . . . . . . . . . . . . . 15 | 10.1.2. Signature option . . . . . . . . . . . . . . . . . . 17 | |||
10.1.3. Encrypted-message Option . . . . . . . . . . . . . . 16 | 10.1.3. Timestamp Option . . . . . . . . . . . . . . . . . . 18 | |||
10.2. New DHCPv6 Messages . . . . . . . . . . . . . . . . . . 17 | 10.1.4. Encrypted-message Option . . . . . . . . . . . . . . 18 | |||
10.3. Status Codes . . . . . . . . . . . . . . . . . . . . . . 17 | 10.2. New DHCPv6 Messages . . . . . . . . . . . . . . . . . . 19 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 10.3. Status Codes . . . . . . . . . . . . . . . . . . . . . . 20 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | |||
14. Change log [RFC Editor: Please remove] . . . . . . . . . . . 20 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 23 | |||
15. Open Issues [RFC Editor: Please remove] . . . . . . . . . . . 21 | 14. Change log [RFC Editor: Please remove] . . . . . . . . . . . 23 | |||
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 15. Open Issues [RFC Editor: Please remove] . . . . . . . . . . . 25 | |||
16.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 16. References . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
16.2. Informative References . . . . . . . . . . . . . . . . . 23 | 16.1. Normative References . . . . . . . . . . . . . . . . . . 25 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | 16.2. Informative References . . . . . . . . . . . . . . . . . 26 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 27 | ||||
1. Introduction | 1. Introduction | |||
The Dynamic Host Configuration Protocol for IPv6 (DHCPv6, [RFC3315]) | The Dynamic Host Configuration Protocol for IPv6 (DHCPv6, [RFC3315]) | |||
enables DHCPv6 servers to pass configuration parameters and offers | enables DHCPv6 servers to pass configuration parameters and offers | |||
configuration flexibility. If not being secured, DHCPv6 is | configuration flexibility. If not being secured, DHCPv6 is | |||
vulnerable to various attacks. | vulnerable to various attacks. | |||
This document analyzes the security issues of DHCPv6 and provides the | This document analyzes the security issues of DHCPv6 and provides the | |||
following mechanisms for improving the security of DHCPv6 between the | following mechanisms for improving the security of DHCPv6 between the | |||
skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 33 ¶ | |||
Note: this secure mechanism in this document does not protect outer | Note: this secure mechanism in this document does not protect outer | |||
options in Relay-Forward and Relay-Reply messages, either added by a | options in Relay-Forward and Relay-Reply messages, either added by a | |||
relay agent toward a server or added by a server toward a relay | relay agent toward a server or added by a server toward a relay | |||
agent. Communication between a server and a relay agent, and | agent. Communication between a server and a relay agent, and | |||
communications between relay agents, may be secured through the use | communications between relay agents, may be secured through the use | |||
of IPsec, as described in section 21.1 in [RFC3315]. | of IPsec, as described in section 21.1 in [RFC3315]. | |||
The security mechanism specified in this document achieves DHCPv6 | The security mechanism specified in this document achieves DHCPv6 | |||
authentication and encryption based on the sender's certificate. We | authentication and encryption based on the sender's certificate. We | |||
introduce two new DHCPv6 messages: Encrypted-Query message and | introduce two new DHCPv6 messages: Encrypted-Query message and | |||
Encrypted-Response message and three new DHCPv6 options: Certificate | Encrypted-Response message and Four new DHCPv6 options: Certificate | |||
option, Timestamp option and Encrypted-message option for DHCPv6 | option, Signature option, Timestamp option and Encrypted-message | |||
authentication and encryption. The Certificate option is used for | option for DHCPv6 authentication and encryption. The Certificate | |||
DHCPv6 authentication. The Encryption-Query message, Encryption- | option, Signature option, Timestamp option are used for DHCPv6 | |||
Response message and Encrypted-message option are used for DHCPv6 | client/server authentication. The Encryption-Query message, | |||
encryption. The timestamp option is used to defend against replay | Encryption-Response message and Encrypted-message option are used for | |||
attack. | DHCPv6 encryption. | |||
2. Requirements Language and Terminology | 2. Requirements Language and Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119] when they | document are to be interpreted as described in [RFC2119] when they | |||
appear in ALL CAPS. When these words are not in ALL CAPS (such as | appear in ALL CAPS. When these words are not in ALL CAPS (such as | |||
"should" or "Should"), they have their usual English meanings, and | "should" or "Should"), they have their usual English meanings, and | |||
are not to be interpreted as [RFC2119] key words. | are not to be interpreted as [RFC2119] key words. | |||
skipping to change at page 5, line 12 ¶ | skipping to change at page 5, line 19 ¶ | |||
DHCPv6 encryption defends against passive attacks, such as pervasive | DHCPv6 encryption defends against passive attacks, such as pervasive | |||
monitoring attack. | monitoring attack. | |||
5. Secure DHCPv6 Overview | 5. Secure DHCPv6 Overview | |||
5.1. Solution Overview | 5.1. Solution Overview | |||
This solution provides authentication and encryption mechanisms based | This solution provides authentication and encryption mechanisms based | |||
on the certificates of the DHCPv6 client and server. Before the | on the certificates of the DHCPv6 client and server. Before the | |||
standard DHCPv6 configuration process, the Information-request and | standard DHCPv6 configuration process, the Information-request and | |||
Reply messages are exchanged to select one authenticated DHCPv6 | Reply messages are exchanged to select the authenticated DHCPv6 | |||
server. After the mutual authentication between the DHCPv6 client | server. After mutual authentication between the DHCPv6 client and | |||
and server, the following DHCPv6 configuration process is encrypted | server, the following DHCPv6 configuration process is encrypted to | |||
to avoid the privacy information disclosure. We introduce two new | avoid the privacy information disclosure. We introduce two new | |||
DHCPv6 messages: Encrypted-Query message, Encrypted-Response message | DHCPv6 messages: Encrypted-Query message, Encrypted-Response message | |||
and three new DHCPv6 options: Encrypted-message option, Certificate | and four new DHCPv6 options: Encrypted-message option, Certificate | |||
option, Timestamp option. Based on the new defined messages and | option, Signature option, Timestamp option. Based on the new defined | |||
options, the corresponding authentication and encryption mechanisms | messages and options, the corresponding authentication and encryption | |||
are achieved. | mechanisms are achieved. | |||
The following figure illustrates secure DHCPv6 procedure. The DHCPv6 | The following figure illustrates secure DHCPv6 procedure. The DHCPv6 | |||
client first sends an Information-request message to the standard | client first sends Information-request message as per [RFC3315]. The | |||
multicast address to all DHCPv6 servers. The Information-request | Information-request message is used to request the servers for the | |||
message is used to request the servers for the servers' certificates | servers' certificates information, without going through any address, | |||
information, without going through any address, prefix or non- | prefix or non-security option assignment process. The Information- | |||
security option assignment process. The Information-request is sent | request contains no DHCPv6 options except ORO option to avoid | |||
without any client's private information, such as Client Identifier | client's privacy information disclosure. When receiving the | |||
option or the Certificate option, to minimize client's privacy | Information-request message, the server sends the Reply message that | |||
information leakage. When receiving the Information-request message, | contains the server's Certificate option, Signature option, Timestamp | |||
the server sends the Reply message that contains the server's | option and Server Identifier option. Upon the receipt of the Reply | |||
Certificate option and Server Identifier option. Upon the receipt of | message, the DHCPv6 client verifies the server's identity according | |||
the Reply message, the DHCPv6 client verifies the server's identity | to the contained options in the Reply message. If there are multiple | |||
according to the contained certificate in the Reply message. If | authenticated DHCPv6 server certs, the client selects one | |||
there are multiple authenticated DHCPv6 servers, the client selects | authenticated DHCPv6 server for the following DHCPv6 configuration | |||
one authenticated DHCPv6 server for the following DHCPv6 | process. If there are no authenticated DHCPv6 server cert or | |||
configuration process. If there are no authenticated DHCPv6 servers | existing server certs fails authentication, the client should retry a | |||
or existing servers failed authentication, the client should retry a | ||||
number of times. In this way, it is difficult for a rogue server to | number of times. In this way, it is difficult for a rogue server to | |||
beat out a busy "real" server. And then the client takes some other | beat out a busy "real" server. And then the client takes some other | |||
alternative action depending on its local policy. | alternative action depending on its local policy. | |||
After the server's authentication, the first DHCPv6 message sent from | After the server's authentication, the first DHCPv6 message sent from | |||
the client to the server, such as Solicit message, contains the | the client to the server, such as Solicit message, contains the | |||
client's Certificate information for client authentication. The | client's Certificate information for client authentication. The | |||
DHCPv6 client sends the Encrypted-Query message to server, which | DHCPv6 client sends the Encrypted-Query message to server, which | |||
carries the Encrypted-message option and the Server Identifier | carries the Encrypted-message option and the Server Identifier | |||
option. The Encrypted-message option contains the encrypted DHCPv6 | option. The Encrypted-message option contains the encrypted DHCPv6 | |||
skipping to change at page 6, line 14 ¶ | skipping to change at page 6, line 19 ¶ | |||
Certificate option, the DHCPv6 server verifies the client's identity | Certificate option, the DHCPv6 server verifies the client's identity | |||
according to the contained client certificate information. | according to the contained client certificate information. | |||
After the client's authentication, the server sends the Encrypted- | After the client's authentication, the server sends the Encrypted- | |||
Response message to the client, which contains the Encrypted-message | Response message to the client, which contains the Encrypted-message | |||
option. The Encrypted-message option contains the encrypted DHCPv6 | option. The Encrypted-message option contains the encrypted DHCPv6 | |||
message sent from server to client, which is encrypted using the | message sent from server to client, which is encrypted using the | |||
client's public key. If the message fails client authentication, | client's public key. If the message fails client authentication, | |||
then the server sends the corresponding error status code to the | then the server sends the corresponding error status code to the | |||
client. During the encrypted DHCPv6 configuration process, the | client. During the encrypted DHCPv6 configuration process, the | |||
timestamp option can be contained in the encrypted DHCPv6 messages to | Timestamp option can be contained in the encrypted DHCPv6 messages to | |||
defend against replay attacks. | defend against replay attacks. | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
|DHCPv6 Client| |DHCPv6 Server| | |DHCPv6 Client| |DHCPv6 Server| | |||
+-------------+ +-------------+ | +-------------+ +-------------+ | |||
| Information-request | | | Information-request | | |||
|----------------------------------------->| | |----------------------------------------->| | |||
| Option Request option | | | Option Request option | | |||
| | | | | | |||
| Reply | | | Reply | | |||
|<-----------------------------------------| | |<-----------------------------------------| | |||
| Certificate option | | | Certificate option | | |||
| Signature option | | ||||
| Timestamp option | | ||||
| Server Identifier option | | | Server Identifier option | | |||
| | | | | | |||
| Encryption-Query | | | Encryption-Query | | |||
|----------------------------------------->| | |----------------------------------------->| | |||
| Encrypted-message option | | | Encrypted-message option | | |||
| Server Identifier option | | | Server Identifier option | | |||
| | | | | | |||
| Encryption-Response | | | Encryption-Response | | |||
|<-----------------------------------------| | |<-----------------------------------------| | |||
| Encrypted-message option | | | Encrypted-message option | | |||
skipping to change at page 7, line 5 ¶ | skipping to change at page 7, line 15 ¶ | |||
5.2. New Components | 5.2. New Components | |||
The new components of the mechanism specified in this document are as | The new components of the mechanism specified in this document are as | |||
follows: | follows: | |||
o Servers and clients that use certificates first generate a public/ | o Servers and clients that use certificates first generate a public/ | |||
private key pair and then obtain a certificate that signs the | private key pair and then obtain a certificate that signs the | |||
public key. The Certificate option is defined to carry the | public key. The Certificate option is defined to carry the | |||
certificate of the sender. | certificate of the sender. | |||
o A signature generated using the private key which is used by the | ||||
receiver to verify the integrity of the DHCPv6 messages and then | ||||
authentication of the client/server. Another option is defined to | ||||
carry the signature. | ||||
o A timestamp that can be used to detect replayed packet. The | o A timestamp that can be used to detect replayed packet. The | |||
Timestamp option is defined to carry the current time of the | Timestamp option is defined to carry the current time of the | |||
client/server. The secure DHCPv6 client/server need to meet some | client/server. The secure DHCPv6 client/server need to meet some | |||
accuracy requirements and be synced to global time, while the | accuracy requirements and be synced to global time, while the | |||
timestamp checking mechanism allows a configurable time value for | timestamp checking mechanism allows a configurable time value for | |||
clock drift. The real time provision is out of scope of this | clock drift. The real time provision is out of scope of this | |||
document. | document. | |||
o The Encrypted-message option that contains the encrypted DHCPv6 | o The Encrypted-message option that contains the encrypted DHCPv6 | |||
message. | message. | |||
skipping to change at page 7, line 27 ¶ | skipping to change at page 7, line 42 ¶ | |||
client to the secure DHCPv6 server. The Encrypted-Query message | client to the secure DHCPv6 server. The Encrypted-Query message | |||
contains the Encrypted-message option and Server Identifier | contains the Encrypted-message option and Server Identifier | |||
option. | option. | |||
o The Encrypted-Response message that is sent from the secure DHCPv6 | o The Encrypted-Response message that is sent from the secure DHCPv6 | |||
server to the secure DHCPv6 client. The Encrypted-Response | server to the secure DHCPv6 client. The Encrypted-Response | |||
message contains the Encrypted-message option. | message contains the Encrypted-message option. | |||
5.3. Support for Algorithm Agility | 5.3. Support for Algorithm Agility | |||
Encryption algorithm is used for DHCPv6 encryption to defend against | In order to provide a means of addressing problems that may emerge in | |||
passive attack. In order to provide a means of addressing problems | the future with existing hash algorithms, as recommended in | |||
that may emerge in the future with existing encryption algorithms, | [RFC4270], this document provides a mechanism for negotiating the use | |||
this document provides a mechanism for negotiating the use of more | of more secure hashes in the future. | |||
encryption algorithms in the future. | ||||
In addition to hash algorithm agility, this document also provides a | ||||
mechanism for signature algorithm and encryption algorithm agility. | ||||
The support for algorithm agility in this document is mainly a | The support for algorithm agility in this document is mainly a | |||
unilateral notification mechanism from sender to recipient. A | unilateral notification mechanism from sender to recipient. A | |||
recipient MAY support various algorithms simultaneously among | recipient MAY support various algorithms simultaneously among | |||
different senders, and the different senders in a same administrative | different senders, and the different senders in a same administrative | |||
domain may be allowed to use various algorithms simultaneously. It | domain may be allowed to use various algorithms simultaneously. It | |||
is NOT RECOMMENDED that the same sender and recipient use various | is NOT RECOMMENDED that the same sender and recipient use various | |||
algorithms in a single communication session. | algorithms in a single communication session. | |||
If the server does not support the algorithm used by the client, the | If the server does not support the algorithm used by the client, the | |||
server SHOULD reply with an AlgorithmNotSupported status code | server SHOULD reply with an AlgorithmNotSupported status code | |||
(defined in Section 10.3) to the client. Upon receiving this status | (defined in Section 10.3) to the client. Upon receiving this status | |||
code, the client MAY resend the message protected with the mandatory | code, the client MAY resend the message protected with the mandatory | |||
algorithm (defined in Section 10.1.1). | algorithm. | |||
5.4. Applicability | 5.4. Applicability | |||
In principle, Secure DHCPv6 is applicable in any environment where | In principle, Secure DHCPv6 is applicable in any environment where | |||
physical security on the link is not assured and attacks on DHCPv6 | physical security on the link is not assured and attacks on DHCPv6 | |||
are a concern. In practice, however, it will rely on some | are a concern. In practice, however, it will rely on some | |||
operational assumptions mainly regarding public key distribution and | operational assumptions mainly regarding public key distribution and | |||
management, until more lessons are learned and more experiences are | management, until more lessons are learned and more experiences are | |||
achieved. | achieved. | |||
skipping to change at page 8, line 40 ¶ | skipping to change at page 9, line 10 ¶ | |||
deployed. But such a deployment requires more general issues with | deployed. But such a deployment requires more general issues with | |||
PKI deployment be addressed, and it is currently unknown whether we | PKI deployment be addressed, and it is currently unknown whether we | |||
can find practical deployment scenarios. It is subject to future | can find practical deployment scenarios. It is subject to future | |||
study and experiments, and out of scope of this document. | study and experiments, and out of scope of this document. | |||
6. DHCPv6 Client Behavior | 6. DHCPv6 Client Behavior | |||
For the secure DHCPv6 client, a certificate is needed for client | For the secure DHCPv6 client, a certificate is needed for client | |||
authentication. The client is pre-configured with a certificate and | authentication. The client is pre-configured with a certificate and | |||
its corresponding private key. If the client is pre-configured with | its corresponding private key. If the client is pre-configured with | |||
public key not certificate, it can generate the self-signed | public key but not with a certificate, it can generate the self- | |||
certificate for client authentication. | signed certificate for client authentication. | |||
The secure DHCPv6 client multicasts the Information-request message | The secure DHCPv6 client sends Information-request message as per | |||
to the DHCPv6 servers. The Information-request message MUST NOT | [RFC3315]. The Information-request message is used by the DHCPv6 | |||
include any option which may reveal the private information of the | client to request the server's identity verification information | |||
client, such as the Client Identifier option or the Certificate | without having addresses, prefixes or any non-security options | |||
option. The Information-request message is used by the DHCPv6 client | assigned to it. The Information-request message MUST NOT include any | |||
to request the server's identity verification information without | DHCPv6 options except ORO option to minimize client's privacy | |||
having addresses, prefixes or any non-security options assigned to | information leakage. The Option Request option in the Information- | |||
it. The Option Request option in the Information-request message | request message MUST contain the option code of the Certificate | |||
MUST contain the option code of the Certificate option. | option. | |||
When receiving the Reply messages from DHCPv6 servers, a secure | When receiving the Reply messages from DHCPv6 servers, a secure | |||
DHCPv6 client SHOULD discard any DHCPv6 messages when the Certificate | DHCPv6 client discards any DHCPv6 messages that meet any of the | |||
option or Server Identifier option is missing. And then the client | following conditions: | |||
SHOULD first check the support of the encryption algorithm that the | ||||
server used. If the check fails, the Reply message SHOULD be | ||||
dropped. If the encryption algorithm is supported, the client then | ||||
checks the authority of this server. The client SHOULD also use the | ||||
same algorithms in the return messages. | ||||
The client SHOULD validate the certificate according to the rules | o the Signature option is missing, | |||
defined in [RFC5280]. An implementation may create a local trust | ||||
certificate record for verified certificates in order to avoid | o multiple Signature options are present, | |||
repeated verification procedure in the future. A certificate that | ||||
o the Certificate option is missing. | ||||
And then the client first checks the support of the hash function, | ||||
signature algorithm and encryption algorithm that the server used. | ||||
If the check fails, the Reply message is dropped. If all the | ||||
algorithms are supported, the client then checks the authority of | ||||
this server. The client also uses the same algorithms in the return | ||||
messages. | ||||
The client validates the certificates through the pre-configured | ||||
local trusted certificates list or other methods. A certificate that | ||||
finds a match in the local trust certificate list is treated as | finds a match in the local trust certificate list is treated as | |||
verified. The message transaction-id is used as the identifier of | verified. If the client want to check server's certificate to see | |||
the authenticated server's public key for encryption. At this point, | whether it has been revoked, the OCSP stapling can be used. The | |||
the client has either recognized the certificate of the server, or | message transaction-id is used as the identifier of the authenticated | |||
decided to drop the message. | server's public key for encryption. At this point, the client has | |||
either recognized the certificate of the server, or decided to drop | ||||
the message. | ||||
The client MUST now authenticate the server by verifying the | ||||
signature and checking timestamp (see details in Section 9.1), if | ||||
there is a Timestamp option. The order of two procedures is left as | ||||
an implementation decision. It is RECOMMENDED to check timestamp | ||||
first, because signature verification is much more computationally | ||||
expensive. | ||||
The Signature field verification MUST show that the signature has | ||||
been calculated as specified in Section 10.1.2. Only the messages | ||||
that get through both the signature verification and timestamp check | ||||
(if there is a Timestamp option) are accepted. Reply message that | ||||
does not pass the above tests MUST be discarded. | ||||
If there are multiple authenticated DHCPv6 servers, the client | If there are multiple authenticated DHCPv6 servers, the client | |||
selects one DHCPv6 server for the following network parameters | selects one DHCPv6 server for the following network parameters | |||
configuration. The client can also choose other implementation | configuration. The client can also choose other implementation | |||
method depending on the client's local policy if the defined protocol | method depending on the client's local policy if the defined protocol | |||
can also run normally. For example, the client can try multiple | can also run normally. For example, the client can try multiple | |||
transactions (each with different server) at the "same" time. If | transactions (each encrypted with different public key) at the "same" | |||
there are no authenticated DHCPv6 servers or existing servers failed | time. If there are no authenticated DHCPv6 servers or existing | |||
authentication, the client should retry a number of times. In this | servers failed authentication, the client should retry a number of | |||
way, it is difficult for the rogue server to beat out a busy "real" | times. In this way, it is difficult for the rogue server to beat out | |||
server. And then the client takes some alternative action depending | a busy "real" server. And then the client takes some alternative | |||
on its local policy, such as attempting to use an unsecured DHCPv6 | action depending on its local policy, such as attempting to use an | |||
server. The client conducts the server discovery process as per | unsecured DHCPv6 server. The client conducts the server discovery | |||
section 18.1.5 of [RFC3315] to avoid the packet storm. | process as per section 18.1.5 of [RFC3315] to avoid the packet storm. | |||
Once the server has been authenticated, the DHCPv6 client sends the | Once the server has been authenticated, the DHCPv6 client sends the | |||
Encrypted-Query message to the DHCPv6 server. The Encrypted-Query | Encrypted-Query message to the DHCPv6 server. The Encrypted-Query | |||
message contains the Encrypted-message option, which MUST be | message contains the Encrypted-message option, which MUST be | |||
constructed as explained in Section 10.1.3, and Server Identifier | constructed as explained in Section 10.1.4, and Server Identifier | |||
option. The Encrypted-message option contains the DHCPv6 message | option. The Encrypted-message option contains the DHCPv6 message | |||
that is encrypted using the selected server's public key. The Server | that is encrypted using the selected server's public key. The Server | |||
Identifier option is externally visible to avoid decryption cost by | Identifier option is externally visible to avoid decryption cost by | |||
those unselected servers. | those unselected servers. | |||
For the encrypted DHCPv6 message sent from the DHCPv6 client to the | For the encrypted DHCPv6 message sent from the DHCPv6 client to the | |||
DHCPv6 server, the first DHCPv6 message, such as Solicit message, | DHCPv6 server, the first DHCPv6 message, such as Solicit message, | |||
MUST contain the Certificate option for client authentication. The | MUST contain the Certificate option, Signature option and Timestamp | |||
Certificate option MUST be constructed as explained in | option for client authentication. The Certificate option MUST be | |||
Section 10.1.1. If the client have multiple certificate with | constructed as explained in Section 10.1.1. In addition, one and | |||
different public/private key pairs, the message transaction-id is | only one Signature option MUST be contained, which MUST be | |||
used as the identifier of the client's private key for decryption. | constructed as explained in Section 10.1.2. One and only one | |||
In addition, the encrypted DHCPv6 message can contain the timestamp | Timestamp option SHOULD be contained, which MUST be constructed as | |||
option to defend against replay attacks. The timestamp option MUST | explained in Section 10.1.3. The Timestamp field SHOULD be set to | |||
be constructed as explained in Section 10.1.2. | the current time, according to sender's real time clock. | |||
If the client has multiple certificates with different public/private | ||||
key pairs, the message transaction-id is used as the identifier of | ||||
the client's private key for decryption. In addition, the subsequent | ||||
encrypted DHCPv6 message can contain the Timestamp option to defend | ||||
against replay attack. | ||||
For the received Encrypted-Response message, the client extracts the | For the received Encrypted-Response message, the client extracts the | |||
Encrypted-message option and decrypts it using its private key to | Encrypted-message option and decrypts it using its private key to | |||
obtain the original DHCPv6 message. Then it handles the message as | obtain the original DHCPv6 message. Then it handles the message as | |||
per [RFC3315]. If the decrypted DHCPv6 message contains the | per [RFC3315]. If the decrypted DHCPv6 message contains the | |||
timestamp option, the DHCPv6 client checks the timestamp according to | Timestamp option, the DHCPv6 client checks the timestamp according to | |||
the rule defined in Section 9.1. The DHCPv6 message, which fails the | the rule defined in Section 9.1. The DHCPv6 message, which fails the | |||
timestamp check, MUST be discarded. If the client fails to get the | timestamp check, MUST be discarded. If the client fails to get the | |||
proper parameters from the chosen server, it sends the Encrypted- | proper parameters from the chosen server, it sends the Encrypted- | |||
Query message to another authenticated server for parameters | Query message to another authenticated server for parameters | |||
configuration until the client obtains the proper parameters. | configuration until the client obtains the proper parameters. | |||
When the client receives a Reply message with an error status code, | When the client receives a Reply message with an error status code, | |||
the error status code indicates the failure reason on the server | the error status code indicates the failure reason on the server | |||
side. According to the received status code, the client MAY take | side. According to the received status code, the client MAY take | |||
follow-up action: | follow-up action: | |||
skipping to change at page 11, line 5 ¶ | skipping to change at page 11, line 49 ¶ | |||
o Upon receiving a DecryptionFail error status code, the client MAY | o Upon receiving a DecryptionFail error status code, the client MAY | |||
resend the message following normal retransmission routines | resend the message following normal retransmission routines | |||
defined in [RFC3315]. | defined in [RFC3315]. | |||
o Upon receiving a TimestampFail error status code, the client MAY | o Upon receiving a TimestampFail error status code, the client MAY | |||
resend the message with an adjusted timestamp according to the | resend the message with an adjusted timestamp according to the | |||
returned clock from the DHCPv6 server. The client SHOULD NOT | returned clock from the DHCPv6 server. The client SHOULD NOT | |||
change its own clock, but only compute an offset for the | change its own clock, but only compute an offset for the | |||
communication session. | communication session. | |||
o Upon receiving a SignatureFail error status code, the client MAY | ||||
resend the message following normal retransmission routines | ||||
defined in [RFC3315]. | ||||
7. DHCPv6 Server Behavior | 7. DHCPv6 Server Behavior | |||
For the secure DHCPv6 server, a certificate is need for server | For the secure DHCPv6 server, a certificate is needed for server | |||
authentication. The server is pre-configured with a certificate and | authentication. The server is pre-configured with a certificate and | |||
its corresponding private key. If the server is pre-configured with | its corresponding private key. If the server is pre-configured with | |||
public key not certificate, it can generate the self-signed | public key but not with a certificate, it can generate the self- | |||
certificate for server authentication. | signed certificate for server authentication. | |||
When the DHCPv6 server receives the Information-request message and | When the DHCPv6 server receives the Information-request message and | |||
the contained Option Request option identifies the request is for the | the contained Option Request option identifies the request is for the | |||
server certificate information, it replies with a Reply message to | server certificate information, it replies with a Reply message to | |||
the client. The Reply message MUST contain the requested Certificate | the client. The Reply message MUST contain the requested Certificate | |||
option, which MUST be constructed as explained in Section 10.1.1, and | option, which MUST be constructed as explained in Section 10.1.1, and | |||
Server Identifier option. | Server Identifier option. In addition, the Reply message MUST | |||
contain one and only one Signature option, which MUST be constructed | ||||
as explained in Section 10.1.2. Besides, the Reply message SHOULD | ||||
contain one and only one Timestamp option, which MUST be constructed | ||||
as explained in Section 10.1.3. The Timestamp field SHOULD be set to | ||||
the current time, according to server's real time clock. | ||||
Upon the receipt of Encrypted-Query message, the server checks the | Upon the receipt of Encrypted-Query message, the server checks the | |||
Server Identifier option. It decrypts the Encrypted-message option | Server Identifier option. It decrypts the Encrypted-message option | |||
using its private key if it is the target server. The DHCPv6 server | using its private key if it is the target server. The DHCPv6 server | |||
drops the message that is not for it, thus not paying cost to decrypt | drops the message that is not for it, thus not paying cost to decrypt | |||
messages not for it. | messages not for it. | |||
If the decrypted message is a Solicit/Information-request message, | If the decrypted message is a Solicit/Information-request message, | |||
the secure DHCPv6 server SHOULD discard the received message if the | the secure DHCPv6 server discards the received message that meets any | |||
Certificate option is missing. In such failure, the server SHOULD | of the following conditions: | |||
reply with an UnspecFail (value 1, [RFC3315]) error status code. | ||||
If a Certificate option is provided, the server SHOULD first check | o the Signature option is missing, | |||
the support of the encryption algorithm that the client used. If the | ||||
check fails, the server SHOULD reply with an AlgorithmNotSupported | ||||
error status code, defined in Section 10.3 back to the client. If | ||||
the encryption algorithm is supported, the server then checks the | ||||
authority of this client. | ||||
The server SHOULD validate the certificate according to the rules | o multiple Signature options are present, | |||
defined in [RFC5280]. An implementation may create a local trust | ||||
certificate record for verified certificates in order to avoid | ||||
repeated verification procedure in the future. A certificate that | ||||
finds a match in the local trust certificate list is treated as | ||||
verified. The message that fails certificate validation MUST be | ||||
dropped. In such failure, the DHCPv6 server SHOULD reply with an | ||||
AuthenticationFail error status code, defined in Section 10.3, back | ||||
to the client. At this point, the server has either recognized the | ||||
authentication of the client, or decided to drop the message. | ||||
If the decrypted message contains the timestamp option, the server | o the Certificate option is missing. | |||
In such failure, the server replies with an UnspecFail (value 1, | ||||
[RFC3315]) error status code. | ||||
The server SHOULD first check the support of the hash function, | ||||
signature algorithm, encryption algorithm that the client used. If | ||||
the check fails, the server SHOULD reply with an | ||||
AlgorithmNotSupported error status code, defined in Section 10.3, | ||||
back to the client. If all the algorithms are supported, the server | ||||
then checks the authority of this client. | ||||
The server validates the client's public key through the local pre- | ||||
configured trusted public keys list. A public key that finds a match | ||||
in the local trust public keys list is treated as verified. The | ||||
message that fails public key validation MUST be dropped. In such | ||||
failure, the DHCPv6 server replies with an AuthenticationFail error | ||||
status code, defined in Section 10.3, back to the client. At this | ||||
point, the server has either recognized the authentication of the | ||||
client, or decided to drop the message. | ||||
If the decrypted message contains the Timestamp option, the server | ||||
checks the timestamp according to the rule defined in Section 9.1. | checks the timestamp according to the rule defined in Section 9.1. | |||
If the timestamp check fails, a TimestampFail error status code, | If the timestamp check fails, a TimestampFail error status code, | |||
defined in Section 10.3, should be sent back to the client. | defined in Section 10.3, should be sent back to the client. | |||
Depending on server's local policy, the message without a Timestamp | Depending on server's local policy, the message without a Timestamp | |||
option MAY be acceptable or rejected. If the server rejects such a | option MAY be acceptable or rejected. If the server rejects such a | |||
message, a TimestampFail error status code should be sent back to the | message, a TimestampFail error status code should be sent back to the | |||
client. The Reply message that carries the TimestampFail error | client. The Reply message that carries the TimestampFail error | |||
status code SHOULD carry a timestamp option, which indicates the | status code carries a Timestamp option, which indicates the server's | |||
server's clock for the client to use. | clock for the client to use. | |||
If the server does not send the Timestamp option, the client ignores | ||||
the timestamp check and verifies the signature. If there is a | ||||
timestamp option, the server MUST now authenticate the client by | ||||
verifying the signature and checking timestamp (see details in | ||||
Section 9.1). The order of two procedures is left as an | ||||
implementation decision. It is RECOMMENDED to check timestamp first, | ||||
because signature verification is much more computationally | ||||
expensive. Depending on server's local policy, the message without a | ||||
Timestamp option MAY be acceptable or rejected. If the server | ||||
rejects such a message, a TimestampFail error status code, defined in | ||||
Section 10.3, should be sent back to the client. The reply message | ||||
that carries the TimestampFail error status code SHOULD carry a | ||||
Timestamp option, which indicates the server's clock for the client | ||||
to use. | ||||
The Signature field verification MUST show that the signature has | ||||
been calculated as specified in Section 10.1.2. Only the clients | ||||
that get through both the signature verification and timestamp check | ||||
(if there is a Timestamp option) are accepted as authenticated | ||||
clients and continue to be handled their message as defined in | ||||
[RFC3315]. Clients that do not pass the above tests MUST be treated | ||||
as unauthenticated clients. The DHCPv6 server SHOULD reply a | ||||
SignatureFail error status code, defined in Section 10.3, for the | ||||
signature verification failure; or a TimestampFail error status code, | ||||
defined in Section 10.3, for the timestamp check failure, back to the | ||||
client. | ||||
Once the client has been authenticated, the DHCPv6 server sends the | Once the client has been authenticated, the DHCPv6 server sends the | |||
Encrypted-response message to the DHCPv6 client. The Encrypted- | Encrypted-response message to the DHCPv6 client. The Encrypted- | |||
response message contains the Encrypted-message option, which MUST be | response message contains the Encrypted-message option, which MUST be | |||
constructed as explained in Section 10.1.3. The Encrypted-message | constructed as explained in Section 10.1.4. The Encrypted-message | |||
option contains the encrypted DHCPv6 message that is encrypted using | option contains the encrypted DHCPv6 message that is encrypted using | |||
the authenticated client's public key. To provide the replay | the authenticated client's public key. To provide the replay | |||
protection, the timestamp option can be contained in the encrypted | protection, the Timestamp option can be contained in the encrypted | |||
DHCPv6 message. | DHCPv6 message. | |||
8. Relay Agent Behavior | 8. Relay Agent Behavior | |||
When a DHCPv6 relay agent receives an Encrypted-query or Encrypted- | When a DHCPv6 relay agent receives an Encrypted-query or Encrypted- | |||
response message, it may not recognize this message. The unknown | response message, it may not recognize this message. The unknown | |||
messages MUST be forwarded as described in [RFC7283]. | messages MUST be forwarded as described in [RFC7283]. | |||
When a DHCPv6 relay agent recognizes the Encrypted-query and | When a DHCPv6 relay agent recognizes the Encrypted-query and | |||
Encrypted-response messages, it forwards the message according to | Encrypted-response messages, it forwards the message according to | |||
section 20 of [RFC3315]. There is nothing more the relay agents have | section 20 of [RFC3315]. There is nothing more the relay agents have | |||
to do, it neither needs to verify the messages from client or server, | to do, it neither needs to verify the messages from client or server, | |||
nor add any secure DHCPv6 options. Actually, by definition in this | nor add any secure DHCPv6 options. Actually, by definition in this | |||
document, relay agents MUST NOT add any secure DHCPv6 options. | document, relay agents MUST NOT add any secure DHCPv6 options. | |||
Relay-forward and Relay-reply messages MUST NOT contain any | Relay-forward and Relay-reply messages MUST NOT contain any | |||
additional Certificate option or Timestamp option, aside from those | additional Certificate option or Timestamp option, aside from those | |||
present in the innermost encapsulated messages from the client or | present in the innermost encapsulated messages from the client or | |||
server. | server. | |||
Relay agent is RECOMMENDED to cache server announcements to form the | ||||
list of the available DHCPv6 server certs. If the relay agent | ||||
receives the Information-request message, then it replies with a list | ||||
of server certs available locally. In this way, the client can be | ||||
confident of a quick response, and therefore treat the lack of a | ||||
quick response as an indication that no authenticated DHCP servers | ||||
exist. | ||||
9. Processing Rules | 9. Processing Rules | |||
9.1. Timestamp Check | 9.1. Timestamp Check | |||
In order to check the Timestamp option, defined in Section 10.1.2, | In order to check the Timestamp option, defined in Section 10.1.3, | |||
recipients SHOULD be configured with an allowed timestamp Delta | recipients SHOULD be configured with an allowed timestamp Delta | |||
value, a "fuzz factor" for comparisons, and an allowed clock drift | value, a "fuzz factor" for comparisons, and an allowed clock drift | |||
parameter. The recommended default value for the allowed Delta is | parameter. The recommended default value for the allowed Delta is | |||
300 seconds (5 minutes); for fuzz factor 1 second; and for clock | 300 seconds (5 minutes); for fuzz factor 1 second; and for clock | |||
drift, 0.01 second. | drift, 0.01 second. | |||
Note: the Timestamp mechanism is based on the assumption that | Note: the Timestamp mechanism is based on the assumption that | |||
communication peers have roughly synchronized clocks, within certain | communication peers have roughly synchronized clocks, within certain | |||
allowed clock drift. So, an accurate clock is not necessary. If one | allowed clock drift. So, an accurate clock is not necessary. If one | |||
has a clock too far from the current time, the timestamp mechanism | has a clock too far from the current time, the timestamp mechanism | |||
would not work. | would not work. | |||
To facilitate timestamp checking, each recipient SHOULD store the | To facilitate timestamp checking, each recipient SHOULD store the | |||
following information for each sender, from which at least one | following information for each sender, from which at least one | |||
accepted secure DHCPv6 message is successfully verified (for | accepted secure DHCPv6 message is successfully verified (for | |||
timestamp check): | timestamp check and signature verification): | |||
o The receive time of the last received and accepted DHCPv6 message. | o The receive time of the last received and accepted DHCPv6 message. | |||
This is called RDlast. | This is called RDlast. | |||
o The timestamp in the last received and accepted DHCPv6 message. | o The timestamp in the last received and accepted DHCPv6 message. | |||
This is called TSlast. | This is called TSlast. | |||
A verified (for timestamp check) secure DHCPv6 message initiates the | A verified (for timestamp check and signature verification) secure | |||
update of the above variables in the recipient's record. | DHCPv6 message initiates the update of the above variables in the | |||
recipient's record. | ||||
Recipients MUST check the Timestamp field as follows: | Recipients MUST check the Timestamp field as follows: | |||
o When a message is received from a new peer (i.e., one that is not | o When a message is received from a new peer (i.e., one that is not | |||
stored in the cache), the received timestamp, TSnew, is checked, | stored in the cache), the received timestamp, TSnew, is checked, | |||
and the message is accepted if the timestamp is recent enough to | and the message is accepted if the timestamp is recent enough to | |||
the reception time of the packet, RDnew: | the reception time of the packet, RDnew: | |||
-Delta < (RDnew - TSnew) < +Delta | -Delta < (RDnew - TSnew) < +Delta | |||
skipping to change at page 14, line 16 ¶ | skipping to change at page 16, line 14 ¶ | |||
entries. The specific policy as to which entries are preferred over | entries. The specific policy as to which entries are preferred over | |||
others is left as an implementation decision. | others is left as an implementation decision. | |||
An implementation MAY statefully record the latest timestamps from | An implementation MAY statefully record the latest timestamps from | |||
senders. In such implementation, the timestamps MUST be strictly | senders. In such implementation, the timestamps MUST be strictly | |||
monotonously increasing. This is reasonable given that DHCPv6 | monotonously increasing. This is reasonable given that DHCPv6 | |||
messages are rarely misordered. | messages are rarely misordered. | |||
10. Extensions for Secure DHCPv6 | 10. Extensions for Secure DHCPv6 | |||
This section describes the extensions to DHCPv6. Three new DHCPv6 | This section describes the extensions to DHCPv6. Four new DHCPv6 | |||
options, two new DHCPv6 messages and four status codes are defined. | options, two new DHCPv6 messages and five new status codes are | |||
defined. | ||||
10.1. New DHCPv6 Options | 10.1. New DHCPv6 Options | |||
10.1.1. Certificate Option | 10.1.1. Certificate Option | |||
The Certificate option carries the certificate of the client/server. | The Certificate option carries the certificate of the client/server. | |||
The format of the Certificate option is described as follows: | The format of the Certificate option is described as follows: | |||
0 1 2 3 | 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 | 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 | |||
skipping to change at page 15, line 33 ¶ | skipping to change at page 17, line 5 ¶ | |||
encryption algorithm agility. The value is from the | encryption algorithm agility. The value is from the | |||
Encryption Algorithm for Secure DHCPv6 registry in | Encryption Algorithm for Secure DHCPv6 registry in | |||
IANA. A registry of the initial assigned values | IANA. A registry of the initial assigned values | |||
is defined in Section 12. | is defined in Section 12. | |||
Certificate A variable-length field containing certificate. The | Certificate A variable-length field containing certificate. The | |||
encoding of certificate and certificate data MUST | encoding of certificate and certificate data MUST | |||
be in format as defined in Section 3.6, [RFC7296]. | be in format as defined in Section 3.6, [RFC7296]. | |||
The support of X.509 certificate is mandatory. | The support of X.509 certificate is mandatory. | |||
10.1.2. Timestamp Option | 10.1.2. Signature option | |||
The Signature option allows a signature that is signed by the private | ||||
key to be attached to a DHCPv6 message. The Signature option could | ||||
be in any place within the DHCPv6 message while it is logically | ||||
created after the entire DHCPv6 header and options. It protects the | ||||
entire DHCPv6 header and options, including itself. The format of | ||||
the Signature option is described as follows: | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| OPTION_SIGNATURE | option-len | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| HA-id | SA-id | | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| | | ||||
. Signature (variable length) . | ||||
. . | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
option-code OPTION_SIGNATURE (TBA2). | ||||
option-len 2 + Length of Signature field in octets. | ||||
HA-id Hash Algorithm id. The hash algorithm is used for | ||||
computing the signature result. This design is | ||||
adopted in order to provide hash algorithm agility. | ||||
The value is from the Hash Algorithm for Secure | ||||
DHCPv6 registry in IANA. The support of SHA-256 is | ||||
mandatory. A registry of the initial assigned values | ||||
is defined in Section 12. | ||||
SA-id Signature Algorithm id. The signature algorithm is | ||||
used for computing the signature result. This | ||||
design is adopted in order to provide signature | ||||
algorithm agility. The value is from the Signature | ||||
Algorithm for Secure DHCPv6 registry in IANA. The | ||||
support of RSASSA-PKCS1-v1_5 is mandatory. A | ||||
registry of the initial assigned values is defined | ||||
in Section 12. | ||||
Signature A variable-length field containing a digital | ||||
signature. The signature value is computed with | ||||
the hash algorithm and the signature algorithm, | ||||
as described in HA-id and SA-id. The signature | ||||
constructed by using the sender's private key | ||||
protects the following sequence of octets: | ||||
1. The DHCPv6 message header. | ||||
2. All DHCPv6 options including the Signature | ||||
option (fill the Signature field with zeroes) | ||||
except for the Authentication Option. | ||||
The Signature field MUST be padded, with all 0, to | ||||
the next octet boundary if its size is not a | ||||
multiple of 8 bits. The padding length depends on | ||||
the signature algorithm, which is indicated in the | ||||
SA-id field. | ||||
Note: If Secure DHCPv6 is used, the DHCPv6 message is encrypted in a | ||||
way that the authentication mechanism defined in RFC3315 does not | ||||
understand. So the Authentication option SHOULD NOT be used if | ||||
Secure DHCPv6 is applied. | ||||
10.1.3. Timestamp Option | ||||
The Timestamp option carries the current time on the sender. It adds | The Timestamp option carries the current time on the sender. It adds | |||
the anti-replay protection to the DHCPv6 messages. It is optional. | the anti-replay protection to the DHCPv6 messages. It is optional. | |||
0 1 2 3 | 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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| OPTION_TIMESTAMP | option-len | | | OPTION_TIMESTAMP | option-len | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Timestamp (64-bit) | | | Timestamp (64-bit) | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
option-code OPTION_TIMESTAMP (TBA2). | option-code OPTION_TIMESTAMP (TBA3). | |||
option-len 8, in octets. | option-len 8, in octets. | |||
Timestamp The current time of day (SeND-format timestamp | Timestamp The current time of day (SeND-format timestamp | |||
in UTC (Coordinated Universal Time). It can reduce | in UTC (Coordinated Universal Time). It can reduce | |||
the danger of replay attacks. The timestamp data MUST | the danger of replay attacks. The timestamp data MUST | |||
be in format as defined in Section 5.3.1, [RFC3971]. | be in format as defined in Section 5.3.1, [RFC3971]. | |||
10.1.3. Encrypted-message Option | 10.1.4. Encrypted-message Option | |||
The Encrypted-message option carries the encrypted DHCPv6 message | The Encrypted-message option carries the encrypted DHCPv6 message | |||
with the recipient's public key. | with the recipient's public key. | |||
The format of the Encrypted-message option is: | The format of the Encrypted-message option is: | |||
0 1 2 3 | 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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| option-code | option-len | | | option-code | option-len | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. encrypted DHCPv6 message . | . encrypted DHCPv6 message . | |||
. (variable) . | . (variable) . | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: Encrypted-message Option Format | Figure 1: Encrypted-message Option Format | |||
option-code OPTION_ENCRYPTED_MSG (TBA3). | option-code OPTION_ENCRYPTED_MSG (TBA4). | |||
option-len Length of the encrypted DHCPv6 message. | option-len Length of the encrypted DHCPv6 message. | |||
encrypted DHCPv6 message A variable length field containing the | encrypted DHCPv6 message A variable length field containing the | |||
encrypted DHCPv6 message sent by the client or the server. In | encrypted DHCPv6 message sent by the client or the server. In | |||
Encrypted-Query message, it contains encrypted DHCPv6 message sent | Encrypted-Query message, it contains encrypted DHCPv6 message sent | |||
by a client. In Encrypted-response message, it contains encrypted | by a client. In Encrypted-response message, it contains encrypted | |||
DHCPv6 message sent by a server. | DHCPv6 message sent by a server. | |||
10.2. New DHCPv6 Messages | 10.2. New DHCPv6 Messages | |||
skipping to change at page 17, line 28 ¶ | skipping to change at page 19, line 49 ¶ | |||
| | | | | | |||
. options . | . options . | |||
. (variable) . | . (variable) . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: The format of Encrypted-Query and Encrypted-Response | Figure 2: The format of Encrypted-Query and Encrypted-Response | |||
Messages | Messages | |||
msg-type Identifier of the message type. It can be either | msg-type Identifier of the message type. It can be either | |||
Encrypted-Query (TBA4) or DHCPv6-Response (TBA5). | Encrypted-Query (TBA5) or DHCPv6-Response (TBA6). | |||
transaction-id The transaction ID for this message exchange. | transaction-id The transaction ID for this message exchange. | |||
options The Encrypted-Query message MUST contain the Server | options The Encrypted-Query message MUST contain the Server | |||
Identifier option and Encrypted-message option. The | Identifier option and Encrypted-message option. The | |||
Encrypted-Response message MUST contain the | Encrypted-Response message MUST contain the | |||
Encrypted-message option. | Encrypted-message option. | |||
10.3. Status Codes | 10.3. Status Codes | |||
The following new status codes, see Section 5.4 of [RFC3315] are | The following new status codes, see Section 5.4 of [RFC3315] are | |||
defined. | defined. | |||
o AlgorithmNotSupported (TBD6): indicates that the DHCPv6 server | o AlgorithmNotSupported (TBD7): indicates that the DHCPv6 server | |||
does not support algorithms that sender used. | does not support algorithms that sender used. | |||
o AuthenticationFail (TBD7): indicates that the DHCPv6 client fails | o AuthenticationFail (TBD8): indicates that the message from the | |||
authentication check. | DHCPv6 client fails authentication check. | |||
o TimestampFail (TBD8): indicates the message from DHCPv6 client | o TimestampFail (TBD9): indicates the message from DHCPv6 client | |||
fails the timestamp check. | fails the timestamp check. | |||
o DecryptionFail (TBD9): indicates the message from DHCPv6 client | o SignatureFail (TBD10): indicates the message from DHCPv6 client | |||
fails the signature check. | ||||
o DecryptionFail (TBD11): indicates the message from DHCPv6 client | ||||
fails the DHCPv6 message decryption. | fails the DHCPv6 message decryption. | |||
11. Security Considerations | 11. Security Considerations | |||
This document provides the authentication and encryption mechanisms | This document provides the authentication and encryption mechanisms | |||
for DHCPv6. | for DHCPv6. | |||
[RFC6273] has analyzed possible threats to the hash algorithms used | ||||
in SEND. Since Secure DHCPv6 defined in this document uses the same | ||||
hash algorithms in similar way to SEND, analysis results could be | ||||
applied as well: current attacks on hash functions do not constitute | ||||
any practical threat to the digital signatures used in the signature | ||||
algorithm in Secure DHCPv6. | ||||
A server, whose local policy accepts messages without a Timestamp | A server, whose local policy accepts messages without a Timestamp | |||
option, may have to face the risk of replay attacks. | option, may have to face the risk of replay attacks. | |||
A window of vulnerability for replay attacks exists until the | A window of vulnerability for replay attacks exists until the | |||
timestamp expires. Secure DHCPv6 nodes are protected against replay | timestamp expires. Secure DHCPv6 nodes are protected against replay | |||
attacks as long as they cache the state created by the message | attacks as long as they cache the state created by the message | |||
containing the timestamp. The cached state allows the node to | containing the timestamp. The cached state allows the node to | |||
protect itself against replayed messages. However, once the node | protect itself against replayed messages. However, once the node | |||
flushes the state for whatever reason, an attacker can re-create the | flushes the state for whatever reason, an attacker can re-create the | |||
state by replaying an old message while the timestamp is still valid. | state by replaying an old message while the timestamp is still valid. | |||
skipping to change at page 18, line 36 ¶ | skipping to change at page 21, line 16 ¶ | |||
of scope of this work. | of scope of this work. | |||
Attacks against time synchronization protocols such as NTP [RFC5905] | Attacks against time synchronization protocols such as NTP [RFC5905] | |||
may cause Secure DHCPv6 nodes to have an incorrect timestamp value. | may cause Secure DHCPv6 nodes to have an incorrect timestamp value. | |||
This can be used to launch replay attacks, even outside the normal | This can be used to launch replay attacks, even outside the normal | |||
window of vulnerability. To protect against these attacks, it is | window of vulnerability. To protect against these attacks, it is | |||
recommended that Secure DHCPv6 nodes keep independently maintained | recommended that Secure DHCPv6 nodes keep independently maintained | |||
clocks or apply suitable security measures for the time | clocks or apply suitable security measures for the time | |||
synchronization protocols. | synchronization protocols. | |||
There are some mandatory algorithm for encryption algorithm in this | ||||
document. It may be at some point that the mandatory algorithm is no | ||||
longer safe to use. | ||||
If the client tries more than one cert for client authentication, the | ||||
server can easily get a client that implements this to enumerate its | ||||
entire cert list and probably learn a lot about a client that way. | ||||
12. IANA Considerations | 12. IANA Considerations | |||
This document defines three new DHCPv6 [RFC3315] options. The IANA | This document defines four new DHCPv6 [RFC3315] options. The IANA is | |||
is requested to assign values for these three options from the DHCPv6 | requested to assign values for these four options from the DHCPv6 | |||
Option Codes table of the DHCPv6 Parameters registry maintained in | Option Codes table of the DHCPv6 Parameters registry maintained in | |||
http://www.iana.org/assignments/dhcpv6-parameters. The three options | http://www.iana.org/assignments/dhcpv6-parameters. The four options | |||
are: | are: | |||
The Certificate option (TBA1), described in Section 10.1.1. | The Certificate Option (TBA1), described in Section 10.1.1. | |||
The Timestamp option (TBA2),described in Section 10.1.2. | The Signature Option (TBA2), described in Section 10.1.2. | |||
The Encrypted-message option (TBA3), described in Section 10.1.3. | The Timestamp Option (TBA3),described in Section 10.1.3. | |||
The Encrypted-message Option (TBA4), described in Section 10.1.4. | ||||
The IANA is also requested to assign value for these two messages | The IANA is also requested to assign value for these two messages | |||
from the DHCPv6 Message Types table of the DHCPv6 Parameters registry | from the DHCPv6 Message Types table of the DHCPv6 Parameters registry | |||
maintained in http://www.iana.org/assignments/dhcpv6-parameters. The | maintained in http://www.iana.org/assignments/dhcpv6-parameters. The | |||
two messages are: | two messages are: | |||
The Encrypted-Query message (TBA4), described in Section 10.2. | The Encrypted-Query Message (TBA5), described in Section 10.2. | |||
The Encrypted-Response message (TBA5), described in Section 10.2. | The Encrypted-Response Message (TBA6), described in Section 10.2. | |||
The IANA is also requested to add one new registry tables to the | The IANA is also requested to add three new registry tables to the | |||
DHCPv6 Parameters registry maintained in | DHCPv6 Parameters registry maintained in | |||
http://www.iana.org/assignments/dhcpv6-parameters. The table is the | http://www.iana.org/assignments/dhcpv6-parameters. The three tables | |||
Encryption Algorithm for Secure DHCPv6 table. | are the Hash Algorithm for Secure DHCPv6 table, the Signature | |||
Algorithm for Secure DHCPv6 table and the Encryption Algorithm for | ||||
Secure DHCPv6 table. | ||||
Initial values for these registries are given below. Future | Initial values for these registries are given below. Future | |||
assignments are to be made through Standards Action [RFC5226]. | assignments are to be made through Standards Action [RFC5226]. | |||
Assignments for each registry consist of a name, a value and a RFC | Assignments for each registry consist of a name, a value and a RFC | |||
number where the registry is defined. | number where the registry is defined. | |||
Hash Algorithm for Secure DHCPv6. The values in this table are 8-bit | ||||
unsigned integers. The following initial values are assigned for | ||||
Hash Algorithm for Secure DHCPv6 in this document: | ||||
Name | Value | RFCs | ||||
-------------------+---------+-------------- | ||||
SHA-256 | 0x01 | this document | ||||
SHA-512 | 0x02 | this document | ||||
Signature Algorithm for Secure DHCPv6. The values in this table are | ||||
8-bit unsigned integers. The following initial values are assigned | ||||
for Signature Algorithm for Secure DHCPv6 in this document: | ||||
Name | Value | RFCs | ||||
-------------------+---------+-------------- | ||||
RSASSA-PKCS1-v1_5 | 0x01 | this document | ||||
Encryption algorithm for Secure DHCPv6. The values in this table are | Encryption algorithm for Secure DHCPv6. The values in this table are | |||
8-bit unsigned integers. The following initial values are assigned | 8-bit unsigned integers. The following initial values are assigned | |||
for encryption algorithm for Secure DHCPv6 in this document: | for encryption algorithm for Secure DHCPv6 in this document: | |||
Name | Value | RFCs | Name | Value | RFCs | |||
-------------------+---------+-------------- | -------------------+---------+-------------- | |||
RSA | 0 | this document | RSA | 0 | this document | |||
IANA is requested to assign the following new DHCPv6 Status Codes, | IANA is requested to assign the following new DHCPv6 Status Codes, | |||
defined in Section 10.3, in the DHCPv6 Parameters registry maintained | defined in Section 10.3, in the DHCPv6 Parameters registry maintained | |||
in http://www.iana.org/assignments/dhcpv6-parameters: | in http://www.iana.org/assignments/dhcpv6-parameters: | |||
Code | Name | Reference | Code | Name | Reference | |||
---------+-----------------------+-------------- | ---------+-----------------------+-------------- | |||
TBD6 | AlgorithmNotSupported | this document | TBD7 | AlgorithmNotSupported | this document | |||
TBD7 | AuthenticationFail | this document | TBD8 | AuthenticationFail | this document | |||
TBD8 | TimestampFail | this document | TBD9 | TimestampFail | this document | |||
TBD9 | DecryptionFail | this document | TBD10 | SignatureFail | this document | |||
TBD11 | DecryptionFail | this document | ||||
13. Acknowledgements | 13. Acknowledgements | |||
The authors would like to thank Tomek Mrugalski, Bernie Volz, | The authors would like to thank Tomek Mrugalski, Bernie Volz, | |||
Jianping Wu, Randy Bush, Yiu Lee, Sean Shen, Ralph Droms, Jari Arkko, | Jianping Wu, Randy Bush, Yiu Lee, Sean Shen, Ralph Droms, Jari Arkko, | |||
Sean Turner, Stephen Farrell, Christian Huitema, Stephen Kent, Thomas | Sean Turner, Stephen Farrell, Christian Huitema, Stephen Kent, Thomas | |||
Huth, David Schumacher, Francis Dupont, Gang Chen, Suresh Krishnan, | Huth, David Schumacher, Francis Dupont, Gang Chen, Suresh Krishnan, | |||
Fred Templin, Robert Elz, Nico Williams, Erik Kline, Alan DeKok, | Fred Templin, Robert Elz, Nico Williams, Erik Kline, Alan DeKok, | |||
Bernard Aboba, Sam Hartman, Qi Sun, Zilong Liu and other members of | Bernard Aboba, Sam Hartman, Qi Sun, Zilong Liu and other members of | |||
the IETF DHC working group for their valuable comments. | the IETF DHC working group for their valuable comments. | |||
This document was produced using the xml2rfc tool [RFC2629]. | This document was produced using the xml2rfc tool [RFC2629]. | |||
14. Change log [RFC Editor: Please remove] | 14. Change log [RFC Editor: Please remove] | |||
draft-ietf-dhc-sedhcpv6-12: Add the Signature option and timestamp | ||||
option during server/client authentication process. Add the hash | ||||
function and signature algorithm. Add the requirement: The | ||||
Information-request message cannot contain any other options except | ||||
ORO option. Modify the use of "SHOULD"; Delete the reference of | ||||
RFC5280 and modify the method of client/server cert verification; Add | ||||
the relay agent cache function for the quick response when there is | ||||
no authenticated server. 2016-4-24. | ||||
draft-ietf-dhc-sedhcpv6-11: Delete the Signature option, because the | draft-ietf-dhc-sedhcpv6-11: Delete the Signature option, because the | |||
encrypted DHCPv6 message and the Information-request message (only | encrypted DHCPv6 message and the Information-request message (only | |||
contain the certificate option) don't need the signature option for | contain the Certificate option) don't need the Signature option for | |||
message integrity check; Rewrite the "Applicability" section; Add the | message integrity check; Rewrite the "Applicability" section; Add the | |||
encryption algorithm negotiation process; To support the encryption | encryption algorithm negotiation process; To support the encryption | |||
algorithm negotiation, the Certificate option contains the EA- | algorithm negotiation, the Certificate option contains the EA- | |||
id(encryption algorithm identifier) field; Reserve the timestamp | id(encryption algorithm identifier) field; Reserve the Timestamp | |||
option to defend against the replay attacks for encrypted DHCPv6 | option to defend against the replay attacks for encrypted DHCPv6 | |||
configuration process; Modify the client behavior when there is no | configuration process; Modify the client behavior when there is no | |||
authenticated DHCPv6 server; Add the DecryptionFail error code. | authenticated DHCPv6 server; Add the DecryptionFail error code. | |||
2016-3-9. | 2016-3-9. | |||
draft-ietf-dhc-sedhcpv6-10: merge DHCPv6 authentication and DHCPv6 | draft-ietf-dhc-sedhcpv6-10: merge DHCPv6 authentication and DHCPv6 | |||
encryption. The public key option is removed, because the device can | encryption. The public key option is removed, because the device can | |||
generate the self-signed certificate if it is pre-configured the | generate the self-signed certificate if it is pre-configured the | |||
public key not the certificate. 2015-12-10. | public key not the certificate. 2015-12-10. | |||
skipping to change at page 22, line 44 ¶ | skipping to change at page 26, line 21 ¶ | |||
"SEcure Neighbor Discovery (SEND)", RFC 3971, | "SEcure Neighbor Discovery (SEND)", RFC 3971, | |||
DOI 10.17487/RFC3971, March 2005, | DOI 10.17487/RFC3971, March 2005, | |||
<http://www.rfc-editor.org/info/rfc3971>. | <http://www.rfc-editor.org/info/rfc3971>. | |||
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
Protocol Version 6 (IPv6) Specification", RFC 4443, | Protocol Version 6 (IPv6) Specification", RFC 4443, | |||
DOI 10.17487/RFC4443, March 2006, | DOI 10.17487/RFC4443, March 2006, | |||
<http://www.rfc-editor.org/info/rfc4443>. | <http://www.rfc-editor.org/info/rfc4443>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | ||||
Housley, R., and W. Polk, "Internet X.509 Public Key | ||||
Infrastructure Certificate and Certificate Revocation List | ||||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | ||||
<http://www.rfc-editor.org/info/rfc5280>. | ||||
[RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
"Network Time Protocol Version 4: Protocol and Algorithms | "Network Time Protocol Version 4: Protocol and Algorithms | |||
Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | |||
<http://www.rfc-editor.org/info/rfc5905>. | <http://www.rfc-editor.org/info/rfc5905>. | |||
[RFC7283] Cui, Y., Sun, Q., and T. Lemon, "Handling Unknown DHCPv6 | [RFC7283] Cui, Y., Sun, Q., and T. Lemon, "Handling Unknown DHCPv6 | |||
Messages", RFC 7283, DOI 10.17487/RFC7283, July 2014, | Messages", RFC 7283, DOI 10.17487/RFC7283, July 2014, | |||
<http://www.rfc-editor.org/info/rfc7283>. | <http://www.rfc-editor.org/info/rfc7283>. | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
End of changes. 69 change blocks. | ||||
179 lines changed or deleted | 375 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |