rfc9838v1.txt | rfc9838.txt | |||
---|---|---|---|---|
skipping to change at line 15 ¶ | skipping to change at line 15 ¶ | |||
Category: Standards Track Independent | Category: Standards Track Independent | |||
ISSN: 2070-1721 September 2025 | ISSN: 2070-1721 September 2025 | |||
Group Key Management Using the Internet Key Exchange Protocol Version 2 | Group Key Management Using the Internet Key Exchange Protocol Version 2 | |||
(IKEv2) | (IKEv2) | |||
Abstract | Abstract | |||
This document presents an extension to the Internet Key Exchange | This document presents an extension to the Internet Key Exchange | |||
Protocol Version 2 (IKEv2) for the purpose of group key management. | Protocol Version 2 (IKEv2) for the purpose of group key management. | |||
The protocol is in conformance with the Multicast Security (MSEC) key | The protocol is in conformance with the Multicast Security (MSEC) | |||
management architecture, which contains two components: member | Group Key Management architecture, which contains two components: | |||
registration and group rekeying. Both components are required for a | member registration and group rekeying. Both components are required | |||
Group Controller/Key Server (GCKS) to provide authorized Group | for a Group Controller/Key Server (GCKS) to provide authorized Group | |||
Members (GMs) with IPsec Group Security Associations (GSAs). The | Members (GMs) with IPsec Group Security Associations (GSAs). The GMs | |||
group members then exchange IP multicast or other group traffic as | then exchange IP multicast or other group traffic as IPsec packets. | |||
IPsec packets. | ||||
This document obsoletes RFC 6407. | This document obsoletes RFC 6407. | |||
Status of This Memo | Status of This Memo | |||
This is an Internet Standards Track document. | This is an Internet Standards Track document. | |||
This document is a product of the Internet Engineering Task Force | This document is a product of the Internet Engineering Task Force | |||
(IETF). It represents the consensus of the IETF community. It has | (IETF). It represents the consensus of the IETF community. It has | |||
received public review and has been approved for publication by the | received public review and has been approved for publication by the | |||
skipping to change at line 116 ¶ | skipping to change at line 115 ¶ | |||
6. Interaction with IKEv2 and ESP Extensions | 6. Interaction with IKEv2 and ESP Extensions | |||
6.1. Implicit IV for Counter-Based Ciphers in ESP | 6.1. Implicit IV for Counter-Based Ciphers in ESP | |||
6.2. Mixing Preshared Keys in IKEv2 for Post-Quantum Security | 6.2. Mixing Preshared Keys in IKEv2 for Post-Quantum Security | |||
6.3. Aggregation and Fragmentation Mode for ESP | 6.3. Aggregation and Fragmentation Mode for ESP | |||
7. GDOI Protocol Extensions | 7. GDOI Protocol Extensions | |||
8. Security Considerations | 8. Security Considerations | |||
8.1. GSA Registration and Secure Channel | 8.1. GSA Registration and Secure Channel | |||
8.2. GSA Maintenance Channel | 8.2. GSA Maintenance Channel | |||
8.2.1. Authentication/Authorization | 8.2.1. Authentication/Authorization | |||
8.2.2. Confidentiality | 8.2.2. Confidentiality | |||
8.2.3. Man-in-the-Middle Attack Protection | 8.2.3. On-Path Attack Protection | |||
8.2.4. Replay/Reflection Attack Protection | 8.2.4. Replay/Reflection Attack Protection | |||
9. IANA Considerations | 9. IANA Considerations | |||
9.1. New Registries | 9.1. New Registries | |||
9.1.1. Guidance for Designated Experts | 9.1.1. Guidance for Designated Experts | |||
9.2. Changes in the Existing IKEv2 Registries | 9.2. Changes in the Existing IKEv2 Registries | |||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
10.2. Informative References | 10.2. Informative References | |||
Appendix A. Use of LKH in G-IKEv2 | Appendix A. Use of LKH in G-IKEv2 | |||
A.1. Notation | A.1. Notation | |||
A.2. Group Creation | A.2. Group Creation | |||
A.3. Simple Group SA Rekey | A.3. Simple Group SA Rekey | |||
A.4. Group Member Exclusion | A.4. Group Member Exclusion | |||
Acknowledgements | Acknowledgements | |||
Contributors | Contributors | |||
Authors' Addresses | Authors' Addresses | |||
1. Introduction and Overview | 1. Introduction and Overview | |||
This document presents an extension to IKEv2 [RFC7296] called | This document presents an extension to IKEv2 [RFC7296] called | |||
G-IKEv2, which allows performing group key management. A group key | G-IKEv2, which accommodates group key management. A group key | |||
management protocol provides IPsec keys and policy to a set of IPsec | management protocol provides IPsec keys and policy to a set of IPsec | |||
devices that are authorized to communicate using a Group Security | devices that are authorized to communicate using a Group Security | |||
Association (GSA) defined in Multicast Group Security Architecture | Association (GSA) defined in Multicast Group Security Architecture | |||
[RFC3740]. The data communications within the group (e.g., IP | [RFC3740]. The data communications within the group (e.g., IP | |||
multicast packets) are protected by a key pushed to the Group Members | multicast packets) are protected by a key pushed to the GMs by the | |||
(GMs) by the Group Controller/Key Server (GCKS). | Group Controller/Key Server (GCKS). | |||
G-IKEv2 conforms to "The Multicast Group Security Architecture" | G-IKEv2 conforms to "The Multicast Group Security Architecture" | |||
[RFC3740], "Multicast Extensions to the Security Architecture for the | [RFC3740], "Multicast Extensions to the Security Architecture for the | |||
Internet Protocol" [RFC5374], and "Multicast Security (MSEC) Group | Internet Protocol" [RFC5374], and "Multicast Security (MSEC) Group | |||
Key Management Architecture" [RFC4046]. G-IKEv2 replaces "The Group | Key Management Architecture" [RFC4046]. G-IKEv2 replaces "The Group | |||
Domain of Interpretation" [RFC6407], which defines a similar group | Domain of Interpretation" [RFC6407], which defines a similar group | |||
key management protocol using IKEv1 [RFC2409] (since deprecated by | key management protocol using IKEv1 [RFC2409] (since deprecated by | |||
IKEv2). When G-IKEv2 is used, group key management use cases can | IKEv2). When G-IKEv2 is used, group key management use cases can | |||
benefit from the simplicity, increased robustness, and cryptographic | benefit from the simplicity, increased robustness, and cryptographic | |||
improvements of IKEv2 (see Appendix A of [RFC7296]). | improvements of IKEv2 (see Appendix A of [RFC7296]). | |||
skipping to change at line 178 ¶ | skipping to change at line 177 ¶ | |||
GCKS. During this exchange, the GCKS authenticates and authorizes | GCKS. During this exchange, the GCKS authenticates and authorizes | |||
the GM and then pushes policy and keys used by the group to the GM. | the GM and then pushes policy and keys used by the group to the GM. | |||
The second new exchange type is the GSA_REGISTRATION exchange | The second new exchange type is the GSA_REGISTRATION exchange | |||
(Section 2.3.2), which can be used by the GM within the already- | (Section 2.3.2), which can be used by the GM within the already- | |||
established IKE SA with the GCKS (e.g., for registering to another | established IKE SA with the GCKS (e.g., for registering to another | |||
group). | group). | |||
Refreshing the group keys can be performed either in a unicast mode | Refreshing the group keys can be performed either in a unicast mode | |||
via the GSA_INBAND_REKEY exchange (Section 2.4.2) performed over a | via the GSA_INBAND_REKEY exchange (Section 2.4.2) performed over a | |||
specific IKE SA between a GM and a GCKS or in a multicast mode with | specific IKE SA between a GM and a GCKS or in a multicast mode with | |||
the GSA_REKEY pseudo exchange (Section 2.4.1) when new keys are being | the GSA_REKEY pseudo-exchange (Section 2.4.1) when new keys are being | |||
distributed to all GMs. | distributed to all GMs. | |||
Large and small groups may use different sets of these mechanisms. | Large and small groups may use different sets of these mechanisms. | |||
When a large group of devices are communicating, the GCKS is likely | When a large group of devices are communicating, the GCKS is likely | |||
to use the GSA_REKEY message for efficiency. This is shown in | to use the GSA_REKEY message for efficiency. This is shown in | |||
Figure 1, where multicast communications are indicated with a double | Figure 1, where multicast communications are indicated with a double | |||
line. (Note: For clarity, IKE_SA_INIT is omitted from Figures 1 and | line. (Note: For clarity, IKE_SA_INIT is omitted from Figures 1 and | |||
2.) | 2.) | |||
+--------+ | +--------+ | |||
skipping to change at line 270 ¶ | skipping to change at line 269 ¶ | |||
for describing G-IKEv2 payloads and exchanges. | for describing G-IKEv2 payloads and exchanges. | |||
The following key terms are used throughout this document (mostly | The following key terms are used throughout this document (mostly | |||
borrowed from [RFC3740], [RFC5374], and [RFC6407]). | borrowed from [RFC3740], [RFC5374], and [RFC6407]). | |||
Group: | Group: | |||
A set of IPsec devices that communicate to each other using | A set of IPsec devices that communicate to each other using | |||
multicast. | multicast. | |||
Group Member (GM): | Group Member (GM): | |||
An IPsec device that belongs to a group. A Group Member is | An IPsec device that belongs to a group. A GM is authorized to be | |||
authorized to be a Group Sender and/or a Group Receiver. | a group sender and/or a group receiver. | |||
Group Receiver: | Group Receiver: | |||
A Group Member that is authorized to receive packets sent to a | A GM that is authorized to receive packets sent to a group by a | |||
group by a Group Sender. | group sender. | |||
Group Sender: | Group Sender: | |||
A Group Member that is authorized to send packets to a group. | A GM that is authorized to send packets to a group. | |||
Group Key Management (GKM) Protocol: | Group Key Management (GKM) Protocol: | |||
A key management protocol used by a GCKS to distribute IPsec | A key management protocol used by a GCKS to distribute IPsec | |||
Security Association policy and keying material. A GKM protocol | Security Association policy and keying material. A GKM protocol | |||
is needed because a group of IPsec devices require the same SAs. | is needed because a group of IPsec devices require the same SAs. | |||
For example, when an IPsec SA describes an IP multicast | For example, when an IPsec SA describes an IP multicast | |||
destination, the sender and all receivers need to have the group | destination, the sender and all receivers need to have the group | |||
SA. | SA. | |||
Group Controller/Key Server (GCKS): | Group Controller/Key Server (GCKS): | |||
A Group Key Management (GKM) protocol server that manages IPsec | A Group Key Management (GKM) protocol server that manages IPsec | |||
state for a group. A GCKS authenticates and provides the IPsec SA | state for a group. A GCKS authenticates and provides the IPsec SA | |||
policy and keying material to GMs. | policy and keying material to GMs. | |||
Data-Security SA: | Data-Security SA: | |||
A multicast SA between each multicast sender and the group's | A multicast SA between each multicast sender and the group's | |||
receivers. The Data-Security SA protects data between member | receivers. The Data-Security SA protects data between member | |||
senders and member receivers. One or more SAs are required for | senders and member receivers. One or more SAs are required for | |||
the multicast transmission of data messages from the Group Sender | the multicast transmission of data messages from the group sender | |||
to other group members. This specification relies on | to other GMs. This specification relies on Encapsulating Security | |||
Encapsulating Security Payload (ESP) and Authentication Header | Payload (ESP) and Authentication Header (AH) as protocols for | |||
(AH) as protocols for Data-Security SAs. | Data-Security SAs. | |||
Rekey SA: | Rekey SA: | |||
A single multicast SA between the GCKS and all of the group | A single multicast SA between the GCKS and all of the GMs. This | |||
members. This SA is used for multicast transmission of key | SA is used for multicast transmission of key management messages | |||
management messages from the GCKS to all GMs. | from the GCKS to all GMs. | |||
Group Security Association (GSA): | Group Security Association (GSA): | |||
A collection of Data-Security SAs and Rekey SAs necessary for a | A collection of Data-Security SAs and Rekey SAs necessary for a GM | |||
Group Member to receive key updates. A GSA describes the working | to receive key updates. A GSA describes the working policy for a | |||
policy for a group. Refer to the MSEC Group Key Management | group. Refer to the MSEC Group Key Management Architecture | |||
Architecture [RFC4046] for additional information. | [RFC4046] for additional information. | |||
Traffic Encryption Key (TEK): | Traffic Encryption Key (TEK): | |||
The symmetric cipher key used in a Data-Security SA (e.g., IPsec | The symmetric cipher key used in a Data-Security SA (e.g., IPsec | |||
ESP) to protect traffic. | ESP) to protect traffic. | |||
Key Encryption Key (KEK): | Key Encryption Key (KEK): | |||
The symmetric key (or a set of keys) used in a Rekey SA to protect | The symmetric key (or a set of keys) used in a Rekey SA to protect | |||
its messages. The set of keys may include keys for encryption and | its messages. The set of keys may include keys for encryption and | |||
authentication, as well as keys for key wrapping. | authentication, as well as keys for key wrapping. | |||
Key Wrap Key (KWK): | Key Wrap Key (KWK): | |||
The symmetric cipher key used to protect another key. | The symmetric cipher key used to protect another key. | |||
Group-wide (GW) policy: | Group-Wide (GW) policy: | |||
Group policy not related to a particular SA. | Group policy not related to a particular SA. | |||
Activation Time Delay (ATD): | Activation Time Delay (ATD): | |||
Defines how long Group Senders should wait after receiving new SAs | Defines how long group senders should wait after receiving new SAs | |||
before sending traffic over them. | before sending traffic over them. | |||
Deactivation Time Delay (DTD): | Deactivation Time Delay (DTD): | |||
Defines how long Group Members should wait after receiving a | Defines how long GMs should wait after receiving a request to | |||
request to delete Data-Security SAs before actually deleting them. | delete Data-Security SAs before actually deleting them. | |||
Sender-ID: | Sender-ID: | |||
A unique identifier of a Group Sender in the context of an active | A unique identifier of a group sender in the context of an active | |||
GSA used to form the Initialization Vector (IV) in counter-based | GSA used to form the Initialization Vector (IV) in counter-based | |||
cipher modes. | cipher modes. | |||
Logical Key Hierarchy (LKH): | Logical Key Hierarchy (LKH): | |||
A group management method defined in Section 5.4 of [RFC2627]. | A group management method defined in Section 5.4 of [RFC2627]. | |||
2. G-IKEv2 Protocol | 2. G-IKEv2 Protocol | |||
G-IKEv2 is an extension to the IKEv2 protocol [RFC7296] that provides | G-IKEv2 is an extension to the IKEv2 protocol [RFC7296] that provides | |||
group authorization, secure policy, and keys download from the GCKS | group authorization, secure policy, and keys download from the GCKS | |||
skipping to change at line 363 ¶ | skipping to change at line 362 ¶ | |||
Section 6 for details). In particular, it is assumed that, if | Section 6 for details). In particular, it is assumed that, if | |||
necessary, the IKE_INTERMEDIATE exchanges [RFC9242] may be utilized | necessary, the IKE_INTERMEDIATE exchanges [RFC9242] may be utilized | |||
while establishing the registration SA. It is also believed that | while establishing the registration SA. It is also believed that | |||
future IKEv2 extensions will be possible to use with G-IKEv2. | future IKEv2 extensions will be possible to use with G-IKEv2. | |||
However, some IKEv2 extensions may require special handling when used | However, some IKEv2 extensions may require special handling when used | |||
with G-IKEv2. | with G-IKEv2. | |||
2.1.1. G-IKEv2 Transport and Port | 2.1.1. G-IKEv2 Transport and Port | |||
As an IKEv2 extension, G-IKEv2 SHOULD use the IKEv2 ports (500, | As an IKEv2 extension, G-IKEv2 SHOULD use the IKEv2 ports (500, | |||
4500). G-IKEv2 MAY also use TCP transport for registration (unicast) | 4500). G-IKEv2 MAY use TCP transport for the IKE SA used for | |||
IKE SA, as defined in TCP Encapsulation of IKEv2 and IPsec [RFC9329]. | registration (which is unicast), as defined in TCP Encapsulation of | |||
G-IKEv2 MAY also use UDP port 848, the same as Group Domain of | IKEv2 and IPsec [RFC9329]. G-IKEv2 MAY also use UDP port 848, the | |||
Interpretation (GDOI) [RFC6407], because they serve a similar | same as Group Domain of Interpretation (GDOI) [RFC6407], because they | |||
function. The version number in the IKE header distinguishes the | serve a similar function. The version number in the IKE header | |||
G-IKEv2 protocol from the GDOI protocol [RFC6407]. | distinguishes the G-IKEv2 protocol from the GDOI protocol [RFC6407]. | |||
Section 2.23 of [RFC7296] describes how IKEv2 supports paths with | Section 2.23 of [RFC7296] describes how IKEv2 supports paths with | |||
NATs. The G-IKEv2 registration SA doesn't create any unicast IPsec | NATs. The G-IKEv2 registration SA doesn't create any unicast IPsec | |||
SAs; thus, if a NAT is present between the GM and the GCKS, there is | SAs; thus, if a NAT is present between the GM and the GCKS, there is | |||
no unicast ESP traffic to encapsulate in UDP. However, the actions | no unicast ESP traffic to encapsulate in UDP. However, the actions | |||
described in this section regarding the IKE SA MUST be honored. The | described in this section regarding the IKE SA MUST be honored. The | |||
behavior of GMs and GCKS MUST NOT depend on the port used to create | behavior of GMs and GCKS MUST NOT depend on the port used to create | |||
the initial IKE SA. For example, if the GM and the GCKS used UDP | the initial IKE SA. For example, if the GM and the GCKS used UDP | |||
port 848 for the IKE_SA_INIT exchange, they will operate the same as | port 848 for the IKE_SA_INIT exchange, they will operate the same as | |||
if they had used UDP port 500. | if they had used UDP port 500. | |||
2.2. G-IKEv2 Payloads | 2.2. G-IKEv2 Payloads | |||
In the following descriptions, the payloads contained in the G-IKEv2 | In the following descriptions, the payloads contained in the G-IKEv2 | |||
messages are indicated by names as listed below. | messages are indicated by names as listed below. | |||
+==========+============================+=============+ | +==========+=============================+=============+ | |||
| Notation | Payload | Defined in | | | Notation | Payload | Defined in | | |||
+==========+============================+=============+ | +==========+=============================+=============+ | |||
| AUTH | Authentication | [RFC7296] | | | AUTH | Authentication | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| CERT | Certificate | [RFC7296] | | | CERT | Certificate | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| CERTREQ | Certificate Request | [RFC7296] | | | CERTREQ | Certificate Request | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| D | Delete | [RFC7296] | | | D | Delete | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| GSA | Group Security Association | Section 4.4 | | | GSA | Group Security Association | Section 4.4 | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| HDR | IKEv2 Header | [RFC7296] | | | HDR | IKE header (not a payload) | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| IDg | Identification - Group | Section 4.2 | | | IDg | Group Identification | Section 4.2 | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| IDi | Identification - Initiator | [RFC7296] | | | IDi | Identification - Initiator | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| IDr | Identification - Responder | [RFC7296] | | | IDr | Identification - Responder | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| KD | Key Download | Section 4.5 | | | KD | Key Download | Section 4.5 | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| KE | Key Exchange | [RFC7296] | | | KE | Key Exchange | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| Ni, Nr | Nonce | [RFC7296] | | | Ni, Nr | Nonce | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| N | Notify | [RFC7296] | | | N | Notify | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| SA | Security Association | [RFC7296] | | | SA | Security Association | [RFC7296] | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| SAg | Security Association - GM | Section 4.3 | | | SAg | Security Association - GM | Section 4.3 | | |||
| | Supported Transforms | | | | | Supported Transforms | | | |||
+----------+----------------------------+-------------+ | +----------+-----------------------------+-------------+ | |||
| SK | Encrypted | [RFC7296] | | | SK | Encrypted and Authenticated | [RFC7296] | | |||
+----------+----------------------------+-------------+ | | | (also known as Encrypted) | | | |||
+----------+-----------------------------+-------------+ | ||||
Table 1: Payloads Used in G-IKEv2 | Table 1: Payloads Used in G-IKEv2 | |||
Payloads defined as part of other IKEv2 extensions MAY also be | Payloads defined as part of other IKEv2 extensions MAY also be | |||
included in these messages. Payloads that may optionally appear in | included in these messages. Payloads that may optionally appear in | |||
G-IKEv2 messages will be shown in brackets, such as [CERTREQ]. | G-IKEv2 messages will be shown in brackets, such as [CERTREQ]. | |||
G-IKEv2 defines several new payloads not used in IKEv2: | G-IKEv2 defines several new payloads not used in IKEv2: | |||
Group ID (IDg): | Group Identification (IDg): | |||
The GM requests the GCKS for membership into the group by sending | The GM requests the GCKS for membership into the group by sending | |||
its IDg payload. | its IDg payload. | |||
Security Association - GM Supported Transforms (SAg): | Security Association - GM Supported Transforms (SAg): | |||
The GM optionally sends supported transforms so that GCKS may | The GM optionally sends supported transforms so that GCKS may | |||
select a policy appropriate for all members of the group (which is | select a policy appropriate for all members of the group (which is | |||
not negotiated, unlike SA parameters in IKEv2). | not negotiated, unlike SA parameters in IKEv2). | |||
Group Security Association (GSA): | Group Security Association (GSA): | |||
The GCKS sends the group policy to the GM using this payload. | The GCKS sends the group policy to the GM using this payload. | |||
skipping to change at line 473 ¶ | skipping to change at line 473 ¶ | |||
in IKEv2 SA, a key wrap algorithm is also negotiated in this exchange | in IKEv2 SA, a key wrap algorithm is also negotiated in this exchange | |||
by means of a new "Key Wrap Algorithm" transform. See Section 4.5.4 | by means of a new "Key Wrap Algorithm" transform. See Section 4.5.4 | |||
for details. | for details. | |||
The second exchange, called GSA_AUTH, is similar to the IKEv2 | The second exchange, called GSA_AUTH, is similar to the IKEv2 | |||
IKE_AUTH exchange [RFC7296]. It authenticates the previously | IKE_AUTH exchange [RFC7296]. It authenticates the previously | |||
exchanged messages and exchanges identities and certificates. The | exchanged messages and exchanges identities and certificates. The | |||
GSA_AUTH messages are encrypted and integrity protected with keys | GSA_AUTH messages are encrypted and integrity protected with keys | |||
established through the previous exchanges, so the identities are | established through the previous exchanges, so the identities are | |||
hidden from eavesdroppers and all fields in all the messages are | hidden from eavesdroppers and all fields in all the messages are | |||
authenticated. The GCKS authorizes group members to be allowed into | authenticated. The GCKS authorizes GMs to be allowed into the group | |||
the group as part of the GSA_AUTH exchange. Once the GCKS accepts a | as part of the GSA_AUTH exchange. Once the GCKS accepts a GM to join | |||
GM to join a group, it will provide the GM with the data-security | a group, it will provide the GM with the data-security keys (TEKs) | |||
keys (TEKs) and/or a group key encrypting key (KEK) as part of the | and/or a group key encrypting key (KEK) as part of the GSA_AUTH | |||
GSA_AUTH response message. | response message. | |||
The established secure channel between the GM and the GCKS is in fact | The established secure channel between the GM and the GCKS is in fact | |||
IKE SA (as defined in [RFC7296]) and is referred to as such | IKE SA (as defined in [RFC7296]) and is referred to as such | |||
throughout this document. However, it is NOT RECOMMENDED to use this | throughout this document. However, it is NOT RECOMMENDED to use this | |||
IKE SA for the purpose of creating unicast Child SAs between the GM | IKE SA for the purpose of creating unicast Child SAs between the GM | |||
and the GCKS since authentication requirements for group admission | and the GCKS since authentication requirements for group admission | |||
and for unicast communication may differ. In addition, the life | and for unicast communication may differ. In addition, the life | |||
cycle of this IKE SA is determined by the GCKS and this SA can be | cycle of this IKE SA is determined by the GCKS and this SA can be | |||
deleted at any time. | deleted at any time. | |||
2.3.1. GSA_AUTH Exchange | 2.3.1. GSA_AUTH Exchange | |||
The GSA_AUTH exchange is used to authenticate the previous exchanges | The GSA_AUTH exchange is used to authenticate the previous exchanges | |||
and exchange identities and certificates. G-IKEv2 also uses this | and exchange identities and certificates. G-IKEv2 also uses this | |||
exchange for group member registration and authorization. | exchange for GM registration and authorization. | |||
The GSA_AUTH exchange is similar to the IKE_AUTH exchange with the | The GSA_AUTH exchange is similar to the IKE_AUTH exchange with the | |||
difference that its goal is to establish a multicast Data-Security | difference that its goal is to establish a multicast Data-Security | |||
SA(s) and optionally provide GM with the keys for a Rekey SA. The | SA(s) and optionally provide GM with the keys for a Rekey SA. The | |||
set of payloads in the GSA_AUTH exchange is slightly different | set of payloads in the GSA_AUTH exchange is slightly different | |||
because policy is not negotiated between the group member and the | because policy is not negotiated between the GM and the GCKS; | |||
GCKS; instead, it is provided by the GCKS for the GM. Also note that | instead, it is provided by the GCKS for the GM. Also note that | |||
GSA_AUTH has its own exchange type, which is different from the | GSA_AUTH has its own exchange type, which is different from the | |||
IKE_AUTH exchange type. | IKE_AUTH exchange type. | |||
Note that due to the similarities between IKE_AUTH and GSA_AUTH, most | Note that due to the similarities between IKE_AUTH and GSA_AUTH, most | |||
IKEv2 extensions to the IKE_AUTH exchange (like secure password | IKEv2 extensions to the IKE_AUTH exchange (like secure password | |||
authentication [RFC6467]) can also be used with the GSA_AUTH | authentication [RFC6467]) can also be used with the GSA_AUTH | |||
exchange. | exchange. | |||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDi, [CERT,] [CERTREQ,] [IDr,] | HDR, SK{IDi, [CERT,] [CERTREQ,] [IDr,] | |||
AUTH, IDg, [SAg,] [N(GROUP_SENDER),] [N]} --> | AUTH, IDg, [SAg,] [N(GROUP_SENDER),] [N]} --> | |||
Figure 3: GSA_AUTH Request | Figure 3: GSA_AUTH Request | |||
A group member initiates a GSA_AUTH request to join a group indicated | A GM initiates a GSA_AUTH request to join a group indicated by the | |||
by the IDg payload. The GM may include an SAg payload declaring | IDg payload. The GM may include an SAg payload declaring which | |||
which Transforms it is willing to accept. A GM that intends to act | Transforms it is willing to accept. A GM that intends to act as | |||
as Group Sender MUST include a Notify payload status type of | group sender MUST include a Notify payload status type of | |||
GROUP_SENDER, which enables the GCKS to provide any additional policy | GROUP_SENDER, which enables the GCKS to provide any additional policy | |||
necessary by group senders. | necessary by group senders. | |||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK{IDr, [CERT,] | <-- HDR, SK{IDr, [CERT,] | |||
AUTH, GSA, KD, [N]} | AUTH, GSA, KD, [N]} | |||
Figure 4: GSA_AUTH Normal Response | Figure 4: GSA_AUTH Normal Response | |||
The GCKS responds with IDr, optional CERT, and AUTH payloads with the | The GCKS responds with IDr, optional CERT, and AUTH payloads with the | |||
same meaning as in IKE_AUTH. It also informs the group member of the | same meaning as in IKE_AUTH. It also informs the GM of the | |||
cryptographic policies of the group in the GSA payload and the key | cryptographic policies of the group in the GSA payload and the key | |||
material in the KD payload. | material in the KD payload. | |||
Possible errors should be handled in accordance with Section 2.21.2 | Possible errors should be handled in accordance with Section 2.21.2 | |||
of [RFC7296]. In addition to the IKEv2 error handling, the GCKS can | of [RFC7296]. In addition to the IKEv2 error handling, the GCKS can | |||
reject the registration request when the IDg is invalid or | reject the registration request when the IDg is invalid or | |||
authorization fails, etc. In these cases (see Section 4.7), the | authorization fails, etc. In these cases (see Section 4.7), the | |||
GSA_AUTH response will not include the GSA and KD but will include a | GSA_AUTH response will not include the GSA and KD but will include a | |||
Notify payload indicating errors. If a GM included an SAg payload | Notify payload indicating errors. If a GM included an SAg payload | |||
and the GCKS chooses to evaluate it and detects that the group member | and the GCKS chooses to evaluate it and detects that the GM cannot | |||
cannot support the security policy defined for the group, then the | support the security policy defined for the group, then the GCKS | |||
GCKS returns the NO_PROPOSAL_CHOSEN notification. Other types of | returns the NO_PROPOSAL_CHOSEN notification. Other types of error | |||
error notifications can be INVALID_GROUP_ID, AUTHORIZATION_FAILED, or | notifications can be INVALID_GROUP_ID, AUTHORIZATION_FAILED, or | |||
REGISTRATION_FAILED. | REGISTRATION_FAILED. | |||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK{IDr, [CERT,] AUTH, N} | <-- HDR, SK{IDr, [CERT,] AUTH, N} | |||
Figure 5: GSA_AUTH Error Response for Group-Related Errors | Figure 5: GSA_AUTH Error Response for Group-Related Errors | |||
If the GSA_AUTH exchange is completed successfully but the group | If the GSA_AUTH exchange is completed successfully but the GM finds | |||
member finds that the policy sent by the GCKS is unacceptable, the | that the policy sent by the GCKS is unacceptable, the member SHOULD | |||
member SHOULD inform the GCKS about this by initiating the | inform the GCKS about this by initiating the GSA_REGISTRATION | |||
GSA_REGISTRATION exchange with the IDg payload and the | exchange with the IDg payload and the NO_PROPOSAL_CHOSEN notification | |||
NO_PROPOSAL_CHOSEN notification (see Figure 8). | (see Figure 8). | |||
2.3.2. GSA_REGISTRATION Exchange | 2.3.2. GSA_REGISTRATION Exchange | |||
Once the IKE SA between the GM and the GCKS is established, the GM | Once the IKE SA between the GM and the GCKS is established, the GM | |||
can use it for other registration requests if needed. In this | can use it for other registration requests if needed. In this | |||
scenario, the GM will use the GSA_REGISTRATION exchange. Payloads in | scenario, the GM will use the GSA_REGISTRATION exchange. Payloads in | |||
the exchange are generated and processed as defined in Section 2.3.1. | the exchange are generated and processed as defined in Section 2.3.1. | |||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
skipping to change at line 588 ¶ | skipping to change at line 588 ¶ | |||
in Section 2.3.1. | in Section 2.3.1. | |||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDg, [SAg,] | HDR, SK{IDg, [SAg,] | |||
[N(GROUP_SENDER),] [N]} --> | [N(GROUP_SENDER),] [N]} --> | |||
<-- HDR, SK{N} | <-- HDR, SK{N} | |||
Figure 7: GSA_REGISTRATION Error Exchange | Figure 7: GSA_REGISTRATION Error Exchange | |||
This exchange can also be used if the group member finds that the | This exchange can also be used if the GM finds that the policy sent | |||
policy sent by the GCKS is unacceptable or wants to leave the group | by the GCKS is unacceptable or wants to leave the group for some | |||
for some reason. The group member SHOULD notify the GCKS by sending | reason. The GM SHOULD notify the GCKS by sending IDg and the Notify | |||
IDg and the Notify type NO_PROPOSAL_CHOSEN or REGISTRATION_FAILED as | type NO_PROPOSAL_CHOSEN or REGISTRATION_FAILED as shown below. In | |||
shown below. In this case, the GCKS MUST remove the GM from the | this case, the GCKS MUST remove the GM from the group denoted in IDg. | |||
group IDg. | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDg, N} --> | HDR, SK{IDg, N} --> | |||
<-- HDR, SK{} | <-- HDR, SK{} | |||
Figure 8: GM Reporting Errors in GSA_REGISTRATION Exchange | Figure 8: GM Reporting Errors in GSA_REGISTRATION Exchange | |||
2.3.3. GM Registration Operations | 2.3.3. GM Registration Operations | |||
A GM requesting registration contacts the GCKS using the IKE_SA_INIT | A GM requesting registration contacts the GCKS using the IKE_SA_INIT | |||
exchange. This exchange is unchanged from IKE_SA_INIT in the IKEv2 | exchange. This exchange is unchanged from IKE_SA_INIT in the IKEv2 | |||
protocol. The IKE_SA_INIT exchange may optionally be followed by one | protocol. The IKE_SA_INIT exchange may optionally be followed by one | |||
or more of the IKE_INTERMEDIATE exchanges if the GM and the GCKS | or more of the IKE_INTERMEDIATE exchanges if the GM and the GCKS | |||
negotiated use of IKEv2 extensions based on this exchange. | negotiated use of IKEv2 extensions based on this exchange. | |||
Next, the GM sends the GSA_AUTH request message with the IKEv2 | Next, the GM sends the GSA_AUTH request message with the IKEv2 | |||
payloads from IKE_AUTH (without the SAi2, TSi, and TSr payloads) | payloads from IKE_AUTH (without the SAi2, TSi, and TSr payloads) | |||
along with the Group ID informing the GCKS of the group the GM wishes | along with the Group ID informing the GCKS of the group the GM wishes | |||
to join. A GM intending to emit data traffic MUST send a | to join. A GM intending to emit data traffic MUST send a | |||
GROUP_SENDER Notify message type. The GROUP_SENDER notification not | GROUP_SENDER notification. The GROUP_SENDER notification not only | |||
only signifies that it is a sender but provides the GM the ability to | signifies that it is a sender but provides the GM the ability to | |||
request Sender-ID values in case the Data-Security SA supports a | request Sender-ID values in case the Data-Security SA supports a | |||
counter-mode cipher. Section 2.5.1 includes guidance on requesting | counter-mode cipher. Section 2.5.1 includes guidance on requesting | |||
Sender-ID values. | Sender-ID values. | |||
A GM may be limited in the Transforms IDs that it is able or willing | A GM may be limited in the Transforms IDs that it is able or willing | |||
to use and may find it useful to inform the GCKS which Transform IDs | to use and may find it useful to inform the GCKS which Transform IDs | |||
it is willing to accept for different security protocols by including | it is willing to accept for different security protocols by including | |||
the SAg payload into the request message. Proposals for Rekey SA and | the SAg payload into the request message. Proposals for Rekey SA and | |||
for Data-Security (AH [RFC4302] and/or ESP [RFC4303]) SAs may be | for Data-Security (AH [RFC4302] and/or ESP [RFC4303]) SAs may be | |||
included into SAg. Proposals for Rekey SA are identified by new | included into SAg. Proposals for Rekey SA are identified by new | |||
Protocol ID GIKE_UPDATE with the value 6. Each Proposal contains a | Protocol ID GIKE_UPDATE with the value 6. Each Proposal contains a | |||
list of Transforms that the GM is able and willing to support for | list of Transforms that the GM is able and willing to support for | |||
that protocol. Valid transform types depend on the protocol (AH, | that protocol. Valid Transform Types depend on the protocol (AH, | |||
ESP, GIKE_UPDATE) and are defined in Table 2. Other transform types | ESP, GIKE_UPDATE) and are defined in Table 2. Other Transform Types | |||
SHOULD NOT be included as they will be ignored by the GCKS. The | SHOULD NOT be included as they will be ignored by the GCKS. The | |||
Security Parameter Index (SPI) length of each Proposal in an SAg is | Security Parameter Index (SPI) length of each Proposal in an SAg is | |||
set to zero, and thus the SPI field is empty. The GCKS MUST NOT use | set to zero, and thus the SPI field is empty. The GCKS MUST NOT use | |||
SPI length and SPI fields in the SAg payload. | SPI length and SPI fields in the SAg payload. | |||
Generally, a single Proposal for each protocol (GIKE_UPDATE, AH/ESP) | Generally, a single Proposal for each protocol (GIKE_UPDATE, AH/ESP) | |||
will suffice. Because the transforms are not negotiated, the GM | will suffice. Because the transforms are not negotiated, the GM | |||
simply alerts the GCKS to restrictions it may have. In particular, | simply alerts the GCKS to restrictions it may have. In particular, | |||
the restriction from Section 3.3 of [RFC7296] that Authenticated | the restriction from Section 3.3 of [RFC7296] that Authenticated | |||
Encryption with Associated Data (AEAD) and non-AEAD transforms not be | Encryption with Associated Data (AEAD) and non-AEAD transforms not be | |||
skipping to change at line 675 ¶ | skipping to change at line 674 ¶ | |||
A GM MAY also indicate the support for IPcomp by including one or | A GM MAY also indicate the support for IPcomp by including one or | |||
more the IPCOMP_SUPPORTED notifications along with the SAg payload in | more the IPCOMP_SUPPORTED notifications along with the SAg payload in | |||
the request. The Compression Parameter Index (CPI) in these | the request. The Compression Parameter Index (CPI) in these | |||
notifications is set to zero and MUST be ignored by the GCKS. | notifications is set to zero and MUST be ignored by the GCKS. | |||
Upon receiving the GSA_AUTH response, the GM parses the response from | Upon receiving the GSA_AUTH response, the GM parses the response from | |||
the GCKS authenticating the exchange using the IKEv2 method, then | the GCKS authenticating the exchange using the IKEv2 method, then | |||
processes the GSA and KD payloads. | processes the GSA and KD payloads. | |||
The GSA payload contains the security policy and cryptographic | The GSA payload contains the security policy and cryptographic | |||
protocols used by the group. This policy describes the optional | protocols used by the group. This policy describes zero or more | |||
Rekey SA (KEK), Data-Security SAs (TEK), and optional Group-wide (GW) | Data-Security SAs (TEK), zero or one Rekey SA (KEK), and zero or one | |||
policy. If the policy in the GSA payload is not acceptable to the | GW policy (although at least one TEK or KEK policy MUST be Present). | |||
GM, it SHOULD notify the GCKS by initiating a GSA_REGISTRATION | If the policy in the GSA payload is not acceptable to the GM, it | |||
exchange with a NO_PROPOSAL_CHOSEN Notify payload (see | SHOULD notify the GCKS by initiating a GSA_REGISTRATION exchange with | |||
Section 2.3.2). Note that this should normally not happen if the GM | a NO_PROPOSAL_CHOSEN Notify payload (see Section 2.3.2). Note that | |||
includes the SAg payload in the GSA_AUTH request and the GCKS takes | this should normally not happen if the GM includes the SAg payload in | |||
it into account. Finally, the KD payload is parsed, providing the | the GSA_AUTH request and the GCKS takes it into account. Finally, | |||
keying material for the TEK and/or KEK. The KD payload contains a | the KD payload is parsed, providing the keying material for the TEK | |||
list of key bags, where each key bag includes the keying material for | and/or KEK. The KD payload contains a list of key bags, where each | |||
SAs distributed in the GSA payload. Keying material is matched by | key bag includes the keying material for SAs distributed in the GSA | |||
comparing the SPIs in the key bags to SPIs previously included in the | payload. Keying material is matched by comparing the SPIs in the key | |||
GSA payloads. Once TEK keys and policy are matched, the GM provides | bags to SPIs previously included in the GSA payloads. Once TEK keys | |||
them to the data-security subsystem, and it is ready to send or | and policy are matched, the GM provides them to the data-security | |||
receive packets matching the TEK policy. | subsystem, and it is ready to send or receive packets matching the | |||
TEK policy. | ||||
If the group member is not a sender for a received Data-Security SA, | If the GM is not a sender for a received Data-Security SA, then it | |||
then it MUST install this SA only in the inbound direction. If the | MUST install this SA only in the inbound direction. If the GM is a | |||
group member is a sender for a received Data-Security SA, and it is | sender for a received Data-Security SA, and it is not going to | |||
not going to receive back the data it sends, then it MUST install | receive back the data it sends, then it MUST install this SA only in | |||
this SA only in the outgoing direction. | the outgoing direction. | |||
If the first Message ID the GM should expect to receive is non-zero, | If the first Message ID the GM should expect to receive is non-zero, | |||
the GSA KEK policy includes the attribute GSA_INITIAL_MESSAGE_ID with | the GSA KEK policy includes the attribute GSA_INITIAL_MESSAGE_ID with | |||
the expected non-zero value. The value of the attribute MUST be | the expected non-zero value. The value of the attribute MUST be | |||
checked by a GM against any previously received Message ID for this | checked by a GM against any previously received Message ID for this | |||
group. If it is less than the previously received number, it should | group. If it is less than the previously received number, it should | |||
be considered stale and MUST be ignored. This could happen if two | be considered stale and MUST be ignored. This could happen if two | |||
GSA_AUTH exchanges happened in parallel and the Message ID changed. | GSA_AUTH exchanges happened in parallel and the Message ID changed. | |||
This attribute is used by the GM to prevent GSA_REKEY message replay | This attribute is used by the GM to prevent GSA_REKEY message replay | |||
attacks. The first GSA_REKEY message that the GM receives from the | attacks. The first GSA_REKEY message that the GM receives from the | |||
GCKS will have a Message ID greater than or equal to the Message ID | GCKS will have a Message ID greater than or equal to the Message ID | |||
received in the GSA_INITIAL_MESSAGE_ID attribute. | received in the GSA_INITIAL_MESSAGE_ID attribute. | |||
Group members MUST install the Rekey SA only in the inbound | GMs MUST install the Rekey SA only in the inbound direction. | |||
direction. | ||||
Once a GM successfully registers to the group, it MUST replace any | Once a GM successfully registers to the group, it MUST replace any | |||
information related to this group (policy, keys) that it might have | information related to this group (policy, keys) that it might have | |||
as a result of a previous registration with a new one. | as a result of a previous registration with a new one. | |||
Once a GM has received GIKE_UPDATE policy during a registration, the | Once a GM has received GIKE_UPDATE policy during a registration, the | |||
IKE SA MAY be closed. By convention, the GCKS closes the IKE SA; the | IKE SA MAY be closed. By convention, the GCKS closes the IKE SA; the | |||
GM SHOULD NOT close it. The GCKS MAY choose to keep the IKE SA open | GM SHOULD NOT close it. The GCKS MAY choose to keep the IKE SA open | |||
for inband rekey, especially for small groups. If inband rekey is | for inband rekey, especially for small groups. If inband rekey is | |||
used, then the initial IKE SA can be rekeyed by any side with the | used, then the initial IKE SA can be rekeyed by any side with the | |||
standard IKEv2 mechanism described in Section 1.3.2 of [RFC7296]. If | standard IKEv2 mechanism described in Section 1.3.2 of [RFC7296]. If | |||
for some reason the IKE SA is closed and no GIKE_UPDATE policy is | for some reason the IKE SA is closed and no GIKE_UPDATE policy is | |||
received during the registration process, the GM MUST consider itself | received during the registration process, the GM MUST consider itself | |||
excluded from the group. To continue participating in the group, the | excluded from the group. To continue participating in the group, the | |||
GM needs to re-register. | GM needs to re-register. | |||
2.3.4. GCKS Registration Operations | 2.3.4. GCKS Registration Operations | |||
A G-IKEv2 GCKS listens for incoming requests from group members. | A G-IKEv2 GCKS listens for incoming requests from GMs. When the GCKS | |||
When the GCKS receives an IKE_SA_INIT request, it selects an IKE | receives an IKE_SA_INIT request, it selects an IKE proposal and | |||
proposal and generates a nonce and Diffie-Hellman (DH) to include in | generates a nonce and Diffie-Hellman (DH) to include in the | |||
the IKE_SA_INIT response. | IKE_SA_INIT response. | |||
Upon receiving the GSA_AUTH request, the GCKS authenticates the group | Upon receiving the GSA_AUTH request, the GCKS authenticates the GM | |||
member via the GSA_AUTH exchange. The GCKS then authorizes the group | via the GSA_AUTH exchange. The GCKS then authorizes the GM according | |||
member according to group policy before preparing to send the | to group policy before preparing to send the GSA_AUTH response. If | |||
GSA_AUTH response. If the GCKS fails to authorize the GM, it | the GCKS fails to authorize the GM, it responds with an | |||
responds with an AUTHORIZATION_FAILED notify message type. The GCKS | AUTHORIZATION_FAILED notification. The GCKS may also respond with an | |||
may also respond with an INVALID_GROUP_ID notify message if the | INVALID_GROUP_ID notification if the requested group is unknown to | |||
requested group is unknown to the GCKS or with an REGISTRATION_FAILED | the GCKS or with an REGISTRATION_FAILED notification if there is a | |||
notify message if there is a problem with the requested group (e.g., | problem with the requested group (e.g., if the capacity of the group | |||
if the capacity of the group is exceeded). | is exceeded). | |||
The GSA_AUTH response will include the group policy in the GSA | The GSA_AUTH response will include the group policy in the GSA | |||
payload and keys in the KD payload. If the GCKS policy includes a | payload and keys in the KD payload. If the GCKS policy includes a | |||
group rekey option and the initial Message ID value the GCKS will use | group rekey option and the initial Message ID value the GCKS will use | |||
when sending the GSA_REKEY messages to the group members is non-zero, | when sending the GSA_REKEY messages to the GMs is non-zero, then this | |||
then this value is specified in the GSA_INITIAL_MESSAGE_ID attribute. | value is specified in the GSA_INITIAL_MESSAGE_ID attribute. This | |||
This Message ID is used to prevent GSA_REKEY message replay attacks | Message ID is used to prevent GSA_REKEY message replay attacks and | |||
and will be increased each time a GSA_REKEY message is sent to the | will be increased each time a GSA_REKEY message is sent to the group. | |||
group. The GCKS data traffic policy is included in the GSA TEK and | The GCKS data traffic policy is included in the GSA TEK and keys are | |||
keys are included in the KD TEK. The GW policy MAY also be included | included in the KD TEK. The GW policy MAY also be included to | |||
to provide the Activation Time Delay (ATD) and/or Deactivation Time | provide the Activation Time Delay (ATD) and/or Deactivation Time | |||
Delay (DTD) (Section 4.4.3.1.1) to specify activation and | Delay (DTD) (Section 4.4.3.1.1) to specify activation and | |||
deactivation delays for SAs generated from the TEKs. If the group | deactivation delays for SAs generated from the TEKs. If the GM has | |||
member has indicated that it is a sender of data traffic and one or | indicated that it is a sender of data traffic and one or more Data- | |||
more Data-Security SAs distributed in the GSA payload included a | Security SAs distributed in the GSA payload included a counter mode | |||
counter mode of operation, the GCKS responds with one or more Sender- | of operation, the GCKS responds with one or more Sender-ID values | |||
ID values (see Section 2.5). | (see Section 2.5). | |||
Multicast Extensions to the Security Architecture [RFC5374] defines | Multicast Extensions to the Security Architecture [RFC5374] defines | |||
two modes of operation for multicast Data-Security SAs: transport | two modes of operation for multicast Data-Security SAs: transport | |||
mode and tunnel mode with address preservation. In the latter case, | mode and tunnel mode with address preservation. In the latter case, | |||
outer source and destination addresses are taken from the inner IP | outer source and destination addresses are taken from the inner IP | |||
packet. The mode of operation for the Data-Security SAs is | packet. The mode of operation for the Data-Security SAs is | |||
determined by the presence of the USE_TRANSPORT_MODE notification in | determined by the presence of the USE_TRANSPORT_MODE notification in | |||
the GCKS's response message of the registration exchange. If it is | the GCKS's response message of the registration exchange. If it is | |||
present, then SAs are created in transport mode; otherwise, SAs are | present, then SAs are created in transport mode; otherwise, SAs are | |||
created in tunnel mode. If multiple Data-Security SAs are being | created in tunnel mode. If multiple Data-Security SAs are being | |||
skipping to change at line 781 ¶ | skipping to change at line 780 ¶ | |||
the same mode of operation. | the same mode of operation. | |||
If the GCKS receives a GSA_REGISTRATION exchange with a request to | If the GCKS receives a GSA_REGISTRATION exchange with a request to | |||
register a GM to a group, the GCKS will need to authorize the GM with | register a GM to a group, the GCKS will need to authorize the GM with | |||
the new group (IDg) and respond with the corresponding group policy | the new group (IDg) and respond with the corresponding group policy | |||
and keys. If the GCKS fails to authorize the GM, it will respond | and keys. If the GCKS fails to authorize the GM, it will respond | |||
with the AUTHORIZATION_FAILED notification. The GCKS may also | with the AUTHORIZATION_FAILED notification. The GCKS may also | |||
respond with an INVALID_GROUP_ID or REGISTRATION_FAILED notify | respond with an INVALID_GROUP_ID or REGISTRATION_FAILED notify | |||
messages for the reasons described above. | messages for the reasons described above. | |||
If a group member includes an SAg in its GSA_AUTH or GSA_REGISTRATION | If a GM includes an SAg in its GSA_AUTH or GSA_REGISTRATION request, | |||
request, the GCKS may evaluate it according to an implementation- | the GCKS may evaluate it according to an implementation-specific | |||
specific policy. | policy. | |||
* The GCKS could evaluate the list of Transforms and compare it to | * The GCKS could evaluate the list of Transforms and compare it to | |||
its current policy for the group. If the group member did not | its current policy for the group. If the GM did not include all | |||
include all of the ESP, AH, or GIKE_UPDATE Transforms that match | of the ESP, AH, or GIKE_UPDATE Transforms that match the current | |||
the current group policy or the capabilities of all other | group policy or the capabilities of all other currently active | |||
currently active GMs, then the GCKS SHOULD return a | GMs, then the GCKS SHOULD return a NO_PROPOSAL_CHOSEN | |||
NO_PROPOSAL_CHOSEN notification. Alternatively, the GCKS can | notification. Alternatively, the GCKS can change the group policy | |||
change the group policy as defined below. | as defined below. | |||
* The GCKS could store the list of Transforms with the goal of | * The GCKS could store the list of transforms with the goal of | |||
migrating the group policy to a different Transforms when all of | migrating the group policy from the current set of transforms to a | |||
the group members indicate that they can support that Transforms. | different one once all of the GMs indicate that they can support | |||
transforms from the new set. | ||||
* The GCKS could store the list of Transforms and adjust the current | * The GCKS could store the list of Transforms and adjust the current | |||
group policy based on the capabilities of the devices as long as | group policy based on the capabilities of the devices as long as | |||
they fall within the acceptable security policy of the GCKS. | they fall within the acceptable security policy of the GCKS. | |||
Depending on its policy, the GCKS may have no further need for the | Depending on its policy, the GCKS may have no further need for the | |||
IKE SA (e.g., it does not plan to initiate a GSA_INBAND_REKEY | IKE SA (e.g., it does not plan to initiate a GSA_INBAND_REKEY | |||
exchange). If the GM does not initiate another registration exchange | exchange). If the GM does not initiate another registration exchange | |||
or Notify (e.g., NO_PROPOSAL_CHOSEN) and the GCKS is not intended to | or Notify (e.g., NO_PROPOSAL_CHOSEN) and the GCKS is not intended to | |||
use the SA, then the GCKS SHOULD close the IKE SA to save resources | use the SA, then the GCKS SHOULD close the IKE SA to save resources | |||
after a short period of time. | after a short period of time. | |||
2.4. Group Maintenance Channel | 2.4. Group Maintenance Channel | |||
The GCKS is responsible for rekeying the secure group per the group | The GCKS is responsible for rekeying the secure group per the group | |||
policy. Rekeying is an operation whereby the GCKS provides | policy. Rekeying is an operation whereby the GCKS provides | |||
replacement TEKs and KEKs, deleting TEKs, and/or excluding group | replacement TEK(s) and KEK, deleting TEK(s), and/or excluding GMs. | |||
members. The GCKS may initiate a rekey message if group membership | The GCKS may initiate a rekey message if group membership and/or | |||
and/or policy has changed or if the keys are about to expire. Two | policy has changed or if the keys are about to expire. Two forms of | |||
forms of group maintenance channels are provided in G-IKEv2 to push | group maintenance channels are provided in G-IKEv2 to push new policy | |||
new policy to group members. | to GMs. | |||
GSA_REKEY: | GSA_REKEY: | |||
The GSA_REKEY is a pseudo-exchange, consisting of a one-way IKEv2 | The GSA_REKEY is a pseudo-exchange, consisting of a one-way IKEv2 | |||
message sent by the GCKS where the rekey policy is delivered to | message sent by the GCKS where the rekey policy is delivered to | |||
group members using IP multicast as a transport. This method is | GMs using IP multicast as a transport. This method is valuable | |||
valuable for large and dynamic groups and where policy may change | for large and dynamic groups and where policy may change | |||
frequently and a scalable rekey method is required. When the | frequently and a scalable rekey method is required. When the | |||
GSA_REKEY is used, the IKE SA protecting the member registration | GSA_REKEY is used, the IKE SA protecting the member registration | |||
exchanges is usually terminated and group members await policy | exchanges is usually terminated and GMs await policy changes from | |||
changes from the GCKS via the GSA_REKEY messages. | the GCKS via the GSA_REKEY messages. | |||
GSA_INBAND_REKEY: | GSA_INBAND_REKEY: | |||
The GSA_INBAND_REKEY is a normal IKEv2 exchange using the IKE SA | The GSA_INBAND_REKEY is a normal IKEv2 exchange using the IKE SA | |||
that was set up to protect the member registration exchange. This | that was set up to protect the member registration exchange. This | |||
exchange allows the GCKS to rekey without using an independent | exchange allows the GCKS to rekey without using an independent | |||
GSA_REKEY pseudo-exchange. The GSA_INBAND_REKEY exchange provides | GSA_REKEY pseudo-exchange. The GSA_INBAND_REKEY exchange provides | |||
a reliable policy delivery and is useful when G-IKEv2 is used with | a reliable policy delivery and is useful when G-IKEv2 is used with | |||
a small group of cooperating devices. | a small group of cooperating devices. | |||
Depending on its policy, the GCKS MAY combine these two methods. For | Depending on its policy, the GCKS MAY combine these two methods. For | |||
skipping to change at line 849 ¶ | skipping to change at line 849 ¶ | |||
reliable keys delivery) and the GSA_REKEY for the rest of the GMs. | reliable keys delivery) and the GSA_REKEY for the rest of the GMs. | |||
2.4.1. GSA_REKEY | 2.4.1. GSA_REKEY | |||
The GCKS initiates the G-IKEv2 rekey by sending a protected message | The GCKS initiates the G-IKEv2 rekey by sending a protected message | |||
to the GMs, usually using IP multicast. Since the Rekey messages do | to the GMs, usually using IP multicast. Since the Rekey messages do | |||
not require responses and are sent to multiple GMs, the windowing | not require responses and are sent to multiple GMs, the windowing | |||
mechanism described in Section 2.3 of [RFC7296] MUST NOT be used for | mechanism described in Section 2.3 of [RFC7296] MUST NOT be used for | |||
the Rekey messages. The GCKS rekey message replaces the current | the Rekey messages. The GCKS rekey message replaces the current | |||
rekey GSA KEK or KEK array (e.g., in the case of LKH) and/or creates | rekey GSA KEK or KEK array (e.g., in the case of LKH) and/or creates | |||
new Data-Security GSA TEKs. The GM_SENDER_ID attribute in the Key | new Data-Security SAs. The GM_SENDER_ID attribute in the Key | |||
Download payload (defined in Section 4.5.3.3) MUST NOT be part of the | Download payload (defined in Section 4.5.3.3) MUST NOT be part of the | |||
Rekey Exchange, as this is sender-specific information and the Rekey | Rekey Exchange, as this is sender-specific information and the Rekey | |||
Exchange is group specific. The GCKS initiates the GSA_REKEY pseudo- | Exchange is group specific. The GCKS initiates the GSA_REKEY pseudo- | |||
exchange as following: | exchange as following: | |||
GMs (Receivers) GCKS (Sender) | GMs (Receivers) GCKS (Sender) | |||
----------------- --------------- | ----------------- --------------- | |||
<-- HDR, SK{GSA, KD, [N,] [AUTH]} | <-- HDR, SK{GSA, KD, [N,] [AUTH]} | |||
Figure 9: GSA_REKEY Pseudo-Exchange | Figure 9: GSA_REKEY Pseudo-Exchange | |||
HDR is defined in Section 4.1. While GSA_REKEY reuses the IKEv2 | HDR is defined in Section 4.1. While GSA_REKEY reuses the IKEv2 | |||
header, the "IKE SA Initiator's SPI" and the "IKE SA Responder's SPI" | header, the "IKE SA Initiator's SPI" and the "IKE SA Responder's SPI" | |||
fields are treated as a single field with a length of 16 octets | fields are treated as a single field with a length of 16 octets | |||
containing the SPI of a Rekey SA. The value for this field is | containing the SPI of a Rekey SA. The value for this field is | |||
provided by the GCKS in the GSA payload (see Section 4.4.2). The | provided by the GCKS in the GSA payload (see Section 4.4.2). The | |||
Message ID in this message will start with the value the GCKS sent to | Message ID in this message will start with the value the GCKS sent to | |||
the group members in the attribute GSA_INITIAL_MESSAGE_ID or from | the GMs in the attribute GSA_INITIAL_MESSAGE_ID or from zero if this | |||
zero if this attribute wasn't sent. The Message ID will be | attribute wasn't sent. The Message ID will be incremented each time | |||
incremented each time a new GSA_REKEY message is sent to the group | a new GSA_REKEY message is sent to the GMs. | |||
members. | ||||
The GSA payload contains the current policy for rekey and Data- | The GSA payload contains the current policy for rekey and Data- | |||
Security SAs. The GSA may contain a new Rekey SA and/or a new Data- | Security SAs. The GSA may contain a new Rekey SA and/or a new Data- | |||
Security SAs (Section 4.4). | Security SA(s) (Section 4.4). | |||
The KD payload contains the keys for the policy included in the GSA. | The KD payload contains the keys for the policy included in the GSA. | |||
If one or more Data-Security SAs are being refreshed in this rekey | If one or more Data-Security SAs are being refreshed in this rekey | |||
message, the IPsec keys are updated in the KD, and/or if the Rekey SA | message, the IPsec keys are updated in the KD, and/or if the Rekey SA | |||
is being refreshed in this rekey message, the rekey Key or the LKH | is being refreshed in this rekey message, the rekey Key or the LKH | |||
KEK array (e.g., in case of LKH) is updated in the KD payload. | KEK array (e.g., in case of LKH) is updated in the KD payload. | |||
A Delete payload MAY be included to instruct the GM to delete | A Delete payload MAY be included to instruct the GM to delete | |||
existing SAs. See Section 4.6 for more detail. | existing SAs. See Section 4.6 for more detail. | |||
skipping to change at line 898 ¶ | skipping to change at line 897 ¶ | |||
In the latter case, the fact that a GM can decrypt the GSA_REKEY | In the latter case, the fact that a GM can decrypt the GSA_REKEY | |||
message and verify its Integrity Check Value (ICV) proves that the | message and verify its Integrity Check Value (ICV) proves that the | |||
sender of this message knows the current KEK, thus authenticating the | sender of this message knows the current KEK, thus authenticating the | |||
sender as a member of the group. Note that implicit authentication | sender as a member of the group. Note that implicit authentication | |||
doesn't provide source origin authentication. For this reason, using | doesn't provide source origin authentication. For this reason, using | |||
implicit authentication for GSA_REKEY is NOT RECOMMENDED unless | implicit authentication for GSA_REKEY is NOT RECOMMENDED unless | |||
source origin authentication is not required (for example, in a small | source origin authentication is not required (for example, in a small | |||
group of highly trusted GMs). See more about authentication methods | group of highly trusted GMs). See more about authentication methods | |||
in Section 4.4.2.1.1. | in Section 4.4.2.1.1. | |||
During group member registration, the GCKS sends the authentication | During GM registration, the GCKS sends the authentication key in the | |||
key in the KD payload, the AUTH_KEY attribute, which the group member | KD payload, the AUTH_KEY attribute, which the GM uses to authenticate | |||
uses to authenticate the key server. Before the current | the key server. Before the current authentication key expires, the | |||
authentication key expires, the GCKS will send a new AUTH_KEY to the | GCKS will send a new AUTH_KEY to the GMs in a GSA_REKEY message. The | |||
group members in a GSA_REKEY message. The authentication key that is | authentication key that is sent in the rekey message may not be the | |||
sent in the rekey message may not be the same as the authentication | same as the authentication key sent during the GM registration. If | |||
key sent during the GM registration. If implicit authentication is | implicit authentication is used, then AUTH_KEY MUST NOT be sent to | |||
used, then AUTH_KEY MUST NOT be sent to GMs. | GMs. | |||
2.4.1.1. GSA_REKEY Message Authentication | 2.4.1.1. GSA_REKEY Message Authentication | |||
The content of the AUTH payload generally depends on the | The content of the AUTH payload generally depends on the | |||
authentication method from the Group Controller Authentication Method | authentication method from the Group Controller Authentication Method | |||
(GCAUTH) transform (Section 4.4.2.1.1). This specification defines | (GCAUTH) transform (Section 4.4.2.1.1). This specification defines | |||
the use of only one authentication method, Digital Signature, and the | the use of only one authentication method, Digital Signature, and the | |||
AUTH payload contains a digital signature calculated over the content | AUTH payload contains a digital signature calculated over the content | |||
of the not-yet-encrypted GSA_REKEY message. | of the not-yet-encrypted GSA_REKEY message. | |||
The digital signing is applied to the concatenation of two chunks: A | The digital signing is applied to the concatenation of two chunks: A | |||
and P. Chunk A starts with the first octet of the G-IKEv2 header | and P. Chunk A starts with the first octet of the G-IKEv2 header | |||
(not including prepended four octets of zeros, if port 4500 is used) | (not including prepended four octets of zeros, if port 4500 is used) | |||
and continues to the last octet of the Encrypted Payload header. | and continues to the last octet of the Encrypted Payload header. | |||
Chunk P consists of the not-yet-encrypted content of the Encrypted | Chunk P consists of the not-yet-encrypted content of the Encrypted | |||
payload, excluding the Initialization Vector, the Padding, the Pad | payload, excluding the Initialization Vector, the Padding, the Pad | |||
Length, and the Integrity Checksum Data fields (see Section 3.14 of | Length, and the Integrity Checksum Data fields (see Section 3.14 of | |||
[RFC7296] for the description of the Encrypted payload). In other | [RFC7296] for the description of the Encrypted payload). In other | |||
words, chunk P is the inner payloads of the Encrypted payload in | words, chunk P is the inner payloads of the Encrypted payload in | |||
plaintext form. Figure 11 illustrates the layout of chunks P and A | plaintext form. Figure 10 illustrates the layout of chunks P and A | |||
in the GSA_REKEY message. | in the GSA_REKEY message. | |||
Before the calculation of the AUTH payload, the inner payloads of the | Before the calculation of the AUTH payload, the inner payloads of the | |||
Encrypted payload must be fully formed and ready for encryption | Encrypted payload must be fully formed and ready for encryption | |||
except for the content of the AUTH payload. The AUTH payload must | except for the content of the AUTH payload. The AUTH payload must | |||
have correct values in the Payload Header, the Auth Method, and the | have correct values in the Payload header, the Auth Method, and the | |||
RESERVED fields. The Authentication Data field is zeroed, but the | RESERVED fields. The Authentication Data field is zeroed, but the | |||
ASN.1 Length and the AlgorithmIdentifier fields must be properly | ASN.1 Length and the AlgorithmIdentifier fields must be properly | |||
filled in; see Signature Authentication in [RFC7427]. | filled in; see Signature Authentication in [RFC7427]. | |||
For the purpose of the AUTH payload calculation, the Length field in | For the purpose of the AUTH payload calculation, the Length field in | |||
the IKE header and the Payload Length field in the Encrypted Payload | the IKE header and the Payload Length field in the Encrypted Payload | |||
header are adjusted so that they don't count the lengths of | header are adjusted so that they don't count the lengths of | |||
Initialization Vector, Integrity Checksum Data, and Padding (along | Initialization Vector, Integrity Checksum Data, and Padding (along | |||
with Pad Length field). In other words, the Length field in the IKE | with Pad Length field). In other words, the Length field in the IKE | |||
header (denoted as AdjustedLen in Figure 11) is set to the sum of the | header (denoted as AdjustedLen in Figure 10) is set to the sum of the | |||
lengths of A and P, and the Payload Length field in the Encrypted | lengths of A and P, and the Payload Length field in the Encrypted | |||
Payload header (denoted as AdjustedPldLen in Figure 11) is set to the | Payload header (denoted as AdjustedPldLen in Figure 10) is set to the | |||
length of P plus the size of the Payload header (four octets). | length of P plus the size of the Payload header (four octets). | |||
The input to the digital signature algorithm that computes the | The input to the digital signature algorithm that computes the | |||
content of the AUTH payload can be described as: | content of the AUTH payload can be described as: | |||
DataToAuthenticate = A | P | DataToAuthenticate = A | P | |||
GsaRekeyMessage = GenIKEHDR | EncPayload | GsaRekeyMessage = GenIKEHDR | EncPayload | |||
GenIKEHDR = [ four octets 0 if using port 4500 ] | AdjustedIKEHDR | GenIKEHDR = [ four octets 0 if using port 4500 ] | AdjustedIKEHDR | |||
AdjustedIKEHDR = SPIi | SPIr | . . . | AdjustedLen | AdjustedIKEHDR = SPIi | SPIr | . . . | AdjustedLen | |||
EncPayload = AdjustedEncPldHdr | IV | InnerPlds | Pad | PadLen | ICV | EncPayload = AdjustedEncPldHdr | IV | InnerPlds | Pad | PadLen | ICV | |||
AdjustedEncPldHdr = NextPld | C | RESERVED | AdjustedPldLen | AdjustedEncPldHdr = NextPld | C | RESERVED | AdjustedPldLen | |||
A = AdjustedIKEHDR | AdjustedEncPldHdr | A = AdjustedIKEHDR | AdjustedEncPldHdr | |||
P = InnerPlds | P = InnerPlds | |||
Figure 10 | ||||
1 2 3 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^ ^ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^ ^ | |||
| IKE SA Initiator's SPI | | | | | IKE SA Initiator's SPI | | | | |||
| | | | | | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I | | |||
| IKE SA Responder's SPI | K | | | IKE SA Responder's SPI | K | | |||
| | E | | | | E | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| Next Payload | MjVer | MnVer | Exchange Type | Flags | H A | | Next Payload | MjVer | MnVer | Exchange Type | Flags | H A | |||
skipping to change at line 992 ¶ | skipping to change at line 989 ¶ | |||
~ Inner Payloads (not yet encrypted) ~ P | ~ Inner Payloads (not yet encrypted) ~ P | |||
| | P | | | | P | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ l v | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ l v | |||
~ Padding (0-255 octets) | Pad Length | d | ~ Padding (0-255 octets) | Pad Length | d | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | | |||
~ Integrity Checksum Data ~ | | ~ Integrity Checksum Data ~ | | |||
| | | | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ v | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ v | |||
Figure 11: Data to Authenticate in the GSA_REKEY Messages | Figure 10: Data to Authenticate in the GSA_REKEY Messages | |||
The authentication data is calculated using the authentication | The authentication data is calculated using the authentication | |||
algorithm from the Group Controller Authentication Method transform | algorithm from the Group Controller Authentication Method transform | |||
(Section 4.4.2.1.1) and the current authentication key provided in | (Section 4.4.2.1.1) and the current authentication key provided in | |||
the AUTH_KEY attribute (Section 4.5.3.2). The calculated | the AUTH_KEY attribute (Section 4.5.3.2). The calculated | |||
authentication data is placed into the AUTH payload, the Length | authentication data is placed into the AUTH payload, the Length | |||
fields in the IKE Header and the Encryption Payload header are | fields in the IKE header and the Encryption Payload header are | |||
restored, the content of the Encrypted payload is encrypted and the | restored, the content of the Encrypted payload is encrypted and the | |||
ICV is computed using the current KEK. | ICV is computed using the current KEK. | |||
2.4.1.2. IKE Fragmentation | 2.4.1.2. IKE Fragmentation | |||
IKEv2 fragmentation [RFC7383] can be used to perform fragmentation of | IKEv2 fragmentation [RFC7383] can be used to perform fragmentation of | |||
large GSA_REKEY messages; however, when the GSA_REKEY message is | large GSA_REKEY messages; however, when the GSA_REKEY message is | |||
emitted as an IP multicast packet, there is a lack of response from | emitted as an IP multicast packet, there is a lack of response from | |||
the GMs. This has the following implications. | the GMs. This has the following implications. | |||
skipping to change at line 1060 ¶ | skipping to change at line 1057 ¶ | |||
substantially skewed for the GMs that would receive different copies | substantially skewed for the GMs that would receive different copies | |||
of the messages. | of the messages. | |||
GCKS may also include one or several GSA_NEXT_SPI attributes | GCKS may also include one or several GSA_NEXT_SPI attributes | |||
specifying SPIs for the prospected rekeys so that listening GMs are | specifying SPIs for the prospected rekeys so that listening GMs are | |||
able to detect lost rekey messages and recover from this situation. | able to detect lost rekey messages and recover from this situation. | |||
See Section 4.4.2.2.3 for more detail. | See Section 4.4.2.2.3 for more detail. | |||
2.4.1.4. GSA_REKEY GM Operations | 2.4.1.4. GSA_REKEY GM Operations | |||
When a group member receives the rekey message from the GCKS, it | When a GM receives the rekey message from the GCKS, it decrypts the | |||
decrypts the message and verifies its integrity using the current | message and verifies its integrity using the current KEK. If the | |||
KEK. If the AUTH payload is present in the decrypted message, then | AUTH payload is present in the decrypted message, then the GM | |||
the GM validates authenticity of the message using the key retrieved | validates authenticity of the message using the key retrieved in a | |||
in a previous G-IKEv2 exchange. Then the GM verifies the Message ID | previous G-IKEv2 exchange. Then the GM verifies the Message ID and | |||
and processes the GSA and KD payloads. The group member then | processes the GSA and KD payloads. The GM then installs the new | |||
installs the new Data-Security SA(s) and/or a new Rekey SA. The | Data-Security SA(s) and/or a new Rekey SA. The parsing of the | |||
parsing of the payloads is identical to the parsing done in the | payloads is identical to the parsing done in the registration | |||
registration exchange. | exchange. | |||
Replay protection is achieved by a group member rejecting a GSA_REKEY | Replay protection is achieved by a GM rejecting a GSA_REKEY message | |||
message that has a Message ID smaller than the current Message ID | that has a Message ID smaller than the current Message ID that the GM | |||
that the GM is expecting. The GM expects the Message ID in the first | is expecting. The GM expects the Message ID in the first GSA_REKEY | |||
GSA_REKEY message it receives to be equal to or greater than the | message it receives to be equal to or greater than the Message ID it | |||
Message ID it receives in the GSA_INITIAL_MESSAGE_ID attribute. Note | receives in the GSA_INITIAL_MESSAGE_ID attribute. Note that if the | |||
that if the GSA_INITIAL_MESSAGE_ID attribute is not received for the | GSA_INITIAL_MESSAGE_ID attribute is not received for the Rekey SA, | |||
Rekey SA, the GM MUST assume zero as the first expected Message ID. | the GM MUST assume zero as the first expected Message ID. The GM | |||
The GM expects the Message ID in subsequent GSA_REKEY messages to be | expects the Message ID in subsequent GSA_REKEY messages to be greater | |||
greater than the last valid GSA_REKEY message ID it received. | than the last valid GSA_REKEY message ID it received. | |||
This specification assumes that the GSA_REKEY messages are sent with | This specification assumes that the GSA_REKEY messages are sent with | |||
intervals that are significantly greater than typical network packet | intervals that are significantly greater than typical network packet | |||
reordering intervals. | reordering intervals. | |||
If the GSA payload includes a Data-Security SA using cipher in a | If the GSA payload includes a Data-Security SA using cipher in a | |||
counter-mode of operation and the receiving group member is a sender | counter-mode of operation and the receiving GM is a sender for that | |||
for that SA, the group member uses its current Sender-ID value with | SA, the GM uses its current Sender-ID value with the Data-Security | |||
the Data-Security SAs to create counter-mode nonces. If it is a | SAs to create counter-mode nonces. If it is a sender and does not | |||
sender and does not hold a current Sender-ID value (for example, when | hold a current Sender-ID value (for example, when no counter-mode is | |||
no counter-mode is employed for other Data-Security SAs), it MUST NOT | employed for other Data-Security SAs), it MUST NOT install the Data- | |||
install the Data-Security SAs. It MUST initiate a re-registration to | Security SAs. It MUST initiate a re-registration to the GCKS in | |||
the GCKS in order to obtain a Sender-ID value (along with the current | order to obtain a Sender-ID value (along with the current group | |||
group policy). | policy). | |||
Once a new Rekey SA is installed as a result of a GSA_REKEY message, | Once a new Rekey SA is installed as a result of a GSA_REKEY message, | |||
the current Rekey SA (over which the message was received) MUST be | the current Rekey SA (over which the message was received) MUST be | |||
silently deleted after waiting the DEACTIVATION_TIME_DELAY interval | silently deleted after waiting the DEACTIVATION_TIME_DELAY interval | |||
regardless of its expiration time. If the message includes a Delete | regardless of its expiration time. If the message includes a Delete | |||
payload for an existing Data-Security SA, then after installing a new | payload for an existing Data-Security SA, then after installing a new | |||
Data-Security SA, the old one (identified by the Protocol and SPI | Data-Security SA, the old one (identified by the Protocol and SPI | |||
fields in the Delete payload) MUST be silently deleted after waiting | fields in the Delete payload) MUST be silently deleted after waiting | |||
the DEACTIVATION_TIME_DELAY interval regardless of its expiration | the DEACTIVATION_TIME_DELAY interval regardless of its expiration | |||
time. | time. | |||
skipping to change at line 1115 ¶ | skipping to change at line 1112 ¶ | |||
"soft lifetime" expiration is described in Section 4.4.2.1 of | "soft lifetime" expiration is described in Section 4.4.2.1 of | |||
[RFC4301]), the GM SHOULD initiate a registration to the GCKS. This | [RFC4301]), the GM SHOULD initiate a registration to the GCKS. This | |||
registration serves as a request for current SAs and will result in | registration serves as a request for current SAs and will result in | |||
the download of replacement SAs, assuming the GCKS policy has created | the download of replacement SAs, assuming the GCKS policy has created | |||
them. A GM SHOULD also initiate a registration request if a Rekey SA | them. A GM SHOULD also initiate a registration request if a Rekey SA | |||
is about to expire and not yet replaced with a new one. | is about to expire and not yet replaced with a new one. | |||
2.4.2. GSA_INBAND_REKEY Exchange | 2.4.2. GSA_INBAND_REKEY Exchange | |||
When the IKE SA protecting the member registration exchange is | When the IKE SA protecting the member registration exchange is | |||
maintained while a group member participates in the group, the GCKS | maintained while a GM participates in the group, the GCKS can use the | |||
can use the GSA_INBAND_REKEY exchange to individually provide policy | GSA_INBAND_REKEY exchange to individually provide policy updates to | |||
updates to the group member. | the GM. | |||
GM (Responder) GCKS (Initiator) | GM (Responder) GCKS (Initiator) | |||
---------------- ------------------ | ---------------- ------------------ | |||
<-- HDR, SK{GSA, KD, [N]} | <-- HDR, SK{GSA, KD, [N]} | |||
HDR, SK{} --> | HDR, SK{} --> | |||
Figure 12: GSA_INBAND_REKEY Exchange | Figure 11: GSA_INBAND_REKEY Exchange | |||
Because this is a normal IKEv2 exchange, the HDR is treated as | Because this is a normal IKEv2 exchange, the HDR is treated as | |||
defined in IKEv2 [RFC7296]. | defined in IKEv2 [RFC7296]. | |||
2.4.2.1. GSA_INBAND_REKEY GCKS Operations | 2.4.2.1. GSA_INBAND_REKEY GCKS Operations | |||
The GSA, KD, and N payloads are built in the same manner as in a | The GSA, KD, and N payloads are built in the same manner as in a | |||
registration exchange. | registration exchange. | |||
2.4.2.2. GSA_INBAND_REKEY GM Operations | 2.4.2.2. GSA_INBAND_REKEY GM Operations | |||
The GM processes the GSA, KD, and N payloads in the same manner as if | The GM processes the GSA, KD, and N payloads in the same manner as if | |||
they were received in a registration exchange. | they were received in a registration exchange. | |||
2.4.3. Deletion of SAs | 2.4.3. Deletion of SAs | |||
There are occasions when the GCKS may want to signal to group members | There are occasions when the GCKS may want to signal to GMs to delete | |||
to delete policy when the application sending data traffic has ended | policy when the application sending data traffic has ended or if | |||
or if group policy has changed. Deletion of SAs is accomplished by | group policy has changed. Deletion of SAs is accomplished by sending | |||
sending the Delete Payload described in Section 3.11 of [RFC7296] as | the Delete Payload described in Section 3.11 of [RFC7296] as part of | |||
part of the GSA_REKEY pseudo-exchange as shown below. | the GSA_REKEY pseudo-exchange as shown below. | |||
GMs (Receivers) GCKS (Sender) | GMs (Receivers) GCKS (Sender) | |||
---------------- --------------- | ---------------- --------------- | |||
<-- HDR, SK{D, [N,] [AUTH]} | <-- HDR, SK{D, [N,] [AUTH]} | |||
Figure 13: SA Deletion in GSA_REKEY | Figure 12: SA Deletion in GSA_REKEY | |||
If GCKS has a unicast SA with a group member, then it can use the | If GCKS has a unicast SA with a GM, then it can use the | |||
GSA_INBAND_REKEY exchange to delete SAs. | GSA_INBAND_REKEY exchange to delete SAs. | |||
GM (Responder) GCKS (Initiator) | GM (Responder) GCKS (Initiator) | |||
--------------- ------------------ | --------------- ------------------ | |||
<-- HDR, SK{D, [N]} | <-- HDR, SK{D, [N]} | |||
HDR, SK{} --> | HDR, SK{} --> | |||
Figure 14: SA Deletion in GSA_INBAND_REKEY | Figure 13: SA Deletion in GSA_INBAND_REKEY | |||
There may be circumstances where the GCKS may want to start over with | There may be circumstances where the GCKS may want to start over with | |||
a clean state, e.g., in case it runs out of available Sender-IDs. | a clean state, e.g., in case it runs out of available Sender-IDs. | |||
The GCKS can signal deletion of all the Data-Security SAs by sending | The GCKS can signal deletion of all the Data-Security SAs by sending | |||
a Delete payload with an SPI value equal to zero. For example, if | a Delete payload with an SPI value equal to zero. For example, if | |||
the GCKS wishes to remove the Rekey SA and all the Data-Security SAs, | the GCKS wishes to remove the Rekey SA and all the Data-Security SAs, | |||
the GCKS sends a Delete payload with an SPI of zero and a Protocol ID | the GCKS sends a Delete payload with an SPI of zero and a Protocol ID | |||
of AH or ESP, followed by another Delete payload with an SPI of zero | of AH or ESP, followed by another Delete payload with an SPI of zero | |||
and a Protocol ID of GIKE_UPDATE. | and a Protocol ID of GIKE_UPDATE. | |||
If a group member receives a Delete payload with zero SPI and a | If a GM receives a Delete payload with zero SPI and a Protocol ID of | |||
Protocol ID of GIKE_UPDATE, it means that the group member is | GIKE_UPDATE, it means that the GM is excluded from the group. Such | |||
excluded from the group. Such Delete payload may be received either | Delete payload may be received either in the GSA_REKEY pseudo- | |||
in the GSA_REKEY pseudo-exchange or in the GSA_INBAND_REKEY exchange. | exchange or in the GSA_INBAND_REKEY exchange. In this situation, the | |||
In this situation, the group member MUST re-register if it wants to | GM MUST re-register if it wants to continue participating in this | |||
continue participating in this group. The registration is performed | group. The registration is performed as described in Section 2.3. | |||
as described in Section 2.3. It is RECOMMENDED that a GM waits some | It is RECOMMENDED that a GM waits some randomly chosen time before | |||
randomly chosen time before initiating a registration request in this | initiating a registration request in this situation to avoid | |||
situation to avoid overloading the GCKS. This document doesn't | overloading the GCKS. This document doesn't specify the maximum | |||
specify the maximum delay, which is implementation-dependent, but it | delay, which is implementation-dependent, but it is believed that the | |||
is believed that the order of seconds suits most situations. Note | order of seconds suits most situations. Note that if the unicast SA | |||
that if the unicast SA between the group member and the GCKS exists, | between the GM and the GCKS exists, then the GM may use the | |||
then the group member may use the GSA_REGISTRATION exchange to re- | GSA_REGISTRATION exchange to re-register. However, after excluding a | |||
register. However, after excluding a GM from the group, the GCKS MAY | GM from the group, the GCKS MAY immediately delete the unicast SA | |||
immediately delete the unicast SA with this GM (if any) if the | with this GM (if any) if the credentials of this GM are revoked. | |||
credentials of this GM are revoked. | ||||
2.5. Counter-Based Modes of Operation | 2.5. Counter-Based Modes of Operation | |||
Several counter-based modes of operation have been specified for ESP | Several counter-based modes of operation have been specified for ESP | |||
(e.g., AES-CTR [RFC3686], AES-GCM [RFC4106], AES CCM [RFC4309], | (e.g., AES-CTR [RFC3686], AES-GCM [RFC4106], AES-CCM [RFC4309], | |||
ChaCha20-Poly1305 [RFC7634], and AES-GMAC [RFC4543]) and AH (e.g., | ChaCha20-Poly1305 [RFC7634], and AES-GMAC [RFC4543]) and AH (e.g., | |||
AES-GMAC [RFC4543]). These counter-based modes require that no two | AES-GMAC [RFC4543]). These counter-based modes require that no two | |||
senders in the group ever send a packet with the same IV using the | senders in the group ever send a packet with the same IV using the | |||
same cipher key and mode. This requirement is met in G-IKEv2 when | same cipher key and mode. This requirement is met in G-IKEv2 when | |||
the following measures are taken: | the following measures are taken: | |||
* The GCKS distributes a unique key for each Data-Security SA. | * The GCKS distributes a unique key for each Data-Security SA. | |||
* The GCKS uses the method described in [RFC6054], which assigns | * The GCKS uses the method described in [RFC6054], which assigns | |||
each sender a portion of the IV space by provisioning each sender | each sender a portion of the IV space by provisioning each sender | |||
with one or more unique Sender-ID values. | with one or more unique Sender-ID values. | |||
2.5.1. Allocation of Sender-ID | 2.5.1. Allocation of Sender-ID | |||
When at least one Data-Security SA included in the group policy | When at least one Data-Security SA included in the group policy | |||
includes a counter-based mode of operation, the GCKS automatically | includes a counter-based mode of operation, the GCKS automatically | |||
allocates and distributes one Sender-ID to each group member acting | allocates and distributes one Sender-ID to each GM acting in the role | |||
in the role of sender on the Data-Security SA. The Sender-ID value | of sender on the Data-Security SA. The Sender-ID value is used | |||
is used exclusively by the group sender to which it was allocated. | exclusively by the group sender to which it was allocated. The group | |||
The group sender uses the same Sender-ID for each Data-Security SA | sender uses the same Sender-ID for each Data-Security SA specifying | |||
specifying the use of a counter-based mode of operation. A GCKS MUST | the use of a counter-based mode of operation. A GCKS MUST distribute | |||
distribute unique keys for each Data-Security SA, including a | unique keys for each Data-Security SA, including a counter-based mode | |||
counter-based mode of operation in order to maintain unique key and | of operation in order to maintain unique key and nonce usage. | |||
nonce usage. | ||||
During registration, the group sender can choose to request one or | During registration, the group sender can choose to request one or | |||
more Sender-ID values. Requesting a value of 1 is not necessary | more Sender-ID values. Requesting a value of 1 is not necessary | |||
since the GCKS will automatically allocate exactly one to the group | since the GCKS will automatically allocate exactly one to the group | |||
sender. A group sender MUST request as many Sender-ID values | sender. A group sender MUST request as many Sender-ID values | |||
matching the number of encryption modules in which it will be | matching the number of encryption modules in which it will be | |||
installing the TEKs in the outbound direction. Alternatively, a | installing the TEKs in the outbound direction. Alternatively, a | |||
group sender MAY request more than one Sender-ID and use them | group sender MAY request more than one Sender-ID and use them | |||
serially. This could be useful when it is anticipated that the group | serially. This could be useful when it is anticipated that the group | |||
sender will exhaust their range of Data-Security SA nonces using a | sender will exhaust their range of Data-Security SA nonces using a | |||
skipping to change at line 1270 ¶ | skipping to change at line 1265 ¶ | |||
had sent data on the current group Data-Security SAs, it does not | had sent data on the current group Data-Security SAs, it does not | |||
know what Data-Security counter-mode nonce values that a group | know what Data-Security counter-mode nonce values that a group | |||
sender has used. By distributing new Sender-ID values, the key | sender has used. By distributing new Sender-ID values, the key | |||
server ensures that each time a conforming group sender installs | server ensures that each time a conforming group sender installs | |||
a Data-Security SA, it will use a unique set of counter-based | a Data-Security SA, it will use a unique set of counter-based | |||
mode nonces. | mode nonces. | |||
5. When the Sender-ID counter maintained by the GCKS reaches its | 5. When the Sender-ID counter maintained by the GCKS reaches its | |||
final Sender-ID value, no more Sender-ID values can be | final Sender-ID value, no more Sender-ID values can be | |||
distributed. Before distributing any new Sender-ID values, the | distributed. Before distributing any new Sender-ID values, the | |||
GCKS MUST exclude all group members from the group as described | GCKS MUST exclude all GMs from the group as described in | |||
in Section 2.4.3. This will result in the group members | Section 2.4.3. This will result in the GMs performing re- | |||
performing re-registration, during which they will receive new | registration, during which they will receive new Data-Security | |||
Data-Security SAs and group senders will additionally receive new | SAs and group senders will additionally receive new Sender-ID | |||
Sender-ID values. The new Sender-ID values can safely be used | values. The new Sender-ID values can safely be used because they | |||
because they are only used with the new Data-Security SAs. | are only used with the new Data-Security SAs. | |||
2.5.2. GM Usage of Sender-ID | 2.5.2. GM Usage of Sender-ID | |||
A GM applies the Sender-ID to Data-Security SAs as follows: | A GM applies the Sender-ID to Data-Security SAs as follows: | |||
* The most significant bits of the IV indicated in the | * The most significant bits of the IV indicated in the | |||
GWP_SENDER_ID_BITS attribute (Section 4.4.3.1.2) are taken to be | GWP_SENDER_ID_BITS attribute (Section 4.4.3.1.2) are taken to be | |||
the Sender-ID field of the IV. | the Sender-ID field of the IV. | |||
* The Sender-ID is placed in the least significant bits of the | * The Sender-ID is placed in the least significant bits of the | |||
skipping to change at line 1314 ¶ | skipping to change at line 1309 ¶ | |||
allowing only a single group sender in each SA if it is desirable to | allowing only a single group sender in each SA if it is desirable to | |||
get replay protection with multiple (but still a limited number) of | get replay protection with multiple (but still a limited number) of | |||
group senders. | group senders. | |||
IPsec architecture assumes that whether anti-replay service is | IPsec architecture assumes that whether anti-replay service is | |||
enabled or not is a local matter for an IPsec receiver. In other | enabled or not is a local matter for an IPsec receiver. In other | |||
words, an IPsec sender always increments the Sequence Number field in | words, an IPsec sender always increments the Sequence Number field in | |||
the ESP/AH header and a receiver decides whether to check for | the ESP/AH header and a receiver decides whether to check for | |||
replayed packets or not. Since it is known in some cases that the | replayed packets or not. Since it is known in some cases that the | |||
replay protection is not possible (like in an SA with many group | replay protection is not possible (like in an SA with many group | |||
senders), a new transform ID "32-bit Unspecified Numbers" is defined | senders), a new Transform ID "32-bit Unspecified Numbers" is defined | |||
for the Sequence Numbers (SNs) transform type. Using this transform | for the Sequence Numbers (SNs) Transform Type. Using this Transform | |||
ID, the GCKS can inform group members that the uniqueness of sequence | ID, the GCKS can inform GMs that the uniqueness of sequence numbers | |||
numbers for a given SA is not guaranteed. The decision of whether to | for a given SA is not guaranteed. The decision of whether to enable | |||
enable anti-replay service is still a local matter of a GM (in | anti-replay service is still a local matter of a GM (in accordance | |||
accordance with IPsec architecture). | with IPsec architecture). | |||
The GCKS MUST include the Sequence Numbers transform in the GSA | The GCKS MUST include the Sequence Numbers transform in the GSA | |||
payload for every Data-Security SA. See Section 4.4.2.1.3 for more | payload for every Data-Security SA. See Section 4.4.2.1.3 for more | |||
details. | details. | |||
When a Data-Security SA has a single sender, the GCKS MUST be | When a Data-Security SA has a single sender, the GCKS MUST be | |||
configured to rekey the SA frequently enough so that the 32-bit | configured to rekey the SA frequently enough so that the 32-bit | |||
sequence numbers do not wrap. | sequence numbers do not wrap. | |||
2.7. Encryption Transforms with Implicit IV | 2.7. Encryption Transforms with Implicit IV | |||
skipping to change at line 1352 ¶ | skipping to change at line 1347 ¶ | |||
3. Group Key Management and Access Control | 3. Group Key Management and Access Control | |||
Through the G-IKEv2 rekey, G-IKEv2 supports algorithms such as | Through the G-IKEv2 rekey, G-IKEv2 supports algorithms such as | |||
Logical Key Hierarchy (LKH) that have the property of denying access | Logical Key Hierarchy (LKH) that have the property of denying access | |||
to a new group key by a member removed from the group (forward access | to a new group key by a member removed from the group (forward access | |||
control) and to an old group key by a member added to the group | control) and to an old group key by a member added to the group | |||
(backward access control). This is unrelated to the Perfect Forward | (backward access control). This is unrelated to the Perfect Forward | |||
Secrecy (PFS) property as defined in Section 2.12 of [RFC7296]. | Secrecy (PFS) property as defined in Section 2.12 of [RFC7296]. | |||
Group management algorithms providing forward and backward access | Group management algorithms providing forward and backward access | |||
control other than LKH have been proposed in the literature, | control other than LKH have also been proposed, for example, OFT | |||
including OFT [OFT] and Subset Difference [NNL]. These algorithms | [OFT] and Subset Difference [NNL]. These algorithms could be used | |||
could be used with G-IKEv2 but are not specified as a part of this | with G-IKEv2 but are not specified as a part of this document. | |||
document. | ||||
This specification assumes that all group keys, that are sent to the | This specification assumes that all group keys, that are sent to the | |||
GMs by the GCKS, are encrypted with some other keys, called Key Wrap | GMs by the GCKS, are encrypted with some other keys, called Key Wrap | |||
Keys (KWKs). The Key Wrap Algorithm transform defines the algorithm | Keys (KWKs). The Key Wrap Algorithm transform defines the algorithm | |||
used for key wrapping in the context of an SA. | used for key wrapping in the context of an SA. | |||
3.1. Key Wrap Keys | 3.1. Key Wrap Keys | |||
Every GM always knows at least one KWK -- the KWK that is associated | Every GM always knows at least one KWK -- the KWK that is associated | |||
with the IKE SA or multicast Rekey SA over which wrapped keys are | with the IKE SA or multicast Rekey SA over which wrapped keys are | |||
skipping to change at line 1387 ¶ | skipping to change at line 1381 ¶ | |||
of the key for the Encryption Algorithm transform for the Rekey SA | of the key for the Encryption Algorithm transform for the Rekey SA | |||
and for all Data-Security SAs in the group (taking the Key Length | and for all Data-Security SAs in the group (taking the Key Length | |||
attribute into consideration if it is present). | attribute into consideration if it is present). | |||
3.1.1. Default Key Wrap Key | 3.1.1. Default Key Wrap Key | |||
The default KWK (GSK_w) is only used in the context of a single IKE | The default KWK (GSK_w) is only used in the context of a single IKE | |||
SA. Every IKE SA (unicast IKE SA or multicast Rekey SA) will have | SA. Every IKE SA (unicast IKE SA or multicast Rekey SA) will have | |||
its own GSK_w. | its own GSK_w. | |||
For the unicast IKE SA (used for the GM registration and for the | For the unicast IKE SA (used for the GM registration and for | |||
GSA_INBAND_REKEY exchanges, if they are take place), the GSK_w is | GSA_INBAND_REKEY exchanges if they appear), the GSK_w is computed as | |||
computed as follows: | follows: | |||
GSK_w = prf+(SK_d, "Key Wrap for G-IKEv2") | GSK_w = prf+(SK_d, "Key Wrap for G-IKEv2") | |||
where the string "Key Wrap for G-IKEv2" is 20 ASCII characters | where the string "Key Wrap for G-IKEv2" is 20 ASCII characters | |||
without null termination. | without null termination. | |||
For the multicast Rekey SA, the GSK_w is provided along with other SA | For the multicast Rekey SA, the GSK_w is provided along with other SA | |||
keys as defined in Section 3.4. | keys as defined in Section 3.4. | |||
3.2. GCKS Key Management Semantics | 3.2. GCKS Key Management Semantics | |||
skipping to change at line 1436 ¶ | skipping to change at line 1430 ¶ | |||
because the GSA TEK policy and the associated keys are not protected | because the GSA TEK policy and the associated keys are not protected | |||
with the new KEK. A second G-IKEv2 rekey message can deliver the new | with the new KEK. A second G-IKEv2 rekey message can deliver the new | |||
GSA TEK policies and their associated keys because it will be | GSA TEK policies and their associated keys because it will be | |||
protected with the new KEK and thus will not be visible to the | protected with the new KEK and thus will not be visible to the | |||
members who were denied access. | members who were denied access. | |||
If forward access control policy for the group includes keeping group | If forward access control policy for the group includes keeping group | |||
policy changes from members that are denied access to the group, then | policy changes from members that are denied access to the group, then | |||
two sequential G-IKEv2 rekey messages changing the group KEK MUST be | two sequential G-IKEv2 rekey messages changing the group KEK MUST be | |||
sent by the GCKS. The first G-IKEv2 rekey message creates a new KEK | sent by the GCKS. The first G-IKEv2 rekey message creates a new KEK | |||
for the group. Group members, which are denied access, will not be | for the group. GMs, which are denied access, will not be able to | |||
able to access the new KEK, but they will see the group policy since | access the new KEK, but they will see the group policy since the | |||
the G-IKEv2 rekey message is protected under the current KEK. A | G-IKEv2 rekey message is protected under the current KEK. A | |||
subsequent G-IKEv2 rekey message containing the changed group policy | subsequent G-IKEv2 rekey message containing the changed group policy | |||
and again changing the KEK allows complete forward access control. A | and again changing the KEK allows complete forward access control. A | |||
G-IKEv2 rekey message MUST NOT change the policy without creating a | G-IKEv2 rekey message MUST NOT change the policy without creating a | |||
new KEK. | new KEK. | |||
If other methods of using LKH or other group management algorithms | If other methods of using LKH or other group management algorithms | |||
are added to G-IKEv2, those methods MAY remove the above restrictions | are added to G-IKEv2, those methods MAY remove the above restrictions | |||
requiring multiple G-IKEv2 rekey messages, providing those methods | requiring multiple G-IKEv2 rekey messages, providing those methods | |||
specify how the forward access control policy is maintained within a | specify how the forward access control policy is maintained within a | |||
single G-IKEv2 rekey message. | single G-IKEv2 rekey message. | |||
skipping to change at line 1549 ¶ | skipping to change at line 1543 ¶ | |||
bullet from Section 2.17 of [RFC7296]. In particular, for the ESP | bullet from Section 2.17 of [RFC7296]. In particular, for the ESP | |||
and AH SAs, the encryption key (if any) MUST be taken from the | and AH SAs, the encryption key (if any) MUST be taken from the | |||
leftmost bits of the keying material and the integrity key (if any) | leftmost bits of the keying material and the integrity key (if any) | |||
MUST be taken from the remaining bits. | MUST be taken from the remaining bits. | |||
For a Rekey SA, the following keys are taken from the keying | For a Rekey SA, the following keys are taken from the keying | |||
material: | material: | |||
GSK_e | GSK_a | GSK_w = KEYMAT | GSK_e | GSK_a | GSK_w = KEYMAT | |||
Figure 15 | ||||
where GSK_e and GSK_a are the keys used for the Encryption Algorithm | where GSK_e and GSK_a are the keys used for the Encryption Algorithm | |||
and the Integrity Algorithm transforms for the corresponding SA and | and the Integrity Algorithm transforms, respectively, for the | |||
GSK_w is a default KWK for this SA. Note that GSK_w is used with the | corresponding SA and GSK_w is a default KWK for this SA. Note that | |||
key wrap algorithm specified in the Key Wrap Algorithm transform. If | GSK_w is used with the key wrap algorithm specified in the Key Wrap | |||
an AEAD algorithm is used for encryption, then the GSK_a key will not | Algorithm transform. If an AEAD algorithm is used for encryption, | |||
be used (GM can use the formula above assuming the length of GSK_a is | then the GSK_a key will not be used (GM can use the formula above | |||
zero). | assuming the length of GSK_a is zero). | |||
4. Header and Payload Formats | 4. Header and Payload Formats | |||
The G-IKEv2 is an IKEv2 extension and thus inherits its wire format | The G-IKEv2 is an IKEv2 extension and thus inherits its wire format | |||
for data structures. However, the processing of some payloads are | for data structures. However, the processing of some payloads are | |||
different. Several new payloads are defined: Group Identification | different. Several new payloads are defined: Group Identification | |||
(IDg) (Section 4.2), Security Association - GM Supported Transforms | (IDg) (Section 4.2), Security Association - GM Supported Transforms | |||
(SAg) (Section 4.3), Group Security Association (GSA) (Section 4.4), | (SAg) (Section 4.3), GSA (Section 4.4), and Key Download (KD) | |||
and Key Download (KD) (Section 4.5). The G-IKEv2 header | (Section 4.5). The G-IKEv2 header (Section 4.1), IDg payload, and | |||
(Section 4.1), IDg payload, and SAg payload reuse the IKEv2 format | SAg payload reuse the IKEv2 format for the IKEv2 header, IDi/IDr | |||
for the IKEv2 header, IDi/IDr payloads, and SA payload, respectively. | payloads, and SA payload, respectively. New exchange types GSA_AUTH, | |||
New exchange types GSA_AUTH, GSA_REGISTRATION, GSA_REKEY, and | GSA_REGISTRATION, GSA_REKEY, and GSA_INBAND_REKEY are also added. | |||
GSA_INBAND_REKEY are also added. | ||||
This section describes new payloads and the differences in the | This section describes new payloads and the differences in the | |||
processing of existing IKEv2 payloads. | processing of existing IKEv2 payloads. | |||
4.1. G-IKEv2 Header | 4.1. G-IKEv2 Header | |||
G-IKEv2 uses the same IKE header format as specified in Section 3.1 | G-IKEv2 uses the same IKE header format as specified in Section 3.1 | |||
of [RFC7296]. The Major Version is 2 and the Minor Version is 0, as | of [RFC7296]. The Major Version is 2 and the Minor Version is 0, as | |||
in IKEv2. IKE SA Initiator's SPI, IKE SA Responder's SPI, Flags, | in IKEv2. IKE SA Initiator's SPI, IKE SA Responder's SPI, Flags, | |||
Message ID, and Length are as specified in [RFC7296]. | Message ID, and Length are as specified in [RFC7296]. | |||
4.2. Group Identification Payload | 4.2. Group Identification Payload | |||
The Group Identification (IDg) payload allows the group member to | The Group Identification (IDg) payload allows the GM to indicate | |||
indicate which group it wants to join. The payload is constructed by | which group it wants to join. The payload is constructed by using | |||
using the IKEv2 Identification Payload (Section 3.5 of [RFC7296]). | the IKEv2 Identification Payload (Section 3.5 of [RFC7296]). ID type | |||
ID type ID_KEY_ID MUST be supported. ID types ID_IPV4_ADDR, ID_FQDN, | ID_KEY_ID MUST be supported. ID types ID_IPV4_ADDR, ID_FQDN, | |||
ID_RFC822_ADDR, and ID_IPV6_ADDR SHOULD be supported. ID types | ID_RFC822_ADDR, and ID_IPV6_ADDR SHOULD be supported. ID types | |||
ID_DER_ASN1_DN and ID_DER_ASN1_GN are not expected to be used. The | ID_DER_ASN1_DN and ID_DER_ASN1_GN are not expected to be used. The | |||
Payload Type for the IDg payload is fifty (50). | Payload Type for the IDg payload is fifty (50). | |||
4.3. Security Association - GM Supported Transforms Payload | 4.3. Security Association - GM Supported Transforms Payload | |||
The Security Association - GM Supported Transforms (SAg) payload | The Security Association - GM Supported Transforms (SAg) payload | |||
declares which Transforms a GM is willing to accept. The payload is | declares which Transforms a GM is willing to accept. The payload is | |||
constructed using the format of the IKEv2 Security Association | constructed using the format of the IKEv2 Security Association | |||
payload (Section 3.3 of [RFC7296]). The Payload Type for SAg | payload (Section 3.3 of [RFC7296]). The Payload Type for SAg | |||
skipping to change at line 1617 ¶ | skipping to change at line 1608 ¶ | |||
1 2 3 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Group Policies> ~ | ~ <Group Policies> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 16: GSA Payload Format | Figure 14: GSA Payload Format | |||
The Security Association payload fields are defined as follows: | The GSA payload fields are defined as follows: | |||
Next Payload, C, RESERVED, and Payload Length fields: | Next Payload, C, RESERVED, and Payload Length fields: | |||
Comprise the IKEv2 Generic Payload Header and are defined in | Comprise the IKEv2 generic payload header and are defined in | |||
Section 3.2 of [RFC7296]. | Section 3.2 of [RFC7296]. | |||
Group Policies (variable): | Group Policies (variable): | |||
A set of group policies for the group. | A set of group policies for the group. | |||
4.4.1. Group Policies | 4.4.1. Group Policies | |||
Group policies are comprised of two types: Group SA (GSA) policy and | Group policies are comprised of two types: GSA policy and GW policy. | |||
Group-wide (GW) policy. GSA policy defines parameters for the | GSA policy defines parameters for the Security Association of the | |||
Security Association of the group. Depending on the employed | group. Depending on the employed security protocol, GSA policies may | |||
security protocol, GSA policies may further be classified as Rekey SA | further be classified as Rekey SA (GSA KEK) policy and Data-Security | |||
policy (GSA KEK) and Data-Security SA policy (GSA TEK). GSA payload | (GSA TEK) SA policy. GSA payload may contain zero or one GSA KEK | |||
may contain zero or one GSA KEK policy, zero or more GSA TEK | policy, zero or more GSA TEK policies, and zero or one GW policy, | |||
policies, and zero or one GW policy, where either one GSA KEK or one | where either one GSA KEK or one GSA TEK policy MUST be present. | |||
GSA TEK policy MUST be present. | ||||
This latitude allows various group policies to be accommodated. For | This latitude allows various group policies to be accommodated. For | |||
example, if the group policy does not require the use of a Rekey SA, | example, if the group policy does not require the use of a Rekey SA, | |||
the GCKS would not need to send a GSA KEK policy to the group member | the GCKS would not need to send a GSA KEK policy to the group member | |||
since all SA updates would be performed using the GSA_INBAND_REKEY | since all SA updates would be performed using the GSA_INBAND_REKEY | |||
exchange via the unicast IKE SA. Alternatively, group policy might | exchange via the unicast IKE SA. Alternatively, group policy might | |||
use a Rekey SA but choose to download a KEK to the group member only | use a Rekey SA but choose to download a KEK to the GM only as part of | |||
as part of the unicast IKE SA. Therefore, the GSA KEK policy would | the unicast IKE SA. Therefore, the GSA KEK policy would not be | |||
not be necessary as part of the GSA_REKEY message. | necessary as part of the GSA_REKEY message. | |||
Specifying multiple GSA TEKs allows multiple related data streams | Specifying multiple GSA TEKs allows multiple related data streams | |||
(e.g., video, audio, and text) to be associated with a session, but | (e.g., video, audio, and text) to be associated with a session, but | |||
each are protected with an individual security association policy. | each are protected with an individual Security Association policy. | |||
A GW policy allows for the distribution of group-wide policy, such as | A GW policy allows for the distribution of group-wide policy, such as | |||
instructions for when to activate and deactivate SAs. | instructions for when to activate and deactivate SAs. | |||
Policies are distributed in substructures to the GSA payload. The | Policies are distributed in substructures to the GSA payload. The | |||
format of the substructures is defined in Section 4.4.2 (for GSA | format of the substructures is defined in Section 4.4.2 (for GSA | |||
policy) and in Section 4.4.3 (for GW policy). The first octet of the | policy) and in Section 4.4.3 (for GW policy). The first octet of the | |||
substructure unambiguously determines its type; it is zero for GW | substructure unambiguously determines its type; it is zero for GW | |||
policy and non-zero (actually, it is a security Protocol ID) for GSA | policy and non-zero (actually, it is a security Protocol ID) for GSA | |||
policies. | policies. | |||
skipping to change at line 1696 ¶ | skipping to change at line 1686 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <GSA Transforms> ~ | ~ <GSA Transforms> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <GSA Attributes> ~ | ~ <GSA Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 17: GSA Policy Substructure Format | Figure 15: GSA Policy Substructure Format | |||
The GSA policy fields are defined as follows: | The GSA policy fields are defined as follows: | |||
Protocol (1 octet): | Protocol (1 octet): | |||
Identifies the security protocol for this group SA. The values | Identifies the security protocol for this group SA. The values | |||
are defined in the "IKEv2 Security Protocol Identifiers" registry | are defined in the "IKEv2 Security Protocol Identifiers" registry | |||
in [IKEV2-IANA]. The valid values for this field are 6 | in [IKEV2-IANA]. The valid values for this field are 6 | |||
(GIKE_UPDATE) for Rekey SA and 2 (AH) or 3 (ESP) for Data-Security | (GIKE_UPDATE) for Rekey SA and 2 (AH) or 3 (ESP) for Data-Security | |||
SAs. | SAs. | |||
skipping to change at line 1718 ¶ | skipping to change at line 1708 ¶ | |||
Size of the SPI for the SA. SPI size depends on the SA protocol. | Size of the SPI for the SA. SPI size depends on the SA protocol. | |||
It is 16 octets for GIKE_UPDATE and 4 octets for AH and ESP. | It is 16 octets for GIKE_UPDATE and 4 octets for AH and ESP. | |||
Length (2 octets, unsigned integer): | Length (2 octets, unsigned integer): | |||
Length of this substructure including the header. | Length of this substructure including the header. | |||
SPI (variable): | SPI (variable): | |||
Security Parameter Index for the group SA. The size of this field | Security Parameter Index for the group SA. The size of this field | |||
is determined by the SPI Size field. As described above, these | is determined by the SPI Size field. As described above, these | |||
SPIs are assigned by the GCKS. In the case of GIKE_UPDATE, the | SPIs are assigned by the GCKS. In the case of GIKE_UPDATE, the | |||
SPI is the IKEv2 Header SPI pair where the first 8 octets become | SPI is the IKEv2 header SPI pair where the first 8 octets become | |||
the "IKE SA Initiator's SPI" field in the G-IKEv2 rekey message | the "IKE SA Initiator's SPI" field in the G-IKEv2 rekey message | |||
IKEv2 HDR, and the second 8 octets become the "IKE SA Responder's | IKEv2 HDR, and the second 8 octets become the "IKE SA Responder's | |||
SPI" in the same HDR. | SPI" in the same HDR. | |||
Source & Destination Traffic Selectors (variable): | Source & Destination Traffic Selectors (variable): | |||
Substructures describing the source and destination of the network | Substructures describing the source and destination of the network | |||
identities. The format for these substructures is defined in | identities. The format for these substructures is defined in | |||
IKEv2 (Section 3.13.1 of [RFC7296]). | IKEv2 (Section 3.13.1 of [RFC7296]). | |||
For the Rekey SA (with the GIKE_UPDATE protocol), the destination | For the Rekey SA (with the GIKE_UPDATE protocol), the destination | |||
skipping to change at line 1767 ¶ | skipping to change at line 1757 ¶ | |||
Contains policy attributes associated with the group SA. The | Contains policy attributes associated with the group SA. The | |||
following sections describe the possible attributes. Any or all | following sections describe the possible attributes. Any or all | |||
attributes may be optional, depending on the protocol and the | attributes may be optional, depending on the protocol and the | |||
group policy. Section 4.4.2.2 defines attributes used in GSA | group policy. Section 4.4.2.2 defines attributes used in GSA | |||
policy substructure. | policy substructure. | |||
4.4.2.1. GSA Transforms | 4.4.2.1. GSA Transforms | |||
GSA policy is defined by the means of transforms in the GSA policy | GSA policy is defined by the means of transforms in the GSA policy | |||
substructure. For this purpose, the transforms defined in [RFC7296] | substructure. For this purpose, the transforms defined in [RFC7296] | |||
are used. In addition, new transform types are defined for use in | are used. In addition, new Transform Types are defined for use in | |||
G-IKEv2: Group Controller Authentication Method (GCAUTH) and Key Wrap | G-IKEv2: Group Controller Authentication Method (GCAUTH) and Key Wrap | |||
Algorithm (KWA); see Section 9. | Algorithm (KWA); see Section 9. | |||
Valid transform types depend on the SA protocol and are summarized in | Valid Transform Types depend on the SA protocol and are summarized in | |||
the table below. Exactly one instance of each mandatory transform | the table below. Exactly one instance of each mandatory Transform | |||
type and at most one instance of each optional transform type MUST be | Type and at most one instance of each optional Transform Type MUST be | |||
present in the GSA policy substructure. | present in the GSA policy substructure. | |||
+=============+=============================+================+ | +=============+=============================+================+ | |||
| Protocol | Mandatory Types | Optional Types | | | Protocol | Mandatory Types | Optional Types | | |||
+=============+=============================+================+ | +=============+=============================+================+ | |||
| GIKE_UPDATE | ENCR, INTEG*, GCAUTH**, KWA | | | | GIKE_UPDATE | ENCR, INTEG*, GCAUTH**, KWA | | | |||
+-------------+-----------------------------+----------------+ | +-------------+-----------------------------+----------------+ | |||
| ESP | ENCR, SN | INTEG | | | ESP | ENCR, SN | INTEG | | |||
+-------------+-----------------------------+----------------+ | +-------------+-----------------------------+----------------+ | |||
| AH | INTEG, SN | | | | AH | INTEG, SN | | | |||
skipping to change at line 1804 ¶ | skipping to change at line 1794 ¶ | |||
(**): May only appear at the time of a GM registration (in the | (**): May only appear at the time of a GM registration (in the | |||
GSA_AUTH and GSA_REGISTRATION exchanges). | GSA_AUTH and GSA_REGISTRATION exchanges). | |||
4.4.2.1.1. Group Controller Authentication Method Transform | 4.4.2.1.1. Group Controller Authentication Method Transform | |||
The Group Controller Authentication Method (GCAUTH) transform is used | The Group Controller Authentication Method (GCAUTH) transform is used | |||
to convey information on how the GCKS will authenticate the GSA_REKEY | to convey information on how the GCKS will authenticate the GSA_REKEY | |||
messages. | messages. | |||
This document creates a new IKEv2 IANA registry for transform IDs of | This document creates a new IKEv2 IANA registry for Transform IDs of | |||
this transform type, which has been initially populated as described | this Transform Type, which has been initially populated as described | |||
in Section 9. In particular, the following entries have been added: | in Section 9. In particular, the following entries have been added: | |||
+========================================+=======+ | +=======+========================================+ | |||
| Group Controller Authentication Method | Value | | | Value | Group Controller Authentication Method | | |||
+========================================+=======+ | +=======+========================================+ | |||
| Reserved | 0 | | | 0 | Reserved | | |||
+----------------------------------------+-------+ | +-------+----------------------------------------+ | |||
| Implicit | 1 | | | 1 | Implicit | | |||
+----------------------------------------+-------+ | +-------+----------------------------------------+ | |||
| Digital Signature | 2 | | | 2 | Digital Signature | | |||
+----------------------------------------+-------+ | +-------+----------------------------------------+ | |||
Table 3 | Table 3: Group Controller Authentication | |||
Method Transform IDs | ||||
These transform IDs are defined as follows: | These Transform IDs are defined as follows: | |||
Implicit: | Implicit: | |||
No authentication of the GSA_REKEY messages will be provided by | No authentication of the GSA_REKEY messages will be provided by | |||
the GCKS besides the ability for the GMs to correctly decrypt them | the GCKS besides the ability for the GMs to correctly decrypt them | |||
and verify their ICV. In this case, the GCKS MUST NOT include the | and verify their ICV. In this case, the GCKS MUST NOT include the | |||
AUTH_KEY attribute into the KD payload. Additionally, the AUTH | AUTH_KEY attribute into the KD payload. Additionally, the AUTH | |||
payload MUST NOT be included in the GIKE_UPDATE messages. | payload MUST NOT be included in the GIKE_UPDATE messages. | |||
Digital Signature | Digital Signature | |||
Digital signatures will be used by the GCKS to authenticate the | Digital signatures will be used by the GCKS to authenticate the | |||
skipping to change at line 1842 ¶ | skipping to change at line 1833 ¶ | |||
AUTH_KEY attribute containing the public key into the KD payload | AUTH_KEY attribute containing the public key into the KD payload | |||
at the time the GM is registered to the group. To specify the | at the time the GM is registered to the group. To specify the | |||
details of the signature algorithm, a new attribute Signature | details of the signature algorithm, a new attribute Signature | |||
Algorithm Identifier (value 18) is defined. This attribute | Algorithm Identifier (value 18) is defined. This attribute | |||
contains DER-encoded ASN.1 object AlgorithmIdentifier, which | contains DER-encoded ASN.1 object AlgorithmIdentifier, which | |||
specifies the signature algorithm and the hash function that the | specifies the signature algorithm and the hash function that the | |||
GCKS will use for authentication. The AlgorithmIdentifier object | GCKS will use for authentication. The AlgorithmIdentifier object | |||
is defined in Section 4.1.1.2 of [RFC5280]. Also, see [RFC7427] | is defined in Section 4.1.1.2 of [RFC5280]. Also, see [RFC7427] | |||
for the list of common AlgorithmIdentifier values used in IKEv2. | for the list of common AlgorithmIdentifier values used in IKEv2. | |||
In the case of the Digital Signature transform ID, the GCKS MUST | In the case of the Digital Signature Transform ID, the GCKS MUST | |||
include the Signature Algorithm Identifier attribute in the Group | include the Signature Algorithm Identifier attribute in the Group | |||
Controller Authentication Method transform. In this case, the | Controller Authentication Method transform. In this case, the | |||
AUTH payload in the GIKE_UPDATE messages MUST contain the Digital | AUTH payload in the GIKE_UPDATE messages MUST contain the Digital | |||
Signature authentication method (value 14) and be formatted as | Signature authentication method (value 14) and be formatted as | |||
defined in Section 3 of [RFC7427]. The AlgorithmIdentifier ASN.1 | defined in Section 3 of [RFC7427]. The AlgorithmIdentifier ASN.1 | |||
object in the AUTH payload MUST match the content of the Signature | object in the AUTH payload MUST match the content of the Signature | |||
Algorithm Identifier attribute in the Group Controller | Algorithm Identifier attribute in the Group Controller | |||
Authentication Method transform. The Signature Algorithm | Authentication Method transform. The Signature Algorithm | |||
Identifier attribute is only meaningful for the Digital Signature | Identifier attribute is only meaningful for the Digital Signature | |||
transform ID and MUST NOT be used with other transform IDs. | Transform ID and MUST NOT be used with other Transform IDs. | |||
More authentication methods may be defined in the future. | More authentication methods may be defined in the future. | |||
The authentication method MUST NOT change as a result of rekey | The authentication method MUST NOT change as a result of rekey | |||
operations. This means that the Group Controller Authentication | operations. This means that the Group Controller Authentication | |||
Method transform MUST NOT appear in the rekey messages; it may only | Method transform MUST NOT appear in the rekey messages; it may only | |||
appear in the registration exchange (either GSA_AUTH or | appear in the registration exchange (either GSA_AUTH or | |||
GSA_REGISTRATION). | GSA_REGISTRATION). | |||
The type of the Group Controller Authentication Method transform is | The type of the Group Controller Authentication Method transform is | |||
skipping to change at line 1875 ¶ | skipping to change at line 1866 ¶ | |||
4.4.2.1.2. Key Wrap Algorithm Transform | 4.4.2.1.2. Key Wrap Algorithm Transform | |||
The Key Wrap Algorithm (KWA) transform is used to convey information | The Key Wrap Algorithm (KWA) transform is used to convey information | |||
about an algorithm that is used for key wrapping in G-IKEv2. See | about an algorithm that is used for key wrapping in G-IKEv2. See | |||
Section 4.5.4 for details. | Section 4.5.4 for details. | |||
This document creates a new IKEv2 IANA registry for the key wrap | This document creates a new IKEv2 IANA registry for the key wrap | |||
algorithms, which has been initially populated as described in | algorithms, which has been initially populated as described in | |||
Section 9. In particular, the following entries have been added: | Section 9. In particular, the following entries have been added: | |||
+====================+=======+ | +=======+====================+ | |||
| Key Wrap Algorithm | Value | | | Value | Key Wrap Algorithm | | |||
+====================+=======+ | +=======+====================+ | |||
| Reserved | 0 | | | 0 | Reserved | | |||
+--------------------+-------+ | +-------+--------------------+ | |||
| KW_5649_128 | 1 | | | 1 | KW_5649_128 | | |||
+--------------------+-------+ | +-------+--------------------+ | |||
| KW_5649_192 | 2 | | | 2 | KW_5649_192 | | |||
+--------------------+-------+ | +-------+--------------------+ | |||
| KW_5649_256 | 3 | | | 3 | KW_5649_256 | | |||
+--------------------+-------+ | +-------+--------------------+ | |||
| KW_ARX | 4 | | | 4 | KW_ARX | | |||
+--------------------+-------+ | +-------+--------------------+ | |||
Table 4 | Table 4: Key Wrap | |||
Algorithm Transform IDs | ||||
These algorithms are defined as follows: | These algorithms are defined as follows: | |||
KW_5649_128, KW_5649_192, KW_5649_256: | KW_5649_128, KW_5649_192, KW_5649_256: | |||
The key wrap algorithm defined in [RFC5649] with a 128-bit, | The key wrap algorithm defined in [RFC5649] with a 128-bit, | |||
192-bit, and 256-bit key, respectively. This key wrap algorithm | 192-bit, and 256-bit key, respectively. This key wrap algorithm | |||
is designed for use with AES block cipher. | is designed for use with AES block cipher. | |||
KW_ARX: | KW_ARX: | |||
The ARX-KW-8-2-4-GX key wrap algorithm defined in [ARX-KW]. This | The ARX-KW-8-2-4-GX key wrap algorithm defined in [ARX-KW]. This | |||
skipping to change at line 1911 ¶ | skipping to change at line 1903 ¶ | |||
cipher. | cipher. | |||
More key wrap algorithms may be defined in the future. The | More key wrap algorithms may be defined in the future. The | |||
requirement is that these algorithms MUST be able to wrap key | requirement is that these algorithms MUST be able to wrap key | |||
material of size up to 256 bytes. | material of size up to 256 bytes. | |||
The type of the Key Wrap Algorithm transform is 13. | The type of the Key Wrap Algorithm transform is 13. | |||
4.4.2.1.3. Sequence Numbers Transform | 4.4.2.1.3. Sequence Numbers Transform | |||
The Sequence Numbers (SNs) transform type is defined in [RFC9827]. | The Sequence Numbers (SNs) Transform Type is defined in [RFC9827]. | |||
This transform describes the properties of sequence numbers of IPsec | This transform describes the properties of sequence numbers of IPsec | |||
packets. There are currently two transform IDs defined for this | packets. There are currently two Transform IDs defined for this | |||
transform type: "32-bit Sequential Numbers" and "Partially | Transform Type: "32-bit Sequential Numbers" and "Partially | |||
Transmitted 64-bit Sequential Numbers" that correspond to non-ESN and | Transmitted 64-bit Sequential Numbers" that correspond to non-ESN and | |||
ESN cases from AH [RFC4302] and ESP [RFC4303] specifications. | ESN cases from AH [RFC4302] and ESP [RFC4303] specifications. | |||
Transform ID "32-bit Sequential Numbers" SHOULD be used by the GCKS | Transform ID "32-bit Sequential Numbers" SHOULD be used by the GCKS | |||
for single-sender multicast Data-Security SAs utilizing protocols ESP | for single-sender multicast Data-Security SAs utilizing protocols ESP | |||
or AH. | or AH. | |||
Since both AH [RFC4302] and ESP [RFC4303] are defined in such a way | Since both AH [RFC4302] and ESP [RFC4303] are defined in such a way | |||
that high-order 32 bits of extended sequence numbers are never | that high-order 32 bits of extended sequence numbers are never | |||
transmitted, it makes using ESN in multicast Data-Security SAs | transmitted, it makes using ESN in multicast Data-Security SAs | |||
problematic because GMs that join the group long after it is created | problematic because GMs that join the group long after it is created | |||
will have to somehow learn the current high-order 32 bits of ESN for | will have to somehow learn the current high-order 32 bits of ESN for | |||
each sender in the group. The algorithm for doing this described in | each sender in the group. The algorithm for doing this described in | |||
AH [RFC4302] and ESP [RFC4303] is resource-consuming and is only | AH [RFC4302] and ESP [RFC4303] is resource-consuming and is only | |||
suitable when a receiver is able to guess the high-order 32 bits | suitable when a receiver is able to guess the high-order 32 bits | |||
close enough to its real value, which is not the case for multicast | close enough to its real value, which is not the case for multicast | |||
SAs. For this reason, the "Partially Transmitted 64-bit Sequential | SAs. For this reason, the "Partially Transmitted 64-bit Sequential | |||
Numbers" transform ID MUST NOT be used for multicast Data-Security | Numbers" Transform ID MUST NOT be used for multicast Data-Security | |||
SAs utilizing protocols ESP or AH. | SAs utilizing protocols ESP or AH. | |||
This document defines a new transform ID for this transform type: | This document defines a new Transform ID for this Transform Type: | |||
32-bit Unspecified Numbers (2). This transform ID defines the | 32-bit Unspecified Numbers (2). This Transform ID defines the | |||
following properties. Sequence numbers are 32 bits in size and are | following properties: | |||
transmitted in the Sequence Number field of AH and ESP packets. The | ||||
value of sequence numbers is not guaranteed to be unique for the | * Sequence numbers are 32 bits in size and are transmitted in the | |||
duration of an SA, thus they are not suitable for replay protection. | Sequence Number field of AH and ESP packets. | |||
This transform ID MUST be used by the GCKS in case of multi-sender | ||||
* The value of sequence numbers is not guaranteed to be unique for | ||||
the duration of an SA, thus they are not suitable for replay | ||||
protection. | ||||
This Transform ID MUST be used by the GCKS in case of multi-sender | ||||
multicast Data-Security SAs utilizing protocols ESP or AH to inform | multicast Data-Security SAs utilizing protocols ESP or AH to inform | |||
the GMs that the replay protection is not expected to be possible. | the GMs that the replay protection is not expected to be possible. | |||
The GCKS MAY also use this transform ID for single-sender multicast | The GCKS MAY also use this Transform ID for single-sender multicast | |||
Data-Security SAs if replay protection is not needed (e.g., it is | Data-Security SAs if replay protection is not needed (e.g., it is | |||
done on the application level). | done on the application level). | |||
4.4.2.2. GSA Attributes | 4.4.2.2. GSA Attributes | |||
GSA attributes are generally used to provide GMs with additional | GSA attributes are generally used to provide GMs with additional | |||
parameters for the GSA policy. Unlike security parameters | parameters for the GSA policy. Unlike security parameters | |||
distributed via transforms, which are expected not to change over | distributed via transforms, which are expected not to change over | |||
time (unless the policy changes), the parameters distributed via GSA | time (unless the policy changes), the parameters distributed via GSA | |||
attributes may depend on the time the provision takes place, on the | attributes may depend on the time the provision takes place, on the | |||
existence of others group SAs, or on other conditions. | existence of others group SAs, or on other conditions. | |||
This document creates a new IKEv2 IANA registry for the types of GSA | This document creates a new IKEv2 IANA registry for the types of GSA | |||
attributes, which has been initially populated as described in | attributes, which has been initially populated as described in | |||
Section 9. In particular, the following attributes have been added: | Section 9. In particular, the following attributes have been added: | |||
+========================+=====+======+============+==============+ | +=====+========================+======+============+==============+ | |||
| GSA Attributes |Value|Format|Multi-Valued| Used in | | |Value| GSA Attributes |Format|Multi-Valued| Used in | | |||
| | | | | Protocol | | | | | | | Protocol | | |||
+========================+=====+======+============+==============+ | +=====+========================+======+============+==============+ | |||
| Reserved |0 | | |0 | Reserved | | | |||
+------------------------+-----+------+------------+--------------+ | +-----+------------------------+------+------------+--------------+ | |||
| GSA_KEY_LIFETIME |1 |TLV |NO | GIKE_UPDATE, | | |1 | GSA_KEY_LIFETIME |TLV |NO | GIKE_UPDATE, | | |||
| | | | | AH, ESP | | | | | | | AH, ESP | | |||
+------------------------+-----+------+------------+--------------+ | +-----+------------------------+------+------------+--------------+ | |||
| GSA_INITIAL_MESSAGE_ID |2 |TLV |NO | GIKE_UPDATE | | |2 | GSA_INITIAL_MESSAGE_ID |TLV |NO | GIKE_UPDATE | | |||
+------------------------+-----+------+------------+--------------+ | +-----+------------------------+------+------------+--------------+ | |||
| GSA_NEXT_SPI |3 |TLV |YES | GIKE_UPDATE, | | |3 | GSA_NEXT_SPI |TLV |YES | GIKE_UPDATE, | | |||
| | | | | AH, ESP | | | | | | | AH, ESP | | |||
+------------------------+-----+------+------------+--------------+ | +-----+------------------------+------+------------+--------------+ | |||
Table 5 | Table 5: GSA Attributes | |||
The attributes follow the format defined in IKEv2 (Section 3.3.5 of | The attributes follow the format defined in IKEv2 (Section 3.3.5 of | |||
[RFC7296]). The "Format" column defines what attribute format is | [RFC7296]). The "Format" column defines what attribute format is | |||
allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | |||
Valued" column defines whether multiple instances of the attribute | Valued" column defines whether multiple instances of the attribute | |||
can appear. The "Used in Protocol" column lists the security | can appear. The "Used in Protocol" column lists the security | |||
protocols, for which the attribute can be used. | protocols, for which the attribute can be used. | |||
4.4.2.2.1. GSA_KEY_LIFETIME Attribute | 4.4.2.2.1. GSA_KEY_LIFETIME Attribute | |||
skipping to change at line 2007 ¶ | skipping to change at line 2004 ¶ | |||
GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | |||
4.4.2.2.2. GSA_INITIAL_MESSAGE_ID Attribute | 4.4.2.2.2. GSA_INITIAL_MESSAGE_ID Attribute | |||
The GSA_INITIAL_MESSAGE_ID attribute (2) defines the initial Message | The GSA_INITIAL_MESSAGE_ID attribute (2) defines the initial Message | |||
ID to be used by the GCKS in the GSA_REKEY messages. The Message ID | ID to be used by the GCKS in the GSA_REKEY messages. The Message ID | |||
is a 4-octet unsigned integer in network byte order. | is a 4-octet unsigned integer in network byte order. | |||
A single attribute of this type is included into the GSA KEK policy | A single attribute of this type is included into the GSA KEK policy | |||
substructure if the initial Message ID of the Rekey SA is non-zero. | substructure if the initial Message ID of the Rekey SA is non-zero. | |||
Note that it is always the case if GMs join the group after some | Note that it is always true if a GM joins the group after some | |||
multicast rekey operations have already taken place, so in these | multicast rekey operations have already taken place in this group. | |||
cases, this attribute will be included into the GSA policy when the | In this case this attribute will be included into the GSA policy when | |||
GM is registered. | the GM is registered. | |||
This attribute MUST NOT be used if inband rekey (via the | This attribute MUST NOT be used if inband rekey (via the | |||
GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | |||
4.4.2.2.3. GSA_NEXT_SPI Attribute | 4.4.2.2.3. GSA_NEXT_SPI Attribute | |||
The optional GSA_NEXT_SPI attribute (3) contains the SPI that the | The optional GSA_NEXT_SPI attribute (3) contains the SPI that the | |||
GCKS reserved for the next Rekey SA or Data-Security SAs replacing | GCKS reserved for the next Rekey SA or Data-Security SAs replacing | |||
the current ones. The length of the attribute data is determined by | the current ones. The length of the attribute data is determined by | |||
the SPI Size field in the GSA policy substructure the attribute | the SPI Size field in the GSA policy substructure the attribute | |||
skipping to change at line 2047 ¶ | skipping to change at line 2044 ¶ | |||
attributes before (e.g., in cases where the GCKS is rebooted), so the | attributes before (e.g., in cases where the GCKS is rebooted), so the | |||
GM must only treat this information as a "best effort" made by the | GM must only treat this information as a "best effort" made by the | |||
GCKS to prepare for future rekeys. | GCKS to prepare for future rekeys. | |||
This attribute MUST NOT be used if inband rekey (via the | This attribute MUST NOT be used if inband rekey (via the | |||
GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | |||
4.4.3. Group-Wide Policy Substructure | 4.4.3. Group-Wide Policy Substructure | |||
Group-specific policy that does not belong to any SA policy can be | Group-specific policy that does not belong to any SA policy can be | |||
distributed to all group members using the Group-wide (GW) policy | distributed to all GMs using the GW policy substructure. | |||
substructure. | ||||
The GW policy substructure is defined as follows: | The GW policy substructure is defined as follows: | |||
1 2 3 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Protocol | RESERVED | Length | | | Protocol | RESERVED | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <GW Policy Attributes> ~ | ~ <GW Policy Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 18: GW Policy Substructure Format | Figure 16: GW Policy Substructure Format | |||
The GW policy substructure fields are defined as follows: | The GW policy substructure fields are defined as follows: | |||
Protocol (1 octet): MUST be zero. This value is reserved (see | Protocol (1 octet): | |||
Section 9) and is never used for any security protocol, so it is | MUST be zero. This value is reserved (see Section 9) and is never | |||
used here to indicate that this substructure contains policy not | used for any security protocol, so it is used here to indicate | |||
related to any specific protocol. | that this substructure contains policy not related to any specific | |||
protocol. | ||||
RESERVED ( octet): MUST be zero on transmission and MUST be ignored | RESERVED (1 octet): | |||
on receipt. | MUST be zero on transmission and MUST be ignored on receipt. | |||
Length (2 octets, unsigned integer): Length of this substructure | Length (2 octets, unsigned integer): | |||
including the header. | Length of this substructure including the header. | |||
GW Policy Attributes (variable): Contains policy attributes | GW Policy Attributes (variable): | |||
associated with no specific SA. The following sections describe | Contains policy attributes associated with no specific SA. The | |||
possible attributes. Any or all attributes may be optional | following sections describe possible attributes. Any or all | |||
depending on the group policy. | attributes may be optional depending on the group policy. | |||
4.4.3.1. GW Policy Attributes | 4.4.3.1. GW Policy Attributes | |||
This document creates a new IKEv2 IANA registry for the types of | This document creates a new IKEv2 IANA registry for the types of | |||
group-wide policy attributes, which has been initially populated as | group-wide policy attributes, which has been initially populated as | |||
described in Section 9. In particular, the following attributes have | described in Section 9. In particular, the following attributes have | |||
been added: | been added: | |||
+======================+=======+========+==============+ | +=======+======================+========+==============+ | |||
| GW Policy Attributes | Value | Format | Multi-Valued | | | Value | GW Policy Attributes | Format | Multi-Valued | | |||
+======================+=======+========+==============+ | +=======+======================+========+==============+ | |||
| Reserved | 0 | | | 0 | Reserved | | | |||
+----------------------+-------+--------+--------------+ | +-------+----------------------+--------+--------------+ | |||
| GWP_ATD | 1 | TV | NO | | | 1 | GWP_ATD | TV | NO | | |||
+----------------------+-------+--------+--------------+ | +-------+----------------------+--------+--------------+ | |||
| GWP_DTD | 2 | TV | NO | | | 2 | GWP_DTD | TV | NO | | |||
+----------------------+-------+--------+--------------+ | +-------+----------------------+--------+--------------+ | |||
| GWP_SENDER_ID_BITS | 3 | TV | NO | | | 3 | GWP_SENDER_ID_BITS | TV | NO | | |||
+----------------------+-------+--------+--------------+ | +-------+----------------------+--------+--------------+ | |||
Table 6 | Table 6: GW Policy Attributes | |||
The attributes follow the format defined in the IKEv2 (Section 3.3.5 | The attributes follow the format defined in the IKEv2 (Section 3.3.5 | |||
of [RFC7296]). The "Format" column defines what attribute format is | of [RFC7296]). The "Format" column defines what attribute format is | |||
allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | |||
Valued" column defines whether multiple instances of the attribute | Valued" column defines whether multiple instances of the attribute | |||
can appear. | can appear. | |||
4.4.3.1.1. GWP_ATD and GWP_DTD Attributes | 4.4.3.1.1. GWP_ATD and GWP_DTD Attributes | |||
Section 4.2.1 of [RFC5374] specifies a key rollover method that | Section 4.2.1 of [RFC5374] specifies a key rollover method that | |||
requires two values be provided to group members: Activation Time | requires two values be provided to GMs: Activation Time Delay (ATD) | |||
Delay (ATD) and Deactivation Time Delay (DTD). | and Deactivation Time Delay (DTD). | |||
The GWP_ATD attribute (1) allows a GCKS to set the Activation Time | The GWP_ATD attribute (1) allows a GCKS to set the Activation Time | |||
Delay for Data-Security SAs of the group. The ATD defines how long | Delay for Data-Security SAs of the group. The ATD defines how long | |||
active members of the group (those who sends traffic) should wait | active members of the group (those who sends traffic) should wait | |||
after receiving new SAs before sending traffic over them. Note that | after receiving new SAs before sending traffic over them. Note that | |||
to achieve smooth rollover, passive members of the group should | to achieve smooth rollover, passive members of the group should | |||
activate the SAs immediately once they receive them. | activate the SAs immediately once they receive them. | |||
The GWP_DTD attribute (2) allows the GCKS to set the DTD for | The GWP_DTD attribute (2) allows the GCKS to set the DTD for | |||
previously distributed SAs. The DTD defines how long after receiving | previously distributed SAs. The DTD defines how long after receiving | |||
a request to delete Data-Security SAs passive group members should | a request to delete Data-Security SAs passive GMs should wait before | |||
wait before actually deleting them. Note that active members of the | actually deleting them. Note that active members of the group should | |||
group should stop sending traffic over these old SAs once new | stop sending traffic over these old SAs once new replacement SAs are | |||
replacement SAs are activated (after time specified in the GWP_ATD | activated (after time specified in the GWP_ATD attribute). | |||
attribute). | ||||
The GWP_ATD and GWP_DTD attributes contain a 16-bit unsigned integer | The GWP_ATD and GWP_DTD attributes contain a 16-bit unsigned integer | |||
in network byte order, specifying the delay in seconds. These | in network byte order, specifying the delay in seconds. These | |||
attributes are OPTIONAL. If one of them or both are not sent by the | attributes are OPTIONAL. If one of them or both are not sent by the | |||
GCKS, then no corresponding delay should be employed. | GCKS, then no corresponding delay should be employed. | |||
4.4.3.1.2. GWP_SENDER_ID_BITS Attribute | 4.4.3.1.2. GWP_SENDER_ID_BITS Attribute | |||
The GWP_SENDER_ID_BITS attribute (3) declares how many bits of the | The GWP_SENDER_ID_BITS attribute (3) declares how many bits of the | |||
cipher nonce are taken to represent a Sender-ID value. The bits are | cipher nonce are taken to represent a Sender-ID value. The bits are | |||
skipping to change at line 2159 ¶ | skipping to change at line 2155 ¶ | |||
4.5. Key Download Payload | 4.5. Key Download Payload | |||
The Key Download (KD) payload contains the group keys for the SAs | The Key Download (KD) payload contains the group keys for the SAs | |||
specified in the GSA payload. The Payload Type for the Key Download | specified in the GSA payload. The Payload Type for the Key Download | |||
payload is fifty-two (52). | payload is fifty-two (52). | |||
1 2 3 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Length | | | Next Payload |C| RESERVED | Payload Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Key Bags> ~ | ~ <Key Bags> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 19: Key Download Payload Format | Figure 17: Key Download Payload Format | |||
The Key Download payload fields are defined as follows: | The Key Download payload fields are defined as follows: | |||
Next Payload, C, RESERVED, and Length fields: | Next Payload, C, RESERVED, and Payload Length fields: | |||
Comprise the IKEv2 Generic Payload Header and are defined in | Comprise the IKEv2 generic payload header and are defined in | |||
Section 3.2 of [RFC7296]. | Section 3.2 of [RFC7296]. | |||
Key Bags (variable): | Key Bags (variable): | |||
A set of Key Bag substructures. | A set of key bag substructures. | |||
4.5.1. Key Bags | 4.5.1. Key Bags | |||
Keys are distributed in substructures called key bags. Each key bag | Keys are distributed in substructures called key bags. Each key bag | |||
contains one or more keys that are logically related -- these are | contains one or more keys that are logically related -- these are | |||
keys for either a single SA (Data-Security SA or Rekey SA) or a | keys for either a single SA (Data-Security SA or Rekey SA) or a | |||
single group member (in the latter case, besides keys, the key bag | single GM (in the latter case, besides keys, the key bag may also | |||
may also contain security parameters for this group member). | contain security parameters for this GM). | |||
For this reason, two types of key bags are defined: Group Key Bag and | For this reason, two types of key bags are defined: Group Key Bag and | |||
Member Key Bag. The type is unambiguously determined by the first | Member Key Bag. The type is unambiguously determined by the first | |||
byte of the key bag substructure. For a Member Key Bag, it is zero, | byte of the key bag substructure; for a Member Key Bag, it is zero | |||
and for Group Key Bag, it represents the protocol number, which along | and for a Group Key Bag, it is a protocol number, which is always | |||
with the following SPI, identify the SA associated with the keys in | non-zero. For a Group Key Bag, the protocol number along with the | |||
the bag. | SPI (see Figure 20) identify the SA that is associated with the keys | |||
in this bag. | ||||
4.5.2. Group Key Bag Substructure | 4.5.2. Group Key Bag Substructure | |||
The Group Key Bag substructure contains SA key information. This key | The Group Key Bag substructure contains SA key information. This key | |||
information is associated with some group SAs: either with Data- | information is associated with some group SAs: either with Data- | |||
Security SAs or with a group Rekey SA. | Security SAs or with a group Rekey SA. | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 2212 ¶ | skipping to change at line 2209 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ SPI ~ | ~ SPI ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Group Key Bag Attributes> ~ | ~ <Group Key Bag Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 20: Group Key Bag Substructure Format | Figure 18: Group Key Bag Substructure Format | |||
Protocol (1 octet): | Protocol (1 octet): | |||
Identifies the security protocol for this key bag. The values are | Identifies the security protocol for this key bag. The values are | |||
defined in the "IKEv2 Security Protocol Identifiers" registry in | defined in the "IKEv2 Security Protocol Identifiers" registry in | |||
[IKEV2-IANA]. The valid values for this field are: 6 | [IKEV2-IANA]. The valid values for this field are: 6 | |||
(GIKE_UPDATE) for KEK Key packet and 2 (AH) or 3 (ESP) for TEK key | (GIKE_UPDATE) for KEK Key packet and 2 (AH) or 3 (ESP) for TEK key | |||
bag. | bag. | |||
SPI Size (1 octet): | SPI Size (1 octet): | |||
Size of the SPI for the corresponding SA. SPI size depends on the | Size of the SPI for the corresponding SA. SPI size depends on the | |||
security protocol. It is 16 octets for GIKE_UPDATE and 4 octets | security protocol. It is 16 octets for GIKE_UPDATE and 4 octets | |||
for AH and ESP. | for AH and ESP. | |||
Length (2 octets, unsigned integer): | Length (2 octets, unsigned integer): | |||
Length of this substructure including the header. | Length of this substructure including the header. | |||
SPI (variable): | SPI (variable): | |||
Security Parameter Index for the corresponding SA. The size of | Security Parameter Index for the corresponding SA. The size of | |||
this field is determined by the SPI Size field. In the case of | this field is determined by the SPI Size field. In the case of | |||
GIKE_UPDATE, the SPI is the IKEv2 Header SPI pair where the first | GIKE_UPDATE, the SPI is the IKEv2 header SPI pair where the first | |||
8 octets become the "IKE SA Initiator's SPI" field in the G-IKEv2 | 8 octets become the "IKE SA Initiator's SPI" field in the G-IKEv2 | |||
rekey message IKEv2 HDR, and the second 8 octets become the "IKE | rekey message IKEv2 HDR, and the second 8 octets become the "IKE | |||
SA Responder's SPI" in the same HDR. | SA Responder's SPI" in the same HDR. | |||
Group Key Bag Attributes (variable): | Group Key Bag Attributes (variable): | |||
Contains Key information for the corresponding SA. | Contains key information for the corresponding SA. | |||
This document creates a new IKEv2 IANA registry for the types of | This document creates a new IKEv2 IANA registry for the types of | |||
Group Key Bag attributes, which has been initially populated as | Group Key Bag attributes, which has been initially populated as | |||
described in Section 9. In particular, the following attributes have | described in Section 9. In particular, the following attributes have | |||
been added: | been added: | |||
+===============+=======+========+==============+=============+ | +=======+===============+========+==============+=============+ | |||
| Group Key Bag | Value | Format | Multi-Valued | Used in | | | Value | Group Key Bag | Format | Multi-Valued | Used in | | |||
| Attributes | | | | Protocol | | | | Attributes | | | Protocol | | |||
+===============+=======+========+==============+=============+ | +=======+===============+========+==============+=============+ | |||
| Reserved | 0 | | | 0 | Reserved | | | |||
+---------------+-------+--------+--------------+-------------+ | +-------+---------------+--------+--------------+-------------+ | |||
| SA_KEY | 1 | TLV | YES* | GIKE_UPDATE | | | 1 | SA_KEY | TLV | YES* | GIKE_UPDATE | | |||
| | | | NO | AH, ESP | | | | | | NO | AH, ESP | | |||
+---------------+-------+--------+--------------+-------------+ | +-------+---------------+--------+--------------+-------------+ | |||
Table 7 | Table 7: Group Key Bag Attributes | |||
Notes: | Notes: | |||
(*): Multiple SA_KEY attributes may only appear for the GIKE_UPDATE | (*): Multiple SA_KEY attributes may only appear for the GIKE_UPDATE | |||
protocol in the GSA_REKEY exchange if the GCKS uses the group key | protocol in the GSA_REKEY pseudo-exchange if the GCKS uses the | |||
management method that allows excluding GMs from the group (like | group key management method that allows excluding GMs from the | |||
LKH). | group (like LKH). | |||
The attributes follow the format defined in IKEv2 (Section 3.3.5 of | The attributes follow the format defined in IKEv2 (Section 3.3.5 of | |||
[RFC7296]). The "Format" column defines what attribute format is | [RFC7296]). The "Format" column defines what attribute format is | |||
allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | |||
Valued" column defines whether multiple instances of the attribute | Valued" column defines whether multiple instances of the attribute | |||
can appear. The "Used in Protocol" column lists the security | can appear. The "Used in Protocol" column lists the security | |||
protocols, for which the attribute can be used. | protocols, for which the attribute can be used. | |||
4.5.2.1. SA_KEY Attribute | 4.5.2.1. SA_KEY Attribute | |||
skipping to change at line 2287 ¶ | skipping to change at line 2284 ¶ | |||
to the total size of the keys needed to be taken from this keying | to the total size of the keys needed to be taken from this keying | |||
material (see Section 3.4) for the corresponding SA. | material (see Section 3.4) for the corresponding SA. | |||
If the key bag is for a Data-Security SA (AH or ESP protocols), then | If the key bag is for a Data-Security SA (AH or ESP protocols), then | |||
exactly one SA_KEY attribute MUST be present with both Key ID and KWK | exactly one SA_KEY attribute MUST be present with both Key ID and KWK | |||
ID fields set to zero. | ID fields set to zero. | |||
If the key bag is for a Rekey SA (GIKE_UPDATE protocol), then exactly | If the key bag is for a Rekey SA (GIKE_UPDATE protocol), then exactly | |||
one SA_KEY attribute MUST be present in the GSA_AUTH, | one SA_KEY attribute MUST be present in the GSA_AUTH, | |||
GSA_REGISTRATION, and GSA_INBAND_REKEY exchanges. In the GSA_REKEY | GSA_REGISTRATION, and GSA_INBAND_REKEY exchanges. In the GSA_REKEY | |||
exchange, at least one SA_KEY attribute MUST be present, and more | pseudo-exchange, at least one SA_KEY attribute MUST be present, and | |||
attributes MAY be present (depending on the key management method | more attributes MAY be present (depending on the key management | |||
employed by the GCKS). | method employed by the GCKS). | |||
4.5.3. Member Key Bag Substructure | 4.5.3. Member Key Bag Substructure | |||
The Member Key Bag substructure contains keys and other parameters | The Member Key Bag substructure contains keys and other parameters | |||
that are specific for a member of the group and are not associated | that are specific for a member of the group and are not associated | |||
with any particular group SA. | with any particular group SA. | |||
1 2 3 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Protocol | RESERVED | Length | | | Protocol | RESERVED | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Member Key Bag Attributes> ~ | ~ <Member Key Bag Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 21: Member Key Bag Substructure Format | Figure 19: Member Key Bag Substructure Format | |||
The Member Key Bag substructure fields are defined as follows: | The Member Key Bag substructure fields are defined as follows: | |||
Protocol (1 octet): | Protocol (1 octet): | |||
MUST be zero. This value is reserved (see Section 9) and is never | MUST be zero. This value is reserved (see Section 9) and is never | |||
used for any security protocol, so it is used here to indicate | used for any security protocol, so it is used here to indicate | |||
that this key bag is not associated with any particular SA. | that this key bag is not associated with any particular SA. | |||
RESERVED ( octet): | RESERVED ( octet): | |||
MUST be zero on transmission and MUST be ignored on receipt. | MUST be zero on transmission and MUST be ignored on receipt. | |||
Length (2 octets, unsigned integer): | Length (2 octets, unsigned integer): | |||
Length of this substructure including the header. | Length of this substructure including the header. | |||
Member Key Bag Attributes (variable): | Member Key Bag Attributes (variable): | |||
Contains Key information and other parameters exclusively for a | Contains key information and other parameters exclusively for a | |||
particular member of the group. | particular member of the group. | |||
The Member Key Bag substructure contains sensitive information for a | The Member Key Bag substructure contains sensitive information for a | |||
single GM. For this reason, it MUST NOT be sent in GSA_REKEY | single GM. For this reason, it MUST NOT be sent in GSA_REKEY | |||
messages and MUST only be sent via unicast SA at the time the GM | messages and MUST only be sent via unicast SA at the time the GM | |||
registers to the group (in either GSA_AUTH or GSA_REGISTRATION | registers to the group (in either GSA_AUTH or GSA_REGISTRATION | |||
exchanges). | exchanges). | |||
This document creates a new IKEv2 IANA registry for the types of | This document creates a new IKEv2 IANA registry for the types of | |||
Member Key Bag attributes, which has been initially populated as | Member Key Bag attributes, which has been initially populated as | |||
described in Section 9. In particular, the following attributes have | described in Section 9. In particular, the following attributes have | |||
been added: | been added: | |||
+===========================+=======+========+==============+ | +=======+===========================+========+==============+ | |||
| Member Key Bag Attributes | Value | Format | Multi-Valued | | | Value | Member Key Bag Attributes | Format | Multi-Valued | | |||
+===========================+=======+========+==============+ | +=======+===========================+========+==============+ | |||
| Reserved | 0 | | | 0 | Reserved | | |||
+---------------------------+-------+--------+--------------+ | +-------+---------------------------+--------+--------------+ | |||
| WRAP_KEY | 1 | TLV | YES | | | 1 | WRAP_KEY | TLV | YES | | |||
+---------------------------+-------+--------+--------------+ | +-------+---------------------------+--------+--------------+ | |||
| AUTH_KEY | 2 | TLV | NO | | | 2 | AUTH_KEY | TLV | NO | | |||
+---------------------------+-------+--------+--------------+ | +-------+---------------------------+--------+--------------+ | |||
| GM_SENDER_ID | 3 | TLV | YES | | | 3 | GM_SENDER_ID | TLV | YES | | |||
+---------------------------+-------+--------+--------------+ | +-------+---------------------------+--------+--------------+ | |||
Table 8 | Table 8: Member Key Bag Attributes | |||
The attributes follow the format defined in the IKEv2 (Section 3.3.5 | The attributes follow the format defined in the IKEv2 (Section 3.3.5 | |||
of [RFC7296]). The "Format" column defines what attribute format is | of [RFC7296]). The "Format" column defines what attribute format is | |||
allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | allowed: Type/Length/Value (TLV) or Type/Value (TV). The "Multi- | |||
Valued" column defines whether multiple instances of the attribute | Valued" column defines whether multiple instances of the attribute | |||
can appear. | can appear. | |||
4.5.3.1. WRAP_KEY Attribute | 4.5.3.1. WRAP_KEY Attribute | |||
The WRAP_KEY attribute (1) contains a key that is used to encrypt | The WRAP_KEY attribute (1) contains a key that is used to encrypt | |||
skipping to change at line 2394 ¶ | skipping to change at line 2391 ¶ | |||
public key used for digital signature authentication. The public | public key used for digital signature authentication. The public | |||
key MUST be represented as DER-encoded ASN.1 object | key MUST be represented as DER-encoded ASN.1 object | |||
SubjectPublicKeyInfo, defined in Section 4.1.2.7 of [RFC5280]. | SubjectPublicKeyInfo, defined in Section 4.1.2.7 of [RFC5280]. | |||
The algorithm field inside the SubjectPublicKeyInfo object MUST | The algorithm field inside the SubjectPublicKeyInfo object MUST | |||
match the content of the Signature Algorithm Identifier attribute | match the content of the Signature Algorithm Identifier attribute | |||
in the Group Controller Authentication Method transform. When the | in the Group Controller Authentication Method transform. When the | |||
id-RSASSA-PSS object identifier appears in the algorithm field of | id-RSASSA-PSS object identifier appears in the algorithm field of | |||
the SubjectPublicKeyInfo object, then the parameters field MUST | the SubjectPublicKeyInfo object, then the parameters field MUST | |||
include the RSASSA-PSS-params structure. | include the RSASSA-PSS-params structure. | |||
* In case of implicit authentication, the AUTH_KEY Attribute is not | ||||
used and MUST be absent (see Section 2.4.1). | ||||
Multiple instances of the AUTH_KEY attributes MUST NOT be sent. | Multiple instances of the AUTH_KEY attributes MUST NOT be sent. | |||
4.5.3.3. GM_SENDER_ID Attribute | 4.5.3.3. GM_SENDER_ID Attribute | |||
The GM_SENDER_ID attribute (3) is used to download one or more | The GM_SENDER_ID attribute (3) is used to download one or more | |||
Sender-ID values for the exclusive use of a group member. One or | Sender-ID values for the exclusive use of a GM. One or more of these | |||
more of these attributes MUST be sent by the GCKS if the GM informed | attributes MUST be sent by the GCKS if the GM informed the GCKS that | |||
the GCKS that it would be a sender (by including the GROUP_SENDER | it would be a sender (by including the GROUP_SENDER notification to | |||
notification to the request) and if at least one of the Data-Security | the request) and if at least one of the Data-Security SAs included in | |||
SAs included in the GSA payload uses a counter-based mode of | the GSA payload uses a counter-based mode of encryption. | |||
encryption. | ||||
If the GMs have requested multiple Sender-ID values in the | If the GMs have requested multiple Sender-ID values in the | |||
GROUP_SENDER notification, then the GCKS SHOULD provide it with the | GROUP_SENDER notification, then the GCKS SHOULD provide it with the | |||
requested number of Sender-IDs by sending multiple instances of the | requested number of Sender-IDs by sending multiple instances of the | |||
GM_SENDER_ID attribute. The GCKS MAY send fewer values than | GM_SENDER_ID attribute. The GCKS MAY send fewer values than | |||
requested by the GM (e.g., if it is running out of Sender-IDs), but | requested by the GM (e.g., if it is running out of Sender-IDs), but | |||
it MUST NOT send more than requested. | it MUST NOT send more than requested. | |||
This attribute MUST NOT appear in the rekey operations (in the | This attribute MUST NOT appear in the rekey operations (in the | |||
GSA_REKEY or GSA_INBAND_REKEY exchanges). | GSA_REKEY pseudo-exchange or in the GSA_INBAND_REKEY exchange). | |||
4.5.4. Key Wrapping | 4.5.4. Key Wrapping | |||
Symmetric keys in G-IKEv2 are never sent in clear inside G-IKEv2 | Symmetric keys in G-IKEv2 are never sent in clear inside G-IKEv2 | |||
messages. They are always protected with other symmetric keys. This | messages. They are always protected with other symmetric keys. This | |||
protection is called key wrapping. Algorithms used for key wrapping | protection is called key wrapping. Algorithms used for key wrapping | |||
are usually based on generic encryption algorithms, but their mode of | are usually based on generic encryption algorithms, but their mode of | |||
operation is optimized for protecting short high-entropy data with | operation is optimized for protecting short high-entropy data with | |||
minimal additional overhead. While key wrap algorithms can be | minimal additional overhead. While key wrap algorithms can be | |||
generic in general, they are often tied to the underlying encryption | generic in general, they are often tied to the underlying encryption | |||
skipping to change at line 2438 ¶ | skipping to change at line 2437 ¶ | |||
using Chacha20. | using Chacha20. | |||
In G-IKEv2, the key wrap algorithm MUST be negotiated in the | In G-IKEv2, the key wrap algorithm MUST be negotiated in the | |||
IKE_SA_INIT exchange so that the GCKS is able to send encrypted keys | IKE_SA_INIT exchange so that the GCKS is able to send encrypted keys | |||
to the GM in the GSA_AUTH exchange. In addition, if the GCKS plans | to the GM in the GSA_AUTH exchange. In addition, if the GCKS plans | |||
to use the multicast Rekey SA for group rekey, then it MUST specify | to use the multicast Rekey SA for group rekey, then it MUST specify | |||
the key wrap algorithm in the GSA payload. Note that key wrap | the key wrap algorithm in the GSA payload. Note that key wrap | |||
algorithms for these cases MAY be different. For the unicast SA, the | algorithms for these cases MAY be different. For the unicast SA, the | |||
key wrap algorithm is negotiated between the GM and the GCKS, while | key wrap algorithm is negotiated between the GM and the GCKS, while | |||
for the multicast Rekey SA, the key wrap algorithm is provided by the | for the multicast Rekey SA, the key wrap algorithm is provided by the | |||
GCKS to the group members as part of the group policy. If an SAg | GCKS to the GMs as part of the group policy. If an SAg payload is | |||
payload is included in the GSA_AUTH request, then it MUST indicate | included in the GSA_AUTH request, then it MUST indicate which key | |||
which key wrap algorithms are supported by the GM. In all these | wrap algorithms are supported by the GM. In all these cases, the key | |||
cases, the key wrap algorithm is specified in a Key Wrap Algorithm | wrap algorithm is specified in a Key Wrap Algorithm transform (see | |||
transform (see Section 4.4.2.1.2). | Section 4.4.2.1.2). | |||
The format of the wrapped key is shown in Figure 22. | The format of the wrapped key is shown in Figure 20. | |||
1 2 3 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Key ID | | | Key ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| KWK ID | | | KWK ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ Encrypted Key ~ | ~ Encrypted Key ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 22: Wrapped Key Format | Figure 20: Wrapped Key Format | |||
The Wrapped Key fields are defined as follows: | The Wrapped Key fields are defined as follows: | |||
Key ID (4 octets): | Key ID (4 octets): | |||
ID of the encrypted key. The value zero means that the encrypted | ID of the encrypted key. The value zero means that the encrypted | |||
key contains SA keys (in the form of keying material; see | key contains SA keys (in the form of keying material; see | |||
Section 3.4). Otherwise, it contains some intermediate key. | Section 3.4). Otherwise, it contains some intermediate key. | |||
KWK ID (4 octets): | KWK ID (4 octets): | |||
ID of the key that was used to encrypt the key with a specified | ID of the key that was used to encrypt the key with a specified | |||
skipping to change at line 2492 ¶ | skipping to change at line 2491 ¶ | |||
Security and Rekey SAs. The interpretation of the Protocol field in | Security and Rekey SAs. The interpretation of the Protocol field in | |||
the Delete payload is extended so that zero protocol indicates | the Delete payload is extended so that zero protocol indicates | |||
deletion of whole Group SA (i.e., all Data-Security SAs and the Rekey | deletion of whole Group SA (i.e., all Data-Security SAs and the Rekey | |||
SA). See Section 2.4.3 for detail. | SA). See Section 2.4.3 for detail. | |||
4.7. Notify Payload | 4.7. Notify Payload | |||
G-IKEv2 uses the same Notify payload as specified in Section 3.10 of | G-IKEv2 uses the same Notify payload as specified in Section 3.10 of | |||
[RFC7296]. | [RFC7296]. | |||
There are additional Notify Message types introduced by G-IKEv2 to | There are additional Notify message types introduced by G-IKEv2 to | |||
communicate error conditions and status (see Section 9). | communicate error conditions and status (see Section 9). | |||
4.7.1. INVALID_GROUP_ID Notification | 4.7.1. INVALID_GROUP_ID Notification | |||
INVALID_GROUP_ID (45) is a new error type notification that indicates | INVALID_GROUP_ID (45) is a new error type notification that indicates | |||
that the group ID sent during the registration process is invalid. | that the IDg payload sent during the registration process denotes an | |||
The Protocol ID and SPI Size fields in the Notify payload MUST be | invalid group. The Protocol ID and SPI Size fields in the Notify | |||
zero. There is no data associated with this notification and the | payload MUST be zero. There is no data associated with this | |||
content of the Notification Data field MUST be ignored on receipt. | notification and the content of the Notification Data field MUST be | |||
ignored on receipt. | ||||
4.7.2. AUTHORIZATION_FAILED Notification | 4.7.2. AUTHORIZATION_FAILED Notification | |||
AUTHORIZATION_FAILED (46) is a new error type notification that is | AUTHORIZATION_FAILED (46) is a new error type notification that is | |||
sent in the response to a GSA_AUTH or GSA_REGISTRATION message when | sent in the response to a GSA_AUTH or GSA_REGISTRATION message when | |||
authorization failed. The Protocol ID and SPI Size fields in the | authorization failed. The Protocol ID and SPI Size fields in the | |||
Notify payload MUST be zero. There is no data associated with this | Notify payload MUST be zero. There is no data associated with this | |||
notification and the content of the Notification Data field MUST be | notification and the content of the Notification Data field MUST be | |||
ignored on receipt. | ignored on receipt. | |||
skipping to change at line 2558 ¶ | skipping to change at line 2558 ¶ | |||
The following notations are used: | The following notations are used: | |||
S A single attribute of this type MUST be present. | S A single attribute of this type MUST be present. | |||
M Multiple attributes of this type MAY be present. | M Multiple attributes of this type MAY be present. | |||
[] Attribute is OPTIONAL. | [] Attribute is OPTIONAL. | |||
- Attribute MUST NOT be present. | - Attribute MUST NOT be present. | |||
Note that the restrictions are defined per a substructure | Note that the restrictions are defined per a substructure for which | |||
corresponding attributes are defined for and not per whole G-IKEv2 | corresponding attributes are defined and not per a whole G-IKEv2 | |||
message. | message. | |||
+========================+==================+===========+=======+ | +========================+==================+===========+=======+ | |||
| Attributes | GSA_AUTH | GSA_REKEY | Notes | | | Attributes | GSA_AUTH | GSA_REKEY | Notes | | |||
| | GSA_REGISTRATION | | | | | | GSA_REGISTRATION | | | | |||
+========================+==================+===========+=======+ | +========================+==================+===========+=======+ | |||
| GSA Attributes (Section 4.4.2.2) | | | GSA Attributes (Section 4.4.2.2) | | |||
+========================+==================+===========+=======+ | +========================+==================+===========+=======+ | |||
| GSA_KEY_LIFETIME | S | S | | | | GSA_KEY_LIFETIME | S | S | | | |||
+------------------------+------------------+-----------+-------+ | +------------------------+------------------+-----------+-------+ | |||
skipping to change at line 2607 ¶ | skipping to change at line 2607 ¶ | |||
(1): The GWP_SENDER_ID_BITS attribute MUST be present if the GCKS | (1): The GWP_SENDER_ID_BITS attribute MUST be present if the GCKS | |||
policy includes at least one cipher in counter mode of | policy includes at least one cipher in counter mode of | |||
operation and if the GM included the GROUP_SENDER notify into | operation and if the GM included the GROUP_SENDER notify into | |||
the registration request. Otherwise, it MUST NOT be present. | the registration request. Otherwise, it MUST NOT be present. | |||
At least one GM_SENDER_ID attribute MUST be present in the | At least one GM_SENDER_ID attribute MUST be present in the | |||
former case (and more MAY be present if the GM requested more | former case (and more MAY be present if the GM requested more | |||
Sender-IDs), and it MUST NOT be present in the latter case. | Sender-IDs), and it MUST NOT be present in the latter case. | |||
(2): For a Data-Security SA, exactly one SA_KEY attribute MUST be | (2): For a Data-Security SA, exactly one SA_KEY attribute MUST be | |||
present. For a Rekey SA, one SA_KEY attribute MUST be present | present. For a Rekey SA, at least one SA_KEY attribute MUST be | |||
in all cases and more these attributes MAY be present in a | present in all cases and more of these attributes MAY be | |||
GSA_REKEY exchange. | present in a GSA_REKEY pseudo-exchange. | |||
(3): The WRAP_KEY attribute MUST be present if the GCKS employs a | (3): The WRAP_KEY attribute MUST be present if the GCKS employs a | |||
key management method that relies on a key tree (like LKH). | key management method that relies on a key tree (like LKH). | |||
(4): The AUTH_KEY attribute MUST be present in the GSA_AUTH and | (4): The AUTH_KEY attribute MUST be present in the GSA_AUTH and | |||
GSA_REGISTRATION exchanges if the GCKS employs an | GSA_REGISTRATION exchanges if the GCKS employs an | |||
authentication method of rekey operations based on digital | authentication method of rekey operations based on digital | |||
signatures and MUST NOT be present if implicit authentication | signatures and MUST NOT be present if implicit authentication | |||
is employed. The AUTH_KEY attribute MUST be present in the | is employed. The AUTH_KEY attribute MUST be present in the | |||
GSA_REKEY exchange if the GCKS employs an authentication method | GSA_REKEY pseudo-exchange if the GCKS employs an authentication | |||
based on digital signatures and wants to change the public key | method based on digital signatures and wants to change the | |||
for the following multicast rekey operations. | public key for the following multicast rekey operations. | |||
+========================+================+==================+=====+ | +========================+================+==================+=====+ | |||
| Attributes |GSA_AUTH | GSA_INBAND_REKEY |Notes| | | Attributes |GSA_AUTH | GSA_INBAND_REKEY |Notes| | |||
| |GSA_REGISTRATION| | | | | |GSA_REGISTRATION| | | | |||
+========================+================+==================+=====+ | +========================+================+==================+=====+ | |||
| GSA Attributes (Section 4.4.2.2) | | | GSA Attributes (Section 4.4.2.2) | | |||
+========================+================+==================+=====+ | +========================+================+==================+=====+ | |||
| GSA_KEY_LIFETIME |[S] | [S] | | | | GSA_KEY_LIFETIME |[S] | [S] | | | |||
+------------------------+----------------+------------------+-----+ | +------------------------+----------------+------------------+-----+ | |||
| GSA_INITIAL_MESSAGE_ID |- | - | | | | GSA_INITIAL_MESSAGE_ID |- | - | | | |||
skipping to change at line 2742 ¶ | skipping to change at line 2742 ¶ | |||
7. GDOI Protocol Extensions | 7. GDOI Protocol Extensions | |||
Few extensions were defined for the GDOI protocol [RFC6407], like | Few extensions were defined for the GDOI protocol [RFC6407], like | |||
GDOI Support for IEC 62351 Security Services [RFC8052] or the GDOI | GDOI Support for IEC 62351 Security Services [RFC8052] or the GDOI | |||
GROUPKEY-PUSH Acknowledgement Message [RFC8263]. It is expected that | GROUPKEY-PUSH Acknowledgement Message [RFC8263]. It is expected that | |||
these extensions will be redefined for G-IKEv2 in separate documents, | these extensions will be redefined for G-IKEv2 in separate documents, | |||
if needed. | if needed. | |||
8. Security Considerations | 8. Security Considerations | |||
When an entity joins the group and becomes a group member, it has to | When an entity joins the group and becomes a GM, it has to trust that | |||
trust that the GCKS only authorized entities that are admitted to the | the GCKS only authorized entities that are admitted to the group and | |||
group and has to trust that other group members will not leak the | has to trust that other GMs will not leak the information shared | |||
information shared within the group. | within the group. | |||
8.1. GSA Registration and Secure Channel | 8.1. GSA Registration and Secure Channel | |||
G-IKEv2 registration exchange uses IKEv2 IKE_SA_INIT protocols, | G-IKEv2 registration exchange uses IKEv2 IKE_SA_INIT protocols, | |||
inheriting all the security considerations documented in Section 5 of | inheriting all the security considerations documented in Section 5 of | |||
[RFC7296], including authentication, confidentiality, protection | [RFC7296], including authentication, confidentiality, on-path attack | |||
against man-in-the-middle attacks, protection against replay/ | protection, protection against replay/reflection attacks, and denial- | |||
reflection attacks, and denial-of-service protection. The GSA_AUTH | of-service protection. The GSA_AUTH and GSA_REGISTRATION exchanges | |||
and GSA_REGISTRATION exchanges also take advantage of those | also take advantage of those protections. In addition, G-IKEv2 | |||
protections. In addition, G-IKEv2 brings in the capability to | brings in the capability to authorize a particular GM regardless of | |||
authorize a particular group member regardless of whether they have | whether they have the IKEv2 credentials. | |||
the IKEv2 credentials. | ||||
8.2. GSA Maintenance Channel | 8.2. GSA Maintenance Channel | |||
The GSA maintenance channel is cryptographically and integrity | The GSA maintenance channel is cryptographically and integrity | |||
protected using the cryptographic algorithm and key negotiated in the | protected using the cryptographic algorithm and key negotiated in the | |||
GSA member registration exchange. | GSA member registration exchange. | |||
8.2.1. Authentication/Authorization | 8.2.1. Authentication/Authorization | |||
The authentication key is distributed during the GM registration and | The authentication key is distributed during the GM registration and | |||
the receiver of the rekey message uses that key to verify the message | the receiver of the rekey message uses that key to verify the message | |||
came from the authorized GCKS. An implicit authentication can also | came from the authorized GCKS. An implicit authentication can also | |||
be used, in which case, the ability of the GM to decrypt and to | be used, in which case, the ability of the GM to decrypt and to | |||
verify ICV of the received message proved that a sender of the | verify ICV of incoming messages is used as a proof that the sender | |||
message is a member of the group. However, implicit authentication | knows group keys and therefore is a member of the group. However, | |||
doesn't provide source origin authentication, so the GM cannot be | implicit authentication doesn't provide source origin authentication, | |||
sure that the message came from the GCKS. For this reason, using | so the GM cannot be sure that the message came from the GCKS. For | |||
implicit authentication is NOT RECOMMENDED unless used with a small | this reason, using implicit authentication is NOT RECOMMENDED unless | |||
group of trusted parties. | used with a small group of trusted parties. | |||
8.2.2. Confidentiality | 8.2.2. Confidentiality | |||
Confidentiality is provided by distributing a confidentiality key as | Confidentiality is provided by distributing a confidentiality key as | |||
part of the GSA member registration exchange. | part of the GSA member registration exchange. | |||
8.2.3. Man-in-the-Middle Attack Protection | 8.2.3. On-Path Attack Protection | |||
The GSA maintenance channel is integrity protected by using a digital | The GSA maintenance channel is integrity protected by using a digital | |||
signature. | signature. | |||
8.2.4. Replay/Reflection Attack Protection | 8.2.4. Replay/Reflection Attack Protection | |||
The GSA_REKEY message includes a monotonically increasing sequence | The GSA_REKEY message includes a monotonically increasing sequence | |||
number to protect against replay and reflection attacks. A group | number to protect against replay and reflection attacks. A GM will | |||
member will recognize a replayed message by comparing the Message ID | recognize a replayed message by comparing the Message ID number to | |||
number to that of the last received rekey message. Any rekey message | that of the last received rekey message. Any rekey message | |||
containing a Message ID number less than or equal to the last | containing a Message ID number less than or equal to the last | |||
received value MUST be discarded. Implementations should keep a | received value MUST be discarded. Implementations should keep a | |||
record of recently received GSA rekey messages for this comparison. | record of recently received GSA rekey messages for this comparison. | |||
The strict role separation between the GCKS and the GMs and, as a | The strict role separation between the GCKS and the GMs and, as a | |||
consequence, the limitation for a Rekey SA to be outbound/inbound | consequence, the limitation for a Rekey SA to be outbound/inbound | |||
only, helps to prevent reflection attack. | only, helps to prevent reflection attack. | |||
9. IANA Considerations | 9. IANA Considerations | |||
9.1. New Registries | 9.1. New Registries | |||
Per this document, new registries have been created for G-IKEv2 under | Per this document, new registries have been created for G-IKEv2 under | |||
the "Internet Key Exchange Version 2 (IKEv2) Parameters" registry | the "Internet Key Exchange Version 2 (IKEv2) Parameters" registry | |||
group [IKEV2-IANA]. The terms Reserved, Expert Review, and Private | group [IKEV2-IANA]. The terms Reserved, Expert Review, and Private | |||
Use are as defined in [RFC8126]. | Use are as defined in [RFC8126]. | |||
1. IANA has created the "Transform Type 13 - Key Wrap Algorithm | 1. IANA has created the "Transform Type 13 - Key Wrap Algorithm | |||
Transform IDs" registry. Changes and additions to the unassigned | Transform IDs" registry. The registration policy for this | |||
range of this registry are to be made through Expert Review | registry is Expert Review [RFC8126]. The initial values of the | |||
[RFC8126]. The initial values of the registry are as follows: | registry are as follows: | |||
+==========================+============+ | +============+==========================+ | |||
| Key Wrap Algorithm | Value | | | Value | Key Wrap Algorithm | | |||
+==========================+============+ | +============+==========================+ | |||
| Reserved | 0 | | | 0 | Reserved | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
| KW_5649_128 | 1 | | | 1 | KW_5649_128 | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
| KW_5649_192 | 2 | | | 2 | KW_5649_192 | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
| KW_5649_256 | 3 | | | 3 | KW_5649_256 | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
| KW_ARX | 4 | | | 4 | KW_ARX | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
| Unassigned | 5-1023 | | | 5-1023 | Unassigned | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
| Reserved for Private Use | 1024-65535 | | | 1024-65535 | Reserved for Private Use | | |||
+--------------------------+------------+ | +------------+--------------------------+ | |||
Table 11 | Table 11 | |||
2. IANA has created the "Transform Type 14 - Group Controller | 2. IANA has created the "Transform Type 14 - Group Controller | |||
Authentication Method Transform IDs" registry. Changes and | Authentication Method Transform IDs" registry. The registration | |||
additions to the unassigned range of this registry are to be made | policy for this registry is Expert Review [RFC8126]. The initial | |||
through Expert Review [RFC8126]. The initial values of the | values of the registry are as follows: | |||
registry are as follows: | ||||
+========================================+============+ | +============+========================================+ | |||
| Group Controller Authentication Method | Value | | | Value | Group Controller Authentication Method | | |||
+========================================+============+ | +============+========================================+ | |||
| Reserved | 0 | | | 0 | Reserved | | |||
+----------------------------------------+------------+ | +------------+----------------------------------------+ | |||
| Implicit | 1 | | | 1 | Implicit | | |||
+----------------------------------------+------------+ | +------------+----------------------------------------+ | |||
| Digital Signature | 2 | | | 2 | Digital Signature | | |||
+----------------------------------------+------------+ | +------------+----------------------------------------+ | |||
| Unassigned | 3-1023 | | | 3-1023 | Unassigned | | |||
+----------------------------------------+------------+ | +------------+----------------------------------------+ | |||
| Reserved for Private Use | 1024-65535 | | | 1024-65535 | Reserved for Private Use | | |||
+----------------------------------------+------------+ | +------------+----------------------------------------+ | |||
Table 12 | Table 12 | |||
3. IANA has created the "GSA Attributes" registry. Changes and | 3. IANA has created the "GSA Attributes" registry. The registration | |||
additions to the unassigned range of this registry are to be made | policy for this registry is Expert Review [RFC8126]. The initial | |||
through Expert Review [RFC8126]. The initial values of the | values of the registry are as follows: | |||
registry are as follows: | ||||
+======================+===========+======+======+============+ | +===========+======================+======+======+============+ | |||
|GSA Attributes |Value |Format|Multi-|Used in | | |Value |GSA Attributes |Format|Multi-|Used in | | |||
| | | |Valued|Protocol | | | | | |Valued|Protocol | | |||
+======================+===========+======+======+============+ | +===========+======================+======+======+============+ | |||
|Reserved |0 | | | |0 |Reserved | | | |||
+----------------------+-----------+------+------+------------+ | +-----------+----------------------+------+------+------------+ | |||
|GSA_KEY_LIFETIME |1 |TLV |NO |GIKE_UPDATE,| | |1 |GSA_KEY_LIFETIME |TLV |NO |GIKE_UPDATE,| | |||
| | | | |AH, ESP | | | | | | |AH, ESP | | |||
+----------------------+-----------+------+------+------------+ | +-----------+----------------------+------+------+------------+ | |||
|GSA_INITIAL_MESSAGE_ID|2 |TLV |NO |GIKE_UPDATE | | |2 |GSA_INITIAL_MESSAGE_ID|TLV |NO |GIKE_UPDATE | | |||
+----------------------+-----------+------+------+------------+ | +-----------+----------------------+------+------+------------+ | |||
|GSA_NEXT_SPI |3 |TLV |YES |GIKE_UPDATE,| | |3 |GSA_NEXT_SPI |TLV |YES |GIKE_UPDATE,| | |||
| | | | |AH, ESP | | | | | | |AH, ESP | | |||
+----------------------+-----------+------+------+------------+ | +-----------+----------------------+------+------+------------+ | |||
|Unassigned |5-16383 | | | |4-16383 |Unassigned | | | |||
+----------------------+-----------+--------------------------+ | +-----------+----------------------+--------------------------+ | |||
|Reserved for Private |16384-32767| | | |16384-32767|Reserved for Private | | | |||
|Use | | | | | |Use | | | |||
+----------------------+-----------+--------------------------+ | +-----------+----------------------+--------------------------+ | |||
Table 13 | Table 13 | |||
4. IANA has created the "Group-wide Policy Attributes" registry. | 4. IANA has created the "Group-Wide Policy Attributes" registry. | |||
Changes and additions to the unassigned range of this registry | The registration policy for this registry is Expert Review | |||
are to be made through Expert Review [RFC8126]. The initial | [RFC8126]. The initial values of the registry are as follows: | |||
values of the registry are as follows: | ||||
+======================+=============+========+==============+ | +=============+======================+========+==============+ | |||
| GW Policy Attributes | Value | Format | Multi-Valued | | | Value | GW Policy Attributes | Format | Multi-Valued | | |||
+======================+=============+========+==============+ | +=============+======================+========+==============+ | |||
| Reserved | 0 | | | | 0 | Reserved | | | |||
+----------------------+-------------+--------+--------------+ | +-------------+----------------------+--------+--------------+ | |||
| GWP_ATD | 1 | TV | NO | | | 1 | GWP_ATD | TV | NO | | |||
+----------------------+-------------+--------+--------------+ | +-------------+----------------------+--------+--------------+ | |||
| GWP_DTD | 2 | TV | NO | | | 2 | GWP_DTD | TV | NO | | |||
+----------------------+-------------+--------+--------------+ | +-------------+----------------------+--------+--------------+ | |||
| GWP_SENDER_ID_BITS | 3 | TV | NO | | | 3 | GWP_SENDER_ID_BITS | TV | NO | | |||
+----------------------+-------------+--------+--------------+ | +-------------+----------------------+--------+--------------+ | |||
| Unassigned | 4-16383 | | | | 4-16383 | Unassigned | | | |||
+----------------------+-------------+-----------------------+ | +-------------+----------------------+-----------------------+ | |||
| Reserved for Private | 16384-32767 | | | | 16384-32767 | Reserved for Private | | | |||
| Use | | | | | | Use | | | |||
+----------------------+-------------+-----------------------+ | +-------------+----------------------+-----------------------+ | |||
Table 14 | Table 14 | |||
5. IANA has created the "Group Key Bag Attributes" registry. | 5. IANA has created the "Group Key Bag Attributes" registry. The | |||
Changes and additions to the unassigned range of this registry | registration policy for this registry is Expert Review [RFC8126]. | |||
are to be made through Expert Review [RFC8126]. The initial | The initial values of the registry are as follows: | |||
values of the registry are as follows: | ||||
+=============+=============+======+==============+=============+ | +=============+=============+======+==============+=============+ | |||
| Group Key | Value |Format| Multi-Valued | Used in | | | Value | Group Key |Format| Multi-Valued | Used in | | |||
| Bag | | | | Protocol | | | | Bag | | | Protocol | | |||
| Attributes | | | | | | | | Attributes | | | | | |||
+=============+=============+======+==============+=============+ | +=============+=============+======+==============+=============+ | |||
| Reserved | 0 | | | | 0 | Reserved | | | |||
+-------------+-------------+------+--------------+-------------+ | +-------------+-------------+------+--------------+-------------+ | |||
| SA_KEY | 1 |TLV | YES | GIKE_UPDATE | | | 1 | SA_KEY |TLV | YES | GIKE_UPDATE | | |||
| | | | NO | AH, ESP | | | | | | NO | AH, ESP | | |||
+-------------+-------------+------+--------------+-------------+ | +-------------+-------------+------+--------------+-------------+ | |||
| Unassigned | 2-16383 | | | | 2-16383 | Unassigned | | | |||
+-------------+-------------+-----------------------------------+ | +-------------+-------------+-----------------------------------+ | |||
| Reserved | 16384-32767 | | | | 16384-32767 | Reserved | | | |||
| for | | | | | | for | | | |||
| Private | | | | | | Private | | | |||
| Use | | | | | | Use | | | |||
+-------------+-------------+-----------------------------------+ | +-------------+-------------+-----------------------------------+ | |||
Table 15 | Table 15 | |||
6. IANA has created the "Member Key Bag Attributes" registry. | 6. IANA has created the "Member Key Bag Attributes" registry. The | |||
Changes and additions to the unassigned range of this registry | registration policy for this registry is Expert Review [RFC8126]. | |||
are to be made through Expert Review [RFC8126]. The initial | The initial values of the registry are as follows: | |||
values of the registry are as follows: | ||||
+================+=============+========+==============+ | +================+=============+========+==============+ | |||
| Member Key Bag | Value | Format | Multi-Valued | | | Member Key Bag | Value | Format | Multi-Valued | | |||
| Attributes | | | | | | Attributes | | | | | |||
+================+=============+========+==============+ | +================+=============+========+==============+ | |||
| Reserved | 0 | | | | Reserved | 0 | | | |||
+----------------+-------------+--------+--------------+ | +----------------+-------------+--------+--------------+ | |||
| WRAP_KEY | 1 | TLV | YES | | | WRAP_KEY | 1 | TLV | YES | | |||
+----------------+-------------+--------+--------------+ | +----------------+-------------+--------+--------------+ | |||
| AUTH_KEY | 2 | TLV | NO | | | AUTH_KEY | 2 | TLV | NO | | |||
skipping to change at line 3088 ¶ | skipping to change at line 3082 ¶ | |||
+=======+===========================+ | +=======+===========================+ | |||
| 45 | INVALID_GROUP_ID | | | 45 | INVALID_GROUP_ID | | |||
+-------+---------------------------+ | +-------+---------------------------+ | |||
| 46 | AUTHORIZATION_FAILED | | | 46 | AUTHORIZATION_FAILED | | |||
+-------+---------------------------+ | +-------+---------------------------+ | |||
| 49 | REGISTRATION_FAILED | | | 49 | REGISTRATION_FAILED | | |||
+-------+---------------------------+ | +-------+---------------------------+ | |||
Table 23 | Table 23 | |||
8. The Notify type with the value 16429 was allocated earlier in the | 8. An earlier draft of this document [G-IKEV2] registered the Notify | |||
development of G-IKEv2 document in the "IKEv2 Notify Message | type 16429 in the "IKEv2 Notify Message Status Types" registry | |||
Status Types" registry with the name SENDER_REQUEST_ID. This | with the name SENDER_REQUEST_ID. Per this document, IANA has | |||
document renames it as follows: | renamed it as follows: | |||
+=======+============================+ | +=======+============================+ | |||
| Value | Notify Message Status Type | | | Value | Notify Message Status Type | | |||
+=======+============================+ | +=======+============================+ | |||
| 16429 | GROUP_SENDER | | | 16429 | GROUP_SENDER | | |||
+-------+----------------------------+ | +-------+----------------------------+ | |||
Table 24 | Table 24 | |||
9. In the "IKEv2 Security Protocol Identifiers" registry, IANA has | 9. In the "IKEv2 Security Protocol Identifiers" registry, IANA has | |||
skipping to change at line 3176 ¶ | skipping to change at line 3170 ¶ | |||
Version 2 (IKEv2)", RFC 9827, DOI 10.17487/RFC9827, | Version 2 (IKEv2)", RFC 9827, DOI 10.17487/RFC9827, | |||
September 2025, <https://www.rfc-editor.org/info/rfc9827>. | September 2025, <https://www.rfc-editor.org/info/rfc9827>. | |||
10.2. Informative References | 10.2. Informative References | |||
[ARX-KW] Shinichi, S., "ARX-KW, a family of key wrapping | [ARX-KW] Shinichi, S., "ARX-KW, a family of key wrapping | |||
constructions using SipHash and ChaCha", Cryptology ePrint | constructions using SipHash and ChaCha", Cryptology ePrint | |||
Archive, Paper 2020/059, January 2020, | Archive, Paper 2020/059, January 2020, | |||
<https://eprint.iacr.org/2020/059.pdf>. | <https://eprint.iacr.org/2020/059.pdf>. | |||
[G-IKEV2] Rowles, S., Yeung, A., Tran, P., and Y. Nir, "Group Key | ||||
Management using IKEv2", Work in Progress, Internet-Draft, | ||||
draft-yeung-g-ikev2-07, 5 November 2013, | ||||
<https://datatracker.ietf.org/doc/html/draft-yeung- | ||||
g-ikev2-07>. | ||||
[IKEV2-IANA] | [IKEV2-IANA] | |||
IANA, "Internet Key Exchange Version 2 (IKEv2) | IANA, "Internet Key Exchange Version 2 (IKEv2) | |||
Parameters", | Parameters", | |||
<http://www.iana.org/assignments/ikev2-parameters>. | <http://www.iana.org/assignments/ikev2-parameters>. | |||
[IPSEC-IKEV2-QR-ALT] | [IPSEC-IKEV2-QR-ALT] | |||
Smyslov, V., "Mixing Preshared Keys in the | Smyslov, V., "Mixing Preshared Keys in the | |||
IKE_INTERMEDIATE and in the CREATE_CHILD_SA Exchanges of | IKE_INTERMEDIATE and in the CREATE_CHILD_SA Exchanges of | |||
IKEv2 for Post-quantum Security", Work in Progress, | IKEv2 for Post-quantum Security", Work in Progress, | |||
Internet-Draft, draft-ietf-ipsecme-ikev2-qr-alt-10, 23 May | Internet-Draft, draft-ietf-ipsecme-ikev2-qr-alt-10, 23 May | |||
skipping to change at line 3337 ¶ | skipping to change at line 3337 ¶ | |||
[RFC9370] Tjhai, CJ., Tomlinson, M., Bartlett, G., Fluhrer, S., Van | [RFC9370] Tjhai, CJ., Tomlinson, M., Bartlett, G., Fluhrer, S., Van | |||
Geest, D., Garcia-Morchon, O., and V. Smyslov, "Multiple | Geest, D., Garcia-Morchon, O., and V. Smyslov, "Multiple | |||
Key Exchanges in the Internet Key Exchange Protocol | Key Exchanges in the Internet Key Exchange Protocol | |||
Version 2 (IKEv2)", RFC 9370, DOI 10.17487/RFC9370, May | Version 2 (IKEv2)", RFC 9370, DOI 10.17487/RFC9370, May | |||
2023, <https://www.rfc-editor.org/info/rfc9370>. | 2023, <https://www.rfc-editor.org/info/rfc9370>. | |||
Appendix A. Use of LKH in G-IKEv2 | Appendix A. Use of LKH in G-IKEv2 | |||
Section 5.4 of [RFC2627] describes the LKH architecture and how a | Section 5.4 of [RFC2627] describes the LKH architecture and how a | |||
GCKS uses LKH to exclude group members. This section clarifies how | GCKS uses LKH to exclude GMs. This section clarifies how the LKH | |||
the LKH architecture is used with G-IKEv2. | architecture is used with G-IKEv2. | |||
A.1. Notation | A.1. Notation | |||
In this section, we will use the notation X{Y}, where a key with ID Y | In this section, we will use the notation X{Y}, where a key with ID Y | |||
is encrypted with the key with ID X. The notation GSK_w{Y} means | is encrypted with the key with ID X. The notation GSK_w{Y} means | |||
that the default wrap key GSK_w (with zero KWK ID)is used to encrypt | that the default wrap key GSK_w (with zero KWK ID)is used to encrypt | |||
key Y, and the notation X{K_sa} means key X is used to encrypt the SA | key Y, and the notation X{K_sa} means key X is used to encrypt the SA | |||
key K_sa (which always has a Key ID of zero). Note that GSK_w{K_sa} | key K_sa (which always has a Key ID of zero). Note that GSK_w{K_sa} | |||
means that the SA key is encrypted with the default wrap key, in | means that the SA key is encrypted with the default wrap key, in | |||
which case, both KWK ID and Key ID are zero. | which case, both KWK ID and Key ID are zero. | |||
skipping to change at line 3362 ¶ | skipping to change at line 3362 ¶ | |||
when n is an SPI for the SA and the Member Key Bag substructure will | when n is an SPI for the SA and the Member Key Bag substructure will | |||
be denoted as MP(). The content of the key bags is shown as SA_KEY | be denoted as MP(). The content of the key bags is shown as SA_KEY | |||
and WRAP_KEY attributes with the notation described above. For | and WRAP_KEY attributes with the notation described above. For | |||
simplicity, the type of the attribute will not be shown because it is | simplicity, the type of the attribute will not be shown because it is | |||
implicitly defined by the type of key bag. | implicitly defined by the type of key bag. | |||
Below is the example of a KD payload: | Below is the example of a KD payload: | |||
KD(GP(SA1)(X{K_sa}),MP(Y{X},Z{Y},GSK_w{Z}) | KD(GP(SA1)(X{K_sa}),MP(Y{X},Z{Y},GSK_w{Z}) | |||
Figure 23 | Figure 21: Example of a KD Payload | |||
For simplicity, any other attributes in the KD payload are omitted. | For simplicity, any other attributes in the KD payload are omitted. | |||
We will also use the notation X->Y->Z to describe the Key Path. In | We will also use the notation X->Y->Z to describe the Key Path. In | |||
this case, key Y is needed to decrypt key X and key Z is needed to | this case, key Y is needed to decrypt key X and key Z is needed to | |||
decrypt key Y. In the example above, the keys had the following | decrypt key Y. In the example above, the keys had the following | |||
relation: K_sa->X->Y->Z->GSK_w. | relation: K_sa->X->Y->Z->GSK_w. | |||
A.2. Group Creation | A.2. Group Creation | |||
When a GCKS forms a group, it creates a key tree as shown in | When a GCKS forms a group, it creates a key tree as shown in | |||
Figure 24. The key tree contains logical keys (which are represented | Figure 22. The key tree contains logical keys (which are represented | |||
as the values of their Key IDs in the figure) and a private key | as the values of their Key IDs in the figure) and a private key | |||
shared with only a single GM (the GMs are represented as letters | shared with only a single GM (the GMs are represented as letters | |||
followed by the corresponding key ID in parentheses in the figure). | followed by the corresponding key ID in parentheses in the figure). | |||
The root of the tree contains the multicast Rekey SA key (which is | The root of the tree contains the multicast Rekey SA key (which is | |||
represented as SAn(K_san). The figure below assumes that the Key IDs | represented as SAn(K_san). The figure below assumes that the Key IDs | |||
are assigned sequentially; this is not a requirement and only used | are assigned sequentially; this is not a requirement and only used | |||
for illustrative purposes. The GCKS may create a complete tree as | for illustrative purposes. The GCKS may create a complete tree as | |||
shown or a partial tree, which is created on demand as members join | shown or a partial tree, which is created on demand as members join | |||
the group. | the group. | |||
SA1(K_sa1) | SA1(K_sa1) | |||
+------------------------------+ | +------------------------------+ | |||
1 2 | 1 2 | |||
+---------------+ +---------------+ | +---------------+ +---------------+ | |||
3 4 5 6 | 3 4 5 6 | |||
+-------+ +-------+ +--------+ +--------+ | +-------+ +-------+ +--------+ +--------+ | |||
A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | |||
Figure 24: Initial LKH Tree | Figure 22: Initial LKH Tree | |||
When GM A joins the group, the GCKS provides it with the keys in the | When GM A joins the group, the GCKS provides it with the keys in the | |||
KD payload of the GSA_AUTH or GSA_REGISTRATION exchange. Given the | KD payload of the GSA_AUTH or GSA_REGISTRATION exchange. Given the | |||
tree shown in figure above, the KD payload will be: | tree shown in figure above, the KD payload will be: | |||
KD(GP(SA1)(1{K_sa1}),MP(3{1},7{3},GSK_w{7}) | KD(GP(SA1)(1{K_sa1}),MP(3{1},7{3},GSK_w{7}) | |||
Figure 25: KD Payload for the Group Member A | Figure 23: KD Payload for the Group Member A | |||
From these attributes, the GM A will construct the Key Path | From these attributes, the GM A will construct the Key Path | |||
K_sa1->1->3->7->GSK_w. Since it ends up with GSK_w, it will use all | K_sa1->1->3->7->GSK_w. Since it ends up with GSK_w, it will use all | |||
the WRAP_KEY attributes present in the path as its Working Key Path: | the WRAP_KEY attributes present in the path as its Working Key Path: | |||
1->3->7. | 1->3->7. | |||
Similarly, when other GMs will be joining the group, they will be | Similarly, when other GMs join the group, they will be provided with | |||
provided with the corresponding keys, so after all, the GMs will have | the corresponding keys and thus the GMs will have the following | |||
the following Working Key Paths: | Working Key Paths: | |||
A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | |||
E: 2->5->11 F: 2->5->12 G: 2->6->13 H: 2->6->14 | E: 2->5->11 F: 2->5->12 G: 2->6->13 H: 2->6->14 | |||
Figure 26 | Figure 24: Key Paths for all GMs | |||
A.3. Simple Group SA Rekey | A.3. Simple Group SA Rekey | |||
If the GCKS performs a simple SA rekey without changing group | If the GCKS performs a simple SA rekey without changing group | |||
membership, it will only send a Group Key Gag in the KD payload with | membership, it will only send a Group Key Bag in the KD payload with | |||
a new SA key encrypted with the default KWK. | a new SA key encrypted with the default KWK. | |||
KD(GP(SA2)(GSK_w{K_sa2})) | KD(GP(SA2)(GSK_w{K_sa2})) | |||
Figure 27: KD Payload for the Simple Group SA Rekey | Figure 25: KD Payload for the Simple Group SA Rekey | |||
All the GMs will be able to decrypt it and no changes in their | All the GMs will be able to decrypt it and no changes in their | |||
Working Key Paths will happen. | Working Key Paths will happen. | |||
A.4. Group Member Exclusion | A.4. Group Member Exclusion | |||
If the GCKS has reason to believe that a GM should be excluded, then | If the GCKS has reason to believe that a GM should be excluded, then | |||
it can do so by sending a GSA_REKEY message that includes a set of | it can do so by sending a GSA_REKEY message that includes a set of | |||
GM_KEY attributes, which would allow all GMs, except for the excluded | GM_KEY attributes, which would allow all GMs, except for the excluded | |||
one, to get a new SA key. | one, to get a new SA key. | |||
skipping to change at line 3449 ¶ | skipping to change at line 3449 ¶ | |||
5 with key 16. It also generates a new SA key for a new SA3. | 5 with key 16. It also generates a new SA key for a new SA3. | |||
SA3(K_sa3) | SA3(K_sa3) | |||
+------------------------------+ | +------------------------------+ | |||
1 15 | 1 15 | |||
+---------------+ +---------------+ | +---------------+ +---------------+ | |||
3 4 16 6 | 3 4 16 6 | |||
+-------+ +-------+ +---- +--------+ | +-------+ +-------+ +---- +--------+ | |||
A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | |||
Figure 28: LKH Tree after F Has Been Excluded | Figure 26: LKH Tree after F Has Been Excluded | |||
Then it sends the following KD payload for the new Rekey SA3: | Then it sends the following KD payload for the new Rekey SA3: | |||
KD(GP(SA3)(1{K_sa3},15{K_sa3}),MP(6{15},16{15},11{16}) | KD(GP(SA3)(1{K_sa3},15{K_sa3}),MP(6{15},16{15},11{16}) | |||
Figure 29: KD Payload for the Group Member F | Figure 27: KD Payload for the Group Member F | |||
While processing this KD payload: | While processing this KD payload: | |||
* GMs A, B, C, and D will be able to decrypt the SA_KEY attribute | * GMs A, B, C, and D will be able to decrypt the SA_KEY attribute | |||
1{K_sa3} by using the "1" key from their key path. Since no new | 1{K_sa3} by using the "1" key from their key path. Since no new | |||
GM_KEY attributes are in the new Key Path, they won't update their | GM_KEY attributes are in the new Key Path, they won't update their | |||
Working Key Paths. | Working Key Paths. | |||
* GMs G and H will construct new Key Path 15->6 and will be able to | * GMs G and H will construct new Key Path 15->6 and will be able to | |||
decrypt the intermediate key 15 using key 6 from their Working Key | decrypt the intermediate key 15 using key 6 from their Working Key | |||
skipping to change at line 3486 ¶ | skipping to change at line 3486 ¶ | |||
* GM F won't be able to construct any Key Path leading to any key it | * GM F won't be able to construct any Key Path leading to any key it | |||
possesses, so it will be unable to decrypt the new SA key for the | possesses, so it will be unable to decrypt the new SA key for the | |||
SA3. Thus, it will be excluded from the group once the SA3 is | SA3. Thus, it will be excluded from the group once the SA3 is | |||
used. | used. | |||
Finally, the GMs will have the following Working Key Paths: | Finally, the GMs will have the following Working Key Paths: | |||
A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | |||
E: 15->16->11 F: excluded G: 15->6->13 H: 15->6->14 | E: 15->16->11 F: excluded G: 15->6->13 H: 15->6->14 | |||
Figure 30 | Figure 28: Key Paths for all GMs after Exclusion of a GM | |||
Acknowledgements | Acknowledgements | |||
The authors thank Lakshminath Dondeti and Jing Xiang for first | The authors thank Lakshminath Dondeti and Jing Xiang for first | |||
exploring the use of IKEv2 for group key management and providing the | exploring the use of IKEv2 for group key management and providing the | |||
basis behind the protocol. Mike Sullenberger and Amjad Inamdar were | basis behind the protocol. Mike Sullenberger and Amjad Inamdar were | |||
instrumental in helping resolve many issues in several draft versions | instrumental in helping resolve many issues in several draft versions | |||
of the document. | of the document. | |||
The authors are grateful to Tero Kivinen, Daniel Migault, Gorry | The authors are grateful to Tero Kivinen, Daniel Migault, Gorry | |||
End of changes. 172 change blocks. | ||||
626 lines changed or deleted | 626 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |