draft-ietf-ipsecme-g-ikev2-00.txt | draft-ietf-ipsecme-g-ikev2-01.txt | |||
---|---|---|---|---|
Network Working Group B. Weis | Network Working Group V. Smyslov | |||
Internet-Draft Independent | Internet-Draft ELVIS-PLUS | |||
Obsoletes: 6407 (if approved) V. Smyslov | Obsoletes: 6407 (if approved) B. Weis | |||
Intended status: Standards Track ELVIS-PLUS | Intended status: Standards Track Independent | |||
Expires: July 12, 2020 January 9, 2020 | Expires: January 14, 2021 July 13, 2020 | |||
Group Key Management using IKEv2 | Group Key Management using IKEv2 | |||
draft-ietf-ipsecme-g-ikev2-00 | draft-ietf-ipsecme-g-ikev2-01 | |||
Abstract | Abstract | |||
This document presents a set of IKEv2 exchanges that comprise a group | This document presents an extension to the Internet Key Exchange | |||
key management protocol. The protocol is in conformance with the | version 2 (IKEv2) protocol for the purpose of a group key management. | |||
Multicast Security (MSEC) key management architecture, which contains | The protocol is in conformance with the Multicast Security (MSEC) key | |||
two components: member registration and group rekeying. Both | management architecture, which contains two components: member | |||
components require a Group Controller/Key Server to download IPsec | registration and group rekeying. Both components require a Group | |||
group security associations to authorized members of a group. The | Controller/Key Server to download IPsec group security associations | |||
group members then exchange IP multicast or other group traffic as | to authorized members of a group. The group members then exchange IP | |||
IPsec packets. This document obsoletes RFC 6407. | multicast or other group traffic as IPsec packets. This document | |||
obsoletes RFC 6407. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on July 12, 2020. | This Internet-Draft will expire on January 14, 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 14 ¶ | skipping to change at page 2, line 15 ¶ | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction and Overview . . . . . . . . . . . . . . . . . . 3 | 1. Introduction and Overview . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | |||
1.2. G-IKEv2 Integration into IKEv2 Protocol . . . . . . . . . 5 | 1.2. G-IKEv2 Integration into IKEv2 Protocol . . . . . . . . . 5 | |||
1.2.1. G-IKEv2 Transport and Port . . . . . . . . . . . . . 5 | 1.2.1. G-IKEv2 Transport and Port . . . . . . . . . . . . . 6 | |||
1.2.2. IKEv2 Header Initialization . . . . . . . . . . . . . 6 | 1.2.2. IKEv2 Header Initialization . . . . . . . . . . . . . 6 | |||
1.3. G-IKEv2 Protocol . . . . . . . . . . . . . . . . . . . . 6 | 1.3. G-IKEv2 Protocol . . . . . . . . . . . . . . . . . . . . 6 | |||
1.3.1. G-IKEv2 Payloads . . . . . . . . . . . . . . . . . . 6 | 1.3.1. G-IKEv2 Payloads . . . . . . . . . . . . . . . . . . 6 | |||
1.4. G-IKEv2 Member Registration and Secure Channel | 1.4. G-IKEv2 Member Registration and Secure Channel | |||
Establishment . . . . . . . . . . . . . . . . . . . . . . 7 | Establishment . . . . . . . . . . . . . . . . . . . . . . 7 | |||
1.4.1. GSA_AUTH exchange . . . . . . . . . . . . . . . . . . 7 | 1.4.1. GSA_AUTH exchange . . . . . . . . . . . . . . . . . . 7 | |||
1.4.2. GSA_REGISTRATION Exchange . . . . . . . . . . . . . . 9 | 1.4.2. GSA_REGISTRATION Exchange . . . . . . . . . . . . . . 9 | |||
1.4.3. GM Registration Operations . . . . . . . . . . . . . 10 | 1.4.3. GM Registration Operations . . . . . . . . . . . . . 10 | |||
1.4.4. GCKS Registration Operations . . . . . . . . . . . . 11 | 1.4.4. GCKS Registration Operations . . . . . . . . . . . . 12 | |||
1.4.5. Group Maintenance Channel . . . . . . . . . . . . . . 12 | 1.4.5. Group Maintenance Channel . . . . . . . . . . . . . . 13 | |||
1.4.6. Counter-based modes of operation . . . . . . . . . . 19 | 1.4.6. Counter-based modes of operation . . . . . . . . . . 20 | |||
1.5. Interaction with IKEv2 Protocol Extensions . . . . . . . 21 | 2. Group Key Management and Access Control . . . . . . . . . . . 22 | |||
1.5.1. Postquantum Preshared Keys for IKEv2 . . . . . . . . 21 | 2.1. Key Wrap Keys . . . . . . . . . . . . . . . . . . . . . . 23 | |||
2. Header and Payload Formats . . . . . . . . . . . . . . . . . 23 | 2.1.1. Default Key Wrap Key . . . . . . . . . . . . . . . . 23 | |||
2.1. The G-IKEv2 Header . . . . . . . . . . . . . . . . . . . 23 | 2.2. GCKS Key Management Semantics . . . . . . . . . . . . . . 23 | |||
2.2. Group Identification (IDg) Payload . . . . . . . . . . . 24 | 2.2.1. Forward Access Control Requirements . . . . . . . . . 24 | |||
2.3. Security Association - GM Supported Transforms (SAg) . . 24 | 2.3. GM Key Management Semantics . . . . . . . . . . . . . . . 25 | |||
2.4. Group Security Association Payload . . . . . . . . . . . 24 | 2.4. Group SA Keys . . . . . . . . . . . . . . . . . . . . . . 26 | |||
2.4.1. GSA Policy . . . . . . . . . . . . . . . . . . . . . 25 | 3. Header and Payload Formats . . . . . . . . . . . . . . . . . 27 | |||
2.4.2. KEK Policy . . . . . . . . . . . . . . . . . . . . . 26 | 3.1. G-IKEv2 Header . . . . . . . . . . . . . . . . . . . . . 27 | |||
2.4.3. GSA TEK Policy . . . . . . . . . . . . . . . . . . . 30 | 3.2. Group Identification Payload . . . . . . . . . . . . . . 27 | |||
2.4.4. GSA Group Associated Policy . . . . . . . . . . . . . 33 | 3.3. Security Association - GM Supported Transforms Payload . 27 | |||
2.5. Key Download Payload . . . . . . . . . . . . . . . . . . 34 | 3.4. Group Security Association Payload . . . . . . . . . . . 28 | |||
2.5.1. TEK Download Type . . . . . . . . . . . . . . . . . . 36 | 3.4.1. Group Policies . . . . . . . . . . . . . . . . . . . 28 | |||
2.5.2. KEK Download Type . . . . . . . . . . . . . . . . . . 37 | 3.4.2. Group Security Association Policy Substructure . . . 29 | |||
2.5.3. LKH Download Type . . . . . . . . . . . . . . . . . . 38 | 3.4.3. Group Associated Policy Substructure . . . . . . . . 35 | |||
2.5.4. SID Download Type . . . . . . . . . . . . . . . . . . 40 | 3.5. Key Download Payload . . . . . . . . . . . . . . . . . . 37 | |||
2.6. Delete Payload . . . . . . . . . . . . . . . . . . . . . 42 | 3.5.1. Wrapped Key Format . . . . . . . . . . . . . . . . . 37 | |||
2.7. Notify Payload . . . . . . . . . . . . . . . . . . . . . 42 | 3.5.2. Group Key Packet Substructure . . . . . . . . . . . . 39 | |||
2.8. Authentication Payload . . . . . . . . . . . . . . . . . 43 | 3.5.3. Member Key Packet Substructure . . . . . . . . . . . 40 | |||
3. Security Considerations . . . . . . . . . . . . . . . . . . . 43 | 3.6. Delete Payload . . . . . . . . . . . . . . . . . . . . . 43 | |||
3.1. GSA Registration and Secure Channel . . . . . . . . . . . 43 | 3.7. Notify Payload . . . . . . . . . . . . . . . . . . . . . 43 | |||
3.2. GSA Maintenance Channel . . . . . . . . . . . . . . . . . 44 | 3.7.1. USE_TRANSPORT_MODE Notification . . . . . . . . . . . 44 | |||
3.2.1. Authentication/Authorization . . . . . . . . . . . . 44 | 3.8. Authentication Payload . . . . . . . . . . . . . . . . . 45 | |||
3.2.2. Confidentiality . . . . . . . . . . . . . . . . . . . 44 | 4. Interaction with other IKEv2 Protocol Extensions . . . . . . 45 | |||
3.2.3. Man-in-the-Middle Attack Protection . . . . . . . . . 44 | 4.1. Mixing Preshared Keys in IKEv2 for Post-quantum Security 45 | |||
3.2.4. Replay/Reflection Attack Protection . . . . . . . . . 44 | ||||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 47 | |||
4.1. New Registries . . . . . . . . . . . . . . . . . . . . . 44 | 5.1. GSA Registration and Secure Channel . . . . . . . . . . . 47 | |||
4.2. New Payload and Exchange Types Added to the Existing | 5.2. GSA Maintenance Channel . . . . . . . . . . . . . . . . . 47 | |||
IKEv2 Registry . . . . . . . . . . . . . . . . . . . . . 45 | 5.2.1. Authentication/Authorization . . . . . . . . . . . . 47 | |||
4.3. Changes to Previous Allocations . . . . . . . . . . . . . 45 | 5.2.2. Confidentiality . . . . . . . . . . . . . . . . . . . 47 | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 45 | 5.2.3. Man-in-the-Middle Attack Protection . . . . . . . . . 48 | |||
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46 | 5.2.4. Replay/Reflection Attack Protection . . . . . . . . . 48 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 46 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 47 | 6.1. New Registries . . . . . . . . . . . . . . . . . . . . . 48 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 48 | 6.2. Changes in the Existing IKEv2 Registries . . . . . . . . 50 | |||
Appendix A. Use of LKH in G-IKEv2 . . . . . . . . . . . . . . . 50 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 51 | |||
A.1. Group Creation . . . . . . . . . . . . . . . . . . . . . 50 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 51 | |||
A.2. Group Member Exclusion . . . . . . . . . . . . . . . . . 51 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 52 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 52 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . 53 | ||||
Appendix A. Use of LKH in G-IKEv2 . . . . . . . . . . . . . . . 56 | ||||
A.1. Notation . . . . . . . . . . . . . . . . . . . . . . . . 56 | ||||
A.2. Group Creation . . . . . . . . . . . . . . . . . . . . . 56 | ||||
A.3. Simple Group SA Rekey . . . . . . . . . . . . . . . . . . 57 | ||||
A.4. Group Member Exclusion . . . . . . . . . . . . . . . . . 58 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 59 | ||||
1. Introduction and Overview | 1. Introduction and Overview | |||
A group key management protocol provides IPsec keys and policy to a | A group key management protocol provides IPsec keys and policy to a | |||
set of IPsec devices which are authorized to communicate using a | set of IPsec devices which are authorized to communicate using a | |||
Group Security Association (GSA) defined in [RFC3740]. The data | Group Security Association (GSA) defined in [RFC3740]. The data | |||
communications within the group (e.g., IP multicast packets) are | communications within the group (e.g., IP multicast packets) are | |||
protected by a key pushed to the group members (GMs) by the Group | protected by a key pushed to the group members (GMs) by the Group | |||
Controller/Key Server (GCKS). This document presents a set of IKEv2 | Controller/Key Server (GCKS). This document presents an extension to | |||
[RFC7296] exchanges that comprise a group key management protocol. | IKEv2 [RFC7296] called G-IKEv2, that allows to perform a group key | |||
management. | ||||
G-IKEv2 conforms to the Multicast Group Security Architecture | ||||
[RFC3740], Multicast Extensions to the Security Architecture for the | ||||
Internet Protocol [RFC5374] and the Multicast Security (MSEC) Group | ||||
Key Management Architecture [RFC4046]. G-IKEv2 replaces GDOI | ||||
[RFC6407], which defines a similar group key management protocol | ||||
using IKEv1 [RFC2409] (since deprecated by IKEv2). When G-IKEv2 is | ||||
used, group key management use cases can benefit from the simplicity, | ||||
increased robustness and cryptographic improvements of IKEv2 (see | ||||
Appendix A of [RFC7296]. | ||||
A GM begins a "registration" exchange when it first joins the group. | A GM begins a "registration" exchange when it first joins the group. | |||
With G-IKEv2, the GCKS authenticates and authorizes GMs, then pushes | With G-IKEv2, the GCKS authenticates and authorizes GMs, then pushes | |||
policy and keys used by the group to the GM. G-IKEv2 includes two | policy and keys used by the group to the GM. G-IKEv2 includes two | |||
"registration" exchanges. The first is the GSA_AUTH exchange ( | "registration" exchanges. The first is the GSA_AUTH exchange ( | |||
Section 1.4.1), which follows an IKE_SA_INIT exchange. The second is | Section 1.4.1), which follows an IKE_SA_INIT exchange. The second is | |||
the GSA_REGISTRATION exchange ( Section 1.4.2), which a GM can use | the GSA_REGISTRATION exchange (Section 1.4.2), which a GM can use | |||
within an established IKE SA. Group rekeys are accomplished using | within an established IKE SA. Group rekeys are accomplished using | |||
either the GSA_REKEY exchange (a single message distributed to all | either the GSA_REKEY pseudo-exchange (a single message distributed to | |||
GMs, usually as a multicast message), or as a GSA_INBAND_REKEY | all GMs, usually as a multicast message), or as a GSA_INBAND_REKEY | |||
exchange delivered individually to group members using existing IKE | exchange delivered individually to group members using existing IKE | |||
SAs). | SAs). | |||
Large and small groups may use different sets of these protocols. | Large and small groups may use different sets of these protocols. | |||
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. (Note: For clarity, IKE_SA_INIT is omitted from the | Figure 1. (Note: For clarity, IKE_SA_INIT is omitted from the | |||
figure.) | figure.) | |||
+--------+ | +--------+ | |||
+------------->| GCKS |<-------------+ | +------------->| GCKS |<-------------+ | |||
| +--------+ | | | +--------+ | | |||
| | ^ | | | | ^ | | |||
| | | | | | | | | | |||
| | GSA_AUTH | | | | GSA_AUTH | | |||
| | or | | | | or | | |||
| | GSA_REGISTRATION | | | | GSA_REGISTRATION | | |||
| | | | | | | | | | |||
GSA_AUTH | | GSA_AUTH | GSA_AUTH | | GSA_AUTH | |||
skipping to change at page 5, line 7 ¶ | skipping to change at page 5, line 24 ¶ | |||
| GCKS/GM | | GM | | GM | | GM | | | GCKS/GM | | GM | | GM | | GM | | |||
+---------+ +----+ +----+ +----+ | +---------+ +----+ +----+ +----+ | |||
^ ^ ^ ^ | ^ ^ ^ ^ | |||
| | | | | | | | | | |||
+----ESP-----+------ESP-------+-----ESP-----+ | +----ESP-----+------ESP-------+-----ESP-----+ | |||
Figure 2: G-IKEv2 used in small groups | Figure 2: G-IKEv2 used in small groups | |||
IKEv2 message semantics are preserved in that all communications | IKEv2 message semantics are preserved in that all communications | |||
consists of message request-response pairs. The exception to this | consists of message request-response pairs. The exception to this | |||
rule is the GSA_REKEY exchange, which is a single message delivering | rule is the GSA_REKEY pseudo-exchange, which is a single message | |||
group updates to the GMs. | delivering group updates to the GMs. | |||
G-IKEv2 conforms with the Multicast Group Security Architecture | ||||
[RFC3740], and the Multicast Security (MSEC) Group Key Management | ||||
Architecture [RFC4046]. G-IKEv2 replaces GDOI [RFC6407], which | ||||
defines a similar group key management protocol using IKEv1 [RFC2409] | ||||
(since deprecated by IKEv2). When G-IKEv2 is used, group key | ||||
management use cases can benefit from the simplicity, increased | ||||
robustness and cryptographic improvements of IKEv2 (see Appendix A of | ||||
[RFC7296]. | ||||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
1.2. G-IKEv2 Integration into IKEv2 Protocol | 1.2. G-IKEv2 Integration into IKEv2 Protocol | |||
G-IKEv2 uses the security mechanisms of IKEv2 (peer authentication, | G-IKEv2 uses the security mechanisms of IKEv2 (peer authentication, | |||
confidentiality, message integrity) to ensure that only authenticated | confidentiality, message integrity) to ensure that only authenticated | |||
devices have access to the group policy and keys. The G-IKEv2 | devices have access to the group policy and keys. The G-IKEv2 | |||
exchange further provides group authorization, and secure policy and | exchange further provides group authorization, and secure policy and | |||
key download from the GCKS to GMs. Some IKEv2 extensions require | key download from the GCKS to GMs. Some IKEv2 extensions require | |||
special handling if used with G-IKEv2. See Section 1.5 for more | special handling if used with G-IKEv2. See Section 4 for more | |||
details. | details. | |||
It is assumed that readers are familiar with the IKEv2 protocol, so | It is assumed that readers are familiar with the IKEv2 protocol, so | |||
this document skips many details that are described in [RFC7296]. | this document skips many details that are described in [RFC7296]. | |||
1.2.1. G-IKEv2 Transport and Port | 1.2.1. G-IKEv2 Transport and Port | |||
G-IKEv2 SHOULD use UDP port 848, the same as GDOI [RFC6407], because | G-IKEv2 SHOULD use UDP port 848, the same as GDOI [RFC6407], because | |||
they serve a similar function. They can use the same ports, just as | they serve a similar function. They can use the same ports, just as | |||
IKEv1 and IKEv2 can share port 500. The version number in the IKE | IKEv1 and IKEv2 can share port 500. The version number in the IKE | |||
skipping to change at page 6, line 24 ¶ | skipping to change at page 6, line 35 ¶ | |||
1.3.1. G-IKEv2 Payloads | 1.3.1. 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 | Notation Payload | |||
------------------------------------------------------------ | ------------------------------------------------------------ | |||
AUTH Authentication | AUTH Authentication | |||
CERT Certificate | CERT Certificate | |||
CERTREQ Certificate Request | CERTREQ Certificate Request | |||
D Delete | ||||
GSA Group Security Association | GSA Group Security Association | |||
HDR IKEv2 Header | HDR IKEv2 Header | |||
IDg Identification - Group | IDg Identification - Group | |||
IDi Identification - Initiator | IDi Identification - Initiator | |||
IDr Identification - Responder | IDr Identification - Responder | |||
KD Key Download | KD Key Download | |||
KE Key Exchange | KE Key Exchange | |||
Ni, Nr Nonce | Ni, Nr Nonce | |||
N Notify | ||||
SA Security Association | SA Security Association | |||
SAg Security Association - GM Supported Transforms | SAg Security Association - GM Supported Transforms | |||
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 will | included in these messages. Payloads that may optionally appear in | |||
be shown in brackets, such as [ CERTREQ ], to indicate that a | G-IKEv2 messages will be shown in brackets, such as [CERTREQ]. | |||
certificate request payload can optionally be included. | ||||
G-IKEv2 defines several new payloads not used in IKEv2: | G-IKEv2 defines several new payloads not used in IKEv2: | |||
o IDg (Group ID) - The GM requests the GCKS for membership into the | o IDg (Group ID) - The GM requests the GCKS for membership into the | |||
group by sending its IDg payload. | group by sending its IDg payload. | |||
o GSA (Group Security Association) - The GCKS sends the group policy | o GSA (Group Security Association) - The GCKS sends the group policy | |||
to the GM using this payload. | to the GM using this payload. | |||
o KD (Key Download) - The GCKS sends the control and data keys to | o KD (Key Download) - The GCKS sends the keys and the security | |||
the GM using the KD payload. | parameters to the GMs using the KD payload. | |||
o SAg (Security Association - GM Supported Transforms) - the GM | o SAg (Security Association - GM Supported Transforms) - the GM | |||
sends supported transforms, so that GCKS may select a policy | sends supported transforms, so that GCKS may select a policy | |||
appropriate for all members of the group. | appropriate for all members of the group. | |||
The details of the contents of each payload are described in | The details of the contents of each payload are described in | |||
Section 2. | Section 3. | |||
1.4. G-IKEv2 Member Registration and Secure Channel Establishment | 1.4. G-IKEv2 Member Registration and Secure Channel Establishment | |||
The registration protocol consists of a minimum of two messages | The registration protocol consists of a minimum of two messages | |||
exchanges, IKE_SA_INIT and GSA_AUTH; member registration may have a | exchanges, IKE_SA_INIT and GSA_AUTH; member registration may have a | |||
few more messages exchanged if the EAP method, cookie challenge (for | few more messages exchanged if the EAP method, cookie challenge (for | |||
DoS protection) or negotiation of Diffie-Hellman group is included. | DoS protection) or negotiation of Diffie-Hellman group is included. | |||
Each exchange consists of request/response pairs. The first exchange | Each exchange consists of request/response pairs. The first exchange | |||
IKE_SA_INIT is defined in IKEv2 [RFC7296]. This exchange negotiates | IKE_SA_INIT is defined in IKEv2 [RFC7296]. This exchange negotiates | |||
cryptographic algorithms, exchanges nonces and does a Diffie-Hellman | cryptographic algorithms, exchanges nonces and does a Diffie-Hellman | |||
skipping to change at page 8, line 5 ¶ | skipping to change at page 8, line 10 ¶ | |||
exchange MUST complete before any other exchanges can be done. The | exchange MUST complete before any other exchanges can be done. The | |||
security properties of the GSA_AUTH exchange are the same as the | security properties of the GSA_AUTH exchange are the same as the | |||
properties of the IKE_AUTH exchange. It is used to authenticate the | properties of the IKE_AUTH exchange. It is used to authenticate the | |||
IKE_SA_INIT messages, exchange identities and certificates. G-IKEv2 | IKE_SA_INIT messages, exchange identities and certificates. G-IKEv2 | |||
also uses this exchange for group member registration and | also uses this exchange for group member registration and | |||
authorization. Even though the IKE_AUTH does contain the SA2, TSi, | authorization. Even though the IKE_AUTH does contain the SA2, TSi, | |||
and TSr payload the GSA_AUTH does not. They are not needed because | and TSr payload the GSA_AUTH does not. They are not needed because | |||
policy is not negotiated between the group member and the GCKS, but | policy is not negotiated between the group member and the GCKS, but | |||
instead downloaded from the GCKS to the group member. | instead downloaded from the GCKS to the group member. | |||
Initiator (Member) Responder (GCKS) | Initiator (Member) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK { IDi, [CERT,] [CERTREQ, ] [IDr, ] | HDR, SK{IDi, [CERT,] [CERTREQ,] [IDr,] | |||
AUTH, IDg, [SAg, ] [N ] } --> | AUTH, IDg, [SAg,] [N]} --> | |||
Figure 3: GSA_AUTH Request | Figure 3: GSA_AUTH Request | |||
After the IKE_SA_INIT exchange completes, the group member initiates | After the IKE_SA_INIT exchange completes, the group member initiates | |||
a GSA_AUTH request to join a group indicated by the IDg payload. The | a GSA_AUTH request to join a group indicated by the IDg payload. The | |||
GM MAY include an SAg payload declaring which Transforms that it is | GM MAY include an SAg payload declaring which Transforms it is | |||
willing to accept. A GM that intends to emit data packets SHOULD | willing to accept. A GM that intends to emit data packets SHOULD | |||
include a Notify payload status type of SENDER, which enables the | include a Notify payload status type of SENDER, which enables the | |||
GCKS to provide any additional policy necessary by group senders. | GCKS to provide any additional policy necessary by group senders. | |||
Initiator (Member) Responder (GCKS) | Initiator (Member) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK { IDr, [CERT, ] | <-- HDR, SK{IDr, [CERT,] | |||
AUTH, [ GSA, KD, ] [D, ] } | AUTH, [GSA, KD,] [N,] [D]} | |||
Figure 4: GSA_AUTH Normal Response | Figure 4: GSA_AUTH Normal Response | |||
The GCKS responds with IDr, optional CERT, and AUTH material as if it | The GCKS responds with IDr, optional CERT, and AUTH material as if it | |||
were an IKE_AUTH. It also informs the group member of the | were an IKE_AUTH. It also informs the group member 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. The GCKS can also include a Delete (D) | material in the KD payload. The GCKS can also include a Delete (D) | |||
payload instructing the group member to delete existing SAs it might | payload instructing the group member to delete existing SAs it might | |||
have as the result of a previous group member registration. Note, | have as the result of a previous group member registration. Note, | |||
that since the GCKS generally doesn't know which SAs the GM has, the | that since the GCKS generally doesn't know which SAs the GM has, the | |||
SPI field in the Delete payload(s) SHOULD be set to zero in this | SPI field in the Delete payload(s) SHOULD be set to zero in this | |||
case. (See more discussion on the Delete payload in Section 2.6.) | case. (See more discussion on the Delete payload in Section 3.6.) | |||
In addition to the IKEv2 error handling, the GCKS can reject the | In addition to the IKEv2 error handling, the GCKS can reject the | |||
registration request when the IDg is invalid or authorization fails, | registration request when the IDg is invalid or authorization fails, | |||
etc. In these cases, see Section 2.7, the GSA_AUTH response will not | etc. In these cases, see Section 3.7, the GSA_AUTH response will not | |||
include the GSA and KD, but will include a Notify payload indicating | include the GSA and KD, but will include a Notify payload indicating | |||
errors. If the group member included an SAg payload, and the GCKS | errors. If the group member included an SAg payload, and the GCKS | |||
chooses to evaluate it, and it detects that that group member cannot | chooses to evaluate it, and it detects that that group member cannot | |||
support the security policy defined for the group, then the GCKS | support the security policy defined for the group, then the GCKS | |||
SHOULD return a NO_PROPOSAL_CHOSEN. Other types of notifications can | SHOULD return a NO_PROPOSAL_CHOSEN. Other types of notifications can | |||
be AUTHORIZATION_FAILED or REGISTRATION_FAILED. | be AUTHORIZATION_FAILED or REGISTRATION_FAILED. | |||
Initiator (Member) Responder (GCKS) | Initiator (Member) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK { IDr, [CERT, ] AUTH, N } | <-- HDR, SK{IDr, [CERT,] AUTH, N} | |||
Figure 5: GSA_AUTH Error Response | Figure 5: GSA_AUTH Error Response | |||
If the group member finds the policy sent by the GCKS is | If the group member finds the policy sent by the GCKS is | |||
unacceptable, the member SHOULD initiate GSA_REGISTRATION exchange | unacceptable, the member SHOULD initiate GSA_REGISTRATION exchange | |||
sending IDg and the Notify NO_PROPOSAL_CHOSEN (see Section 1.4.2)). | sending IDg and the Notify NO_PROPOSAL_CHOSEN (see Section 1.4.2)). | |||
1.4.2. GSA_REGISTRATION Exchange | 1.4.2. GSA_REGISTRATION Exchange | |||
When a secure channel is already established between a GM and the | When a secure channel is already established between a GM and the | |||
GCKS, the GM registration for a group can reuse the established | GCKS, the GM registration for a group can reuse the established | |||
secure channel. In this scenario the GM will use the | secure channel. In this scenario the GM will use the | |||
GSA_REGISTRATION exchange. Payloads in the exchange are generated | GSA_REGISTRATION exchange. Payloads in the exchange are generated | |||
and processed as defined in Section 1.4.1. | and processed as defined in Section 1.4.1. | |||
Initiator (Member) Responder (GCKS) | Initiator (Member) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK {IDg, [SAg, ][N ] } --> | HDR, SK{IDg, [SAg,][N ]} --> | |||
<-- HDR, SK { GSA, KD, [D ] } | <-- HDR, SK{GSA,] [N,] [D]} | |||
Figure 6: GSA_REGISTRATION Normal Exchange | Figure 6: GSA_REGISTRATION Normal Exchange | |||
As with GSA_AUTH exchange, the GCKS can reject the registration | As with GSA_AUTH exchange, the GCKS can reject the registration | |||
request when the IDg is invalid or authorization fails, or GM cannot | request when the IDg is invalid or authorization fails, or GM cannot | |||
support the security policy defined for the group (which can be | support the security policy defined for the group (which can be | |||
concluded by GCKS by evaluation of SAg payload). In this case the | concluded by GCKS by evaluation of SAg payload). In this case the | |||
GCKS returns an appropriate error notification as described in | GCKS returns an appropriate error notification as described in | |||
Section 1.4.1. | Section 1.4.1. | |||
Initiator (Member) Responder (GCKS) | Initiator (Member) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK {IDg, [SAg, ][N ] } --> | HDR, SK{IDg, [SAg,] [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 the policy | This exchange can also be used if the group member finds the policy | |||
sent by the GCKS is unacceptable or for some reason wants to | sent by the GCKS is unacceptable or for some reason wants to | |||
unregister itself from the group. The group member SHOULD notify the | unregister itself from the group. The group member SHOULD notify the | |||
GCKS by sending IDg and the Notify type NO_PROPOSAL_CHOSEN or | GCKS by sending IDg and the Notify type NO_PROPOSAL_CHOSEN or | |||
REGISTRATION_FAILED, as shown below. The GCKS MUST unregister the | REGISTRATION_FAILED, as shown below. The GCKS MUST unregister the | |||
group member. | group member. | |||
Initiator (Member) Responder (GCKS) | Initiator (Member) 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 | |||
1.4.3. GM Registration Operations | 1.4.3. GM Registration Operations | |||
A G-IKEv2 Initiator (GM) requesting registration contacts the GCKS | A G-IKEv2 Initiator (GM) requesting registration contacts the GCKS | |||
using the IKE_SA_INIT exchange and receives the response from the | using the IKE_SA_INIT exchange and receives the response from the | |||
GCKS. This exchange is unchanged from the IKE_SA_INIT in IKEv2 | GCKS. This exchange is unchanged from the IKE_SA_INIT in IKEv2 | |||
protocol. | protocol. | |||
Upon completion of parsing and verifying the IKE_SA_INIT response, | Upon completion of parsing and verifying the IKE_SA_INIT response, | |||
the GM sends the GSA_AUTH message with the IKEv2 payloads from | the GM sends the GSA_AUTH message with the IKEv2 payloads from | |||
IKE_AUTH (without the SAi2, TSi and TSr payloads) along with the | IKE_AUTH (without the SAi2, TSi and TSr payloads) along with the | |||
Group ID informing the GCKS of the group the initiator wishes to | Group ID informing the GCKS of the group the initiator wishes to | |||
join. An initiator intending to emit data traffic SHOULD send a | join. An initiator intending to emit data traffic SHOULD send a | |||
SENDER Notify payload status. The SENDER not only signifies that it | SENDER Notify payload status. The SENDER not only signifies that it | |||
is a sender, but provides the initiator the ability to request | is a sender, but provides the initiator the ability to request | |||
Sender-ID values, in case the Data Security SA supports a counter | Sender-ID values, in case the data security SA supports a counter | |||
mode cipher. Section 1.4.6) includes guidance on requesting Sender- | mode cipher. Section 1.4.6) includes guidance on requesting Sender- | |||
ID values. | ID values. | |||
An initiator may be limited in the types of Transforms that it is | A GM may be limited in the types of Transforms that it is able or | |||
able or willing to use, and may find it useful to inform the GCKS | willing to use, and may find it useful to inform the GCKS which | |||
which Transforms that it is willing to accept. It can OPTIONALLY | Transforms it is willing to accept for different security protocols. | |||
include an SAg payload, which can include ESP and/or AH Proposals. | Proposals for Rekey SA (with protocol GIKE_REKEY) and for data | |||
Each Proposal contains a list of Transforms that it is willing to | security (AH and/or ESP) SAs may be included into SAg. Each Proposal | |||
support for that protocol. A Proposal of type ESP can include ENCR, | contains a list of Transforms that the GM is able to support for that | |||
INTEG, and ESN Transforms. A Proposal of type AH can include INTEG, | protocol. Valid transform types depend on the protocol and are | |||
and ESN Transforms. The SPI length of each Proposal in an SAg is set | defined in Figure 15. Other transform types SHOULD NOT be included. | |||
to zero, and thus the SPI field is null. The GCKS MUST ignore SPI | The SPI length of each Proposal in an SAg is set to zero, and thus | |||
field in the SAg payload. Generally, a single Proposal of each type | the SPI field is empty. The GCKS MUST ignore SPI field in the SAg | |||
will suffice, because the group member is not negotiating Transform | payload. | |||
sets, simply alerting the GCKS to restrictions it may have, however | ||||
if the GM has restrictions on combination of algorithms, this can be | Generally, a single Proposal of each type will suffice, because the | |||
expressed by sending several proposals. | group member is not negotiating Transform sets, simply alerting the | |||
GCKS to restrictions it may have. In particular, the restriction | ||||
from Section 3.3 of [RFC7296] that AEAD and non-AEAD transforms must | ||||
not be combined in a single proposal doesn't hold when the SAg | ||||
payload is being formed. However if the GM has restrictions on | ||||
combination of algorithms, this can be expressed by sending several | ||||
proposals. | ||||
Although the SAg payload is optional, it is RECOMMENDED for the GM to | ||||
include this payload into the GSA_AUTH request to allow the GCKS to | ||||
select an appropriate policy. | ||||
A GM may also indicate the support for IPcomp by inclusion one or | ||||
more the IPCOMP_SUPPORTED notifications along with the SAg payload. | ||||
The CPI in these notifications is set to zero and MUST be ignored by | ||||
the GCKS. | ||||
Upon receiving the GSA_AUTH response, the initiator parses the | Upon receiving the GSA_AUTH response, the initiator parses the | |||
response from the GCKS authenticating the exchange using the IKEv2 | response from the GCKS authenticating the exchange using the IKEv2 | |||
method, then processes the GSA and KD. | method, then processes the GSA and KD. | |||
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 Rekey SA | protocols used by the group. This policy describes the Rekey SA | |||
(KEK), if present, Data-security SAs (TEK), and other group policy | (KEK), Data-security SAs (TEK), and other group policy (GAP). If the | |||
(GAP). If the policy in the GSA payload is not acceptable to the GM, | policy in the GSA payload is not acceptable to the GM, it SHOULD | |||
it SHOULD notify the GCKS by initiating a GSA_REGISTRATION exchange | notify the GCKS by initiating a GSA_REGISTRATION exchange with a | |||
with a NO_PROPOSAL_CHOSEN Notify payload (see Section 1.4.2). Note, | NO_PROPOSAL_CHOSEN Notify payload (see Section 1.4.2). Note, that | |||
that this should normally not happen if the GM includes SAg payload | this should normally not happen if the GM includes SAg payload in the | |||
in the GSA_AUTH request and the GCKS takes it into account. Finally | GSA_AUTH request and the GCKS takes it into account. Finally the KD | |||
the KD is parsed providing the keying material for the TEK and/or | are parsed providing the keying material for the TEK and/or KEK. The | |||
KEK. The GM interprets the KD key packets, where each key packet | GM interprets the KD key packets, where each key packet includes the | |||
includes the keying material for SAs distributed in the GSA payload. | keying material for SAs distributed in the GSA payload. Keying | |||
material is matched by comparing the SPIs in the key packets to SPIs | ||||
Keying material is matched by comparing the SPIs in the key packets | previously included in the GSA payloads. Once TEK keys and policy | |||
to SPIs previously included in the GSA payloads. Once TEK keys and | are matched, the GM provides them to the data security subsystem, and | |||
policy are matched, the GM provides them to the data security | it is ready to send or receive packets matching the TEK policy. | |||
subsystem, and it is ready to send or receive packets matching the | ||||
TEK policy. | ||||
The GSA KEK policy MUST include KEK attribute KEK_MESSAGE_ID with a | The GSA KEK policy MUST include the attribute GSA_INITIAL_MESSAGE_ID | |||
Message ID. The Message ID in the KEK_MESSAGE_ID attribute MUST be | with a first Message ID the GM should expect to receive if it is non- | |||
checked against any previously received Message ID for this group. | zero. The value of the attribute MUST be checked by a GM against any | |||
If it is less than the previously received number, it should be | previously received Message ID for this group. If it is less than | |||
considered stale and ignored. This could happen if two GSA_AUTH | the previously received number, it should be considered stale and | |||
exchanges happened in parallel, and the Message ID changed. This | ignored. This could happen if two GSA_AUTH exchanges happened in | |||
KEK_MESSAGE_ID is used by the GM to prevent GSA_REKEY message replay | parallel, and the Message ID changed. This attribute is used by the | |||
attacks. The first GSA_REKEY message that the GM receives from the | GM to prevent GSA_REKEY message replay attacks. The first GSA_REKEY | |||
GCKS must have a Message ID greater or equal to the Message ID | message that the GM receives from the GCKS must have a Message ID | |||
received in the KEK_MESSAGE_ID attribute. | greater or equal to the Message ID received in the | |||
GSA_INITIAL_MESSAGE_ID attribute. | ||||
Once a GM has received GSA_REKEY policy during a registration the IKE | Once a GM has received GSA_REKEY policy during a registration the IKE | |||
SA may be closed. However, the GM SHOULD NOT close IKE SA, it is the | SA may be closed. However, the GM SHOULD NOT close IKE SA, it is the | |||
GCKS who makes the decision whether to close or keep it, because | GCKS who makes the decision whether to close or keep it, because | |||
depending on the policy the IKE SA may be used for inband rekeying | depending on the policy the IKE SA may be used for inband rekeying | |||
for small groups. | for small groups. | |||
1.4.4. GCKS Registration Operations | 1.4.4. GCKS Registration Operations | |||
A G-IKEv2 GCKS passively listens for incoming requests from group | A G-IKEv2 GCKS passively listens for incoming requests from group | |||
skipping to change at page 11, line 46 ¶ | skipping to change at page 12, line 23 ¶ | |||
member using the same procedures as in the IKEv2 IKE_AUTH. The GCKS | member using the same procedures as in the IKEv2 IKE_AUTH. The GCKS | |||
then authorizes the group member according to group policy before | then authorizes the group member according to group policy before | |||
preparing to send the GSA_AUTH response. If the GCKS fails to | preparing to send the GSA_AUTH response. If the GCKS fails to | |||
authorize the GM, it will respond with an AUTHORIZATION_FAILED notify | authorize the GM, it will respond with an AUTHORIZATION_FAILED notify | |||
message. | message. | |||
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, this policy is constructed in the GSA KEK and the | group rekey option, this policy is constructed in the GSA KEK and the | |||
key is constructed in the KD KEK. The GSA KEK MUST include the | key is constructed in the KD KEK. The GSA KEK MUST include the | |||
KEK_MESSAGE_ID attribute, specifying the starting Message ID the GCKS | GSA_INITIAL_MESSAGE_ID attribute, specifying the starting Message ID | |||
will use when sending the GSA_REKEY message to the group member. | the GCKS will use when sending the GSA_REKEY message to the group | |||
This Message ID is used to prevent GSA_REKEY message replay attacks | member if this Message ID is non-zero. This Message ID is used to | |||
and will be increased each time a GSA_REKEY message is sent to the | prevent GSA_REKEY message replay attacks and will be increased each | |||
group. The GCKS data traffic policy is included in the GSA TEK and | time a GSA_REKEY message is sent to the group. The GCKS data traffic | |||
keys are included in the KD TEK. The GSA GAP MAY also be included to | policy is included in the GSA TEK and keys are included in the KD | |||
provide the ATD and/or DTD (Section 2.4.4.1) specifying activation | TEK. The GAP MAY also be included to provide the ATD and/or DTD | |||
and deactivation delays for SAs generated from the TEKs. If the | (Section 3.4.3.1) specifying activation and deactivation delays for | |||
group member has indicated that it is a sender of data traffic and | SAs generated from the TEKs. If the group member has indicated that | |||
one or more Data Security SAs distributed in the GSA payload included | it is a sender of data traffic and one or more Data Security SAs | |||
a counter mode of operation, the GCKS responds with one or more SIDs | distributed in the GSA payload included a counter mode of operation, | |||
(see Section 1.4.6). | the GCKS responds with one or more SIDs (see Section 1.4.6). | |||
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. | with the AUTHORIZATION_FAILED notification. | |||
If a group member includes an SAg in its GSA_AUTH or GSA_REGISTRATION | If a group member includes an SAg in its GSA_AUTH or GSA_REGISTRATION | |||
request, the GCKS MAY evaluate it according to an implementation | request, the GCKS MAY evaluate it according to an implementation | |||
specific policy. | specific policy. | |||
skipping to change at page 13, line 5 ¶ | skipping to change at page 13, line 32 ¶ | |||
1.4.5. Group Maintenance Channel | 1.4.5. 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 KEK, deleting TEKs, and/or excluding group | replacement TEKs and KEK, deleting TEKs, and/or excluding group | |||
members. The GCKS may initiate a rekey message if group membership | members. The GCKS may initiate a rekey message if group membership | |||
and/or policy has changed, or if the keys are about to expire. Two | and/or policy has changed, or if the keys are about to expire. Two | |||
forms of group maintenance channels are provided in G-IKEv2 to push | forms of group maintenance channels are provided in G-IKEv2 to push | |||
new policy to group members. | new policy to group members. | |||
GSA_REKEY The GSA_REKEY exchange is an exchange initiated by the | GSA_REKEY The GSA_REKEY is a pseudo-exchange initiated by the GCKS, | |||
GCKS, where the rekey policy is usually delivered to group members | where the rekey policy is usually delivered to group members using | |||
using IP multicast as a transport. This is valuable for large and | IP multicast as a transport. This is not a real IKEv2 exchange, | |||
dynamic groups, and where policy may change frequently and an | since no response messages are sent. This method is valuable for | |||
scalable rekeying method is required. When the GSA_REKEY exchange | large and dynamic groups, and where policy may change frequently | |||
is used, the IKEv2 SA protecting the member registration exchanges | and a scalable rekeying method is required. When the GSA_REKEY is | |||
is terminated, and group members await policy changes from the | used, the IKEv2 SA protecting the member registration exchanges is | |||
GCKS via the GSA_REKEY exchange. | usually terminated, and group members await policy changes from | |||
the GCKS via the GSA_REKEY messages. | ||||
GSA_INBAND_REKEY The GSA_INBAND_REKEY exchange is a rekey method | GSA_INBAND_REKEY The GSA_INBAND_REKEY is a normal IKEv2 exchange | |||
using the IKEv2 SA that was setup to protecting the member | using the IKEv2 SA that was setup to protecting the member | |||
registration exchange. This exchange allows the GCKS to rekey | registration exchange. This exchange allows the GCKS to rekey | |||
without using an independent GSA_REKEY exchange. The | without using an independent GSA_REKEY pseudo-exchange. The | |||
GSA_INBAND_REKEY exchange is useful when G-IKEv2 is used with a | GSA_INBAND_REKEY exchange provides a reliable policy delivery and | |||
small group of cooperating devices. | is useful when G-IKEv2 is used with a small group of cooperating | |||
devices. | ||||
1.4.5.1. GSA_REKEY Exchange | Depending on the policy the GCKS may combine these two methods. For | |||
example, it may use the GSA_INBAND_REKEY to deliver key to the GMs in | ||||
the group acting as senders (as this would provide reliable keys | ||||
delivery), and the GSA_REKEY for the rest GMs. | ||||
1.4.5.1. GSA_REKEY | ||||
The GCKS initiates the G-IKEv2 Rekey securely, usually using IP | The GCKS initiates the G-IKEv2 Rekey securely, usually using IP | |||
multicast. Since this rekey does not require a response and it sends | multicast. Since this rekey does not require a response and it sends | |||
to multiple GMs, G-IKEv2 rekeying MUST NOT support IKE SA windowing. | to multiple GMs, G-IKEv2 rekeying MUST NOT support IKE SA windowing. | |||
The GCKS rekey message replaces the rekey GSA KEK or KEK array, and/ | The GCKS rekey message replaces the rekey GSA KEK or KEK array, and/ | |||
or creates a new Data-Security GSA TEK. The SID Download attribute | or creates a new Data-Security GSA TEK. The SID Download attribute | |||
in the Key Download payload (defined in Section 2.5.4) MUST NOT be | in the Key Download payload (defined in Section 3.5.3.2) MUST NOT be | |||
part of the Rekey Exchange as this is sender specific information and | part of the Rekey Exchange as this is sender specific information and | |||
the Rekey Exchange is group specific. The GCKS initiates the | the Rekey Exchange is group specific. The GCKS initiates the | |||
GSA_REKEY exchange as following: | GSA_REKEY pseudo-exchange as following: | |||
Members (Responder) GCKS (Initiator) | Members (Responder) GCKS (Initiator) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK { GSA, KD, [D,] [AUTH] } | <-- HDR, SK{GSA, KD, [N,] [D,] [AUTH]} | |||
Figure 9: GSA_REKEY Exchange | Figure 9: GSA_REKEY Pseudo-Exchange | |||
HDR is defined in Section 2.1. The Message ID in this message will | HDR is defined in Section 3.1. The Message ID in this message will | |||
start with the same value the GCKS sent to the group members in the | start with the value the GCKS sent to the group members in the KEK | |||
KEK attribute KEK_MESSAGE_ID during registration; this Message ID | attribute GSA_INITIAL_MESSAGE_ID or from zero if this attribute | |||
will be increased each time a new GSA_REKEY message is sent to the | wasn't sent. The Message ID will be incremented each time a new | |||
group members. | GSA_REKEY message is sent to the group members. | |||
The GSA payload contains the current rekey and data security SAs. | The GSA payload contains the current rekey and data security SAs. | |||
The GSA may contain a new rekey SA and/or a new data security SA, | The GSA may contain a new rekey SA and/or a new data security SA | |||
which, optionally contains an LKH rekey SA, Section 2.4. | Section 3.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 the data security SA is being refreshed in this rekey message, the | If the data security SA is being refreshed in this rekey message, the | |||
IPsec keys are updated in the KD, and/or if the rekey SA is being | 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 KEK array | refreshed in this rekey message, the rekey Key or the LKH KEK array | |||
is updated in the KD payload. | 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. | existing SAs. | |||
The AUTH payload MUST be included to authenticate the GSA_REKEY | The AUTH payload MUST be included to authenticate the GSA_REKEY | |||
message if the authentication method is based on public key | message if the authentication method is based on public key | |||
signatures and MUST NOT be included if it is based on shared secret. | signatures or a dedicated shared secret and MUST NOT be included if | |||
In a latter case, the fact that a GM can decrypt the GSA_REKEY | authentication is implicit. In a latter case, the fact that a GM can | |||
message and verify its ICV proves that the sender of this message | decrypt the GSA_REKEY message and verify its ICV proves that the | |||
knows the current KEK, thus authenticating that the sender is a | sender of this message knows the current KEK, thus authenticating | |||
member of the group. Shared secret authentication doesen't provide | that the sender is a member of the group. Shared secret and implicit | |||
source origin authentication. For this reason using it as | authentication don't provide source origin authentication. For this | |||
authentication method for multicast Rekey is NOT RECOMMENDED unless | reason using them as authentication methods for GSA_REKEY is NOT | |||
source origin authentication is not required (for example, in a small | RECOMMENDED unless source origin authentication is not required (for | |||
group of highly trusted GMs). If AUTH payload is included then the | example, in a small group of highly trusted GMs). If AUTH payload is | |||
Auth Method field MUST be one specifying using digital signatures. | included then the Auth Method field MUST NOT be NULL Authentication. | |||
During group member registration, the GCKS sends the authentication | During group member registration, the GCKS sends the authentication | |||
key in the GSA KEK payload, KEK_AUTH_KEY attribute, which the group | key in the GSA KEK payload, AUTH_KEY attribute, which the group | |||
member uses to authenticate the key server. Before the current | member uses to authenticate the key server. Before the current | |||
Authentication Key expires, the GCKS will send a new KEK_AUTH_KEY to | Authentication Key expires, the GCKS will send a new AUTH_KEY to the | |||
the group members in a GSA_REKEY message. The AUTH key that is used | group members in a GSA_REKEY message. The AUTH key that is used in | |||
in the rekey message may be not the same as the authentication key | the rekey message may be not the same as the authentication key used | |||
used in GSA_AUTH. | in GSA_AUTH. If implicit authentication is used, then AUTH_KEY MUST | |||
NOT be sent to GMs. | ||||
1.4.5.1.1. GSA_REKEY GCKS Operations | 1.4.5.1.1. GSA_REKEY Messages Authentication | |||
The content of the AUTH payload depends on the authentication method | ||||
and is either a digital signature or a result of prf applied to the | ||||
content of the not yet encrypted GSA_REKEY message. | ||||
The authentication algorithm (prf or digital signing) is applied to | ||||
the concatenation of two chunks: A and P. The chunk A lasts from the | ||||
first octet of the G-IKEv2 Header (not including prepended four | ||||
octets of zeros, if port 4500 is used) to the last octet of the | ||||
Encrypted Payload header. The chunk P consists of the not yet | ||||
encrypted content of the Encrypted payload, excluding the | ||||
Initialization Vector, the Padding, the Pad Length and the Integrity | ||||
Checksum Data fields (see 3.14 of [RFC7296] for description of the | ||||
Encrypted payload). In other words, the P chunk is the inner | ||||
payloads of the Encrypted payload in plaintext form. These inner | ||||
payloads must be fully formed and ready for encryption except for the | ||||
AUTH payload. Figure 10 illustrates the layout of the P and A chunks | ||||
in the GSA_REKEY message. | ||||
The AUTH payload must have correct values in the Payload Header, the | ||||
Auth Method and the RESERVED fields. The Authentication Data field | ||||
is zeroed, but if Digital Signature authentication method is in use, | ||||
then the ASN.1 Length and the AlgorithmIdentifier fields must be | ||||
properly filled in, see [RFC7427]. | ||||
For the purpose of the AUTH payload calculation the Length field in | ||||
the IKE header and the Payload Length field in the Encrypted Payload | ||||
header are adjusted so that they don't count the lengths of | ||||
Initialization Vector, Integrity Checksum Data and Padding (along | ||||
with Pad Length field). In other words, the Length field in the IKE | ||||
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 | ||||
Payload header (denoted as AdjustedPldLen in Figure 10) is set to the | ||||
length of P plus the size of the Payload header (four octets). | ||||
DataToAuthenticate = A | P | ||||
GsaRekeyMessage = GenIKEHDR | EncPayload | ||||
GenIKEHDR = [ four octets 0 if using port 4500 ] | AdjustedIKEHDR | ||||
AdjustedIKEHDR = SPIi | SPIr | . . . | AdjustedLen | ||||
EncPayload = AdjustedEncPldHdr | IV | InnerPlds | Pad | PadLen | ICV | ||||
AdjustedEncPldHdr = NextPld | C | RESERVED | AdjustedPldLen | ||||
A = AdjustedIKEHDR | AdjustedEncPldHdr | ||||
P = InnerPlds | ||||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^ ^ | ||||
| G-IKEv2 SA Initiator's SPI | | | | ||||
| | | | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I | | ||||
| G-IKEv2 SA Responder's SPI | K | | ||||
| | E | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
| Next Payload | MjVer | MnVer | Exchange Type | Flags | H A | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ d | | ||||
| Message ID | r | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | ||||
| AdjustedLeng | | | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ v | | ||||
| Next Payload |C| RESERVED | AdjustedPldLen | | | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ E v | ||||
| Initialization Vector | n | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ c ^ | ||||
| | r | | ||||
~ Inner payloads (not yet encrypted) ~ P | ||||
| | P | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ l v | ||||
| Padding (0-255 octets) | Pad Length | d | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | ||||
~ Integrity Checksum Data ~ | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ v | ||||
Figure 10: Data to Authenticate in the GSA_REKEY Messages | ||||
The authentication data is calculated using the authentication | ||||
algorithm from the Authentication Method transform and the key | ||||
provided before in the AUTH_KEY attribute. Depending on the | ||||
authentication method the authentication data is either a digital | ||||
signature or a result of applying prf from the Pseudorandom Function | ||||
transform. The calculated authentication data is placed into the | ||||
AUTH payload, the Length fields in the IKE Header and the Encryption | ||||
Payload header are restored, the content of the Encrypted payload is | ||||
encrypted and the ICV is computed using the current SKe/SKa keys. | ||||
The calculation of authentication data MUST be applied to whole | ||||
messages only, before possible IKE Fragmentation. If the message was | ||||
received in fragmented form, it should be reconstructed before | ||||
verifying its authenticity as if it were received unfragmented. The | ||||
RESERVED field in the reconstructed Encrypted Payload header MUST be | ||||
set to the value of the RESERVED field in the Encrypted Fragment | ||||
payload header from the first fragment (that with Fragment Number | ||||
equal to 1). | ||||
1.4.5.1.2. GSA_REKEY GCKS Operations | ||||
The GCKS builds the rekey message with a Message ID value that is one | The GCKS builds the rekey message with a Message ID value that is one | |||
greater than the value included in the previous rekey. If the | greater than the value included in the previous rekey. If the | |||
message is using a new KEK attribute, the Message ID is reset to 1 in | message is using a new KEK attribute, the Message ID is reset to 0 in | |||
this message. The GSA, KD, and D payloads follow with the same | this message. The GSA, KD, N and D payloads follow with the same | |||
characteristics as in the GSA Registration exchange. | characteristics as in the GSA Registration exchange. | |||
If present the AUTH payload is created as follows. First the message | The AUTH payload (if present) is created as defined in | |||
is prepared, all payloads are formed and included in the message, but | Section 1.4.5.1.1. | |||
the content of the Encrypted payload is not yet encrypted. However, | ||||
the Encrypted payload must be fully formed, including correct values | ||||
in IV, Padding and Pad Length and fields. The AUTH payload is | ||||
included in the message with the correct values in the Payload Header | ||||
(including Next Payload, Payload Length and Auth Method fields). The | ||||
Authentication Data field is zeroed for the purposes of signature | ||||
calculation, but if Digiatal Signature authentication method is in | ||||
use, then the ASN.1 Length and the AlgorithmIdentifier fields must be | ||||
properly filled in, see [RFC7427]. The signature is computed using | ||||
the signature algorithm from the KEK_AUTH_METHOD attribute (along | ||||
with the KEK_AUTH_HASH if KEK_AUTH_METHOD is not Digital Signature) | ||||
and the private key corresponding to the public key from the | ||||
KEK_AUTH_KEY attribute. It is computed over the block of data | ||||
starting from the first octet of IKE Header (but non including non- | ||||
ESP marker if it is present) to the last octet of the (not yet | ||||
encrypted) Encrypted Payload (i.e. up to and including Pad Length | ||||
field). Then the signature is placed into the Signature Value of the | ||||
AUTH payload, the content of the Encrypted payload is encrypted and | ||||
the ICV is computed using current KEK keys. | ||||
Because GSA_REKEY messages are not acknowledged and could be | Because GSA_REKEY messages are not acknowledged and could be | |||
discarded by the network, one or more GMs may not receive the | discarded by the network, one or more GMs may not receive the | |||
message. To mitigate such lost messages, during a rekey event the | message. To mitigate such lost messages, during a rekey event the | |||
GCKS may transmit several GSA_REKEY messages with the new policy. | GCKS may transmit several GSA_REKEY messages with the new policy. | |||
The retransmitted messages MUST be bitwise identical and SHOULD be | The retransmitted messages MUST be bitwise identical and SHOULD be | |||
sent within a short time interval (a few seconds) to ensure that | sent within a short time interval (a few seconds) to ensure that | |||
time-to-live would not not substantially skewed for the GMs that | time-to-live would not be substantially skewed for the GMs that would | |||
would receive different copies of the messages. | receive different copies of the messages. | |||
GCKS may also include one or several KEK_NEXT_SPI/TEK_NEXT_SPI | GCKS may also include one or several GSA_NEXT_SPI attributes | |||
attributes specifying SPIs for the prospected rekeys, so that | specifying SPIs for the prospected rekeys, so that listening GMs are | |||
listening GMs are able to detect lost rekey messages and recover from | able to detect lost rekey messages and recover from this situation. | |||
this situation. See Sections Section 2.4.2.1.6 and Section 2.4.3.1.4 | See Sections Section 3.4.2.2.3 for more detail. | |||
for more detail. | ||||
1.4.5.1.2. GSA_REKEY GM Operations | 1.4.5.1.3. GSA_REKEY GM Operations | |||
When a group member receives the Rekey Message from the GCKS it | When a group member receives the Rekey Message from the GCKS it | |||
decrypts the message using the current KEK, validates the signature | decrypts the message using the current KEK, validates its | |||
using the public key retrieved in a previous G-IKEv2 exchange if AUTH | authenticity using the key retrieved in a previous G-IKEv2 exchange | |||
payload is present, verifies the Message ID, and processes the GSA | if AUTH payload is present, verifies the Message ID, and processes | |||
and KD payloads. The group member then downloads the new data | the GSA and KD payloads. The group member then downloads the new | |||
security SA and/or new Rekey SA. The parsing of the payloads is | data security SA and/or new rekey SA. The parsing of the payloads is | |||
identical to the parsing done in the registration exchange. | identical to the parsing done in the registration exchange. | |||
Replay protection is achieved by a group member rejecting a GSA_REKEY | Replay protection is achieved by a group member rejecting a GSA_REKEY | |||
message which has a Message ID smaller than the current Message ID | message which has a Message ID smaller than the current Message ID | |||
that the GM is expecting. The GM expects the Message ID in the first | that the GM is expecting. The GM expects the Message ID in the first | |||
GSA_REKEY message it receives to be equal or greater than the message | GSA_REKEY message it receives to be equal or greater than the Message | |||
id it receives in the KEK_MESSAGE_ID attribute. The GM expects the | ID it receives in the GSA_INITIAL_MESSAGE_ID attribute. Note, that | |||
message ID in subsequent GSA_REKEY messages to be greater than the | if no this attribute was received for the Rekey SA, the GM MUST | |||
assume zero as the first expected Message ID. The GM expects the | ||||
Message ID in subsequent GSA_REKEY messages to be greater than the | ||||
last valid GSA_REKEY message ID it received. | last valid GSA_REKEY message ID it received. | |||
If the GSA payload includes a Data-Security SA including a counter- | If the GSA payload includes a Data-Security SA including a counter- | |||
modes of operation and the receiving group member is a sender for | modes of operation and the receiving group member is a sender for | |||
that SA, the group member uses its current SID value with the Data- | that SA, the group member uses its current SID value with the Data- | |||
Security SAs to create counter-mode nonces. If it is a sender and | Security SAs to create counter-mode nonces. If it is a sender and | |||
does not hold a current SID value, it MUST NOT install the Data- | does not hold a current SID value, it MUST NOT install the Data- | |||
Security SAs. It MAY initiate a GSA_REGISTRATION exchange to the | Security SAs. It MAY initiate a GSA_REGISTRATION exchange to the | |||
GCKS in order to obtain an SID value (along with current group | GCKS in order to obtain an SID value (along with current group | |||
policy). | policy). | |||
Once a new Rekey SA is installed as a result of GSA_REKEY message, | Once a new Rekey SA is installed as a result of 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 DEACTIVATION_TIME_DELAY interval | silently deleted after waiting DEACTIVATION_TIME_DELAY interval | |||
regardless of its expiration time. If the GSA TEK payload includes | regardless of its expiration time. If the GSA TEK payload includes | |||
TEK_REKEY_SPI attribute then after installing a new Data-Security SA | GSA_REKEY_SPI attribute then after installing a new Data-Security SA | |||
the old one, identified by the SPI in this attribute, MUST be | the old one, identified by the SPI in this attribute, MUST be | |||
silently deleted after waiting DEACTIVATION_TIME_DELAY interval | silently deleted after waiting DEACTIVATION_TIME_DELAY interval | |||
regardless of its expiration time. | regardless of its expiration time. | |||
If a Data-Security SA is not rekeyed yet and is about to expire (a | If a Data-Security SA is not rekeyed yet and is about to expire (a | |||
"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. | |||
1.4.5.1.3. Forward and Backward Access Control | 1.4.5.1.4. IKE Fragmentation | |||
Through the G-IKEv2 rekey, G-IKEv2 supports algorithms such as LKH | ||||
that have the property of denying 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 (backward access control). | ||||
An unrelated notion to PFS, "forward access control" and "backward | ||||
access control" have been called "perfect forward security" and | ||||
"perfect backward security" in the literature [RFC2627]. | ||||
Group management algorithms providing forward and backward access | ||||
control other than LKH have been proposed in the literature, | ||||
including OFT [OFT] and Subset Difference [NNL]. These algorithms | ||||
could be used with G-IKEv2, but are not specified as a part of this | ||||
document. | ||||
Support for group management algorithms are supported via the | ||||
KEY_MANAGEMENT_ALGORITHM attribute which is sent in the GSA KEK | ||||
policy. G-IKEv2 specifies one method by which LKH can be used for | ||||
forward and backward access control. Other methods of using LKH, as | ||||
well as other group management algorithms such as OFT or Subset | ||||
Difference may be added to G-IKEv2 as part of a later document. | ||||
1.4.5.1.3.1. Forward Access Control Requirements | ||||
When group membership is altered using a group management algorithm | ||||
new GSA TEKs (and their associated keys) are usually also needed. | ||||
New GSAs and keys ensure that members who were denied access can no | ||||
longer participate in the group. | ||||
If forward access control is a desired property of the group, new GSA | ||||
TEKs and the associated key packets in the KD payload MUST NOT be | ||||
included in a G-IKEv2 rekey message which changes group membership. | ||||
This is required because the GSA TEK policy and the associated key | ||||
packets in the KD payload are not protected with the new KEK. A | ||||
second G-IKEv2 rekey message can deliver the new GSA TEKS and their | ||||
associated key packets because it will be protected with the new KEK, | ||||
and thus will not be visible to the members who were denied access. | ||||
If forward access control policy for the group includes keeping group | ||||
policy changes from members that are denied access to the group, then | ||||
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 | ||||
for the group. Group members, which are denied access, will not be | ||||
able to access the new KEK, but will see the group policy since the | ||||
G-IKEv2 rekey message is protected under the current KEK. A | ||||
subsequent G-IKEv2 rekey message containing the changed group policy | ||||
and again changing the KEK allows complete forward access control. A | ||||
G-IKEv2 rekey message MUST NOT change the policy without creating a | ||||
new KEK. | ||||
If other methods of using LKH or other group management algorithms | ||||
are added to G-IKEv2, those methods MAY remove the above restrictions | ||||
requiring multiple G-IKEv2 rekey messages, providing those methods | ||||
specify how the forward access control policy is maintained within a | ||||
single G-IKEv2 rekey message. | ||||
1.4.5.1.4. Fragmentation | ||||
IKE fragmentation [RFC7383] can be used to perform fragmentation of | IKE 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. | |||
o Policy regarding the use of IKE fragmentation is implicit. If a | o Policy regarding the use of IKE fragmentation is implicit. If a | |||
GCKS detects that all GMs have negotiated support of IKE | GCKS detects that all GMs have negotiated support of IKE | |||
fragmentation in IKE_SA_INIT, then it MAY use IKE fragmentation on | fragmentation in IKE_SA_INIT, then it MAY use IKE fragmentation on | |||
large GSA_REKEY exchange messages. | large GSA_REKEY messages. | |||
o The GCKS must always use IKE fragmentation based on a known | o The GCKS must always use IKE fragmentation based on a known | |||
fragmentation threshold (unspecified in this memo), as there is no | fragmentation threshold (unspecified in this memo), as there is no | |||
way to check if fragmentation is needed by first sending | way to check if fragmentation is needed by first sending | |||
unfragmented messages and waiting for response. | unfragmented messages and waiting for response. | |||
o PMTU probing cannot be performed due to lack of GSA_REKEY response | o PMTU probing cannot be performed due to lack of GSA_REKEY response | |||
message. | message. | |||
1.4.5.2. GSA_INBAND_REKEY Exchange | 1.4.5.2. GSA_INBAND_REKEY Exchange | |||
When the IKEv2 SA protecting the member registration exchange is | When the IKEv2 SA protecting the member registration exchange is | |||
maintained while group member participates in the group, the GCKS can | maintained while group member participates in the group, the GCKS can | |||
use the GSA_INBAND_REKEY exchange to individually provide policy | use the GSA_INBAND_REKEY exchange to individually provide policy | |||
updates to the group member. | updates to the group member. | |||
Member (Responder) GCKS (Initiator) | Member (Responder) GCKS (Initiator) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK { GSA, KD, [D,] } | <-- HDR, SK{GSA, KD, [N,] [D]} | |||
HDR, SK {} --> | HDR, SK{} --> | |||
Figure 10: GSA_INBAND_REKEY Exchange | Figure 11: GSA_INBAND_REKEY Exchange | |||
Because this is an IKEv2 exchange, the HDR is treated as defined in | Because this is a normal IKEv2 exchange, the HDR is treated as | |||
[RFC7296]. | defined in [RFC7296]. | |||
1.4.5.2.1. GSA_INBAND_REKEY GCKS Operations | 1.4.5.2.1. GSA_INBAND_REKEY GCKS Operations | |||
The GSA, KD, and D payloads are built in the same manner as in a | The GSA, KD, N and D payloads are built in the same manner as in a | |||
registration exchange. | registration exchange. | |||
1.4.5.2.2. GSA_INBAND_REKEY GM Operations | 1.4.5.2.2. GSA_INBAND_REKEY GM Operations | |||
The GM processes the GSA, KD, and D payloads in the same manner as if | The GM processes the GSA, KD, N and D payloads in the same manner as | |||
they were received in a registration exchange. | if they were received in a registration exchange. | |||
1.4.5.3. Deletion of SAs | 1.4.5.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 group members | |||
to delete policy at the end of a broadcast, or if group policy has | to delete policy at the end of a broadcast, or if group policy has | |||
changed. Deletion of keys MAY be accomplished by sending the G-IKEv2 | changed. Deletion of keys MAY be accomplished by sending the G-IKEv2 | |||
Delete Payload [RFC7296], section 3.11 as part of the GSA_REKEY | Delete Payload [RFC7296], section 3.11 as part of the GSA_REKEY | |||
Exchange as shown below. | pseudo-exchange as shown below. | |||
Members (Responder) GCKS (Initiator) | Members (Responder) GCKS (Initiator) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK { [GSA ], [KD ], [D, ] [AUTH ] } | <-- HDR, SK{[GSA,] [KD,], [N] [D,] [AUTH]} | |||
Figure 11: SA Deletion in GSA_REKEY | Figure 12: SA Deletion in GSA_REKEY | |||
The GSA MAY specify the remaining active time of the remaining policy | The GSA MAY specify the remaining active time of the remaining policy | |||
by using the DTD attribute in the GSA GAP. If a GCKS has no further | by using the DTD attribute in the GSA GAP. If a GCKS has no further | |||
SAs to send to group members, the GSA and KD payloads MUST be omitted | SAs to send to group members, the GSA and KD payloads MUST be omitted | |||
from the message. There may be circumstances where the GCKS may want | from the message. There may be circumstances where the GCKS may want | |||
to start over with a clean slate. If the administrator is no longer | to start over with a clean state. If the administrator is no longer | |||
confident in the integrity of the group, the GCKS can signal deletion | confident in the integrity of the group, the GCKS can signal deletion | |||
of all the policies of a particular TEK protocol by sending a TEK | of all the policies of a particular TEK protocol by sending a TEK | |||
with a SPI value equal to zero in the delete payload. For example, | with a SPI value equal to zero in the delete payload. For example, | |||
if the GCKS wishes to remove all the KEKs and all the TEKs in the | if the GCKS wishes to remove all the KEKs and all the TEKs in the | |||
group, the GCKS SHOULD send a Delete payload with a SPI of zero and a | group, the GCKS SHOULD send a Delete payload with a SPI of zero and | |||
protocol_id of a TEK protocol_id value defined in Section 2.4.3, | Protocol ID of AH or ESP, followed by another Delete payload with a | |||
followed by another Delete payload with a SPI of zero and protocol_id | SPI of zero and Protocol ID of GIKE_REKEY, indicating that the KEK SA | |||
of zero, indicating that the KEK SA should be deleted. | should be deleted. | |||
1.4.6. Counter-based modes of operation | 1.4.6. Counter-based modes of operation | |||
Several new counter-based modes of operation have been specified for | Several new counter-based modes of operation have been specified for | |||
ESP (e.g., AES-CTR [RFC3686], AES-GCM [RFC4106], AES-CCM [RFC4309], | ESP (e.g., AES-CTR [RFC3686], AES-GCM [RFC4106], AES-CCM [RFC4309], | |||
AES-GMAC [RFC4543]) and AH (e.g., AES-GMAC [RFC4543]). These | ChaCha20-Poly1305 [RFC7634], AES-GMAC [RFC4543]) and AH (e.g., AES- | |||
counter-based modes require that no two senders in the group ever | GMAC [RFC4543]). These counter-based modes require that no two | |||
send a packet with the same Initialization Vector (IV) using the same | senders in the group ever send a packet with the same Initialization | |||
cipher key and mode. This requirement is met in G-IKEv2 when the | Vector (IV) using the same cipher key and mode. This requirement is | |||
following requirements are met: | met in G-IKEv2 when the following requirements are met: | |||
o The GCKS distributes a unique key for each Data-Security SA. | o The GCKS distributes a unique key for each Data-Security SA. | |||
o The GCKS uses the method described in [RFC6054], which assigns each | o The GCKS uses the method described in [RFC6054], which assigns | |||
sender a portion of the IV space by provisioning each sender with one | each sender a portion of the IV space by provisioning each sender | |||
or more unique SID values. | with one or more unique SID values. | |||
1.4.6.1. Allocation of SIDs | 1.4.6.1. Allocation of SIDs | |||
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 SID to each group member acting in the | allocates and distributes one SID to each group member acting in the | |||
role of sender on the Data-Security SA. The SID value is used | role of sender on the Data-Security SA. The SID value is used | |||
exclusively by the group member to which it was allocated. The group | exclusively by the group member to which it was allocated. The group | |||
member uses the same SID for each Data-Security SA specifying the use | member uses the same SID for each Data-Security SA specifying the use | |||
of a counter-based mode of operation. A GCKS MUST distribute unique | of a counter-based mode of operation. A GCKS MUST distribute unique | |||
skipping to change at page 20, line 10 ¶ | skipping to change at page 21, line 14 ¶ | |||
than one SID and use them serially. This could be useful when it is | than one SID and use them serially. This could be useful when it is | |||
anticipated that the group member will exhaust their range of Data- | anticipated that the group member will exhaust their range of Data- | |||
Security SA nonces using a single SID too quickly (e.g., before the | Security SA nonces using a single SID too quickly (e.g., before the | |||
time-based policy in the TEK expires). | time-based policy in the TEK expires). | |||
When the group policy includes a counter-based mode of operation, a | When the group policy includes a counter-based mode of operation, a | |||
GCKS SHOULD use the following method to allocate SID values, which | GCKS SHOULD use the following method to allocate SID values, which | |||
ensures that each SID will be allocated to just one group member. | ensures that each SID will be allocated to just one group member. | |||
1. A GCKS maintains an SID-counter, which records the SIDs that have | 1. A GCKS maintains an SID-counter, which records the SIDs that have | |||
been allocated. SIDs are allocated sequentially, with zero as the | been allocated. SIDs are allocated sequentially, with zero as | |||
first allocated SID. | the first allocated SID. | |||
2. Each time an SID is allocated, the current value of the counter | 2. Each time an SID is allocated, the current value of the counter | |||
is saved and allocated to the group member. The SID-counter is then | is saved and allocated to the group member. The SID-counter is | |||
incremented in preparation for the next allocation. | then incremented in preparation for the next allocation. | |||
3. When the GCKS specifies a counter-based mode of operation in the | 3. When the GCKS specifies a counter-based mode of operation in the | |||
Data Security SA a group member may request a count of SIDs during | data security SA a group member may request a count of SIDs | |||
registration in a Notify payload information of type SENDER. When | during registration in a Notify payload information of type | |||
the GCKS receives this request, it increments the SID-counter once | SENDER. When the GCKS receives this request, it increments the | |||
for each requested SID, and distributes each SID value to the group | SID-counter once for each requested SID, and distributes each SID | |||
member. The GCKS SHOULD have a policy-defined upper bound for the | value to the group member. The GCKS SHOULD have a policy-defined | |||
number of SIDs that it will return irrespective of the number | upper bound for the number of SIDs that it will return | |||
requested by the GM. | irrespective of the number requested by the GM. | |||
4. A GCKS allocates new SID values for each GSA_REGISTRATION | 4. A GCKS allocates new SID values for each GSA_REGISTRATION | |||
exchange originated by a sender, regardless of whether a group member | exchange originated by a sender, regardless of whether a group | |||
had previously contacted the GCKS. In this way, the GCKS is not | member had previously contacted the GCKS. In this way, the GCKS | |||
required to maintaining a record of which SID values it had | is not required to maintaining a record of which SID values it | |||
previously allocated to each group member. More importantly, since | had previously allocated to each group member. More importantly, | |||
the GCKS cannot reliably detect whether the group member had sent | since the GCKS cannot reliably detect whether the group member | |||
data on the current group Data-Security SAs it does not know what | had sent data on the current group Data-Security SAs it does not | |||
Data-Security counter-mode nonce values that a group member has used. | know what Data-Security counter-mode nonce values that a group | |||
By distributing new SID values, the key server ensures that each time | member has used. By distributing new SID values, the key server | |||
a conforming group member installs a Data-Security SA it will use a | ensures that each time a conforming group member installs a Data- | |||
unique set of counter-based mode nonces. | Security SA it will use a unique set of counter-based mode | |||
nonces. | ||||
5. When the SID-counter maintained by the GCKS reaches its final SID | 5. When the SID-counter maintained by the GCKS reaches its final SID | |||
value, no more SID values can be distributed. Before distributing | value, no more SID values can be distributed. Before | |||
any new SID values, the GCKS MUST delete the Data-Security SAs for | distributing any new SID values, the GCKS MUST delete the Data- | |||
the group, followed by creation of new Data-Security SAs, and | Security SAs for the group, followed by creation of new Data- | |||
resetting the SID-counter to its initial value. | Security SAs, and resetting the SID-counter to its initial value. | |||
6. The GCKS SHOULD send a GSA_REKEY message deleting all Data- | 6. The GCKS SHOULD send a GSA_REKEY message deleting all Data- | |||
Security SAs and the Rekey SA for the group. This will result in the | Security SAs and the Rekey SA for the group. This will result in | |||
group members initiating a new GSA_REGISTRATION exchange, in which | the group members initiating a new GSA_REGISTRATION exchange, in | |||
they will receive both new SID values and new Data-Security SAs. The | which they will receive both new SID values and new Data-Security | |||
new SID values can safely be used because they are only used with the | SAs. The new SID values can safely be used because they are only | |||
new Data-Security SAs. Note that deletion of the Rekey SA is | used with the new Data-Security SAs. Note that deletion of the | |||
necessary to ensure that group members receiving a GSA_REKEY exchange | Rekey SA is necessary to ensure that group members receiving a | |||
before the re-register do not inadvertently use their old SIDs with | GSA_REKEY message before the re-register do not inadvertently use | |||
the new Data-Security SAs. Using the method above, at no time can | their old SIDs with the new Data-Security SAs. Using the method | |||
two group members use the same IV values with the same Data-Security | above, at no time can two group members use the same IV values | |||
SA key. | with the same Data-Security SA key. | |||
1.4.6.2. GM Usage of SIDs | 1.4.6.2. GM Usage of SIDs | |||
A GM applies the SID to Data Security SA as follows. | A GM applies the SID to data security SA as follows. | |||
1. The most significant bits NUMBER_OF_SID_BITS of the IV are taken | ||||
to be the SID field of the IV. | ||||
2. The SID is placed in the least significant bits of the SID field, | ||||
where any unused most significant bits are set to zero. If the SID | ||||
value doesn't fit into the NUMBER_OF_SID_BITS bits, then the GM MUST | ||||
treat this as a fatal error and re-register to the group. | ||||
1.5. Interaction with IKEv2 Protocol Extensions | ||||
IKEv2 defines a number of extensions that can be used to extend | ||||
protocol functionality. G-IKEv2 is compatible with most of such | ||||
extensions. In particular, EAP authentication defined in [RFC7296] | ||||
can be used to establish registration IKE SA, as well as Secure | ||||
Password authentication ([RFC6467]). G-IKEv2 is compatible with and | ||||
can use IKEv2 Session Resumption [RFC5723] except that a GM would | ||||
include the initial ticket request in a GSA_AUTH exchange instead of | ||||
an IKE_AUTH exchange. G-IKEv2 is also compatible with Quantum Safe | ||||
Key Exchange framework, defined in | ||||
[I-D.tjhai-ipsecme-hybrid-qske-ikev2]. | ||||
Some IKEv2 extensions however require special handling if used in | o The most significant bits NUMBER_OF_SID_BITS of the IV are taken | |||
G-IKEv2. | to be the SID field of the IV. | |||
1.5.1. Postquantum Preshared Keys for IKEv2 | o The SID is placed in the least significant bits of the SID field, | |||
where any unused most significant bits are set to zero. If the | ||||
SID value doesn't fit into the NUMBER_OF_SID_BITS bits, then the | ||||
GM MUST treat this as a fatal error and re-register to the group. | ||||
G-IKEv2 can take advantage of the protection provided by Postquantum | 2. Group Key Management and Access Control | |||
Preshared Keys (PPK) for IKEv2 [I-D.ietf-ipsecme-qr-ikev2]. However, | ||||
the use of PPK leaves the initial IKE SA susceptible to quantum | ||||
computer (QC) attacks. For this reason an alternative approach for | ||||
using PPK in IKEv2 defined in [I-D.smyslov-ipsecme-ikev2-qr-alt] | ||||
SHOULD be used. | ||||
If the alternative approach is not supported by the peers, then the | Through the G-IKEv2 rekey, G-IKEv2 supports algorithms such as | |||
GCKS MUST NOT send GSA and KD payloads in the GSA_AUTH response | Logical Key Hierarchy (LKH) that have the property of denying access | |||
message. Instead, the GCKS MUST return a new notification | to a new group key by a member removed from the group (forward access | |||
REKEY_IS_NEEDED. Upon receiving this notification in the GSA_AUTH | control) and to an old group key by a member added to the group | |||
response the GM MUST perform an IKE SA rekey and then initiate a new | (backward access control). An unrelated notion to PFS, "forward | |||
GSA_REGISTRATION request for the same group. Below are possible | access control" and "backward access control" have been called | |||
scenarios involving using PPK. | "perfect forward security" and "perfect backward security" in the | |||
literature [RFC2627]. | ||||
GM begins IKE_SA_INIT requesting PPK, and GCKS responds with | Group management algorithms providing forward and backward access | |||
willingness to do it, or aborts according to its "mandatory_or_not" | control other than LKH have been proposed in the literature, | |||
flag: | including OFT [OFT] and Subset Difference [NNL]. These algorithms | |||
could be used with G-IKEv2, but are not specified as a part of this | ||||
document. | ||||
Initiator (Member) Responder (GCKS) | The Group Key Management Method transform from the GSA policy | |||
-------------------- ------------------ | specifies how members of the group obtain group keys. This document | |||
HDR, SAi1, KEi, Ni, N(USE_PPK) ---> | specifies a single method for the group key management - Wrapped Key | |||
<--- HDR, SAr1, KEr, Nr, [CERTREQ], | Download. This method assumes that all group keys are sent to the | |||
N(USE_PPK) | GMs by the GCKS encrypted with other keys, called Key Wrap Keys | |||
(KWK). | ||||
Figure 12: IKE_SA_INIT Exchange requesting using PPK | 2.1. Key Wrap Keys | |||
GM begins GSA_AUTH with PPK_ID; if using PPK is not mandatory for the | Every GM always knows at least one KWK - the KWK that is associated | |||
GM, N(NO_PPK_AUTH) is included too: | with the IKE SA or multicast rekey SA the wrapped keys are sent over. | |||
In this document it is called default KWK and is denoted as SK_w. | ||||
Initiator (Member) Responder (GCKS) | The GCKS may also send other keys to GMs that will be used as Key | |||
-------------------- ------------------ | Wrap Keys for the purpose of building key hierarchy. Each such key | |||
HDR, SK {IDi, AUTH, IDg, | is associated with an encryption algorithm from the Encryption | |||
N(PPK_IDENTITY), N(NO_PPK_AUTH) } ---> | Algorithm transform used for the SA the key is sent in. The size of | |||
such key MUST be of the size of the key size of this Encryption | ||||
Algorithm transform (taking into consideration the Key Length | ||||
attribute for this transform if present). This association persists | ||||
even if the key is used later in the context of another SA with | ||||
possibly different Encryption Algorithm transform. | ||||
Figure 13: GSA_AUTH Request using PPK | To have an ability to provide forward access control the GCKS | |||
provides each GM with a personal key at the time of registration. | ||||
Besides several intermediate keys that form a key hierarchy and are | ||||
shared among several GMs are provided by the GCKS. | ||||
If GCKS has no such PPK and using PPK is not mandatory for it and | 2.1.1. Default Key Wrap Key | |||
N(NO_PPK_AUTH) is included, then the GCKS continues w/o PPK; in this | ||||
case no rekey is needed: | ||||
Initiator (Member) Responder (GCKS) | The default KWK (SK_w) is only used in the context of a single IKE | |||
-------------------- ------------------ | SA. Every IKE SA (unicast or group rekey) will have its own SK_w. | |||
<--- HDR, SK { IDr, AUTH, GSA, KD } | The SK_w is used with the algorithm from the Encryption Algorithm | |||
transform used for the SA the SK_w is used in. The size of SK_w MUST | ||||
be of the key size of this Encryption Algorithm transform (taking | ||||
into consideration the Key Length attribute for this transform if | ||||
present). | ||||
Figure 14: GSA_AUTH Response using no PPK | For the unicast IKE SA (used for the GM registration and optionally | |||
for GSA_INBAND_REKEY exchanges) the SK_w is computed as follows: | ||||
If GCKS has no such PPK and either N(NO_PPK_AUTH) is missing or using | SK_w = prf+(SK_d, "Key Wrap for G-IKEv2") | |||
PPK is mandatory for GCKS, the GCKS aborts the exchange: | ||||
Initiator (Member) Responder (GCKS) | where the string "Key Wrap for G-IKEv2" is 20 ASCII characters | |||
-------------------- ------------------ | without null termination. | |||
<--- HDR, SK { N(AUTHENTICATION_FAILED) } | ||||
Figure 15: GSA_AUTH Error Response | For the multicast rekey SA the SK_w is provided along with other SA | |||
keys as defined in Section 2.4. | ||||
Assuming GCKS has a proper PPK the GCKS continues with request to GM | 2.2. GCKS Key Management Semantics | |||
to immediately perform a rekey: | ||||
Initiator (Member) Responder (GCKS) | Wrapped Key Download method allows the GCKS to employ various key | |||
-------------------- ------------------ | management policies. | |||
<--- HDR, SK{IDr, AUTH, N(PPK_IDENTITY), | ||||
N(REKEY_IS_NEEDED) } | ||||
Figure 16: GSA_AUTH Response using PPK | o A simple key management policy - when the GCKS always sends group | |||
SA keys encrypted with the SK_w. | ||||
GM initiates CREATE_CHILD_SA to rekey IKE SA and then makes a new | o An LKH key management policy - when the GCKS provides each GM with | |||
registration request for the same group over the new IKE SA: | an individual key at the time of GM registration (encrypted with | |||
SK_w). Then the GCKS forms an hierarchy of keys so that the group | ||||
SA keys are encrypted with other keys which are encrypted with | ||||
other keys and so on, tracing back to the individual GMs' keys. | ||||
Initiator (Member) Responder (GCKS) | Other key policies may also be employed by the GCKS. | |||
-------------------- ------------------ | ||||
HDR, SK {SA, Ni, KEi } ---> | ||||
<--- HDR, SK {SA, Nr, KEr } | ||||
HDR, SK {IDg } ---> | ||||
<--- HDR, SK { GSA, KD } | ||||
Figure 17: Rekeying IKE SA followed by GSA_REGISTRATION Exchange | 2.2.1. Forward Access Control Requirements | |||
2. Header and Payload Formats | When group membership is altered using a group management algorithm | |||
new GSA TEKs (and their associated keys) are usually also needed. | ||||
New GSAs and keys ensure that members who were denied access can no | ||||
longer participate in the group. | ||||
Refer to IKEv2 [RFC7296] for existing payloads. Some payloads used | If forward access control is a desired property of the group, new GSA | |||
in G-IKEv2 exchanges are not aligned to 4-octet boundaries, which is | TEKs and the associated key packets in the KD payload MUST NOT be | |||
also the case for some IKEv2 payloads (see Section 3.2 of [RFC7296]). | included in a G-IKEv2 rekey message which changes group membership. | |||
This is required because the GSA TEK policy and the associated key | ||||
packets in the KD payload are not protected with the new KEK. A | ||||
second G-IKEv2 rekey message can deliver the new GSA TEKS and their | ||||
associated key packets because it will be protected with the new KEK, | ||||
and thus will not be visible to the members who were denied access. | ||||
2.1. The G-IKEv2 Header | If forward access control policy for the group includes keeping group | |||
policy changes from members that are denied access to the group, then | ||||
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 | ||||
for the group. Group members, which are denied access, will not be | ||||
able to access the new KEK, but will see the group policy since the | ||||
G-IKEv2 rekey message is protected under the current KEK. A | ||||
subsequent G-IKEv2 rekey message containing the changed group policy | ||||
and again changing the KEK allows complete forward access control. A | ||||
G-IKEv2 rekey message MUST NOT change the policy without creating a | ||||
new KEK. | ||||
G-IKEv2 uses the same IKE header format as specified in [RFC7296] | If other methods of using LKH or other group management algorithms | |||
section 3.1. | are added to G-IKEv2, those methods MAY remove the above restrictions | |||
requiring multiple G-IKEv2 rekey messages, providing those methods | ||||
specify how the forward access control policy is maintained within a | ||||
single G-IKEv2 rekey message. | ||||
Several new payload formats are required in the group security | 2.3. GM Key Management Semantics | |||
exchanges. | ||||
Next Payload Type Value | This specification defines a GM Key Management semantics in such a | |||
----------------- ----- | way, that it doesn't depend on the key management policy employed by | |||
Group Identification (IDg) 50 | the GCKS. This allows having all the complexity of key management in | |||
Group Security Association (GSA) 51 | the GCKS, which is free to implement various key management policies, | |||
Key Download (KD) 52 | such as direct transmitting of group SA keys or using some kind of | |||
key hierarchy (e.g. LKH). For all these policies the GMs' behavior | ||||
is the same. | ||||
New exchange types GSA_AUTH, GSA_REGISTRATION and GSA_REKEY are added | Each key is identified by a 32-bit number called Key ID. Zero Key ID | |||
to the IKEv2 [RFC7296] protocol. | has a special meaning - it always contains keying material from which | |||
the group SA keys are taken. | ||||
Exchange Type Value | All keys in G-IKEv2 are transmitted in encrypted form, which format | |||
-------------- ----- | is defined in Section 3.5.1. This format specifies a Key ID (ID of a | |||
GSA_AUTH 39 | key that is encrypted in this attribute) and a KWK ID (ID of a key | |||
GSA_REGISTRATION 40 | that was used to encrypt this attribute). Keys may be encrypted | |||
GSA_REKEY 41 | either with default KWK (SK_w) or with other keys, which the GM has | |||
GSA_INBAND_REKEY TBD | received in the KEY_WRAP_KEY attributes. If a key was encrypted with | |||
SK_w, then the KWK ID field is set to zero, otherwise the KWK ID | ||||
field identifies the key used for encryption. | ||||
Major Version is 2 and Minor Version is 0 as in IKEv2 [RFC7296]. IKE | When a GM receives a message from the GCKS installing new data | |||
SA Initiator's SPI, IKE SA Responder's SPI, Flags, Message ID, and | security or rekey SA, it will contain a KD payload with a SA_KEY | |||
Length are as specified in [RFC7296]. | attribute containing keying material for this SA. For a data | |||
security SA exactly one SA_KEY attribute will be present with both | ||||
Key ID and KWK ID fields set to zero. This means that the default | ||||
KWK (SK_w) should be used to extract this keying material. | ||||
2.2. Group Identification (IDg) Payload | For a multicast rekey SA multiple SA_KEY attributes may be present | |||
depending on the key management policy employed by the GCKS. If | ||||
multiple SA_KEY attributes are present then all of them MUST contain | ||||
the same keying material encrypted using different keys. The GM in | ||||
general is unaware of the GCKS's key management policy and can always | ||||
use the same procedure to get the keys. In particular, the GM's task | ||||
is to find a way to decrypt at least one of the SA_KEY attributes | ||||
using either the SK_w or the keys from the KEY_WRAP_KEY attributes | ||||
that are present in the same message or were receives in previous | ||||
messages. | ||||
The IDg Payload allows the group member to indicate which group it | We will use the term "Key Path" to describe an ordered sequence of | |||
wants to join. The payload is constructed by using the IKEv2 | keys where each subsequent key was used to encrypt the previous one. | |||
Identification Payload (section 3.5 of [RFC7296]). ID type ID_KEY_ID | The GM keeps its own Key Path (called working Key Path) in the memory | |||
MUST be supported. ID types ID_IPV4_ADDR, ID_FQDN, ID_RFC822_ADDR, | associated with each group it is registered to and update it when | |||
ID_IPV6_ADDR SHOULD be supported. ID types ID_DER_ASN1_DN and | needed. When the GSA_REKEY message is received the GM processes the | |||
ID_DER_ASN1_GN are not expected to be used. | received SA_KEY attributes one by one trying to construct a new key | |||
path that starts from this attributes and ends with any key in the | ||||
working Key Path or with the default KWK (SK_w). | ||||
2.3. Security Association - GM Supported Transforms (SAg) | In the simplest case the SA_KEY attribute is encrypted with SK_w so | |||
that the new Key Path is empty. If more complex key management | ||||
policies are used then the Key Path will contain intermediate keys, | ||||
which will be from the KEY_WRAP_KEY attributes received in the same | ||||
messages. If the GM is able to construct a new Key Path, then it is | ||||
able to decrypt the SA_KEY attribute and use its content to form the | ||||
SA keys. If it is unable to build a new Key Path, then in means that | ||||
the GM is excluded from the group. | ||||
The SAg payload declares which Transforms a GM is willing to accept. | Depending on the new Key Path the GM should do the following actions | |||
The payload is constructed using the format of the IKEv2 Security | to be prepared for future key updates: | |||
Association payload (section 3.3 of [RFC7296]). The Payload Type for | ||||
SAg is identical to the SA Payload Type (33). | ||||
2.4. Group Security Association Payload | o If the new Key Path is empty then no actions are needed. This may | |||
happen if no KEY_WRAP_KEY attributes from the received message | ||||
were used. | ||||
The Group Security Association payload is used by the GCKS to assert | o If the new Key Path is non-empty and it ends up with the default | |||
security attributes for both Rekey and Data-security SAs. | KWK (SK_w), then the whole new Key Path is stored by the GM as the | |||
GM's working Key Path. This situation may only happen at the time | ||||
the GM is registering to the group, when the GCKS is providing it | ||||
with its personal key and the other keys from the key tree that | ||||
are needed for this GM. These keys form an initial working Key | ||||
Path. | ||||
1 2 3 | o In all other cases the new Key Path will end up where some key | |||
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 | from the GM's working Key Path was used. In this case the new Key | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Path replaces the part of the GM's working Key Path from the | |||
| Next Payload |C| RESERVED | Payload Length | | beginning and up to (but not including) the key that the GM has | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | used to decrypt the last key in the new Key Path. | |||
Figure 18: GSA Payload Format | Appendix A contains an example of how this algorithm works in case of | |||
LKH key management policy. | ||||
The Security Association Payload fields are defined as follows: | 2.4. Group SA Keys | |||
o Next Payload (1 octet) -- Identifies the next payload type for the | Group SA keys are downloaded to GMs in the form of keying material. | |||
G-IKEv2 registration or the G-IKEv2 rekey message. | The keys are taken from this keying material as if they were | |||
concatenated to form it. | ||||
o Critical (1 bit) -- Set according to [RFC7296]. | For a data security SA the keys are taken in accordance to the third | |||
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 first | ||||
bits of the keying material and the integrity key (if any) MUST be | ||||
taken from the remaining bits. | ||||
o RESERVED (7 bits) -- Must be zero. | For a group rekey SA the following keys are taken from the keying | |||
material: | ||||
o Payload Length (2 octets) -- Is the octet length of the current | SK_e | SK_a | SK_w = KEYMAT | |||
payload including the generic header and all TEK and KEK policies. | ||||
2.4.1. GSA Policy | where SK_e and SK_a are the keys used for the Encryption Algorithm | |||
and the Integrity Algorithm transforms for the corresponding SA and | ||||
SK_w is a default KWK for this SA. Note, that SK_w is also used with | ||||
the Encryption Algorithm transform as well as SK_e. Note also, that | ||||
if AEAD algorithm is used for encryption, then SK_a key will not be | ||||
used (GM can use the formula above assuming the length of SK_a is | ||||
zero). | ||||
Following the GSA generic payload header are GSA policies for group | 3. Header and Payload Formats | |||
rekeying (KEK), data traffic SAs (TEK) and/or Group Associated Policy | ||||
(GAP). There may be zero or one GSA KEK policy, zero or one GAP | ||||
policies, and zero or more GSA TEK policies, where either one GSA KEK | ||||
or GSA TEK payload MUST be present. | ||||
This latitude allows various group policies to be accommodated. For | The G-IKEv2 is an IKEv2 extension and thus inherits its wire format | |||
example if the group policy does not require the use of a Rekey SA, | for data structures. However, the processing of some payloads are | |||
the GCKS would not need to send a GSA KEK attribute to the group | different and several new payloads are defined: Group Identification | |||
member since all SA updates would be performed using the Registration | (IDg), Group Security Association (GSA) Key Download (KD). New | |||
SA. Alternatively, group policy might use a Rekey SA but choose to | exchange types GSA_AUTH, GSA_REGISTRATION, GSA_REKEY and | |||
download a KEK to the group member only as part of the Registration | GSA_INBAND_REKEY are also added. | |||
SA. Therefore, the GSA KEK policy would not be necessary as part of | ||||
the GSA_REKEY message. | ||||
Specifying multiple GSA TEKs allows multiple related data streams | This section describes new payloads and the differences in processing | |||
(e.g., video, audio, and text) to be associated with a session, but | of existing IKEv2 payloads. | |||
each protected with an individual security association policy. | ||||
A GAP payload allows for the distribution of group-wise policy, such | 3.1. G-IKEv2 Header | |||
as instructions for when to activate and de-activate SAs. | ||||
Policies are distributed in substructures to the GSA payload, and | G-IKEv2 uses the same IKE header format as specified in [RFC7296] | |||
include the following header. | section 3.1. Major Version is 2 and Minor Version is 0 as in IKEv2. | |||
IKE SA Initiator's SPI, IKE SA Responder's SPI, Flags, Message ID, | ||||
and Length are as specified in [RFC7296]. | ||||
1 2 3 | 3.2. Group Identification Payload | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type | RESERVED | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 19: GSA Policy Generic Header Format | The Group Identification (IDg) payload allows the group member to | |||
indicate which group it wants to join. The payload is constructed by | ||||
using the IKEv2 Identification Payload (section 3.5 of [RFC7296]). | ||||
ID type ID_KEY_ID MUST be supported. ID types ID_IPV4_ADDR, ID_FQDN, | ||||
ID_RFC822_ADDR, ID_IPV6_ADDR SHOULD be supported. ID types | ||||
ID_DER_ASN1_DN and ID_DER_ASN1_GN are not expected to be used. The | ||||
Payload Type for the Group Identification payload is fifty (50). | ||||
The payload fields are defined as follows: | 3.3. Security Association - GM Supported Transforms Payload | |||
o Type (1 octet) -- Identifies the substructure type. In the | The Security Association - GM Supported Transforms Payload (SAg) | |||
following table the terms Reserved, Unassigned, and Private Use | payload declares which Transforms a GM is willing to accept. The | |||
are to be applied as defined in [RFC8126]. The registration | payload is constructed using the format of the IKEv2 Security | |||
procedure is Expert Review. | Association payload (section 3.3 of [RFC7296]). The Payload Type for | |||
SAg is identical to the SA Payload Type - thirty-three (33). | ||||
Type Value | 3.4. Group Security Association Payload | |||
-------- ----- | ||||
Reserved 0 | ||||
KEK 1 | ||||
GAP 2 | ||||
TEK 3 | ||||
Unassigned 4-127 | ||||
Private Use 128-255 | ||||
o RESERVED (1 octet) -- Unused, set to zero. | The Group Security Association (GSA) payload is used by the GCKS to | |||
assert security attributes for both Rekey and Data-security SAs. The | ||||
Payload Type for the Group Security Association payload is fifty-one | ||||
(51). | ||||
o Length (2 octets) -- Length in octets of the substructure, | 1 2 3 | |||
including its header. | 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 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Group Policies> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
2.4.2. KEK Policy | Figure 13: GSA Payload Format | |||
The GSA KEK policy contains security attributes for the KEK method | The Security Association Payload fields are defined as follows: | |||
for a group and parameters specific to the G-IKEv2 registration | ||||
operation. The source and destination traffic selectors describe the | ||||
network identities used for the rekey messages. | ||||
1 2 3 | o Next Payload, C, RESERVED, Payload Length fields comprise the | |||
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 | IKEv2 Generic Payload Header and are defined in Section 3.2. of | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | [RFC7296]. | |||
| Type = 1 | RESERVED | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ SPI ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Source Traffic Selector> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Destination Traffic Selector> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Transform Substructure List> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ KEK Attributes ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 20: KEK Policy Format | o Group Policies (variable) - A set of group policies for the group. | |||
The GSA KEK Payload fields are defined as follows: | 3.4.1. Group Policies | |||
o Type = 1 (1 octet) -- Identifies the GSA payload type as KEK in | Croup policies are comprised of two types of policy - Group SA (GSA) | |||
the G-IKEv2 registration or the G-IKEv2 rekey message. | policy and Group Associated (GA) policy. GSA policy defines | |||
parameters for the Security Association for the group. Depending on | ||||
the employed security protocol GSA policies may further be classified | ||||
as rekeying SA policy (GSA KEK) and data traffic SA policy (GSA TEK). | ||||
GSA payload may contain zero or one GSA KEK policy, zero or more GSA | ||||
TEK policies, and zero or one GA policy, where either one GSA KEK or | ||||
GSA TEK policy MUST be present. | ||||
o RESERVED (1 octet) -- Must be zero. | This latitude allows various group policies to be accommodated. For | |||
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 | ||||
since all SA updates would be performed using the Registration SA. | ||||
Alternatively, group policy might use a Rekey SA but choose to | ||||
download a KEK to the group member only as part of the Registration | ||||
SA. Therefore, the GSA KEK policy would not be necessary as part of | ||||
the GSA_REKEY message. | ||||
o Length (2 octets) -- Length of this structure including KEK | Specifying multiple GSA TEKs allows multiple related data streams | |||
attributes. | (e.g., video, audio, and text) to be associated with a session, but | |||
each protected with an individual security association policy. | ||||
o SPI (16 octets) -- Security Parameter Index for the rekey message. | A GAP allows for the distribution of group-wise policy, such as | |||
The SPI must be the IKEv2 Header SPI pair where the first 8 octets | instructions for when to activate and de-activate SAs. | |||
become the "Initiator's SPI" field in the G-IKEv2 rekey message | ||||
IKEv2 HDR, and the second 8 octets become the "Responder's SPI" in | ||||
the same HDR. As described above, these SPIs are assigned by the | ||||
GCKS. When selecting SPI the GCKS MUST make sure that the sole | ||||
first 8 octets (corresponding to "Initiator's SPI" field in the | ||||
IKEv2 header) uniquely identify the Rekey SA. | ||||
o Source & Destination Traffic Selectors - Substructures describing | Policies are distributed in substructures to the GSA payload. The | |||
the source and destination of the network identities. These | format of the substructures is defined below in Section 3.4.2 (for | |||
identities refer to the source and destination of the next KEK | GSA policy) and in Section 3.4.3 (for GA policy). The first octet of | |||
rekey SA. Defined format and values are specified by IKEv2 | the substructure unambiguously determines its type - it is zero for | |||
[RFC7296], section 3.13.1. | GAP and non-zero (actually, it is the security protocol ID) for GSA | |||
policies. | ||||
o Transform Substructure List -- A list of Transform Substructures | 3.4.2. Group Security Association Policy Substructure | |||
specifies the transform information. The format is defined in | ||||
IKEv2 [RFC7296], section 3.3.2, and values are described in the | ||||
IKEv2 registries [IKEV2-IANA]. Valid Transform Types are ENCR, | ||||
INTEG. The Last Substruc value in each Transform Substructure | ||||
will be set to 3 except for the last one in the list, which is set | ||||
to 0. | ||||
o KEK Attributes -- Contains KEK policy attributes associated with | The GSA policy substructure contains parameters for the SA used with | |||
the group. The following sections describe the possible | this group. Depending on the security protocol the SA is either a | |||
attributes. Any or all attributes may be optional, depending on | rekey SA or a data security SA (ESP and AH). It is NOT RECOMMENDED | |||
the group policy. | that the GCKS distribute both ESP and AH policies for the same set of | |||
Traffic Selectors. | ||||
2.4.2.1. KEK Attributes | 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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Protocol | SPI Size | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ SPI ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ Source Traffic Selector ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ Destination Traffic Selector ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <GSA Transforms> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <GSA Attributes> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
The following attributes may be present in a GSA KEK policy. The | Figure 14: GSA Policy Substructure Format | |||
attributes must follow the format defined in the IKEv2 [RFC7296] | ||||
section 3.3.5. In the table, attributes that are defined as TV are | ||||
marked as Basic (B); attributes that are defined as TLV are marked as | ||||
Variable (V). The terms Reserved, Unassigned, and Private Use are to | ||||
be applied as defined in [RFC8126]. The registration procedure is | ||||
Expert Review. | ||||
KEK Attributes Value Type Mandatory | The GSA policy fields are defined as follows: | |||
-------------- ----- ---- --------- | ||||
Reserved 0 | ||||
KEK_MANAGEMENT_ALGORITHM 1 B N | ||||
Reserved 2 | ||||
Reserved 3 | ||||
KEK_KEY_LIFETIME 4 V Y | ||||
Reserved 5 | ||||
KEK_AUTH_METHOD 6 B Y | ||||
KEK_AUTH_HASH 7 B N | ||||
KEK_MESSAGE_ID 8 V Y (*) | ||||
KEK_NEXT_SPI 9 V N | ||||
Unassigned 10-16383 | ||||
Private Use 16384-32767 | ||||
(*) the KEK_MESSAGE_ID MUST be included in a G-IKEv2 registration | o Protocol (1 octet) - Identifies the security protocol for this | |||
message and MUST NOT be included in rekey messages. | group SA. The values are defined in the IKEv2 Security Protocol | |||
Identifiers in [IKEV2-IANA]. The valid values for this field are: | ||||
<TBA> (GIKE_REKEY) for GSA KEK policy and 2 (AH) or 3 (ESP) for | ||||
GSA TEK policy. | ||||
The following attributes may only be included in a G-IKEv2 | o SPI Size (1 octet) - Size of Security Parameter Index (SPI) for | |||
registration message: KEK_MANAGEMENT_ALGORITHM, KEK_MESSAGE_ID. | the group SA. SPI size depends on the SA protocol. For | |||
GIKE_REKEY it is 16 octets, while for AH and ESP it is 4 octets. | ||||
2.4.2.1.1. KEK_MANAGEMENT_ALGORITHM | o Length (2 octets, unsigned integer) - Length of this substructure | |||
including the header. | ||||
The KEK_MANAGEMENT_ALGORITHM attribute specifies the group KEK | o SPI (variable) - Security Parameter Index for the group SA. The | |||
management algorithm used to provide forward or backward access | size of this field is determined by the SPI Size field. As | |||
control (i.e., used to exclude group members). Defined values are | described above, these SPIs are assigned by the GCKS. In case of | |||
specified in the following table. The terms Reserved, Unassigned, | GIKE_REKEY the SPI must be the IKEv2 Header SPI pair where the | |||
and Private Use are to be applied as defined in [RFC8126]. The | first 8 octets become the "Initiator's SPI" field in the G-IKEv2 | |||
registration procedure is Expert Review. | rekey message IKEv2 HDR, and the second 8 octets become the | |||
"Responder's SPI" in the same HDR. When selecting SPI the GCKS | ||||
MUST make sure that the sole first 8 octets (corresponding to | ||||
"Initiator's SPI" field in the IKEv2 header) uniquely identify the | ||||
Rekey SA. | ||||
KEK Management Type Value | o Source & Destination Traffic Selectors - (variable) - | |||
------------------- ----- | Substructures describing the source and destination of the network | |||
Reserved 0 | identities. The format for these substructures is defined in | |||
LKH 1 | IKEv2 [RFC7296], section 3.13.1. For the group rekey SA (protocol | |||
Unassigned 2-16383 | GIKE_REKEY) the destination traffic selectors MUST define a single | |||
Private Use 16384-32767 | IP address, IP protocol and port the GSA_REKEY messages will be | |||
destined to. The source traffic selector in this case MUST either | ||||
define a single IP address, IP protocol and port the GSA_REKEY | ||||
messages will be originated from or be a wildcard selector. For | ||||
the data security (AH and ESP) SAs the traffic selectors instead | ||||
specify characteristics of the traffic to be protected by the | ||||
corresponding SA. | ||||
2.4.2.1.2. KEK_KEY_LIFETIME | o GSA Transforms (variable) - A list of Transform Substructures | |||
specifies the policy information for the group SA. The format is | ||||
defined in IKEv2 [RFC7296], section 3.3.2. The Last Substruc | ||||
value in each Transform Substructure will be set to 3 except for | ||||
the last one in the list, which is set to 0. Section 3.4.2.1 | ||||
describes using IKEv2 transforms in GSA policy substructure. | ||||
The KEK_KEY_LIFETIME attribute specifies the maximum time for which | o GSA Attributes (variable) - Contains policy attributes associated | |||
the KEK is valid. The GCKS may refresh the KEK at any time before | with the group SA. The following sections describe the possible | |||
the end of the valid period. The value is a four (4) octet number | attributes. Any or all attributes may be optional, depending on | |||
defining a valid time period in seconds. | the group SA protocol and the group policy. Section 3.4.2.2 | |||
defines attributes used in GSA policy. | ||||
2.4.2.1.3. KEK_AUTH_METHOD | 3.4.2.1. GSA Transforms | |||
The KEK_AUTH_METHOD attribute specifies the method of authentication | GSA policy is defined by means of transforms in GSA policy | |||
used. This value is from the IKEv2 Authentication Method registry | substructure. For this purpose the transforms defined in [RFC7296] | |||
[IKEV2-IANA]. The method must either specify using some public key | are used. In addition, new transform types are defined for using in | |||
signatures or Shared Key Message Integrity Code. Other | G-IKEv2: Authentication Method (AUTH) and Group Key Management Method | |||
authentication methods MUST NOT be used. | (GKM), see Section 6. | |||
2.4.2.1.4. KEK_AUTH_HASH | Valid Transform Types depend on group SA protocol and are summarized | |||
in the table below. | ||||
The KEK_AUTH_HASH attribute specifies the hash algorithm used to | Protocol Mandatory Types Optional Types | |||
generate the AUTH key to authenticate GSA_REKEY messages. Hash | ---------------------------------------------------------- | |||
algorithms are defined in IANA registry IKEv2 Hash Algorithms | GIKE_REKEY ENCR, INTEG*, PRF, AUTH, GKM | |||
[IKEV2-IANA]. | ESP ENCR INTEG | |||
AH INTEG | ||||
This attribute SHOULD NOT be sent if the KEK_AUTH_METHOD implies a | Figure 15: Valid Transform Types | |||
particular hash algorithm (e.g., for DSA-based algorithms). | ||||
Furthermore, it is not necessary for the GCKS to send it if the GM is | ||||
known to support the algorithm because it declared it in a | ||||
SIGNATURE_HASH_ALGORITHMS notification during registration (see | ||||
[RFC7427]). | ||||
2.4.2.1.5. KEK_MESSAGE_ID | (*) If AEAD encryption algorithm is used, then INTEG transform MUST | |||
NOT be specified, otherwise it MUST be specified. | ||||
The KEK_MESSAGE_ID attribute defines the initial Message ID to be | 3.4.2.1.1. Authentication Method Transform | |||
used by the GCKS in the GSA_REKEY messages. The Message ID is a 4 | ||||
octet unsigned integer in network byte order. | ||||
2.4.2.1.6. KEK_NEXT_SPI | The Authentication Method (AUTH) transform is used in the GIKE_REKEY | |||
policy to convey information of how GCKS will authenticate the | ||||
GSA_REKEY messages. This values are from the IKEv2 Authentication | ||||
Method registry [IKEV2-IANA]. Note, that this registry defines only | ||||
256 possible values, so even that Transform ID field in the Transform | ||||
substructure allows for 65536 possible values, in case of the | ||||
Authentication Method transform the values 257-65535 MUST NOT be | ||||
used. | ||||
The KEK_NEXT_SPI attribute may optionally be included by GCKS in | Among the currently defined authentication methods in the IKEv2 | |||
GSA_REKEY message, indicating what IKE SPIs are intended be used for | Authentication Method registry, only the following are allowed to be | |||
the next rekey SA. The attribute data MUST be 16 octets in length | used in the Authentication Method transform: Shared Key Message | |||
specifying the pair of IKE SPIs as they appear in the IKE header. | Integrity Code, NULL Authentication and Digital Signature. Other | |||
Multiple attributes of this type MAY be included, meaning that any of | currently defined authentication methods MUST NOT be used. The | |||
the supplied SPIs can be used for the next rekey. | following semantics is associated with each of the allowed methods. | |||
The GM may save these values and if later the GM starts receiving IKE | Shared Key Message Integrity Code - GCKS will authenticates the | |||
messages with one of these SPIs without seeing a rekey message over | GSA_REKEY messages by means of shared secret. In this case the | |||
the current rekey SA, this may be used as an indication, that the | GCKS MUST include the AUTH_KEY attribute containing the shared key | |||
rekey message was lost on its way to this GM. In this case the GM | into the KD payload at the time the GM is registered to the group. | |||
SHOULD re-register to the group. | ||||
Note, that this method of detecting missed rekeys can only be used by | NULL Authentication - No additional authentication of the | |||
passive GMs, i.e. those, that only listen and don't send data. It's | GSA_REKEY messages will be provided by the GCKS (besides the | |||
also no point to include this attribute in the GSA_INBAND_REKEY | ability for the GMs to correctly decrypt them and verify their | |||
messages, since they use reliable transport. Note also, that the | ICV). In this case the GCKS MUST NOT include the AUTH_KEY | |||
GCKS is free to forget its promises and not to use the SPIs it sent | attribute into the KD payload. | |||
in the KEK_NEXT_SPI attributes before (e.g. in case of GCKS reboot), | ||||
so the GM must only treat these information as a "best effort" made | ||||
by GCKS to prepare for future rekeys. | ||||
2.4.3. GSA TEK Policy | Digital Signature - Digital signatures will be used by the GCKS to | |||
authenticate the GSA_REKEY messages. In this case the GCKS MUST | ||||
include the AUTH_KEY attribute containing the public key into the | ||||
KD payload at the time the GM is registered to the group. To | ||||
specify the details of the signature algorithm a new attribute | ||||
Algorithm Identifier (<TBA by IANA>) is defined. This attribute | ||||
contains DER-encoded ASN.1 object AlgorithmIdentifier, which would | ||||
specify the signature algorithm and the hash function that the | ||||
GCKS will use for authentication. The AlgorithmIdentifier object | ||||
is defined in section 4.1.1.2 of [RFC5280], see also [RFC7427] for | ||||
the list of common AlgorithmIdentifier values used in IKEv2. In | ||||
case of using digital signature the GCKS MUST include the | ||||
Algorithm Identifier attribute in the Authentication Method | ||||
transform. | ||||
The GSA TEK policy contains security attributes for a single TEK | The type of the Authentication Method Transform is <TBA by IANA>. | |||
associated with a group. | ||||
1 2 3 | 3.4.2.1.2. Group Key Management Method Transform | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Type = 3 | RESERVED | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Protocol-ID | TEK Protocol-Specific Payload | | ||||
+-+-+-+-+-+-+-+-+ ~ | ||||
~ | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 21: TEK Policy Generic Header Format | The Group Key Management Method (GKM) transform is used in the | |||
GIKE_REKEY policy to convey information of how GCKS will manage the | ||||
group keys to provide forward and backward access control (i.e., used | ||||
to exclude group members). Possible key management methods are | ||||
defined in a new IKEv2 registry "Transform Type <TBA> - Group Key | ||||
Management Methods" (see Section 6). This document defines one | ||||
values for this registry: | ||||
The GSA TEK Payload fields are defined as follows: | Wrapped Key Download (<TBA by IANA>) - Keys are downloaded by GCKS | |||
to the GMs in encrypted form. This algorithm may provide forward | ||||
and backward access control if some form of key hierarchy is used | ||||
and each GM is provided with a personal key at the time of | ||||
registration. Otherwise no access control is provided. | ||||
o Type = 3 (1 octet) -- Identifies the GSA payload type as TEK in | The type of the Group Key Management Method transform is <TBA by | |||
the G-IKEv2 registration or the G-IKEv2 rekey message. | IANA>. | |||
o RESERVED (1 octet) -- Must be zero. | 3.4.2.2. GSA Attributes | |||
o Length (2 octets) -- Length of this structure, including the TEK | GSA attributes are generally used to provide GMs with additional | |||
Protocol-Specific Payload. | parameters for the GSA policy. Unlike security parameters | |||
distributed via transforms, which are expected not to change over | ||||
time (unless policy changes), the parameters distributed via GSA | ||||
attributes may depend on the time the distribution takes place, on | ||||
the existence of others group SAs or on other conditions. | ||||
o Protocol-ID (1 octet) -- Value specifying the Security Protocol. | This document creates a new IKEv2 IANA registry for the types of the | |||
The following table defines values for the Security Protocol. | GSA attributes which is initially filled as described in Section 6. | |||
Support for the GSA_PROTO_IPSEC_AH GSA TEK is OPTIONAL. The terms | In particular, the following attributes are initially added. | |||
Reserved, Unassigned, and Private Use are to be applied as defined | ||||
in [RFC8126]. The registration procedure is Expert Review. | ||||
Protocol ID Value | GSA Attributes Value Type Multiple Used In | |||
----------- ----- | --------------------------------------------------------------------- | |||
Reserved 0 | Reserved 0 | |||
GSA_PROTO_IPSEC_ESP 1 | GSA_KEY_LIFETIME 1 V N (GIKE_REKEY, AH, ESP) | |||
GSA_PROTO_IPSEC_AH 2 | GSA_INITIAL_MESSAGE_ID 2 V N (GIKE_REKEY) | |||
Unassigned 3-127 | GSA_NEXT_SPI 3 V Y (GIKE_REKEY, AH, ESP) | |||
Private Use 128-255 | The attributes must follow the format defined in the IKEv2 [RFC7296] | |||
section 3.3.5. In the table, attributes that are defined as TV are | ||||
marked as Basic (B); attributes that are defined as TLV are marked as | ||||
Variable (V). | ||||
o TEK Protocol-Specific Payload (variable) -- Payload which | 3.4.2.2.1. GSA_KEY_LIFETIME Attribute | |||
describes the attributes specific for the Protocol-ID. | ||||
2.4.3.1. TEK ESP and AH Protocol-Specific Policy | The GSA_KEY_LIFETIME attribute specifies the maximum time for which | |||
the group SA is valid. The value is a 4 octet number defining a | ||||
valid time period in seconds. A single attribute of this type MUST | ||||
be included into any GSA policy substructure. | ||||
The TEK Protocol-Specific policy contains two traffic selectors one | When the lifetime expires, the group security association and all | |||
for the source and one for the destination of the protected traffic, | associated keys MUST be deleted. The GCKS may delete the SA at any | |||
SPI, Transforms, and Attributes. | time before the end of the valid period. | |||
The TEK Protocol-Specific policy for ESP and AH is as follows: | 3.4.2.2.2. GSA_INITIAL_MESSAGE_ID Attribute | |||
1 2 3 | The GSA_INITIAL_MESSAGE_ID attribute defines the initial Message ID | |||
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 | to be used by the GCKS in the GSA_REKEY messages. The Message ID is | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | a 4 octet unsigned integer in network byte order. | |||
| SPI | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Source Traffic Selector> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Destination Traffic Selector> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Transform Substructure List> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ TEK Attributes ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 22: AH and ESP TEK Policy Format | A single attribute of this type MUST be included into the GSA KEK | |||
policy substructure if the initial Message ID is non-zero. Note, | ||||
that it is always the case if GMs join the group after some multicast | ||||
rekey operations have already taken place, so in these cases this | ||||
attribute will be included into the GSA policy at the time of GMs' | ||||
registration. | ||||
The GSA TEK Policy fields are defined as follows: | 3.4.2.2.3. GSA_NEXT_SPI Attribute | |||
o SPI (4 octets) -- Security Parameter Index. | The optional GSA_NEXT_SPI attribute contains SPI that the GCKS | |||
reserved for the next group SA replacing this group SA. The length | ||||
of the attribute data is determined by the SPI Size field in the GSA | ||||
Policy substructure the attribute resides in (see Section 3.4.2), and | ||||
the attribute data contains SPI as it would appear on the network. | ||||
Multiple attributes of this type MAY be included, meaning that any of | ||||
the supplied SPIs can be used in the replacement group SA. | ||||
o Source & Destination Traffic Selectors - The traffic selectors | The GM may store these values and if later the GM starts receiving | |||
describe the source and the destination of the protected traffic. | group SA messages with one of these SPIs without seeing a rekey | |||
The format and values are defined in IKEv2 [RFC7296], section | message over the current rekey SA, this may be used as an indication, | |||
3.13.1. | that the rekey message got lost on its way to this GM. In this case | |||
the GM SHOULD re-register to the group. | ||||
o Transform Substructure List -- A list of Transform Substructures | Note, that this method of detecting lost rekey messages can only be | |||
specifies the transform information. The format is defined in | used by passive GMs, i.e. those, that only listen and don't send | |||
IKEv2 [RFC7296], section 3.3.2, and values are described in the | data. There is also no point to include this attribute in the | |||
IKEv2 registries [IKEV2-IANA]. Valid Transform Types for ESP are | GSA_INBAND_REKEY messages, since they use reliable transport. Note | |||
ENCR, INTEG, and ESN. Valid Transform Types for AH are INTEG and | also, that the GCKS is free to forget its promises and not to use the | |||
ESN. The Last Substruc value in each Transform Substructure will | SPIs it sent in the GSA_NEXT_SPI attributes before (e.g. in case of | |||
be set to 3 except for the last one in the list, which is set to | the GCKS reboot), so the GM must only treat these information as a | |||
0. A Transform Substructure with attributes (e.g., the ENCR Key | "best effort" made by GCKS to prepare for future rekeys. | |||
Length), they are included within the Transform Substructure as | ||||
usual. | ||||
o TEK Attributes -- Contains the TEK policy attributes associated | 3.4.3. Group Associated Policy Substructure | |||
with the group, in the format defined in Section 3.3.5 of | ||||
[RFC7296]. All attributes are optional, depending on the group | ||||
policy. | ||||
Attribute Types are as follows. The terms Reserved, Unassigned, and | Group specific policy that does not belong to any SA policy can be | |||
Private Use are to be applied as defined in [RFC8126]. The | distributed to all group member using Group Associated Policy (GAP) | |||
registration procedure is Expert Review. | substructure. | |||
TEK Attributes Value Type Mandatory | The GAP substructure is defined as follows: | |||
-------------- ----- ---- --------- | ||||
Reserved 0 | ||||
TEK_KEY_LIFETIME 1 V N | ||||
TEK_MODE 2 B Y | ||||
TEK_REKEY_SPI 3 V N | ||||
TEK_NEXT_SPI 4 V N | ||||
Unassigned 5-16383 | ||||
Private Use 16384-32767 | ||||
It is NOT RECOMMENDED that the GCKS distribute both ESP and AH | 1 2 3 | |||
Protocol-Specific Policies for the same set of Traffic Selectors. | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| ZERO | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <GAP Attributes> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
2.4.3.1.1. TEK_KEY_LIFETIME | Figure 16: GAP Substructure Format | |||
The TEK_KEY_LIFETIME attribute specifies the maximum time for which | The GAP substructure fields are defined as follows: | |||
the TEK is valid. When the TEK expires, the AH or ESP security | ||||
association and all keys downloaded under the security association | ||||
are discarded. The GCKS may refresh the TEK at any time before the | ||||
end of the valid period. | ||||
The value is a four (4) octet number defining a valid time period in | o ZERO (2 octets) - MUST be zero. | |||
seconds. If unspecified the default value of 28800 seconds (8 hours) | ||||
shall be assumed. | ||||
2.4.3.1.2. TEK_MODE | o Length (2 octets, unsigned integer) - Length of this substructure | |||
including the header. | ||||
The value of 0 is used for tunnel mode and 1 for transport mode. In | o GAP Attributes (variable) - Contains policy attributes associated | |||
the absence of this attribute tunnel mode will be used. | with no specific SA. The following sections describe the possible | |||
attributes. Any or all attributes may be optional, depending on | ||||
the group policy. | ||||
2.4.3.1.3. TEK_REKEY_SPI | This document creates a new IKEv2 IANA registry for the types of the | |||
GAP attributes which is initially filled as described in Section 6. | ||||
In particular, the following attributes are initially added. | ||||
This attribute contains an SPI for the SA that is being rekeyed. The | GAP Attributes Value Type Multiple | |||
size of SPI depends on the protocol, for ESP and AH it is 4 octets, | ---------------------------------------------------- | |||
so the size of the data MUST be 4 octets for AH and ESP. | Reserved 0 | |||
GAP_ATD 1 B N | ||||
GAP_DTD 2 B N | ||||
GAP_SID_BITS 3 B N | ||||
If this attribute is included in the rekey message, the GM SHOULD | The attributes must follow the format defined in the IKEv2 [RFC7296] | |||
delete the SA corresponding to this SPI once the new SA is installed | section 3.3.5. In the table, attributes that are defined as TV are | |||
and regardless of the expiration time of the SA to be deleted (but | marked as Basic (B); attributes that are defined as TLV are marked as | |||
after waiting DEACTIVATION_TIME_DELAY time period). | Variable (V). | |||
2.4.3.1.4. TEK_NEXT_SPI | 3.4.3.1. GAP_ATD And GAP_DTD Attributes | |||
This attribute contains an SPI that the GCKS reserved for the next | Section 4.2.1 of [RFC5374] specifies a key rollover method that | |||
rekey. The size of SPI depends on the protocol, for ESP and AH it is | requires two values be provided to group members - Activation Time | |||
4 octets, so the size of the data MUST be 4 octets for AH and ESP. | Delay (ATD) and Deactivation Time Delay (DTD). | |||
Multiple attributes of this type MAY be included, which means that | ||||
any of the provided SPIs can be used in the next rekey. | ||||
The GM may save these values and if later the GM starts receiving | The GAP_ATD attribute allows a GCKS to set the Activation Time Delay | |||
IPsec messages with one of these SPIs without seeing a rekey message | for data security SAs of the group. The ATD defines how long active | |||
for it, this may be used as an indication, that the rekey message was | members of the group (those who sends traffic) should wait after | |||
lost on its way to this GM. In this case the GM SHOULD re-register | receiving new SAs before staring sending traffic over them. Note, | |||
to the group. | that to achieve smooth rollover passive members of the group should | |||
activate the SAs immediately once they receive them. | ||||
Note, that this method of detecting missed rekey messages can only be | The GAP_DTD attribute allows the GCKS to set the Deactivation Time | |||
used by passive GMs, i.e. those, that only listen and don't send | Delay for previously distributed SAs. The DTD defines how long after | |||
data. It's also no point to include this attribute in the | receiving a request to delete data security SAs passive group members | |||
GSA_INBAND_REKEY messages, since they use reliable transport. Note | should wait before actually deleting them. Note that active members | |||
also, that the GCKS is free to forget its promises and not to use the | of the group should stop sending traffic over these old SAs once new | |||
SPIs it sent in the TEK_NEXT_SPI attributes before (e.g. in case of | replacement SAs are activated (after time specified in the GAP_ATD | |||
GCKS reboot), so the GM must only treat these information as a "best | attribute). | |||
effort" made by GCKS to prepare for future rekeys. | ||||
2.4.4. GSA Group Associated Policy | The GAP_ATD and GAP_DTD attributes contain 16 bit unsigned integer in | |||
a network byte order, specifying the delay in seconds. These | ||||
attributes are OPTIONAL. If one of them or both are not sent by the | ||||
GCKS, the GMs should use default values for activation and | ||||
deactivation time delays. | ||||
Group specific policy that does not belong to rekey policy (GSA KEK) | 3.4.3.2. GAP_SID_BITS Attribute | |||
or traffic encryption policy (GSA TEK) can be distributed to all | ||||
group member using GSA GAP (Group Associated Policy). | ||||
The GSA GAP payload is defined as follows: | The GAP_SID_BITS attribute declares how many bits of the cipher nonce | |||
are taken to represent an SID value. The bits are applied as the | ||||
most significant bits of the IV, as shown in Figure 1 of [RFC6054] | ||||
and specified in Section 1.4.6.2. Guidance for a GCKS choosing the | ||||
NUMBER_OF_SID_BITS is provided in Section 3 of [RFC6054]. This value | ||||
is applied to each SID value distributed in the KD payload. | ||||
1 2 3 | The GCKS MUST include this attribute if there are more than one | |||
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 | sender in the group and any of the data security SAs use counter- | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | based cipher mode. The number of SID bits is represented as 16 bit | |||
| Type = 2 | RESERVED | Length | | unsigned integer in network byte order. | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ Group Associated Policy Attributes ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 23: GAP Policy Format | 3.5. Key Download Payload | |||
The GSA GAP payload fields are defined as follows: | The Key Download (KD) payload contains the group keys for the group | |||
specified in the GSA Payload. The Payload Type for the Key Download | ||||
payload is fifty-two (52). | ||||
o Type = 2 (1 octet) -- Identifies the GSA payload type as GAP in | 1 2 3 | |||
the G-IKEv2 registration or the G-IKEv2 rekey message. | 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 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Key Packets> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
o RESERVED (1 octet) -- Must be zero. | Figure 17: Key Download Payload Format | |||
o Length (2 octets) -- Length of this structure, including the GSA | The Key Download payload fields are defined as follows: | |||
GAP header and Attributes. | ||||
o Group Associated Policy Attributes (variable) -- Contains | o Next Payload, C, RESERVED, Payload Length fields comprise the | |||
attributes following the format defined in Section 3.3.5 of | IKEv2 Generic Payload Header and are defined in Section 3.2. of | |||
[RFC7296]. | [RFC7296]. | |||
Attribute Types are as follows. The terms Reserved, Unassigned, and | o Key Packets (variable) - Contains Group Key Packet and Member Key | |||
Private Use are to be applied as defined in [RFC8126]. The | Packet substructures. Each Key Packet contains keys for a single | |||
registration procedure is Expert Review. | group rekey or data security SA or a keys and security parameters | |||
for a GM. | ||||
Attribute Type Value Type | ||||
-------------- ----- ---- | ||||
Reserved 0 | ||||
ACTIVATION_TIME_DELAY 1 B | ||||
DEACTIVATION_TIME_DELAY 2 B | ||||
Unassigned 3-16383 | ||||
Private Use 16384-32767 | ||||
2.4.4.1. ACTIVATION_TIME_DELAY/DEACTIVATION_TIME_DELAY | Two types of Key Packets are used - Group Key Packet and Member Key | |||
Packet. | ||||
Section 4.2.1 of [RFC5374] specifies a key rollover method that | 3.5.1. Wrapped Key Format | |||
requires two values be provided to group members. The | ||||
ACTIVATION_TIME_DELAY attribute allows a GCKS to set the Activation | ||||
Time Delay (ATD) for SAs generated from TEKs. The ATD defines how | ||||
long after receiving new SAs that they are to be activated by the GM. | ||||
The ATD value is in seconds. | ||||
The DEACTIVATION_TIME_DELAY allows the GCKS to set the Deactivation | The symmetric keys in G-IKEv2 are never sent in clear. They are | |||
Time Delay (DTD) for previously distributed SAs. The DTD defines how | always encrypted with other keys using the format called Wrapped Key | |||
long after receiving new SAs it should deactivate SAs that are | that is shown below (Figure 18). | |||
destroyed by the rekey event. The value is in seconds. | ||||
The values of ATD and DTD are independent. However, the DTD value | The keys are encrypted using algorithm that is used to encrypt the | |||
should be larger, which allows new SAs to be activated before older | message the keys are sent in. It means, that in case of unicast IKE | |||
SAs are deactivated. Such a policy ensures that protected group | SA (used for GMs registration and rekeying using GSA_INBAND_REKEY) | |||
traffic will always flow without interruption. | the encryption algorithm will be the one negotiated during the SA | |||
establishment, while for the GSA_REKEY messages the algorithm will be | ||||
provided by the GCKS in the Encryption Algorithm transform in the GSA | ||||
payload when this multicast SA was being established (not in the same | ||||
GSA_REKEY message). | ||||
2.5. Key Download Payload | If AEAD mode is used for encryption, then for the purpose of key | |||
encryption the authentication tag MUST NOT be used (both not | ||||
calculated and not verified), since the G-IKEv2 provides | ||||
authentication of all its messages. In addition there is no AAD in | ||||
this case. If encryption algorithm requires padding, then the | ||||
encrypted key MUST be padded before encryption to have the required | ||||
size. If the encryption algorithm doesn't define the padding | ||||
content, then the following scheme SHOULD be used: the Padding bytes | ||||
are initialized with a series of (unsigned, 1-byte) integer values. | ||||
The first padding byte appended to the plaintext is numbered 1, with | ||||
subsequent padding bytes making up a monotonically increasing | ||||
sequence: 1, 2, 3, .... The length of the padding is not transmitted | ||||
and is implicitly determined, since the length of the key is known. | ||||
The Key Download Payload contains the group keys for the group | 1 2 3 | |||
specified in the GSA Payload. These key download payloads can have | 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 | |||
several security attributes applied to them based upon the security | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
policy of the group as defined by the associated GSA Payload. | | Key ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| KWK ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ IV ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ Encrypted Key ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
1 2 3 | Figure 18: Wrapped Key Format | |||
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 | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ Key Packets ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 24: Key Download Payload Format | The Wrapped Key fields are defined as follows: | |||
The Key Download Payload fields are defined as follows: | o Key ID (4 octets) - ID of the encrypted key. The value zero means | |||
that the encrypted key contains keying material for the group SA, | ||||
otherwise it contains some intermediate key. | ||||
o Next Payload (1 octet) -- Identifier for the payload type of the | o Key Wrap Key (KWK) ID (4 octets) - ID of the key that was used to | |||
next payload in the message. If the current payload is the last | encrypt this key. The value zero means that the default KWK was | |||
in the message, then this field will be zero. | used to encrypt the key, otherwise some other key was used. | |||
o Critical (1 bit) -- Set according to [RFC7296]. | o IV (variable) - Initialization Vector used for encryption. The | |||
size and the content of IV is defined by the encryption algorithm | ||||
employed. | ||||
o RESERVED (7 bits) -- Unused, set to zero. | o Encrypted Key (variable) - The encrypted key bits. These bits may | |||
comprise either a single encrypted key or a result of encryption | ||||
of a concatenation of keys (key material) for several algorithms. | ||||
o Payload Length (2 octets) -- Length in octets of the current | 3.5.2. Group Key Packet Substructure | |||
payload, including the generic payload header. | ||||
o Key Packets (variable) -- Contains Key Packets. Several types of | Group Key Packet substructure contains SA key information. This key | |||
key packets are defined. Each Key Packet has the following | information is associated with some group SAs: either with data | |||
format. | security SAs or with 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| KD Type | RESERVED | KD Length | | | Protocol | SPI Size | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SPI Size | SPI (variable) ~ | | | | |||
~ SPI ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ Key Packet Attributes ~ | | | | |||
~ <Group Key Download Attributes> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 25: Key Packet Format | Figure 19: Group Key Packet Substructure Format | |||
o Key Download (KD) Type (1 octet) -- Identifier for the Key Data | ||||
field of this Key Packet. In the following table the terms | ||||
Reserved, Unassigned, and Private Use are to be applied as defined | ||||
in [RFC8126]. The registration procedure is Expert Review. | ||||
Key Download Type Value | ||||
----------------- ----- | ||||
Reserved 0 | ||||
TEK 1 | ||||
KEK 2 | ||||
LKH 3 | ||||
SID 4 | ||||
Unassigned 5-127 | ||||
Private Use 128-255 | ||||
o RESERVED (1 octet) -- Unused, set to zero. | ||||
o Key Download Length (2 octets) -- Length in octets of the Key | ||||
Packet data, including the Key Packet header. | ||||
o SPI Size (1 octet) -- Value specifying the length in octets of the | ||||
SPI as defined by the Protocol-Id. | ||||
o SPI (variable length) -- Security Parameter Index which matches a | ||||
SPI previously sent in an GSA KEK or GSA TEK Payload. | ||||
o Key Packet Attributes (variable length) -- Contains Key | o Protocol (1 octet) - Identifies the security protocol for this key | |||
information. The format of this field is specific to the value of | packet. The values are defined in the IKEv2 Security Protocol | |||
the KD Type field. The following sections describe the format of | Identifiers in [IKEV2-IANA]. The valid values for this field are: | |||
each KD Type. | <TBA> (GIKE_REKEY) for KEK Key packet and 2 (AH) or 3 (ESP) for | |||
TEK key packet. | ||||
2.5.1. TEK Download Type | o SPI Size (1 octet) - Size of Security Parameter Index (SPI) for | |||
the corresponding SA. SPI size depends on the security protocol. | ||||
For GIKE_REKEY it is 16 octets, while for AH and ESP it is 4 | ||||
octets. | ||||
The following attributes may be present in a TEK Download Type. | o Length (2 octets, unsigned integer) - Length of this substructure | |||
Exactly one attribute matching each type sent in the GSA TEK payload | including the header. | |||
MUST be present. The attributes must follow the format defined in | ||||
IKEv2 (Section 3.3.5 of [RFC7296]). In the table, attributes defined | ||||
as TV are marked as Basic (B); attributes defined as TLV are marked | ||||
as Variable (V). The terms Reserved, Unassigned, and Private Use are | ||||
to be applied as defined in [RFC8126]. The registration procedure is | ||||
Expert Review. | ||||
TEK KD Attributes Value Type Mandatory | o SPI (variable) - Security Parameter Index for the corresponding | |||
----------------- ----- ---- --------- | SA. The size of this field is determined by the SPI Size field. | |||
Reserved 0-2 | In case of GIKE_REKEY the SPI must be the IKEv2 Header SPI pair | |||
TEK_KEYMAT 3 V Y | where the first 8 octets become the "Initiator's SPI" field in the | |||
Unassigned 4-16383 | G-IKEv2 rekey message IKEv2 HDR, and the second 8 octets become | |||
Private Use 16384-32767 | the "Responder's SPI" in the same HDR. When selecting SPI the | |||
GCKS MUST make sure that the sole first 8 octets (corresponding to | ||||
"Initiator's SPI" field in the IKEv2 header) uniquely identify the | ||||
Rekey SA. | ||||
It is possible that the GCKS will send no TEK key packets in a | o Group Key Download Attributes (variable length) - Contains Key | |||
Registration KD payload (as well as no corresponding GSA TEK payloads | information for the corresponding SA. | |||
in the GSA payload), after which the TEK payloads will be sent in a | ||||
rekey message. | ||||
2.5.1.1. TEK_KEYMAT | This document creates a new IKEv2 IANA registry for the types of the | |||
Group Key Download attributes which is initially filled as described | ||||
in Section 6. In particular, the following attributes are initially | ||||
added. | ||||
The TEK_KEYMAT attribute contains keying material for the | GKD Attributes Value Type Multiple Used In | |||
corresponding SPI. This keying material will be used with the | ------------------------------------------------------------ | |||
transform specified in the GSA TEK payload. The keying material is | Reserved 0 | |||
treated equivalent to IKEv2 KEYMAT derived for that IPsec transform. | SA_KEY 1 V Y (GIKE_REKEY) | |||
N (AH, ESP) | ||||
2.5.2. KEK Download Type | The attributes must follow the format defined in the IKEv2 [RFC7296] | |||
section 3.3.5. In the table, attributes that are defined as TV are | ||||
marked as Basic (B); attributes that are defined as TLV are marked as | ||||
Variable (V). | ||||
The following attributes may be present in a KEK Download Type. | 3.5.2.1. SA_KEY Attribute | |||
Exactly one attribute matching each type sent in the GSA KEK payload | ||||
MUST be present. The attributes must follow the format defined in | ||||
IKEv2 (Section 3.3.5 of [RFC7296]). In the table, attributes defined | ||||
as TV are marked as Basic (B); attributes defined as TLV are marked | ||||
as Variable (V). The terms Reserved, Unassigned, and Private Use are | ||||
to be applied as defined in [RFC8126]. The registration procedure is | ||||
Expert Review. | ||||
KEK KD Attributes Value Type Mandatory | The SA_KEY attribute contains a keying material for the corresponding | |||
----------------- ----- ---- --------- | SA. The content of the attribute is formatted according to | |||
Reserved 0 | Section 3.5.1 with a precondition that the Key ID field MUST be zero. | |||
KEK_ENCR_KEY 1 V Y | The size of the keying material MUST be equal to the total size of | |||
KEK_INTEGRITY_KEY 2 V N | the keys needed to be taken from this keying material (see | |||
KEK_AUTH_KEY 3 V N | Section 2.4) for the corresponding SA. | |||
Unassigned 4-16383 | ||||
Private Use 16384-32767 | ||||
If the KEK Key Packet is included, there MUST be only one present in | If the Key Packet is for a data security SA (AH or ESP protocols), | |||
the KD payload. | then exactly one SA_KEY attribute MUST be present with both Key ID | |||
and KWK ID fields set to zero. | ||||
2.5.2.1. KEK_ENCR_KEY | If the Key Packet is for a rekey SA (GIKE_REKEY protocol), then at | |||
least one SA_KEY attribute with zero Key ID MUST be present. | ||||
Depending on GCKS key management policy more SA_KEY attributes MAY be | ||||
present. | ||||
The KEK_ENCR_KEY attribute type declares that the encryption key for | 3.5.3. Member Key Packet Substructure | |||
the corresponding SPI is contained in the Key Packet Attribute. The | ||||
encryption algorithm that will use this key was specified in the GSA | ||||
KEK payload. | ||||
2.5.2.2. KEK_INTEGRITY_KEY | The Member Key Packet substructure contains keys and other parameters | |||
that are specific for the member of the group and are not associated | ||||
with any particular group SA. | ||||
The KEK_INTEGRITY_KEY attribute type declares the integrity key for | 1 2 3 | |||
this SPI is contained in the Key Packet Attribute. The integrity | 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 | |||
algorithm that will use this key was specified in the GSA KEK | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
payload. | | ZERO | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
~ <Member Key Download Attributes> ~ | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
2.5.2.3. KEK_AUTH_KEY | Figure 20: Member Key Packet Substructure Format | |||
The KEK_AUTH_KEY attribute type declares that the authentication key | The Member Key Packet substructure fields are defined as follows: | |||
for this SPI is contained in the Key Packet Attribute. The signature | ||||
algorithm that will use this key was specified in the GSA KEK | ||||
payload. An RSA public key format is defined in [RFC3447], | ||||
Section A.1.1. DSS public key format is defined in [RFC3279] | ||||
Section 2.3.2. For ECDSA Public keys, use format described in | ||||
[RFC5480] Section 2.2. Other algorithms added to the IKEv2 | ||||
Authentication Method registry are also expected to include a format | ||||
of the public key included in the algorithm specification. | ||||
2.5.3. LKH Download Type | o ZERO (2 octets) - MUST be zero. | |||
The LKH key packet is comprised of attributes representing different | o Length (2 octets, unsigned integer) - Length of this substructure | |||
leaves in the LKH key tree. | including the header. | |||
The following attributes are used to pass an LKH KEK array in the KD | o Member Key Download Attributes (variable length) - Contains Key | |||
payload. The attributes must follow the format defined in IKEv2 | information and other parameters exclusively for a particular | |||
(Section 3.3.5 of [RFC7296]). In the table, attributes defined as TV | member of the group. | |||
are marked as Basic (B); attributes defined as TLV are marked as | ||||
Variable (V). The terms Reserved, Unassigned, and Private Use are to | ||||
be applied as defined in [RFC8126]. The registration procedure is | ||||
Expert Review. | ||||
LKH KD Attributes Value Type | Member Key Packet substructure contains sensitive information for a | |||
----------------- ----- ---- | single GM, for this reason it MUST NOT be sent in GSA_REKEY messages | |||
Reserved 0 | and MUST only be sent via unicast SA at the time the GM registers to | |||
LKH_DOWNLOAD_ARRAY 1 V | the group (in either GSA_AUTH or GSA_REGISTRATION exchanges). | |||
LKH_UPDATE_ARRAY 2 V | ||||
Unassigned 3-16383 | ||||
Private Use 16384-32767 | ||||
If an LKH key packet is included in the KD payload, there MUST be | This document creates a new IKEv2 IANA registry for the types of the | |||
only one present. | Member Key Download attributes which is initially filled as described | |||
in Section 6. In particular, the following attributes are initially | ||||
added. | ||||
2.5.3.1. LKH_DOWNLOAD_ARRAY | MKD Attributes Value Type Multiple | |||
------------------------------------------------ | ||||
Reserved 0 | ||||
KEY_WRAP_KEY 1 V Y | ||||
GM_SID 2 V Y | ||||
AUTH_KEY 3 V N | ||||
The LKH_DOWNLOAD_ARRAY attribute type is used to download a set of | The attributes must follow the format defined in the IKEv2 [RFC7296] | |||
LKH keys to a group member. It MUST NOT be included in a IKEv2 rekey | section 3.3.5. In the table, attributes that are defined as TV are | |||
message KD payload if the IKEv2 rekey is sent to more than one group | marked as Basic (B); attributes that are defined as TLV are marked as | |||
member. If an LKH_DOWNLOAD_ARRAY attribute is included in a KD | Variable (V). | |||
payload, there MUST be only one present. | ||||
This attribute consists of a header block, followed by one or more | 3.5.3.1. KEY_WRAP_KEY Attribute | |||
LKH keys. | ||||
1 2 3 | The KEY_WRAP_KEY attribute contains a key that is used to encrypt | |||
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 | other keys. One or more the these attributes are sent to GMs if the | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GCKS key management policy relies on some key hierarchy (e.g. LKH). | |||
| # of LKH Keys | RESERVED | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ LKH Keys ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 26: LKH_DOWNLOAD_ARRAY Format | The content of the attribute has a format defined in Section 3.5.1 | |||
with a precondition that the Key ID field MUST NOT be zero. The | ||||
algorithm associated with the key is from the Encryption Transform | ||||
for the SA the KEY_WRAP_KEY attributes was sent in. The size of the | ||||
key MUST be equal to the key size for this algorithm. | ||||
The KEK_LKH attribute fields are defined as follows: | Multiple instances of the KEY_WRAP_KEY attributes MAY be present in | |||
the key packet. | ||||
o Number of LKH Keys (2 octets) -- This value is the number of | 3.5.3.2. GM_SID Attribute | |||
distinct LKH keys in this sequence. | ||||
o RESERVED (2 octets) -- Unused, set to zero. | The GM_SID attribute is used to download one or more Sender-ID (SID) | |||
values for the exclusive use of a group member. One or more of this | ||||
attributes MUST be sent by the GCKS if the GM informed the GCKS that | ||||
it would be a sender (by inclusion the SENDER notification to the | ||||
request) and at least one of the data security SAs included in the | ||||
GSA payload uses counter-based mode of encryption. | ||||
Each LKH Key is defined as follows: | If the GMs has requested multiple SID values in the SENDER | |||
notification, then the GCKS SHOULD provide it with the requested | ||||
number of SIDs by sending multiple instances of the GM_SID attribute. | ||||
The GCKS MAY send fewer SIDs than requested by the GM (e.g. if it is | ||||
running out of SIDs), but it MUST NOT send more than requested. | ||||
1 2 3 | 3.5.3.3. AUTH_KEY Attribute | |||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| LKH ID | Encr Alg | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Key Handle | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ Key Data ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 27: LKH Key Format | The AUTH_KEY attribute contains the key that is used to authenticate | |||
the GSA_REKEY messages. The content of the attribute depends on the | ||||
authentication method the GCKS specified in the Authentication Method | ||||
transform in the GSA payload. | ||||
o LKH ID (2 octets) -- This is the position of this key in the | o If a shared secret is used for the GSA_REKEY messages | |||
binary tree structure used by LKH. | authentication then the content of the AUTH_KEY attribute is the | |||
shared secret that MUST be represented in the form of Wrapped Key | ||||
(see Section 3.5.1) with zero KWK ID. The Key ID in this case is | ||||
arbitrary and MUST be ignored by the GM. | ||||
o Encr Alg (2 octets) -- This is the encryption algorithm for which | o If digital signatures are used for the GSA_REKEY messages | |||
this key data is to be used. This value is specified in the ENCR | authentication then the content of the AUTH_KEY attribute is a | |||
transform in the GSA payload. | public key used for digital signature authentication. The public | |||
key MUST be represented as DER-encoded ASN.1 object | ||||
SubjectPublicKeyInfo, defined in section 4.1.2.7 of [RFC5280]. | ||||
o Key Handle (4 octets) -- This is a randomly generated value to | The signature algorithm that will use this key was specified in | |||
uniquely identify a key within an LKH ID. | the Algorithm Identifier attribute of the Authentication Method | |||
transform. The key MUST be compatible with this algorithm. An | ||||
RSA public key format is defined in [RFC3447], Section A.1. DSS | ||||
public key format is defined in [RFC3279] Section 2.3.2. For | ||||
ECDSA Public keys, use format described in [RFC5480] Section 2. | ||||
Other algorithms added to the IKEv2 Authentication Method registry | ||||
are also expected to include a format of the SubjectPublicKeyInfo | ||||
object included in the algorithm specification. | ||||
o Key Data (variable length) -- This is the actual encryption key | Multiple instances of the AUTH_KEY attributes MUST NOT be sent. | |||
data, which is dependent on the Encr Alg algorithm for its format. | ||||
The first LKH Key structure in an LKH_DOWNLOAD_ARRAY attribute | 3.6. Delete Payload | |||
contains the Leaf identifier and key for the group member. The rest | ||||
of the LKH Key structures contain keys along the path of the key tree | ||||
in the order starting from the leaf, culminating in the group KEK. | ||||
2.5.3.2. LKH_UPDATE_ARRAY | There are occasions when the GCKS may want to signal to group members | |||
to delete policy at the end of a broadcast, if group policy has | ||||
changed, or the GCKS needs to reset the policy and keying material | ||||
for the group due to an emergency. Deletion of keys MAY be | ||||
accomplished by sending an IKEv2 Delete Payload, section 3.11 of | ||||
[RFC7296] as part of a registration or rekey Exchange. Whenever an | ||||
SA is to be deleted, the GKCS SHOULD send the Delete Payload in both | ||||
registration and rekey exchanges, because GMs with previous group | ||||
policy may contact the GCKS using either exchange. | ||||
The LKH_UPDATE_ARRAY attribute type is used to update the LKH keys | The Protocol ID MUST be GIKE_REKEY (<TBA>) for GSA_REKEY pseudo- | |||
for a group. It is most likely to be included in a G-IKEv2 rekey | exchange, 2 for AH or 3 for ESP. Note that only one protocol id | |||
message KD payload to rekey the entire group. This attribute | value can be defined in a Delete payload. If a TEK and a KEK SA for | |||
consists of a header block, followed by one or more LKH keys, as | GSA_REKEY pseudo-exchange must be deleted, they must be sent in | |||
defined in Section 2.5.3.1. | different Delete payloads. Similarly, if a TEK specifying ESP and a | |||
TEK specifying AH need to be deleted, they must be sent in different | ||||
Delete payloads. | ||||
There may be any number of LKH_UPDATE_ARRAY attributes included in a | There may be circumstances where the GCKS may want to reset the | |||
KD payload. | policy and keying material for the group. The GCKS can signal | |||
deletion of all policy of a particular TEK by sending a TEK with a | ||||
SPI value equal to zero in the delete payload. In the event that the | ||||
administrator is no longer confident in the integrity of the group | ||||
they may wish to remove all KEK and all the TEKs in the group. This | ||||
is done by having the GCKS send a delete payload with a SPI of zero | ||||
and a Protocol-ID of AH or ESP to delete all TEKs, followed by | ||||
another delete payload with a SPI value of zero and Protocol-ID of | ||||
KEK SA to delete the KEK SA. | ||||
1 2 3 | 3.7. Notify Payload | |||
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 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| # of LKH Keys | LKH ID | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Key Handle | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
~ LKH Keys ~ | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 28: LKH_UPDATE_ARRAY Format | G-IKEv2 uses the same Notify payload as specified in [RFC7296], | |||
section 3.10. | ||||
o Number of LKH Keys (2 octets) -- This value is the number of | There are additional Notify Message types introduced by G-IKEv2 to | |||
distinct LKH keys in this sequence. | communicate error conditions and status (see Section 6). | |||
o LKH ID (2 octets) -- This is the node identifier associated with | o INVALID_GROUP_ID (45) - error type notification that indicates | |||
the key used to encrypt the first LKH Key. | that the group id sent during the registration process is invalid. | |||
The Protocol ID and SPI Size fields in the Notify payload MUST be | ||||
zero. There is no data associated with this notification and the | ||||
content of the Notification Data field MUST be ignored on receipt. | ||||
o Key Handle (4 octets) -- This is the value that uniquely | o AUTHORIZATION_FAILED (46) - error type notification that is sent | |||
identifies the key within the LKH ID which was used to encrypt the | in the response to a GSA_AUTH message when authorization failed. | |||
first LKH key. | The Protocol ID and SPI Size fields in the Notify payload MUST be | |||
zero. There is no data associated with this notification and the | ||||
content of the Notification Data field MUST be ignored on receipt. | ||||
The LKH Keys are as defined in Section 2.5.3.1. The LKH Key | o REGISTRATION_FAILED (<TBA>) - error type notification that is sent | |||
structures contain keys along the path of the key tree in the order | by the GCKS when the GM registration request cannot be satisfied. | |||
from the LKH ID found in the LKH_UPDATE_ARRAY header, culminating in | The Protocol ID and SPI Size fields in the Notify payload MUST be | |||
the group KEK. The Key Data field of each LKH Key is encrypted with | zero. There is no data associated with this notification and the | |||
the LKH key preceding it in the LKH_UPDATE_ARRAY attribute. The | content of the Notification Data field MUST be ignored on receipt. | |||
first LKH Key is encrypted under the key defined by the LKH ID and | ||||
Key Handle found in the LKH_UPDATE_ARRAY header. | ||||
2.5.4. SID Download Type | o SENDER (16429) - status type notification that is sent in the | |||
GSA_AUTH or the GSA_REGISTRATION exchanges to indicate that the GM | ||||
intends to be sender of data traffic. The data includes a count | ||||
of how many SID values the GM desires. The count MUST be 4 octets | ||||
long and contain the big endian representation of the number of | ||||
requested SIDs. The Protocol ID and SPI Size fields in the Notify | ||||
payload MUST be zero. | ||||
The SID attribute is used to download one or more Sender-ID (SID) | o REKEY_IS_NEEDED (<TBA>) - status type notification that is sent in | |||
values for the exclusive use of a group member. The terms Reserved, | the GSA_AUTH response message to indicate that the GM must perform | |||
Unassigned, and Private Use are to be applied as defined in | an immediate rekey of IKE SA to make it secure against quantum | |||
[RFC8126]. The registration procedure is Expert Review. | computers and then start a registration request over. The | |||
Protocol ID and SPI Size fields in the Notify payload MUST be | ||||
zero. There is no data associated with this notification and the | ||||
content of the Notification Data field MUST be ignored on receipt. | ||||
SID KD Attributes Value Type | 3.7.1. USE_TRANSPORT_MODE Notification | |||
----------------- ----- ---- | ||||
Reserved 0 | ||||
NUMBER_OF_SID_BITS 1 B | ||||
SID_VALUE 2 V | ||||
Unassigned 3-16383 | ||||
Private Use 16384-32767 | ||||
Because a SID value is intended for a single group member, the SID | This specification uses USE_TRANSPORT_MODE notification defined in | |||
Download type MUST NOT be distributed in a GSA_REKEY message | section 3.10.1 of [RFC7296] to specify which mode data security SAs | |||
distributed to multiple group members. | should be created in. The GCKS MUST include one USE_TRANSPORT_MODE | |||
notification in a message containing the GSA payload for every data | ||||
security SAs specified in this payload that is to be created in | ||||
transport mode. In other words, there must be as many these | ||||
notifications included in the message as many SAs are created in | ||||
transport mode. The Protocol ID, SPI Size and SPI fields of the | ||||
Notify Payload MUST correctly specify each such SA. | ||||
2.5.4.1. NUMBER_OF_SID_BITS | 3.8. Authentication Payload | |||
The NUMBER_OF_SID_BITS attribute type declares how many bits of the | G-IKEv2 uses the same Authentication payload as specified in | |||
cipher nonce in which to represent an SID value. The bits are | [RFC7296], section 3.8, to authenticate the rekey message. However, | |||
applied as the most significant bits of the IV, as shown in Figure 1 | if it is used in the GSA_REKEY messages the content of the payload is | |||
of [RFC6054] and specified in Section 1.4.6.2. Guidance for a GCKS | computed differently, as described in Section 1.4.5.1.1. | |||
choosing the NUMBER_OF_SID_BITS is provided in Section 3 of | ||||
[RFC6054]. | ||||
This value is applied to each SID value distributed in the SID | 4. Interaction with other IKEv2 Protocol Extensions | |||
Download. | ||||
2.5.4.2. SID_VALUE | A number of IKEv2 extensions is defined that can be used to extend | |||
protocol functionality. G-IKEv2 is compatible with most of them. In | ||||
particular, EAP authentication defined in [RFC7296] can be used to | ||||
establish registration IKE SA, as well as Secure Password | ||||
authentication ([RFC6467]). G-IKEv2 is compatible with and can use | ||||
IKEv2 Session Resumption [RFC5723] except that a GM would include the | ||||
initial ticket request in a GSA_AUTH exchange instead of an IKE_AUTH | ||||
exchange. G-IKEv2 is also compatible with Multiple Key Exchanges in | ||||
IKEv2 framework, defined in [I-D.ietf-ipsecme-ikev2-multiple-ke]. | ||||
The SID_VALUE attribute type declares a single SID value for the | Some IKEv2 extensions however require special handling if used in | |||
exclusive use of this group member. Multiple SID_VALUE attributes | G-IKEv2. | |||
MAY be included in a SID Download. | ||||
2.5.4.3. GM Semantics | 4.1. Mixing Preshared Keys in IKEv2 for Post-quantum Security | |||
The SID_VALUE attribute value distributed to the group member MUST be | G-IKEv2 can take advantage of the protection provided by Postquantum | |||
used by that group member as the SID field portion of the IV for all | Preshared Keys (PPK) for IKEv2 [RFC8784]. However, the use of PPK | |||
Data-Security SAs including a counter-based mode of operation | leaves the initial IKE SA susceptible to quantum computer (QC) | |||
distributed by the GCKS as a part of this group. When the Sender- | attacks. For this reason an alternative approach for using PPK in | |||
Specific IV (SSIV) field for any Data-Security SA is exhausted, the | IKEv2 defined in [I-D.smyslov-ipsecme-ikev2-qr-alt] SHOULD be used. | |||
group member MUST NOT act as a sender on that SA using its active | ||||
SID. The group member SHOULD re-register, at which time the GCKS | ||||
will issue a new SID to the group member, along with either the same | ||||
Data-Security SAs or replacement ones. The new SID replaces the | ||||
existing SID used by this group member, and also resets the SSIV | ||||
value to its starting value. A group member MAY re-register prior to | ||||
the actual exhaustion of the SSIV field to avoid dropping data | ||||
packets due to the exhaustion of available SSIV values combined with | ||||
a particular SID value. | ||||
A group member MUST ignore an SID Download Type KD payload present in | If the alternative approach is not supported by the peers, then the | |||
a GSA-REKEY message, otherwise more than one GM may end up using the | GCKS MUST NOT send GSA and KD payloads in the GSA_AUTH response | |||
same SID. | message. Instead, the GCKS MUST return a new notification | |||
REKEY_IS_NEEDED. Upon receiving this notification in the GSA_AUTH | ||||
response the GM MUST perform an IKE SA rekey and then initiate a new | ||||
GSA_REGISTRATION request for the same group. Below are possible | ||||
scenarios involving using PPK. | ||||
2.5.4.4. GCKS Semantics | The GM starts the IKE_SA_INIT exchange requesting using PPK, and the | |||
GCKS responds with agreement to do it, or aborts according to its | ||||
"mandatory_or_not" flag: | ||||
If any KD payload includes keying material that is associated with a | Initiator (Member) Responder (GCKS) | |||
counter-mode of operation, an SID Download Type KD payload containing | -------------------- ------------------ | |||
at least one SID_VALUE attribute MUST be included. The GCKS MUST NOT | HDR, SAi1, KEi, Ni, N(USE_PPK) --> | |||
send the SID Download Type KD payload as part of a GSA_REKEY message, | <-- DR, SAr1, KEr, Nr, [CERTREQ], | |||
because distributing the same sender-specific policy to more than one | N(USE_PPK) | |||
group member will reduce the security of the group. | ||||
2.6. Delete Payload | Figure 21: IKE_SA_INIT Exchange requesting using PPK | |||
There are occasions when the GCKS may want to signal to group members | The GM then starts the GSA_AUTH exchange with the PPK_ID; if using | |||
to delete policy at the end of a broadcast, if group policy has | PPK is not mandatory for the GM, the NO_PPK_AUTH notification is | |||
changed, or the GCKS needs to reset the policy and keying material | included in the request: | |||
for the group due to an emergency. Deletion of keys MAY be | ||||
accomplished by sending an IKEv2 Delete Payload, section 3.11 of | ||||
[RFC7296] as part of a registration or rekey Exchange. Whenever an | ||||
SA is to be deleted, the GKCS SHOULD send the Delete Payload in both | ||||
registration and rekey exchanges, because GMs with previous group | ||||
policy may contact the GCKS using either exchange. | ||||
The Protocol ID MUST be 41 for GSA_REKEY Exchange, 2 for AH or 3 for | Initiator (Member) Responder (GCKS) | |||
ESP. Note that only one protocol id value can be defined in a Delete | -------------------- ------------------ | |||
payload. If a TEK and a KEK SA for GSA_REKEY Exchange must be | HDR, SK{IDi, AUTH, IDg, | |||
deleted, they must be sent in different Delete payloads. Similarly, | N(PPK_IDENTITY), N(NO_PPK_AUTH)} --> | |||
if a TEK specifying ESP and a TEK specifying AH need to be deleted, | ||||
they must be sent in different Delete payloads. | ||||
There may be circumstances where the GCKS may want to reset the | Figure 22: GSA_AUTH Request using PPK | |||
policy and keying material for the group. The GCKS can signal | ||||
deletion of all policy of a particular TEK by sending a TEK with a | ||||
SPI value equal to zero in the delete payload. In the event that the | ||||
administrator is no longer confident in the integrity of the group | ||||
they may wish to remove all KEK and all the TEKs in the group. This | ||||
is done by having the GCKS send a delete payload with a SPI of zero | ||||
and a Protocol-ID of AH or ESP to delete all TEKs, followed by | ||||
another delete payload with a SPI value of zero and Protocol-ID of | ||||
KEK SA to delete the KEK SA. | ||||
2.7. Notify Payload | If the GCKS has no such PPK and using PPK is not mandatory for it and | |||
the NO_PPK_AUTH is included, then the GCKS continues without PPK; in | ||||
this case no rekey is needed: | ||||
G-IKEv2 uses the same Notify payload as specified in [RFC7296], | Initiator (Member) Responder (GCKS) | |||
section 3.10. | -------------------- ------------------ | |||
<-- HDR, SK{IDr, AUTH, GSA, KD} | ||||
There are additional Notify Message types introduced by G-IKEv2 to | Figure 23: GSA_AUTH Response using no PPK | |||
communicate error conditions and status. | ||||
NOTIFY messages - error types Value | If the GCKS has no such PPK and either the NO_PPK_AUTH is missing or | |||
------------------------------------------------------------------- | using PPK is mandatory for the GCKS, the GCKS aborts the exchange: | |||
INVALID_GROUP_ID - 45 | ||||
AUTHORIZATION_FAILED - 46 | ||||
REGISTRATION_FAILED - TBD | ||||
INVALID_GROUP_ID indicates the group id sent during the registration | Initiator (Member) Responder (GCKS) | |||
process is invalid. | -------------------- ------------------ | |||
<-- HDR, SK{N(AUTHENTICATION_FAILED)} | ||||
AUTHORIZATION_FAILED is sent in the response to a GSA_AUTH message | Figure 24: GSA_AUTH Error Response | |||
when authorization failed. | ||||
REGISTRATION_FAILED is sent by the GCKS when the GM registration | Assuming the GCKS has the proper PPK it continues with a request to | |||
request cannot be satisfied. | the GM to immediately perform a rekey by sending the REKEY_IS_NEEDED | |||
notification: | ||||
NOTIFY messages - status types Value | Initiator (Member) Responder (GCKS) | |||
------------------------------------------------------------------- | -------------------- ------------------ | |||
SENDER - 16429 | <-- HDR, SK{IDr, AUTH, N(PPK_IDENTITY), | |||
REKEY_IS_NEEDED - TBD | N(REKEY_IS_NEEDED) } | |||
SENDER notification is sent in GSA_AUTH or GSA_REGISTRATION to | Figure 25: GSA_AUTH Response using PPK | |||
indicate that the GM intends to be sender of data traffic. The data | ||||
includes a count of how many SID values the GM desires. The count | ||||
MUST be 4 octets long and contain the big endian representation of | ||||
the number of requested SIDs. | ||||
REKEY_IS_NEEDED is sent in GSA_AUTH response message to indicate that | The GM initiates the CREATE_CHILD_SA exchange to rekey the initial | |||
the GM must perform an immediate rekey of IKE SA to make it secure | IKE SA and then makes a new registration request for the same group | |||
against quantum computers and then start a registration request over. | over the new IKE SA: | |||
2.8. Authentication Payload | Initiator (Member) Responder (GCKS) | |||
-------------------- ------------------ | ||||
HDR, SK{SA, Ni, KEi} --> | ||||
<-- HDR, SK{SA, Nr, KEr} | ||||
HDR, SK{IDg} ---> | ||||
<-- HDR, SK{GSA, KD} | ||||
G-IKEv2 uses the same Authentication payload as specified in | Figure 26: Rekeying IKE SA followed by GSA_REGISTRATION Exchange | |||
[RFC7296], section 3.8, to sign the rekey message. | ||||
3. Security Considerations | 5. Security Considerations | |||
3.1. GSA Registration and Secure Channel | 5.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 [RFC7296] | inheriting all the security considerations documented in [RFC7296] | |||
section 5 Security Considerations, including authentication, | section 5 Security Considerations, including authentication, | |||
confidentiality, protection against man-in-the-middle, protection | confidentiality, protection against man-in-the-middle, protection | |||
against replay/reflection attacks, and denial of service protection. | against replay/reflection attacks, and denial of service protection. | |||
The GSA_AUTH and GSA_REGISTRATION exchanges also take advantage of | The GSA_AUTH and GSA_REGISTRATION exchanges also take advantage of | |||
those protections. In addition, G-IKEv2 brings in the capability to | those protections. In addition, G-IKEv2 brings in the capability to | |||
authorize a particular group member regardless of whether they have | authorize a particular group member regardless of whether they have | |||
the IKEv2 credentials. | the IKEv2 credentials. | |||
3.2. GSA Maintenance Channel | 5.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 exchanged. | GSA member registration exchanged. | |||
3.2.1. Authentication/Authorization | 5.2.1. Authentication/Authorization | |||
Authentication is implicit, the public key of the identity is | Authentication is implicit, the public key of the identity is | |||
distributed during the registration, and the receiver of the rekey | distributed during the registration, and the receiver of the rekey | |||
message uses that public key and identity to verify the message came | message uses that public key and identity to verify the message came | |||
from the authorized GCKS. | from the authorized GCKS. | |||
3.2.2. Confidentiality | 5.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. | |||
3.2.3. Man-in-the-Middle Attack Protection | 5.2.3. Man-in-the-Middle Attack Protection | |||
GSA maintenance channel is integrity protected by using a digital | GSA maintenance channel is integrity protected by using a digital | |||
signature. | signature. | |||
3.2.4. Replay/Reflection Attack Protection | 5.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 group | |||
member will recognize a replayed message by comparing the Message ID | member will recognize a replayed message by comparing the Message ID | |||
number to that of the last received rekey message, any rekey message | number to 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. | |||
4. IANA Considerations | 6. IANA Considerations | |||
4.1. New Registries | 6.1. New Registries | |||
A new set of registries should be created for G-IKEv2, on a new page | A new set of registries is created for G-IKEv2 on IKEv2 parameters | |||
titled Group Key Management using IKEv2 (G-IKEv2) Parameters. The | page [IKEV2-IANA]. The terms Reserved, Expert Review and Private Use | |||
following registries should be placed on that page. The terms | are to be applied as defined in [RFC8126]. | |||
Reserved, Expert Review and Private Use are to be applied as defined | ||||
in [RFC8126]. | ||||
GSA Policy Type Registry, see Section 2.4.1 | This document creates a new IANA registry "Transform Type <TBA> - | |||
KEK Attributes Registry, see Section 2.4.2.1 | Group Key Management Methods". The initial values of the new | |||
registry are: | ||||
KEK Management Algorithm Registry, see Section 2.4.2.1.1 | Value Group Key Management Method | |||
------------------------------------------------------- | ||||
Reserved 0 | ||||
Wrapped Key Download 1 | ||||
Unassigned 2-1023 | ||||
Private Use 1024-65535 | ||||
GSA TEK Payload Protocol ID Type Registry, see Section 2.4.3 | Changes and additions to the unassigned range of this registry are by | |||
the Expert Review Policy [RFC8126]. | ||||
TEK Attributes Registry, see Section 2.4.3 | This document creates a new IANA registry "GSA Attributes". The | |||
initial values of the new registry are: | ||||
Key Download Type Registry, see Section 2.5 | GSA Attributes Value Type Multiple Used In | |||
--------------------------------------------------------------------- | ||||
Reserved 0 | ||||
GSA_KEY_LIFETIME 1 V N (GIKE_REKEY, AH, ESP) | ||||
GSA_INITIAL_MESSAGE_ID 2 V N (GIKE_REKEY) | ||||
GSA_NEXT_SPI 3 V Y (GIKE_REKEY, AH, ESP) | ||||
Unassigned 5-16383 | ||||
Private Use 16384-32767 | ||||
Changes and additions to the unassigned range of this registry are by | ||||
the Expert Review Policy [RFC8126]. | ||||
TEK Download Type Attributes Registry, see Section 2.5.1 | This document creates a new IANA registry "GAP Attributes". The | |||
initial values of the new registry are: | ||||
KEK Download Type Attributes Registry, see Section 2.5.2 | GAP Attributes Value Type Multiple | |||
---------------------------------------------------- | ||||
Reserved 0 | ||||
GAP_ATD 1 B N | ||||
GAP_DTD 2 B N | ||||
GAP_SID_BITS 3 B N | ||||
Unassigned 4-16383 | ||||
Private Use 16384-32767 | ||||
LKH Download Type Attributes Registry, see Section 2.5.3 | Changes and additions to the unassigned range of this registry are by | |||
the Expert Review Policy [RFC8126]. | ||||
SID Download Type Attributes Registry, see Section 2.5.4 | This document creates a new IANA registry "Group Key Download | |||
Attributes". The initial values of the new registry are: | ||||
4.2. New Payload and Exchange Types Added to the Existing IKEv2 | GKD Attributes Value Type Multiple Used In | |||
Registry | ------------------------------------------------------------ | |||
Reserved 0 | ||||
SA_KEY 1 V Y (GIKE_REKEY) | ||||
N (AH, ESP) | ||||
Unassigned 2-16383 | ||||
Private Use 16384-32767 | ||||
The following new payloads and exchange types specified in this memo | Changes and additions to the unassigned range of this registry are by | |||
have already been allocated by IANA and require no further action, | the Expert Review Policy [RFC8126]. | |||
other than replacing the draft name with an RFC number. | ||||
The present document describes new IKEv2 Next Payload types, see | This document creates a new IANA registry "Member Key Download | |||
Section 2.1 | Attributes". The initial values of the new registry are: | |||
The present document describes new IKEv2 Exchanges types, see | MKD Attributes Value Type Multiple | |||
Section 2.1 | ------------------------------------------------ | |||
Reserved 0 | ||||
KEY_WRAP_KEY 1 V Y | ||||
GM_SID 2 V Y | ||||
AUTH_KEY 3 V N | ||||
Unassigned 4-16383 | ||||
Private Use 16384-32767 | ||||
The present document describes new IKEv2 notification types, see | Changes and additions to the unassigned range of this registry are by | |||
Section 2.7 | the Expert Review Policy [RFC8126]. | |||
4.3. Changes to Previous Allocations | 6.2. Changes in the Existing IKEv2 Registries | |||
Section 4.7 indicates an allocation in the IKEv2 Notify Message Types | This document defines new Exchange Types in the "IKEv2 Exchange | |||
- Status Types registry has been made. This NOTIFY type was | Types" registry: | |||
allocated earlier in the development of G-IKEv2. The number is | ||||
16429, and was allocated with the name SENDER_REQUEST_ID. The name | ||||
should be changed to SENDER. | ||||
5. Acknowledgements | Value Exchange Type | |||
---------------------------- | ||||
39 GSA_AUTH | ||||
40 GSA_REGISTRATION | ||||
41 GSA_REKEY | ||||
<TBA> GSA_INBAND_REKEY | ||||
This document defines new Payload Types in the "IKEv2 Payload Types" | ||||
registry: | ||||
Value Next Payload Type Notation | ||||
---------------------------------------------------- | ||||
50 Group Identification IDg | ||||
51 Group Security Association GSA | ||||
52 Key Download KD | ||||
This document defines a new Security Protocol Identifier in the | ||||
"IKEv2 Security Protocol Identifiers" registry: | ||||
<TBA> GIKE_REKEY | ||||
This document defines new Transform Types in the "Transform Type | ||||
Values" registry and changes the "Used In" column for the existing | ||||
allocations: | ||||
Type Description Used In | ||||
--------------------------------------------------------------------- | ||||
1 Encryption Algorithm (ENCR) (IKE, GIKE_REKEY and ESP) | ||||
2 Pseudo-random Function (PRF) (IKE, GIKE_REKEY) | ||||
3 Integrity Algorithm (INTEG) (IKE, GIKE_REKEY, AH, | ||||
optional in ESP) | ||||
4 Diffie-Hellman Group (D-H) (IKE, optional in AH, ESP) | ||||
5 Extended Sequence Numbers (ESN) (AH and ESP) | ||||
<TBA> Authentication Method (AUTH) (GIKE_REKEY) | ||||
<TBA> Group Key Management Method (GKM) (GIKE_REKEY) | ||||
This document defines a new Attribute Type in the "IKEv2 Transform | ||||
Attribute Types" registry: | ||||
Value Attribute Type Format | ||||
---------------------------------------------- | ||||
<TBA> Algorithm Identifier TLV | ||||
This document defines new Notify Message Types in the "Notify Message | ||||
Types - Status Types" registry: | ||||
Value Notify Messages - Status Types | ||||
------------------------------------------ | ||||
16429 SENDER | ||||
The Notify type with the value 16429 was allocated earlier in the | ||||
development of G-IKEv2 document with the name SENDER_REQUEST_ID. | ||||
This specification changes its name to SENDER. | ||||
This document defines new Notify Message Types in the "Notify Message | ||||
Types - Error Types" registry: | ||||
Value Notify Messages - Error Types | ||||
----------------------------------------- | ||||
45 INVALID_GROUP_ID | ||||
46 AUTHORIZATION_FAILED | ||||
<TBA> REGISTRATION_FAILED | ||||
7. 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 versions of | instrumental in helping resolve many issues in several versions of | |||
the document. | the document. | |||
6. Contributors | 8. Contributors | |||
The following individuals made substantial contributions to early | The following individuals made substantial contributions to early | |||
versions of this memo. | versions of this memo. | |||
Sheela Rowles | Sheela Rowles | |||
Cisco Systems | Cisco Systems | |||
170 W. Tasman Drive | 170 W. Tasman Drive | |||
San Jose, California 95134-1706 | San Jose, California 95134-1706 | |||
USA | USA | |||
skipping to change at page 46, line 47 ¶ | skipping to change at page 52, line 30 ¶ | |||
Email: ptran@cisco.com | Email: ptran@cisco.com | |||
Yoav Nir | Yoav Nir | |||
Dell EMC | Dell EMC | |||
9 Andrei Sakharov St | 9 Andrei Sakharov St | |||
Haifa 3190500 | Haifa 3190500 | |||
Israel | Israel | |||
Email: ynir.ietf@gmail.com | Email: ynir.ietf@gmail.com | |||
7. References | 9. References | |||
7.1. Normative References | ||||
9.1. Normative References | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC2627] Wallner, D., Harder, E., and R. Agee, "Key Management for | [RFC2627] Wallner, D., Harder, E., and R. Agee, "Key Management for | |||
Multicast: Issues and Architectures", RFC 2627, | Multicast: Issues and Architectures", RFC 2627, | |||
DOI 10.17487/RFC2627, June 1999, | DOI 10.17487/RFC2627, June 1999, | |||
<https://www.rfc-editor.org/info/rfc2627>. | <https://www.rfc-editor.org/info/rfc2627>. | |||
skipping to change at page 47, line 29 ¶ | skipping to change at page 53, line 9 ¶ | |||
[RFC4046] Baugher, M., Canetti, R., Dondeti, L., and F. Lindholm, | [RFC4046] Baugher, M., Canetti, R., Dondeti, L., and F. Lindholm, | |||
"Multicast Security (MSEC) Group Key Management | "Multicast Security (MSEC) Group Key Management | |||
Architecture", RFC 4046, DOI 10.17487/RFC4046, April 2005, | Architecture", RFC 4046, DOI 10.17487/RFC4046, April 2005, | |||
<https://www.rfc-editor.org/info/rfc4046>. | <https://www.rfc-editor.org/info/rfc4046>. | |||
[RFC4301] Kent, S. and K. Seo, "Security Architecture for the | [RFC4301] Kent, S. and K. Seo, "Security Architecture for the | |||
Internet Protocol", RFC 4301, DOI 10.17487/RFC4301, | Internet Protocol", RFC 4301, DOI 10.17487/RFC4301, | |||
December 2005, <https://www.rfc-editor.org/info/rfc4301>. | December 2005, <https://www.rfc-editor.org/info/rfc4301>. | |||
[RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., | ||||
Housley, R., and W. Polk, "Internet X.509 Public Key | ||||
Infrastructure Certificate and Certificate Revocation List | ||||
(CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, May 2008, | ||||
<https://www.rfc-editor.org/info/rfc5280>. | ||||
[RFC6054] McGrew, D. and B. Weis, "Using Counter Modes with | [RFC6054] McGrew, D. and B. Weis, "Using Counter Modes with | |||
Encapsulating Security Payload (ESP) and Authentication | Encapsulating Security Payload (ESP) and Authentication | |||
Header (AH) to Protect Group Traffic", RFC 6054, | Header (AH) to Protect Group Traffic", RFC 6054, | |||
DOI 10.17487/RFC6054, November 2010, | DOI 10.17487/RFC6054, November 2010, | |||
<https://www.rfc-editor.org/info/rfc6054>. | <https://www.rfc-editor.org/info/rfc6054>. | |||
[RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | [RFC7296] Kaufman, C., Hoffman, P., Nir, Y., Eronen, P., and T. | |||
Kivinen, "Internet Key Exchange Protocol Version 2 | Kivinen, "Internet Key Exchange Protocol Version 2 | |||
(IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | (IKEv2)", STD 79, RFC 7296, DOI 10.17487/RFC7296, October | |||
2014, <https://www.rfc-editor.org/info/rfc7296>. | 2014, <https://www.rfc-editor.org/info/rfc7296>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
7.2. Informative References | 9.2. Informative References | |||
[I-D.ietf-ipsecme-qr-ikev2] | ||||
Fluhrer, S., McGrew, D., Kampanakis, P., and V. Smyslov, | ||||
"Mixing Preshared Keys in IKEv2 for Post-quantum | ||||
Resistance", draft-ietf-ipsecme-qr-ikev2-10 (work in | ||||
progress), December 2019. | ||||
[I-D.smyslov-ipsecme-ikev2-qr-alt] | ||||
Smyslov, V., "An Alternative Approach for Postquantum | ||||
Preshared Keys in IKEv2", draft-smyslov-ipsecme-ikev2-qr- | ||||
alt-00 (work in progress), October 2019. | ||||
[I-D.tjhai-ipsecme-hybrid-qske-ikev2] | [I-D.ietf-ipsecme-ikev2-multiple-ke] | |||
Tjhai, C., Tomlinson, M., grbartle@cisco.com, g., Fluhrer, | Tjhai, C., Tomlinson, M., grbartle@cisco.com, g., Fluhrer, | |||
S., Geest, D., Garcia-Morchon, O., and V. Smyslov, | S., Geest, D., Garcia-Morchon, O., and V. Smyslov, | |||
"Framework to Integrate Post-quantum Key Exchanges into | "Multiple Key Exchanges in IKEv2", draft-ietf-ipsecme- | |||
Internet Key Exchange Protocol Version 2 (IKEv2)", draft- | ikev2-multiple-ke-00 (work in progress), January 2020. | |||
tjhai-ipsecme-hybrid-qske-ikev2-04 (work in progress), | ||||
July 2019. | [I-D.smyslov-ipsecme-ikev2-qr-alt] | |||
Smyslov, V., "Alternative Approach for Mixing Preshared | ||||
Keys in IKEv2 for Post-quantum Security", draft-smyslov- | ||||
ipsecme-ikev2-qr-alt-01 (work in progress), February 2020. | ||||
[IKEV2-IANA] | [IKEV2-IANA] | |||
IANA, "Internet Key Exchange Version 2 (IKEv2) | IANA, "Internet Key Exchange Version 2 (IKEv2) | |||
Parameters", <http://www.iana.org/assignments/ikev2- | Parameters", <http://www.iana.org/assignments/ikev2- | |||
parameters/ikev2-parameters.xhtml#ikev2-parameters-7>. | parameters/ikev2-parameters.xhtml#ikev2-parameters-7>. | |||
[NNL] Naor, D., Noal, M., and J. Lotspiech, "Revocation and | [NNL] Naor, D., Noal, M., and J. Lotspiech, "Revocation and | |||
Tracing Schemes for Stateless Receivers", Advances in | Tracing Schemes for Stateless Receivers", Advances in | |||
Cryptology, Crypto '01, Springer-Verlag LNCS 2139, 2001, | Cryptology, Crypto '01, Springer-Verlag LNCS 2139, 2001, | |||
pp. 41-62, 2001, | pp. 41-62, 2001, | |||
<http://www.wisdom.weizmann.ac.il/~naor/>. | <http://www.wisdom.weizmann.ac.il/~naor/PAPERS/2nl.pdf>. | |||
[OFT] McGrew, D. and A. Sherman, "Key Establishment in Large | [OFT] McGrew, D. and A. Sherman, "Key Establishment in Large | |||
Dynamic Groups Using One-Way Function Trees", Manuscript, | Dynamic Groups Using One-Way Function Trees", Manuscript, | |||
submitted to IEEE Transactions on Software Engineering, | submitted to IEEE Transactions on Software Engineering, | |||
1998, <http://download.nai.com/products/media/nai/misc/ | 1998, <https://pdfs.semanticscholar.org/ | |||
oft052098.ps>. | d24c/7b41f7bcc2b6690e1b4d80eaf8c3e1cc5ee5.pdf>. | |||
[RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | [RFC2409] Harkins, D. and D. Carrel, "The Internet Key Exchange | |||
(IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998, | (IKE)", RFC 2409, DOI 10.17487/RFC2409, November 1998, | |||
<https://www.rfc-editor.org/info/rfc2409>. | <https://www.rfc-editor.org/info/rfc2409>. | |||
[RFC3279] Bassham, L., Polk, W., and R. Housley, "Algorithms and | [RFC3279] Bassham, L., Polk, W., and R. Housley, "Algorithms and | |||
Identifiers for the Internet X.509 Public Key | Identifiers for the Internet X.509 Public Key | |||
Infrastructure Certificate and Certificate Revocation List | Infrastructure Certificate and Certificate Revocation List | |||
(CRL) Profile", RFC 3279, DOI 10.17487/RFC3279, April | (CRL) Profile", RFC 3279, DOI 10.17487/RFC3279, April | |||
2002, <https://www.rfc-editor.org/info/rfc3279>. | 2002, <https://www.rfc-editor.org/info/rfc3279>. | |||
skipping to change at page 50, line 15 ¶ | skipping to change at page 55, line 39 ¶ | |||
[RFC7383] Smyslov, V., "Internet Key Exchange Protocol Version 2 | [RFC7383] Smyslov, V., "Internet Key Exchange Protocol Version 2 | |||
(IKEv2) Message Fragmentation", RFC 7383, | (IKEv2) Message Fragmentation", RFC 7383, | |||
DOI 10.17487/RFC7383, November 2014, | DOI 10.17487/RFC7383, November 2014, | |||
<https://www.rfc-editor.org/info/rfc7383>. | <https://www.rfc-editor.org/info/rfc7383>. | |||
[RFC7427] Kivinen, T. and J. Snyder, "Signature Authentication in | [RFC7427] Kivinen, T. and J. Snyder, "Signature Authentication in | |||
the Internet Key Exchange Version 2 (IKEv2)", RFC 7427, | the Internet Key Exchange Version 2 (IKEv2)", RFC 7427, | |||
DOI 10.17487/RFC7427, January 2015, | DOI 10.17487/RFC7427, January 2015, | |||
<https://www.rfc-editor.org/info/rfc7427>. | <https://www.rfc-editor.org/info/rfc7427>. | |||
[RFC7634] Nir, Y., "ChaCha20, Poly1305, and Their Use in the | ||||
Internet Key Exchange Protocol (IKE) and IPsec", RFC 7634, | ||||
DOI 10.17487/RFC7634, August 2015, | ||||
<https://www.rfc-editor.org/info/rfc7634>. | ||||
[RFC8229] Pauly, T., Touati, S., and R. Mantha, "TCP Encapsulation | [RFC8229] Pauly, T., Touati, S., and R. Mantha, "TCP Encapsulation | |||
of IKE and IPsec Packets", RFC 8229, DOI 10.17487/RFC8229, | of IKE and IPsec Packets", RFC 8229, DOI 10.17487/RFC8229, | |||
August 2017, <https://www.rfc-editor.org/info/rfc8229>. | August 2017, <https://www.rfc-editor.org/info/rfc8229>. | |||
[RFC8784] Fluhrer, S., Kampanakis, P., McGrew, D., and V. Smyslov, | ||||
"Mixing Preshared Keys in the Internet Key Exchange | ||||
Protocol Version 2 (IKEv2) for Post-quantum Security", | ||||
RFC 8784, DOI 10.17487/RFC8784, June 2020, | ||||
<https://www.rfc-editor.org/info/rfc8784>. | ||||
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 group members. This section clarifies how | |||
the LKH architecture is used with G-IKEv2. | the LKH architecture is used with G-IKEv2. | |||
A.1. Group Creation | A.1. Notation | |||
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 0{Y} means that | ||||
the default wrap key (SK_w) is used to encrypt key Y, and the | ||||
notation X{0} means key X is used to encrypt the group SA key. Note, | ||||
that 0{0} means that the group SA key is encrypted with default wrap | ||||
key. | ||||
The content of the KD payload will be shown as a sequence of Key | ||||
Packets. The Group Key Packet substructure will be denoted as SAn(), | ||||
when n is an SPI for the SA, and The Member Key Packet substructure | ||||
will be denoted as GM(). The content of the Key Packets is shown as | ||||
SA_KEY and KEY_WRAP_KEY attributes with the notation described above. | ||||
Here is the example of KD payload. | ||||
KD(SA1(X{0}),GM(Y{X},Z{Y},0{Z}) | ||||
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, i.e. | ||||
the relation between the keys. In this case the keys had the | ||||
following relation: Z{Y}, Y{X}. | ||||
A.2. Group Creation | ||||
When a GCKS forms a group, it creates a key tree as shown in the | When a GCKS forms a group, it creates a key tree as shown in the | |||
figure below. The key tree contains logical keys (represented as | figure below. The key tree contains logical keys (which are | |||
numbers in the figure) and a private key shared with only a single GM | represented as the values of their Key IDs in the figure) and a | |||
(represented as letters in the figure). Note that the use of numbers | private key shared with only a single GM (the GMs are represented as | |||
and letters is used for explanatory purposes; in fact, each key would | letters followed by the corresponding key ID in parentheses in the | |||
have an LKH ID, which is two-octet identifier chosen by the GCKS. | figure). The root of the tree contains the multicast rekey SA key | |||
The GCKS may create a complete tree as shown, or a partial tree which | (which is represented as SAn(0), showing that its Key ID is always | |||
is created on demand as members join the group. The top of the key | zero). The figure below assumes that the Key IDs are assigned | |||
tree (i.e., "1" in Figure 29) is used as the KEK for the group. | sequentially; this is not a requirement and only used for | |||
illustrative purposes. The GCKS may create a complete tree as shown, | ||||
or a partial tree which is created on demand as members join the | ||||
group. | ||||
1 | SA1(0) | |||
+------------------------------+ | +------------------------------+ | |||
2 3 | 1 2 | |||
+---------------+ +---------------+ | +---------------+ +---------------+ | |||
4 5 6 7 | 3 4 5 6 | |||
+-------+ +-------+ +--------+ +--------+ | +-------+ +-------+ +--------+ +--------+ | |||
A B C D E F G H | A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | |||
Figure 29: Initial LKH tree | Figure 27: Initial LKH tree | |||
When GM "A" joins the group, the GCKS provides an LKH_DOWNLOAD_ARRAY | When GM A joins the group, the GCKS provides it with the keys in the | |||
in the KD payload of the GSA_AUTH or GSA_REGISTRATION exchange. | KEY_WRAP_KEY attributes in the KD payload of the GSA_AUTH or | |||
Given the tree shown in figure above, the LKH_DOWNLOAD_ARRAY will | GSA_REGISTRATION exchange. Given the tree shown in figure above, the | |||
contain four LKH Key payloads, each containing an LKH ID and Key | KD payload will be: | |||
Data. If the LKH ID values were chosen as shown in the figure, four | ||||
LKH Keys would be provided to GM "A", in the following order: A, 4, | ||||
2, 1. When GM "B" joins the group, it would also be given four LKH | ||||
Keys in the following order: B, 4, 2, 1. And so on, until GM "H" | ||||
joins the group and is given H, 7, 3, 1. | ||||
A.2. Group Member Exclusion | KD(SA1(1{0}),GM(3{1},7{3},0{7}) | |||
KD Payload for the Group Member A | ||||
From these attributes the GM A will construct the Key Path | ||||
0->1->3->7->0 and since it ends up with SK_w, it will use all the | ||||
KEY_WRAP_KEY attributes present in the path as its working Key Path: | ||||
1->3->7. | ||||
Similarly, when other GMs will be joining the group they will be | ||||
provided with the corresponding keys, so after all 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 | ||||
E: 2->5->11 F: 2->5->12 G: 2->6->13 H: 2->6->14 | ||||
A.3. Simple Group SA Rekey | ||||
If the GCKS performs a simple SA rekey without changing group | ||||
membership, it will only send Group Key Packet in the KD payload with | ||||
a new SA key encrypted with the default KWK. | ||||
KD(SA2(0{0})) | ||||
KD Payload for the Group Member F | ||||
All the GMs will be able to decrypt it and no changes in their | ||||
working Key Paths will take place. | ||||
A.4. Group Member Exclusion | ||||
If the GKCS has reason to believe that a GM should be excluded, then | If the GKCS has reason to believe that a GM should be excluded, then | |||
it can do so by sending a GSA_REKEY exchange that includes a set of | it can do so by sending a GSA_REKEY message that includes a set of | |||
LKH_UPDATE_ARRAY attributes in the KD payload. Each LKH_UPDATE_ARRAY | GM_KEY attributes which would allow all GMs except for the excluded | |||
contains a set of LKH Key payloads, in which every GM other than the | one to get a new SA key. | |||
excluded GM will be able to determine a set of new logical keys, | ||||
which culminate in a new key "1". The excluded GM will observe the | ||||
set of LKH_UPDATE_ARRAY attributes, but cannot determine the new | ||||
logical keys because each of the "Key Data" fields is encrypted with | ||||
a key held by other GMs. The GM will hold no keys to properly | ||||
decrypt any of the "Key Data" fields, including key "1" (i.e., the | ||||
new KEK). When a subsequent GSA_REKEY exchange is delivered by the | ||||
GCKS and protected by the new KEK, the excluded GM will no longer be | ||||
able to see the contents of the GSA_REKEY, including new TEKs that | ||||
will be delivered to replace existing TEKs. At this point, the GM | ||||
will no longer be able to participate in the group. | ||||
In the example below, new keys are represented as the number followed | In the example below the GCKS excludes GM F. For this purpose it | |||
by a "prime" symbol (e.g., "1" becomes "1'"). Each key is encrypted | changes the key tree as follows, replacing the key 2 with the key 15 | |||
by another key. This is represented as "{key1}key2", where key2 | and the key 5 with the key 16. It also a new SA key for a new SA3. | |||
encrypts key1. For example, "{1'}2' states that a new key "1'" is | ||||
encrypted with a new key "2'". | ||||
If GM "B" is to be excluded, the GCKS will need to include three | SA3(0) | |||
LKH_UPDATE_ARRAY attributes in the GSA_REKEY message. The order of | +------------------------------+ | |||
the attributes does not matter; only the order of the keys within | 1 15 | |||
each attribute. | +---------------+ +---------------+ | |||
3 4 16 6 | ||||
+-------+ +-------+ +---- +--------+ | ||||
A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | ||||
o One will provide GM "A" with new logical keys that are shared with | Figure 28: LKH tree after F has been excluded | |||
B: {4'}A, {2'}4', {1'}2' | ||||
o One will provide all GMs holding key "5" with new logical keys: | Then it sends the following KD payload for the new rekey SA3: | |||
{2'}5, {1'}2' | ||||
o One will provide all GMs holding key "3" with a new KEK: {1'}3 | KD(SA3(1{0},SA3(15{0})),GM(6{15},16{15},11{16}) | |||
Each GM will look at each LKH_UPDATE_ARRAY attribute and observe an | KD Payload for the Group Member F | |||
LKH ID which is present in an LKH Key delivered to them in the | ||||
LKH_DOWNLOAD_ARRAY they were given. If they find a matching LKH ID, | ||||
then they will decrypt the new key with the logical key immediately | ||||
preceding that LKH Key, and so on until they have received the new 1' | ||||
key. | ||||
The resulting key tree from this rekey event would would be shown in | While processing this KD payload: | |||
Figure 30. | ||||
1' | o GMs A, B, C and D will be able to decrypt the SA_KEY attribute | |||
+------------------------------+ | 1{0} by using the "1" key from their key path. Since no new | |||
2' 3 | GM_KEY attributes are in the new Key Path, they won't update their | |||
+---------------+ +---------------+ | working Key Paths. | |||
4' 5 6 7 | ||||
+---+ +-------+ +--------+ +--------+ | ||||
A B C D E F G H | ||||
Figure 30: LKH tree after B has been excluded | o GMs G and H will construct new Key Path 15->0 and will be able to | |||
decrypt the new GM_KEY 15 using the key 6 from their working Key | ||||
Paths. So, they will update their working Key Paths replacing | ||||
their beginnings up to the key 6 with the new Key Path (thus | ||||
replacing the key 2 with the key 15). | ||||
Authors' Addresses | o GM E will construct new Key Path 16->15->0 and will be able to | |||
decrypt the new GM_KEY 16 using the key 11 from its working Key | ||||
Path. So, it will update its working Key Path replacing its | ||||
beginnings up to the key 11 with the new Key Path (thus replacing | ||||
the key 2 with the key 15 and the key 5 with the key 16). | ||||
Brian Weis | o GM F won't be able to construct any Key Path leading to any key he | |||
Independent | possesses, so it will be unable to decrypt the new SA key for the | |||
USA | SA3 and thus it will be excluded from the group once the GCKS | |||
starts sending TEK keys using SA3. | ||||
Email: bew.stds@gmail.com | 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 | ||||
E: 15->16->11 F: excluded G: 15->6->13 H: 15->6->14 | ||||
Authors' Addresses | ||||
Valery Smyslov | Valery Smyslov | |||
ELVIS-PLUS | ELVIS-PLUS | |||
PO Box 81 | PO Box 81 | |||
Moscow (Zelenograd) 124460 | Moscow (Zelenograd) 124460 | |||
Russian Federation | Russian Federation | |||
Phone: +7 495 276 0211 | Phone: +7 495 276 0211 | |||
Email: svan@elvis.ru | Email: svan@elvis.ru | |||
Brian Weis | ||||
Independent | ||||
USA | ||||
Email: bew.stds@gmail.com | ||||
End of changes. 365 change blocks. | ||||
1334 lines changed or deleted | 1619 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |