draft-ietf-dhc-sedhcpv6-10.txt | draft-ietf-dhc-sedhcpv6-11.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: June 12, 2016 Y. Cui | Expires: September 9, 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 | |||
December 10, 2015 | March 8, 2016 | |||
Secure DHCPv6 | Secure DHCPv6 | |||
draft-ietf-dhc-sedhcpv6-10 | draft-ietf-dhc-sedhcpv6-11 | |||
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 being secured, DHCPv6 is | configuration flexibility. If not secured, DHCPv6 is vulnerable to | |||
vulnerable to various attacks. This document analyzes the security | various attacks. This document analyzes the security issues of | |||
issues of DHCPv6 and specifies a secure DHCPv6 mechanism for the | DHCPv6 and specifies the secure DHCPv6 mechanism for authentication | |||
authentication and encryption between DHCPv6 client and DHCPv6 | and encryption of messages between a DHCPv6 client and a DHCPv6 | |||
server. | server. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 June 12, 2016. | This Internet-Draft will expire on September 9, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2015 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Requirements Language and Terminology . . . . . . . . . . . . 3 | 2. Requirements Language and Terminology . . . . . . . . . . . . 3 | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
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 . . . . . . . . . . . . . . . . . . . . . 7 | 5.2. New Components . . . . . . . . . . . . . . . . . . . . . 6 | |||
5.3. Support for Algorithm Agility . . . . . . . . . . . . . . 7 | 5.3. Support for Algorithm Agility . . . . . . . . . . . . . . 7 | |||
5.4. Imposed Additional Constraints . . . . . . . . . . . . . 8 | 5.4. Applicability . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.5. Applicability . . . . . . . . . . . . . . . . . . . . . . 8 | 6. DHCPv6 Client Behavior . . . . . . . . . . . . . . . . . . . 8 | |||
6. DHCPv6 Client Behavior . . . . . . . . . . . . . . . . . . . 9 | ||||
7. DHCPv6 Server Behavior . . . . . . . . . . . . . . . . . . . 11 | 7. DHCPv6 Server Behavior . . . . . . . . . . . . . . . . . . . 11 | |||
8. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 13 | 8. Relay Agent Behavior . . . . . . . . . . . . . . . . . . . . 12 | |||
9. Processing Rules . . . . . . . . . . . . . . . . . . . . . . 14 | 9. Processing Rules . . . . . . . . . . . . . . . . . . . . . . 12 | |||
9.1. Timestamp Check . . . . . . . . . . . . . . . . . . . . . 14 | 9.1. Timestamp Check . . . . . . . . . . . . . . . . . . . . . 12 | |||
10. Extensions for Secure DHCPv6 . . . . . . . . . . . . . . . . 15 | 10. Extensions for Secure DHCPv6 . . . . . . . . . . . . . . . . 14 | |||
10.1. New DHCPv6 Options . . . . . . . . . . . . . . . . . . . 15 | 10.1. New DHCPv6 Options . . . . . . . . . . . . . . . . . . . 14 | |||
10.1.1. Certificate Option . . . . . . . . . . . . . . . . . 15 | 10.1.1. Certificate Option . . . . . . . . . . . . . . . . . 14 | |||
10.1.2. Signature Option . . . . . . . . . . . . . . . . . . 16 | 10.1.2. Timestamp Option . . . . . . . . . . . . . . . . . . 15 | |||
10.1.3. Timestamp Option . . . . . . . . . . . . . . . . . . 17 | 10.1.3. Encrypted-message Option . . . . . . . . . . . . . . 16 | |||
10.1.4. Encrypted-message Option . . . . . . . . . . . . . . 18 | 10.2. New DHCPv6 Messages . . . . . . . . . . . . . . . . . . 17 | |||
10.2. New DHCPv6 Messages . . . . . . . . . . . . . . . . . . 19 | 10.3. Status Codes . . . . . . . . . . . . . . . . . . . . . . 17 | |||
10.2.1. Encrypted-Query Message . . . . . . . . . . . . . . 19 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
10.2.2. Encrypted-Response Message . . . . . . . . . . . . . 19 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
10.3. Status Codes . . . . . . . . . . . . . . . . . . . . . . 20 | 13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 14. Change log [RFC Editor: Please remove] . . . . . . . . . . . 20 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 15. Open Issues [RFC Editor: Please remove] . . . . . . . . . . . 21 | |||
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | 16. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | 16.1. Normative References . . . . . . . . . . . . . . . . . . 22 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 23 | 16.2. Informative References . . . . . . . . . . . . . . . . . 23 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 24 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
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 in details and | This document analyzes the security issues of DHCPv6 and provides the | |||
provides the following mechanisms for improving the security of | following mechanisms for improving the security of DHCPv6 between the | |||
DHCPv6 between client and server: | DHCPv6 client and the DHCPv6 server: | |||
o the authentication of the DHCPv6 client and the DHCPv6 server to | o the authentication of the DHCPv6 client and the DHCPv6 server to | |||
defend against active attack, such as spoofing attack. | defend against active attacks, such as spoofing attack. | |||
o the encryption between the DHCPv6 client and the DHCPv6 server in | o the encryption between the DHCPv6 client and the DHCPv6 server in | |||
order to protect the DHCPv6 from passive attack, such as pervasive | order to protect the DHCPv6 from passive attacks, such as | |||
monitoring. | pervasive monitoring. | |||
o the integrity check of DHCPv6 messages by the recipient of the | ||||
message based on signature. | ||||
o anti-replay protection based on timestamps. | ||||
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, because they are only transported within operator networks and | agent. Communication between a server and a relay agent, and | |||
considered less vulnerable. Communication between a server and a | communications between relay agents, may be secured through the use | |||
relay agent, and communications between relay agents, may be secured | of IPsec, as described in section 21.1 in [RFC3315]. | |||
through the use of IPsec, as described in section 21.1 in [RFC3315]. | ||||
The security mechanisms specified in this document achieves the | The security mechanism specified in this document achieves DHCPv6 | |||
DHCPv6 authentication and encryption based on the sender's public key | authentication and encryption based on the sender's certificate. We | |||
certificate. We introduce two new DHCPv6 messages: Encrypted-Query | introduce two new DHCPv6 messages: Encrypted-Query message and | |||
message and Encrypted-Response message and four new DHCPv6 options: | Encrypted-Response message and three new DHCPv6 options: Certificate | |||
certificate option, signature option, timestamp option and encrypted- | option, Timestamp option and Encrypted-message option for DHCPv6 | |||
message option for the DHCPv6 authentication and encryption. The | authentication and encryption. The Certificate option is used for | |||
certificate option is used for the DHCPv6 authentication. It also | DHCPv6 authentication. The Encryption-Query message, Encryption- | |||
integrates signature option for the integrity check and timestamps | Response message and Encrypted-message option are used for DHCPv6 | |||
option for anti-replay protection. The Encryption-Query message, | encryption. The timestamp option is used to defend against replay | |||
Encryption-Response message, and encrypted-message option are used | attack. | |||
for the 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 4, line 29 ¶ | skipping to change at page 4, line 18 ¶ | |||
secure DHCPv6 server: A node that responds to requests from clients | secure DHCPv6 server: A node that responds to requests from clients | |||
using the authentication and encryption mechanism | using the authentication and encryption mechanism | |||
defined in this document. | defined in this document. | |||
4. Security Issues of DHCPv6 | 4. Security Issues of DHCPv6 | |||
DHCPv6 is a client/server protocol that provides managed | DHCPv6 is a client/server protocol that provides managed | |||
configuration of devices. It enables a DHCPv6 server to | configuration of devices. It enables a DHCPv6 server to | |||
automatically configure relevant network parameters on clients. The | automatically configure relevant network parameters on clients. The | |||
basic DHCPv6 specification [RFC3315] defines security mechanisms, but | basic DHCPv6 specification [RFC3315] defines security mechanisms, but | |||
they have significant flaws and can be improved | they have some flaws and can be improved. | |||
The basic DHCPv6 specifications can optionally authenticate the | The basic DHCPv6 specifications can optionally authenticate the | |||
origin of message and validate the integrity of messages using an | origin of messages and validate the integrity of messages using an | |||
authentication option with a symmetric key pair. [RFC3315] relies on | authentication option with a symmetric key pair. [RFC3315] relies on | |||
pre-established secret keys. For any kind of meaningful security, | pre-established secret keys. For any kind of meaningful security, | |||
each DHCPv6 client would need to be configured with its own secret | each DHCPv6 client would need to be configured with its own secret | |||
key; [RFC3315] provides no mechanism for doing this. | key; [RFC3315] provides no mechanism for doing this. | |||
For the out of band approach, operators can set up a key database for | For the out of band approach, operators can set up a key database for | |||
both servers and clients from which the client obtains a key before | both servers and clients from which the client obtains a key before | |||
running DHCPv6. Manual key distribution runs counter to the goal of | running DHCPv6. Manual key distribution runs counter to the goal of | |||
minimizing the configuration data needed at each host. | minimizing the configuration data needed at each host. | |||
[RFC3315] provides an additional mechanism for preventing off-network | [RFC3315] provides an additional mechanism for preventing off-network | |||
timing attacks using the Reconfigure message: the Reconfigure Key | timing attacks using the Reconfigure message: the Reconfigure Key | |||
authentication method. However, this method provides little message | authentication method. However, this method protects only the | |||
integrity or source integrity check, and it protects only the | Reconfigure message. The key is transmitted in plaintext to the | |||
Reconfigure message. This key is transmitted in plaintext. | client in earlier exchanges and so this method is vulnerable to | |||
active attacks. | ||||
In addition, the current DHCPv6 messages are still transmitted in | In addition, the current DHCPv6 messages are still transmitted in | |||
clear text and the privacy information within the DHCPv6 message is | cleartext and the privacy information within the DHCPv6 message is | |||
not protected from passive attack, such as pervasive monitoring. The | not protected from passive attack, such as pervasive monitoring. The | |||
IETF has expressed strong agreement that PM is an attack that needs | IETF has expressed strong agreement that pervasive monitoring is an | |||
to be mitigated where possible in [RFC7258]. | attack that needs to be mitigated where possible in [RFC7258]. | |||
In comparison, the security mechanism defined in this document | In comparison, the security mechanisms defined in this document | |||
provides the authentication and encryption mechanism based on the | provides for authentication and encryption based on the public key | |||
public key certificates on the client or server. The DHCPv6 | certificates of the client and server. The DHCPv6 authentication can | |||
authentication can protect DHCPv6 from active attack, such as | protect DHCPv6 from active attacks, such as spoofing attack. And the | |||
spoofing attack. And the DHCPv6 encryption defends against passive | DHCPv6 encryption defends against passive attacks, such as pervasive | |||
attack, 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 the authentication and encryption mechanisms | This solution provides authentication and encryption mechanisms based | |||
based on the public certificates of the DHCPv6 client and server. | on the certificates of the DHCPv6 client and server. Before the | |||
Before the standard DHCPv6 configuration process, the Information- | standard DHCPv6 configuration process, the Information-request and | |||
request and Reply messages are exchanged to select one authenticated | Reply messages are exchanged to select one authenticated DHCPv6 | |||
DHCPv6 server. The following DHCPv6 configuration process is | server. After the mutual authentication between the DHCPv6 client | |||
encrypted to avoid the privacy disclosure. We introduce two new | and server, the following DHCPv6 configuration process is encrypted | |||
to 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 four new DHCPv6 options: encrypted-message option, certificate | and three new DHCPv6 options: Encrypted-message option, Certificate | |||
option, signature option, timestamp option. Based on the new defined | option, Timestamp option. Based on the new defined messages and | |||
messages and options, the corresponding authentication and encryption | options, the corresponding authentication and encryption mechanisms | |||
mechanisms are proposed. | are achieved. | |||
The following figure illustrates the secure DHCPv6 procedure. The | The following figure illustrates secure DHCPv6 procedure. The DHCPv6 | |||
DHCPv6 client first sends an Information-request message to the | client first sends an Information-request message to the standard | |||
standard multicast address to all DHCPv6 servers. The Information- | multicast address to all DHCPv6 servers. The Information-request | |||
request message is used to request the servers for server | message is used to request the servers for the servers' certificates | |||
authentication information, without going through any address, prefix | information, without going through any address, prefix or non- | |||
or non-security option assignment process. The information-request | security option assignment process. The Information-request is sent | |||
is sent without client's privacy information, such as client | without any client's private information, such as Client Identifier | |||
identifier option to minimize information leak and increase client's | option or the Certificate option, to minimize client's privacy | |||
privacy. When receiving the Information-request message, the server | information leakage. When receiving the Information-request message, | |||
sends the Reply message that contains the server's certificate | the server sends the Reply message that contains the server's | |||
option, signature option, timestamp option, and server identifier | Certificate option and Server Identifier option. Upon the receipt of | |||
option. Upon the receipt of the Reply message, the DHCPv6 client | the Reply message, the DHCPv6 client verifies the server's identity | |||
verifies the server's identity according to the contained server | according to the contained certificate in the Reply message. If | |||
authentication information in Reply message. If there are multiple | there are multiple authenticated DHCPv6 servers, the client selects | |||
authenticated DHCPv6 servers, the client selects one authenticated | one authenticated DHCPv6 server for the following DHCPv6 | |||
DHCPv6 server for the following DHCPv6 configuration process. If | configuration process. If there are no authenticated DHCPv6 servers | |||
there are no authenticated DHCPv6 servers or existing servers failed | or existing servers failed authentication, the client should retry a | |||
authentication, the client behavior is policy specific. Depending on | number of times. In this way, it is difficult for a rogue server to | |||
its policy, it can choose to connect repeat the server discovery | beat out a busy "real" server. And then the client takes some other | |||
process after certain delay or attempt to connect to a different | alternative action depending on its local policy. | |||
network. | ||||
After the server's authentication, the first DHCPv6 message sent from | After the server's authentication, the first DHCPv6 message sent from | |||
client to server, such as Solicit message, contains the client's | the client to the server, such as Solicit message, contains the | |||
certificate option, signature option and timestamp option for client | client's Certificate information for client authentication. The | |||
authentication. The DHCPv6 message sent from client to server is | DHCPv6 client sends the Encrypted-Query message to server, which | |||
encrypted with the server's public key and encapsulated into the | carries the Encrypted-message option and the Server Identifier | |||
encrypted-message option. The DHCPv6 client sends the Encrypted- | option. The Encrypted-message option contains the encrypted DHCPv6 | |||
Query message to server, which carries the server identifier option | message sent from the client to the server. When the DHCPv6 server | |||
and the encrypted-message option. When the DHCPv6 server receives | receives the Encrypted-Query message, it decrypts the message using | |||
the Encrypted-Query message, it decrypts the message using its | its private key. If the decrypted message contains the client's | |||
private key. If the decrypted message contains the client's | Certificate option, the DHCPv6 server verifies the client's identity | |||
certificate option, signature option, timestamp option, the DHCPv6 | according to the contained client certificate information. | |||
server verifies the client's identity according to the contained | ||||
client authentication information. After the client's | After the client's authentication, the server sends the Encrypted- | |||
authentication, the server sends the Encrypted-Response message to | Response message to the client, which contains the Encrypted-message | |||
the client, which contains the encrypted-message option. The | option. The Encrypted-message option contains the encrypted DHCPv6 | |||
encrypted-message option contains the encrypted DHCPv6 message sent | message sent from server to client, which is encrypted using the | |||
from server to client, which is encrypted using the client's public | client's public key. If the message fails client authentication, | |||
key. The message that fails client authentication, MUST be dropped. | then the server sends the corresponding error status code to the | |||
And the server sends the corresponding error status code to client. | client. During the encrypted DHCPv6 configuration process, the | |||
timestamp option can be contained in the encrypted DHCPv6 messages to | ||||
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 | | | Server Identifier option | | |||
| timestamp 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 | | |||
| | | | | | |||
Secure DHCPv6 Procedure | Secure DHCPv6 Procedure | |||
It is worth noticing that the signature on a Secure DHCPv6 message | ||||
can be expected to significantly increase the size of the message. | ||||
One example is normal DHCPv6 message length plus a 1 KB for a X.509 | ||||
certificate and signature and 256 Byte for a signature. IPv6 | ||||
fragments [RFC2460] are highly possible. In practise, the total | ||||
length would be various in a large range. Hence, deployment of | ||||
Secure DHCPv6 should also consider the issues of IP fragment, PMTU, | ||||
etc. Also, if there are firewalls between secure DHCPv6 clients and | ||||
secure DHCPv6 servers, it is RECOMMENDED that the firewalls are | ||||
configured to pass ICMP Packet Too Big messages [RFC4443]. | ||||
5.2. New Components | 5.2. New Components | |||
The new components of the solution 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 public key certificate from a | private key pair and then obtain a certificate that signs the | |||
Certificate Authority that signs the public key. One option is | public key. The Certificate option is defined to carry the | |||
defined to carry the certificate. | 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 | ||||
the 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 | |||
secure DHCPv6 client/server need to meet some accuracy | Timestamp option is defined to carry the current time of the | |||
requirements and be synced to global time, while the timestamp | client/server. The secure DHCPv6 client/server need to meet some | |||
checking mechanism allows a configurable time value for clock | accuracy requirements and be synced to global time, while the | |||
drift. The real time provision is out of scope of this document. | timestamp checking mechanism allows a configurable time value for | |||
Another option is defined to carry the current time of the client/ | clock drift. The real time provision is out of scope of this | |||
server. | document. | |||
o An encrypted-message option that contains the encrypted DHCPv6 | o The Encrypted-message option that contains the encrypted DHCPv6 | |||
message. | message. | |||
o An Encrypted-Query message that sent from client to server. The | o The Encrypted-Query message that is sent from the secure DHCPv6 | |||
Encrypted-Query message contains the encrypted-message option and | client to the secure DHCPv6 server. The Encrypted-Query message | |||
server identifier option. | contains the Encrypted-message option and Server Identifier | |||
o An Encrypted-Response message that sent from server to client. | ||||
The Encrypted-Response message contains the encrypted-message | ||||
option. | option. | |||
5.3. Support for Algorithm Agility | o The Encrypted-Response message that is sent from the secure DHCPv6 | |||
server to the secure DHCPv6 client. The Encrypted-Response | ||||
Hash functions are used to provide message integrity checks. In | message contains the Encrypted-message option. | |||
order to provide a means of addressing problems that may emerge in | ||||
the future with existing hash algorithms, as recommended in | ||||
[RFC4270], this document provides a mechanism for negotiating the use | 5.3. Support for Algorithm Agility | |||
of more secure hashes in the future. | ||||
In addition to hash algorithm agility, this document also provides a | Encryption algorithm is used for DHCPv6 encryption to defend against | |||
mechanism for signature algorithm agility. | passive attack. In order to provide a means of addressing problems | |||
that may emerge in the future with existing encryption algorithms, | ||||
this document provides a mechanism for negotiating the use of more | ||||
encryption algorithms in the future. | ||||
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 the same | different senders, and the different senders in a same administrative | |||
administrative domain may be allowed to use various algorithms | domain may be allowed to use various algorithms simultaneously. It | |||
simultaneously. It is NOT RECOMMENDED that the same sender and | is NOT RECOMMENDED that the same sender and recipient use various | |||
recipient use various algorithms in a single communication session. | algorithms in a single communication session. | |||
If the recipient does not support the algorithm used by the sender, | If the server does not support the algorithm used by the client, the | |||
it cannot authenticate the message. In the client-to-server case, | server SHOULD reply with an AlgorithmNotSupported status code | |||
the 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). Upon receiving this status code, the | code, the client MAY resend the message protected with the mandatory | |||
client MAY resend the message protected with the mandatory algorithm | algorithm (defined in Section 10.1.1). | |||
(defined in Section 10.1.2). | ||||
5.4. Imposed Additional Constraints | 5.4. Applicability | |||
The client/server that supports the identity verification MAY impose | In principle, Secure DHCPv6 is applicable in any environment where | |||
additional constraints for the verification. For example, it may | physical security on the link is not assured and attacks on DHCPv6 | |||
impose limits on minimum and maximum key lengths. | are a concern. In practice, however, it will rely on some | |||
operational assumptions mainly regarding public key distribution and | ||||
management, until more lessons are learned and more experiences are | ||||
achieved. | ||||
Minbits The minimum acceptable key length for public keys. An upper | One feasible environment in an early deployment stage would be | |||
limit MAY also be set for the amount of computation needed when | enterprise networks. In such networks the security policy tends to | |||
verifying packets that use these security associations. The | be strict and it will be easier to manage client hosts. One trivial | |||
appropriate lengths SHOULD be set according to the signature | deployment scenario is therefore to manually pre-configure client | |||
algorithm and also following prudent cryptographic practice. For | with the trusted servers' public key and manually register clients' | |||
example, minimum length 1024 and upper limit 2048 may be used for | public keys for the server. It may also be possible to deploy an | |||
RSA [RSA]. | internal PKI to make this less reliant on manual operations, although | |||
it is currently subject to future study specifically how to integrate | ||||
such a PKI into the DHCPv6 service for the network. | ||||
5.5. Applicability | Note that this deployment scenario based on manual operation is not | |||
different very much from the existing, shared-secret based | ||||
authentication mechanisms defined in [RFC3315] in terms of | ||||
operational costs. However, Secure DHCPv6 is still securer than the | ||||
shared-secret mechanism in that even if clients' keys stored for the | ||||
server are stolen that does not mean an immediate threat as these are | ||||
public keys. In addition, if some kind of PKI is used with Secure | ||||
DHCPv6, even if the initial installation of the certificates is done | ||||
manually, it will help reduce operational costs of revocation in case | ||||
a private key (especially that of the server) is compromised. | ||||
Secure DHCPv6 is applicable in environments where physical security | It is believed that Secure DHCPv6 could be more widely applicable | |||
on the link is not assured and attacks on DHCPv6 are a concern, such | with integration of generic PKI so that it will be more easily | |||
as enterprise network. In enterprise network, the security policy is | deployed. But such a deployment requires more general issues with | |||
strict and the clients are stable terminals. The PKI model is used | PKI deployment be addressed, and it is currently unknown whether we | |||
for the secure DHCPv6 deployment. The deployment of PKI is out of | can find practical deployment scenarios. It is subject to future | |||
the scope of this document. The server is always considered to have | study and experiments, and out of scope of this document. | |||
connectivity to authorized CA and verify the clients' certificates. | ||||
The client performs the server authentication locally. The trusted | ||||
servers' certificates or trusted CAs' certificates, which form a | ||||
certification path [RFC5280], is deployed in the client to achieve | ||||
the server authentication. The DHCPv6 client obtains the trusted | ||||
certificates through the pre-configuration method or out of band, | ||||
such as QR code. After the mutual authentication, the DHCPv6 message | ||||
is encrypted with the recipient's public key, which is contained in | ||||
the certificate. | ||||
6. DHCPv6 Client Behavior | 6. DHCPv6 Client Behavior | |||
For the security DHCPv6 client, it must have a public certificate. | For the secure DHCPv6 client, a certificate is needed for client | |||
The client may be pre-configured with a public key certificate, which | authentication. The client is pre-configured with a certificate and | |||
is signed by a CA trusted by the server, and its corresponding | its corresponding private key. If the client is pre-configured with | |||
private key. | public key not certificate, it can generate the self-signed | |||
certificate for client authentication. | ||||
The DHCPv6 client multicasts the Information-request message to the | The secure DHCPv6 client multicasts the Information-request message | |||
DHCPv6 servers. The Information-request message MUST NOT include any | to the DHCPv6 servers. The Information-request message MUST NOT | |||
option which may reveal the private information of the client, such | include any option which may reveal the private information of the | |||
as the client identifier option. The information-request message is | client, such as the Client Identifier option or the Certificate | |||
used by the DHCPv6 client to request the server's identity | option. The Information-request message is used by the DHCPv6 client | |||
verification information without having addresses, prefixes or any | to request the server's identity verification information without | |||
non-security options assigned to it. The Option Request option in | having addresses, prefixes or any non-security options assigned to | |||
the Information-request message MUST contain the option code of | it. The Option Request option in the Information-request message | |||
certificate option, signature option, timestamp option, and server | MUST contain the option code of the Certificate option. | |||
identifier 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 that meet any of the | DHCPv6 client SHOULD discard any DHCPv6 messages when the Certificate | |||
following conditions: | option or Server Identifier option is missing. And then the client | |||
SHOULD first check the support of the encryption algorithm that the | ||||
o the signature option is missing, | server used. If the check fails, the Reply message SHOULD be | |||
dropped. If the encryption algorithm is supported, the client then | ||||
o multiple signature options are present, | checks the authority of this server. The client SHOULD also use the | |||
same algorithms in the return messages. | ||||
o the certificate option is missing. | ||||
And then the client SHOULD first check the support of the hash and | ||||
signature algorithms that the server used. If the check fails, the | ||||
Reply message SHOULD be dropped. If both hash and signature | ||||
algorithms are 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 | The client SHOULD validate the certificate according to the rules | |||
defined in [RFC5280]. An implementation may create a local trust | defined in [RFC5280]. An implementation may create a local trust | |||
certificate record for verified certificates in order to avoid | certificate record for verified certificates in order to avoid | |||
repeated verification procedure in the future. A certificate that | repeated verification procedure in the future. 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. At this point, the client has either recognized the | verified. The message transaction-id is used as the identifier of | |||
authentication of the server, or decided to drop the message. | the authenticated server's public key for encryption. At this point, | |||
the client has either recognized the certificate of the server, or | ||||
The client MUST now authenticate the server by verifying the | decided to drop the message. | |||
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. If there are no authenticated DHCPv6 servers or | configuration. The client can also choose other implementation | |||
existing servers failed authentication, the client behavior is policy | method depending on the client's local policy if the defined protocol | |||
specific. Depending on its policy, it can choose to connect using | can also run normally. For example, the client can try multiple | |||
plain, unencrypted DHCPv6, repeat the server discovery process after | transactions (each with different server) at the "same" time. If | |||
certain delay or attempt to connect to a different network. The | there are no authenticated DHCPv6 servers or existing servers failed | |||
client MUST NOT conduct the server discovery process immediately to | authentication, the client should retry a number of times. In this | |||
avoid the packet storm. | way, it is difficult for the rogue server to beat out a busy "real" | |||
server. And then the client takes some alternative action depending | ||||
on its local policy, such as attempting to use an unsecured DHCPv6 | ||||
server. The client conducts the server discovery 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 is constructed with the encrypted-message option, which MUST | message contains the Encrypted-message option, which MUST be | |||
be constructed as explained in Section 10.1.4, and server identifier | constructed as explained in Section 10.1.3, 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 extra of decryption | Identifier option is externally visible to avoid decryption cost by | |||
cost by those unselected servers. | those unselected servers. | |||
The information for client authentication is contained in the | For the encrypted DHCPv6 message sent from the DHCPv6 client to the | |||
Solicit/Information-request message, which is encrypted and then | DHCPv6 server, the first DHCPv6 message, such as Solicit message, | |||
encapsulated into the Encrypted-Query message to avoid client privacy | MUST contain the Certificate option for client authentication. The | |||
disclosure. The Solicit/Information-request message MUST contain the | Certificate option MUST be constructed as explained in | |||
certificate option, which MUST be constructed as explained in | Section 10.1.1. If the client have multiple certificate with | |||
Section 10.1.1. In addition, one and only one signature option MUST | different public/private key pairs, the message transaction-id is | |||
be contained, which MUST be constructed as explained in | used as the identifier of the client's private key for decryption. | |||
Section 10.1.2. It protects the message header and all DHCPv6 | In addition, the encrypted DHCPv6 message can contain the timestamp | |||
options except for the Authentication Option. One and only one | option to defend against replay attacks. The timestamp option MUST | |||
Timestamp option, which MUST be constructed as explained in | be constructed as explained in Section 10.1.2. | |||
Section 10.1.3. The Timestamp field SHOULD be set to the current | ||||
time, according to sender's real time clock. | ||||
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 client fails to get the proper parameters from | per [RFC3315]. If the decrypted DHCPv6 message contains the | |||
the chosen server, it sends the Encrypted-Query message to another | timestamp option, the DHCPv6 client checks the timestamp according to | |||
authenticated server for parameters configuration until the client | the rule defined in Section 9.1. The DHCPv6 message, which fails the | |||
obtains the proper parameters. | timestamp check, MUST be discarded. If the client fails to get the | |||
proper parameters from the chosen server, it sends the Encrypted- | ||||
Query message to another authenticated server for 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: | |||
o Upon receiving an AlgorithmNotSupported error status code, the | o Upon receiving an AlgorithmNotSupported error status code, the | |||
client SHOULD resend the message protected with one of the | client SHOULD resend the message protected with one of the | |||
mandatory algorithms. | mandatory algorithms. | |||
o Upon receiving an AuthenticationFail error status code, the client | o Upon receiving an AuthenticationFail error status code, the client | |||
is not able to build up the secure communication with the | is not able to build up the secure communication with the server. | |||
recipient. However, there may be other DHCPv6 servers available | However, there may be other DHCPv6 servers available that | |||
that successfully complete authentication. The client MAY use the | successfully complete authentication. The client MAY use the | |||
AuthenticationFail as a hint and switch to other public key | AuthenticationFail as a hint and switch to other certificate if it | |||
certificate if it has another one; but otherwise treat the message | has another one; but otherwise treat the message containing the | |||
containing the status code as if it had not been received. But it | status code as if it had not been received. But it SHOULD NOT | |||
SHOULD NOT retry with the same certificate. However, if the | retry with the same certificate. However, if the client decides | |||
client decides to retransmit using the same certificate after | to retransmit using the same certificate after receiving | |||
receiving AuthenticationFail, it MUST NOT retransmit immediately | AuthenticationFail, it MUST NOT retransmit immediately and MUST | |||
and MUST follow normal retransmission routines defined in | follow normal retransmission routines defined in [RFC3315]. | |||
[RFC3315]. | ||||
o Upon receiving a DecryptionFail error status code, the client MAY | ||||
resend the message following normal retransmission routines | ||||
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, it also MUST have a public certificate. | For the secure DHCPv6 server, a certificate is need for server | |||
The server may be pre-configured a public key certificate, which is | authentication. The server is pre-configured with a certificate and | |||
signed by a CA trusted by the server, and its corresponding private | its corresponding private key. If the server is pre-configured with | |||
key. | public key not certificate, it can generate the self-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 informs the request for the | the contained Option Request option identifies the request is for the | |||
server authentication information, it replies the 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. In | option, which MUST be constructed as explained in Section 10.1.1, and | |||
addition, the Reply message MUST contain one and only one Signature | Server Identifier option. | |||
option, which MUST be constructed as explained in Section 10.1.2. It | ||||
protects the message header and all DHCPv6 options except for the | ||||
Authentication Option. 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 | |||
the message. | messages not for it. | |||
If the decrypted message is Solicit/Information-request message, the | ||||
secure DHCPv6 server SHOULD discard the received message that meet | ||||
any of the following conditions: | ||||
o the signature option is missing, | ||||
o multiple signature options are present, | ||||
o the certificate option is missing. | ||||
In such failure, the server SHOULD reply an UnspecFail (value 1, | ||||
[RFC3315]) error status code. | ||||
The server SHOULD first check the support of the hash and signature | If the decrypted message is a Solicit/Information-request message, | |||
algorithms that the client used. If the check fails, the server | the secure DHCPv6 server SHOULD discard the received message if the | |||
SHOULD reply with an AlgorithmNotSupported error status code, defined | Certificate option is missing. In such failure, the server SHOULD | |||
in Section 10.3, back to the client. If both hash and signature | reply with an UnspecFail (value 1, [RFC3315]) error status code. | |||
algorithms are supported, the server then checks the authority of | ||||
this client. | ||||
If a certificate option is provided, the server SHOULD validate the | If a Certificate option is provided, the server SHOULD first check | |||
certificate according to the rules defined in [RFC5280]. An | the support of the encryption algorithm that the client used. If the | |||
implementation may create a local trust certificate record for | check fails, the server SHOULD reply with an AlgorithmNotSupported | |||
verified certificates in order to avoid repeated verification | error status code, defined in Section 10.3 back to the client. If | |||
procedure in the future. A certificate that finds a match in the | the encryption algorithm is supported, the server then checks the | |||
local trust certificate list is treated as verified. | authority of this client. | |||
The message that fails certificate validation, MUST be dropped. In | The server SHOULD validate the certificate according to the rules | |||
such failure, the DHCPv6 server SHOULD reply an AuthenticationFail | defined in [RFC5280]. An implementation may create a local trust | |||
error status code, defined in Section 10.3, back to the client. At | certificate record for verified certificates in order to avoid | |||
this point, the server has either recognized the authentication of | repeated verification procedure in the future. A certificate that | |||
the client, or decided to drop the message. | 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 server does not send the timestamp option, the client ignores | If the decrypted message contains the timestamp option, the server | |||
the timestamp check and verifies the signature. If there is a | checks the timestamp according to the rule defined in Section 9.1. | |||
timestamp option, the server MUST now authenticate the client by | If the timestamp check fails, a TimestampFail error status code, | |||
verifying the signature and checking timestamp (see details in | defined in Section 10.3, should be sent back to the client. | |||
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 | Depending on server's local policy, the message without a Timestamp | |||
been calculated as specified in Section 10.1.2. Only the clients | option MAY be acceptable or rejected. If the server rejects such a | |||
that get through both the signature verification and timestamp check | message, a TimestampFail error status code should be sent back to the | |||
(if there is a Timestamp option) are accepted as authenticated | client. The Reply message that carries the TimestampFail error | |||
clients and continue to be handled their message as defined in | status code SHOULD carry a timestamp option, which indicates the | |||
[RFC3315]. Clients that do not pass the above tests MUST be treated | server's clock for the client to use. | |||
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.4. The encrypted-message | constructed as explained in Section 10.1.3. 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. | the authenticated client's public key. To provide the replay | |||
protection, the timestamp option can be contained in the encrypted | ||||
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 describes 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 SHOULD 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 signature Option or timestamp | additional Certificate option or Timestamp option, aside from those | |||
Option, aside from those present in the innermost encapsulated | present in the innermost encapsulated messages from the client or | |||
messages from the client or server. | server. | |||
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.3, | In order to check the Timestamp option, defined in Section 10.1.2, | |||
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, with certain | communication peers have roughly synchronized clocks, within certain | |||
allowed clock drift. So, 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 both | accepted secure DHCPv6 message is successfully verified (for | |||
timestamp check and signature verification): | timestamp check): | |||
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 both timestamp check and signature verification) | A verified (for timestamp check) secure DHCPv6 message initiates the | |||
secure DHCPv6 message initiates the update of the above variables in | update of the above variables in the recipient's record. | |||
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 15, line 36 ¶ | skipping to change at page 14, line 16 ¶ | |||
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. Five new DHCPv6 | This section describes the extensions to DHCPv6. Three new DHCPv6 | |||
options, two new DHCPv6 messages and five status codes are defined. | options, two new DHCPv6 messages and four 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 public key certificate of the | The Certificate option carries the certificate of the client/server. | |||
client/server. The format of the certificate option is described as | The format of the Certificate option is described as follows: | |||
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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| OPTION_CERTIFICATE | option-len | | | OPTION_CERTIFICATE | option-len | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | EA-id | | | |||
. Certificate (variable length) . | +-+-+-+-+-+-+-+-+ . | |||
. Certificate (variable length) . | ||||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
option-code OPTION_CERTIFICATE (TBA1). | option-code OPTION_CERTIFICATE (TBA1). | |||
option-len Length of certificate in octets. | option-len 1 + Length of certificate in octets. | |||
EA-id Encryption Algorithm id. The encryption algorithm | ||||
is used for the encrypted DHCPv6 configuration | ||||
process. This design is adopted in order to provide | ||||
encryption algorithm agility. The value is from the | ||||
Encryption Algorithm for Secure DHCPv6 registry in | ||||
IANA. A registry of the initial assigned values | ||||
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 - Signature (4) | The support of X.509 certificate is mandatory. | |||
is mandatory. | ||||
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 any place within the DHCPv6 message while it is logically created | ||||
after the entire DHCPv6 header and options, except for the | ||||
Authentication Option. It protects the entire DHCPv6 header and | ||||
options, including itself, except for the Authentication Option. 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 8. | ||||
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 8. | ||||
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 both signature and authentication option are present, | ||||
signature option does not protect the Authentication Option. It | ||||
allows the Authentication Option be created after signature has been | ||||
calculated and filled with the valid signature. It is because both | ||||
options need to apply hash algorithm to whole message, so there must | ||||
be a clear order and there could be only one last-created option. | ||||
changing auth option, the authors chose not include authentication | ||||
option in the signature. | ||||
10.1.3. Timestamp Option | 10.1.2. 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 (TBA3). | option-code OPTION_TIMESTAMP (TBA2). | |||
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 danger of replay attacks. The timestamp data MUST | |||
be in format as defined in Section 5.3.1, [RFC3971]. | ||||
10.1.4. Encrypted-message Option | 10.1.3. 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 (TBA4). | option-code OPTION_ENCRYPTED_MSG (TBA3). | |||
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 | |||
10.2.1. Encrypted-Query Message | Two new DHCPv6 messages are defined to achieve the DHCPv6 encryption: | |||
Encrypted-Query and Encrypted-Response. Both the DHCPv6 messages | ||||
The Encrypted-Query message is sent from DHCPv6 client to DHCPv6 | defined in this document share the following format: | |||
server, which contains the server identifier option and encrypted- | ||||
message option. | ||||
The format of the Encrypted-Query message is: | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| msg-type | transaction-id | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
. DUID . | ||||
| (variable) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
. encrypted-message option . | ||||
. (variable) . | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 2: The format of Encrypted-Query Message | ||||
msg-type ENCRYPTED-QUERY (TBA5) | ||||
transaction-id The transaction ID for this message exchange. | ||||
DUID The DUID for the server. | ||||
encrypted-message option The encrypted DHCPv6 message. | ||||
10.2.2. Encrypted-Response Message | ||||
The Encrypted-Response message is sent from DHCPv6 server to DHCPv6 | ||||
client, which contains the encrypted-message option. | ||||
The format of the Encrypted-Response message 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| msg-type | transaction-id | | | msg-type | transaction-id | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
. encrypted-message option . | . options . | |||
. (variable) . | . (variable) . | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3: The format of Encrypted-Response Message | Figure 2: The format of Encrypted-Query and Encrypted-Response | |||
Messages | ||||
msg-type ENCRYPTED-RESPONSE (TBA6). | msg-type Identifier of the message type. It can be either | |||
Encrypted-Query (TBA4) or DHCPv6-Response (TBA5). | ||||
transaction-id The transaction ID for this message exchange. | transaction-id The transaction ID for this message exchange. | |||
encrypted-message option The encrypted DHCPv6 message. | options The Encrypted-Query message MUST contain the Server | |||
Identifier option and Encrypted-message option. The | ||||
Encrypted-Response message MUST contain the | ||||
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 (TBD7): indicates that the DHCPv6 server | o AlgorithmNotSupported (TBD6): indicates that the DHCPv6 server | |||
does not support algorithms that sender used. | does not support algorithms that sender used. | |||
o AuthenticationFail (TBD8): indicates that the DHCPv6 client fails | o AuthenticationFail (TBD7): indicates that the DHCPv6 client fails | |||
authentication check. | authentication check. | |||
o TimestampFail (TBD9): indicates the message from DHCPv6 client | o TimestampFail (TBD8): indicates the message from DHCPv6 client | |||
fails the timestamp check. | fails the timestamp check. | |||
o SignatureFail (TBD10): indicates the message from DHCPv6 client | o DecryptionFail (TBD9): indicates the message from DHCPv6 client | |||
fails the signature check. | 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 the 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 the 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 21, line 30 ¶ | skipping to change at page 18, line 38 ¶ | |||
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. | |||
12. IANA Considerations | 12. IANA Considerations | |||
This document defines five new DHCPv6 [RFC3315] options. The IANA is | This document defines three new DHCPv6 [RFC3315] options. The IANA | |||
requested to assign values for these five options from the DHCPv6 | is requested to assign values for these three 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 five options | http://www.iana.org/assignments/dhcpv6-parameters. The three options | |||
are: | are: | |||
The Certificate Option (TBA1), described in Section 10.1.1. | The Certificate option (TBA1), described in Section 10.1.1. | |||
The Signature Option (TBA2), described in Section 10.1.2. | ||||
The Timestamp Option (TBA3),described in Section 10.1.3. | The Timestamp option (TBA2),described in Section 10.1.2. | |||
The Encrypted-message Option (TBA4), described in Section 10.1.4. | The Encrypted-message option (TBA3), described in Section 10.1.3. | |||
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 (TBA5), described in Section 10.2.1. | The Encrypted-Query message (TBA4), described in Section 10.2. | |||
The Encrypted-Response Message (TBA6), described in | The Encrypted-Response message (TBA5), described in Section 10.2. | |||
Section 10.2.2. | ||||
The IANA is also requested to add two new registry tables to the | The IANA is also requested to add one new registry tables to the | |||
DHCPv6 Parameters registry maintained in | DHCPv6 Parameters registry maintained in | |||
http://www.iana.org/assignments/dhcpv6-parameters. The two tables | http://www.iana.org/assignments/dhcpv6-parameters. The table is the | |||
are the Hash Algorithm for Secure DHCPv6 table and the Signature | Encryption Algorithm for Secure DHCPv6 table. | |||
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 | Encryption algorithm for Secure DHCPv6. The values in this table are | |||
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 | 8-bit unsigned integers. The following initial values are assigned | |||
for Signature Algorithm for Secure DHCPv6 in this document: | for encryption algorithm for Secure DHCPv6 in this document: | |||
Name | Value | RFCs | Name | Value | RFCs | |||
-------------------+---------+-------------- | -------------------+---------+-------------- | |||
RSASSA-PKCS1-v1_5 | 0x01 | 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 | |||
---------+-----------------------+-------------- | ---------+-----------------------+-------------- | |||
TBD7 | AlgorithmNotSupported | this document | TBD6 | AlgorithmNotSupported | this document | |||
TBD8 | AuthenticationFail | this document | TBD7 | AuthenticationFail | this document | |||
TBD9 | TimestampFail | this document | TBD8 | TimestampFail | this document | |||
TBD10 | SignatureFail | this document | TBD9 | DecryptionFail | this document | |||
13. Acknowledgements | 13. Acknowledgements | |||
The authors would like to thank Tomek Mrugalski, Bernie Volz, Randy | The authors would like to thank Tomek Mrugalski, Bernie Volz, | |||
Bush, Yiu Lee, Jianping Wu, Sean Shen, Ralph Droms, Jari Arkko, Sean | Jianping Wu, Randy Bush, Yiu Lee, Sean Shen, Ralph Droms, Jari Arkko, | |||
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. References | 14. Change log [RFC Editor: Please remove] | |||
14.1. Normative References | draft-ietf-dhc-sedhcpv6-11: Delete the Signature option, because the | |||
encrypted DHCPv6 message and the Information-request message (only | ||||
contain the certificate option) don't need the signature option for | ||||
message integrity check; Rewrite the "Applicability" section; Add the | ||||
encryption algorithm negotiation process; To support the encryption | ||||
algorithm negotiation, the Certificate option contains the EA- | ||||
id(encryption algorithm identifier) field; Reserve the timestamp | ||||
option to defend against the replay attacks for encrypted DHCPv6 | ||||
configuration process; Modify the client behavior when there is no | ||||
authenticated DHCPv6 server; Add the DecryptionFail error code. | ||||
2016-3-9. | ||||
draft-ietf-dhc-sedhcpv6-10: merge DHCPv6 authentication and DHCPv6 | ||||
encryption. The public key option is removed, because the device can | ||||
generate the self-signed certificate if it is pre-configured the | ||||
public key not the certificate. 2015-12-10. | ||||
draft-ietf-dhc-sedhcpv6-09: change some texts about the deployment | ||||
part.2015-12-10. | ||||
draft-ietf-dhc-sedhcpv6-08: clarified what the client and the server | ||||
should do if it receives a message using unsupported algorithm; | ||||
refined the error code treatment regarding to AuthenticationFail and | ||||
TimestampFail; added consideration on how to reduce the DoS attack | ||||
when using TOFU; other general editorial cleanups. 2015-06-10. | ||||
draft-ietf-dhc-sedhcpv6-07: removed the deployment consideration | ||||
section; instead, described more straightforward use cases with TOFU | ||||
in the overview section, and clarified how the public keys would be | ||||
stored at the recipient when TOFU is used. The overview section also | ||||
clarified the integration of PKI or other similar infrastructure is | ||||
an open issue. 2015-03-23. | ||||
draft-ietf-dhc-sedhcpv6-06: remove the limitation that only clients | ||||
use PKI- certificates and only servers use public keys. The new text | ||||
would allow clients use public keys and servers use PKI-certificates. | ||||
2015-02-18. | ||||
draft-ietf-dhc-sedhcpv6-05: addressed comments from mail list that | ||||
responsed to the second WGLC. 2014-12-08. | ||||
draft-ietf-dhc-sedhcpv6-04: addressed comments from mail list. | ||||
Making timestamp an independent and optional option. Reduce the | ||||
serverside authentication to base on only client's certificate. | ||||
Reduce the clientside authentication to only Leaf of Faith base on | ||||
server's public key. 2014-09-26. | ||||
draft-ietf-dhc-sedhcpv6-03: addressed comments from WGLC. Added a | ||||
new section "Deployment Consideration". Corrected the Public Key | ||||
Field in the Public Key Option. Added consideration for large DHCPv6 | ||||
message transmission. Added TimestampFail error code. Refined the | ||||
retransmission rules on clients. 2014-06-18. | ||||
draft-ietf-dhc-sedhcpv6-02: addressed comments (applicability | ||||
statement, redesign the error codes and their logic) from IETF89 DHC | ||||
WG meeting and volunteer reviewers. 2014-04-14. | ||||
draft-ietf-dhc-sedhcpv6-01: addressed comments from IETF88 DHC WG | ||||
meeting. Moved Dacheng Zhang from acknowledgement to be co-author. | ||||
2014-02-14. | ||||
draft-ietf-dhc-sedhcpv6-00: adopted by DHC WG. 2013-11-19. | ||||
draft-jiang-dhc-sedhcpv6-02: removed protection between relay agent | ||||
and server due to complexity, following the comments from Ted Lemon, | ||||
Bernie Volz. 2013-10-16. | ||||
draft-jiang-dhc-sedhcpv6-01: update according to review comments from | ||||
Ted Lemon, Bernie Volz, Ralph Droms. Separated Public Key/ | ||||
Certificate option into two options. Refined many detailed | ||||
processes. 2013-10-08. | ||||
draft-jiang-dhc-sedhcpv6-00: original version, this draft is a | ||||
replacement of draft-ietf-dhc-secure-dhcpv6, which reached IESG and | ||||
dead because of consideration regarding to CGA. The authors followed | ||||
the suggestion from IESG making a general public key based mechanism. | ||||
2013-06-29. | ||||
15. Open Issues [RFC Editor: Please remove] | ||||
this protocol changes DHCPv6 message exchanges quite substantially: | ||||
previously, the client first sends a Solicit message, gets possibly | ||||
multiple Advertise messages, chooses the server (= sender of one of | ||||
the Advertises) that would be best for the client, and then sends a | ||||
Request to that chosen server. Now the server selection is done at | ||||
the key exchange phase (the initial Information-request and Reply | ||||
exchange), and the Solicit can be sent only to a single server. If | ||||
the client doesn't like the Advertise it could restart the whole | ||||
process, but it will be more expensive, and there's no guarantee that | ||||
other servers can provide a better Advertise. | ||||
One might argue that it's okay as "secure DHCPv6" is an "optional" | ||||
extension. But, with keeping in mind that the current IETF trend is | ||||
to make everything privacy-aware (often by making everything | ||||
encrypted), I'd personally say we should consider it to be the | ||||
standard mode of DHCPv6 operation even if users can still disable it. | ||||
From this point of view, I think we should either | ||||
o A. make the server selection behavior more compatible with the | ||||
pre-encryption protocol, or | ||||
o B. accept we give up the previous server selection feature for | ||||
privacy (after careful assessment of its effect and with clear wg | ||||
consensus), and explicitly note that. we might even have to | ||||
reflect that in rfc3315bis. | ||||
16. References | ||||
16.1. Normative References | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, | |||
December 1998, <http://www.rfc-editor.org/info/rfc2460>. | December 1998, <http://www.rfc-editor.org/info/rfc2460>. | |||
[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, | [RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, | |||
C., and M. Carney, "Dynamic Host Configuration Protocol | C., and M. Carney, "Dynamic Host Configuration Protocol | |||
for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July | for IPv6 (DHCPv6)", RFC 3315, DOI 10.17487/RFC3315, July | |||
2003, <http://www.rfc-editor.org/info/rfc3315>. | 2003, <http://www.rfc-editor.org/info/rfc3315>. | |||
[RFC3971] Arkko, J., Ed., Kempf, J., Zill, B., and P. Nikander, | ||||
"SEcure Neighbor Discovery (SEND)", RFC 3971, | ||||
DOI 10.17487/RFC3971, March 2005, | ||||
<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., | [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | |||
Housley, R., and W. Polk, "Internet X.509 Public Key | Housley, R., and W. Polk, "Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | |||
skipping to change at page 24, line 5 ¶ | skipping to change at page 23, line 19 ¶ | |||
[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. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <http://www.rfc-editor.org/info/rfc7296>. | 2014, <http://www.rfc-editor.org/info/rfc7296>. | |||
14.2. Informative References | 16.2. Informative References | |||
[RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, | [RFC2629] Rose, M., "Writing I-Ds and RFCs using XML", RFC 2629, | |||
DOI 10.17487/RFC2629, June 1999, | DOI 10.17487/RFC2629, June 1999, | |||
<http://www.rfc-editor.org/info/rfc2629>. | <http://www.rfc-editor.org/info/rfc2629>. | |||
[RFC4270] Hoffman, P. and B. Schneier, "Attacks on Cryptographic | [RFC4270] Hoffman, P. and B. Schneier, "Attacks on Cryptographic | |||
Hashes in Internet Protocols", RFC 4270, | Hashes in Internet Protocols", RFC 4270, | |||
DOI 10.17487/RFC4270, November 2005, | DOI 10.17487/RFC4270, November 2005, | |||
<http://www.rfc-editor.org/info/rfc4270>. | <http://www.rfc-editor.org/info/rfc4270>. | |||
skipping to change at page 24, line 49 ¶ | skipping to change at page 24, line 18 ¶ | |||
CN | CN | |||
Email: jiangsheng@huawei.com | Email: jiangsheng@huawei.com | |||
Lishan Li | Lishan Li | |||
Tsinghua University | Tsinghua University | |||
Beijing 100084 | Beijing 100084 | |||
P.R.China | P.R.China | |||
Phone: +86-15201441862 | Phone: +86-15201441862 | |||
Email: lilishan9248@126.com | Email: lilishan48@gmail.com | |||
Yong Cui | Yong Cui | |||
Tsinghua University | Tsinghua University | |||
Beijing 100084 | Beijing 100084 | |||
P.R.China | P.R.China | |||
Phone: +86-10-6260-3059 | Phone: +86-10-6260-3059 | |||
Email: yong@csnet1.cs.tsinghua.edu.cn | Email: yong@csnet1.cs.tsinghua.edu.cn | |||
Tatuya Jinmei | Tatuya Jinmei | |||
Infoblox Inc. | Infoblox Inc. | |||
End of changes. 119 change blocks. | ||||
572 lines changed or deleted | 505 lines changed or added | |||
This html diff was produced by rfcdiff 1.44. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |