rfc9838.original.xml | rfc9838.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<?rfc toc="yes"?> | ||||
<?rfc tocompact="no"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<rfc category="std" submissionType="IETF" docName="draft-ietf-ipsecme-g-ikev2-23 | ||||
" ipr="trust200902" obsoletes="6407"> | ||||
<front> | ||||
<title abbrev="G-IKEv2">Group Key Management using IKEv2</title> | ||||
<!DOCTYPE rfc [ | ||||
<!ENTITY nbsp " "> | ||||
<!ENTITY zwsp "​"> | ||||
<!ENTITY nbhy "‑"> | ||||
<!ENTITY wj "⁠"> | ||||
]> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" submissionType="I | ||||
ETF" docName="draft-ietf-ipsecme-g-ikev2-23" number="9838" ipr="trust200902" con | ||||
sensus="true" updates="" obsoletes="6407" tocInclude="true" tocDepth="3" symRefs | ||||
="true" sortRefs="true" version="3" xml:lang="en"> | ||||
<!-- [rfced] Because this document obsoletes RFC 6407, please review | ||||
the errata reported for RFC 6407 | ||||
(https://www.rfc-editor.org/errata_search.php?rfc=6407) and let | ||||
us know if you confirm our opinion that none of them are relevant | ||||
to the content of this document. | ||||
--> | ||||
<!-- [rfced] Please note that the title of the document has been updated to | ||||
expand abbreviations per Section 3.6 of RFC 7322 ("RFC Style Guide"). | ||||
Original: | ||||
Group Key Management using IKEv2 | ||||
Current: | ||||
Group Key Management Using the Internet Key Exchange | ||||
Protocol Version 2 (IKEv2) | ||||
--> | ||||
<front> | ||||
<title abbrev="G-IKEv2">Group Key Management Using the Internet Key Exchange | ||||
Protocol Version 2 (IKEv2)</title> | ||||
<seriesInfo name="RFC" value="9838"/> | ||||
<author fullname="Valery Smyslov" initials="V." surname="Smyslov"> | <author fullname="Valery Smyslov" initials="V." surname="Smyslov"> | |||
<organization>ELVIS-PLUS</organization> | <organization>ELVIS-PLUS</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | ||||
<city></city> | ||||
<code></code> | ||||
<region></region> | ||||
<country>Russian Federation</country> | <country>Russian Federation</country> | |||
</postal> | </postal> | |||
<phone></phone> | ||||
<email>svan@elvis.ru</email> | <email>svan@elvis.ru</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Brian Weis" initials="B." surname="Weis"> | <author fullname="Brian Weis" initials="B." surname="Weis"> | |||
<organization>Independent</organization> | <organization>Independent</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <country>United States of America</country> | |||
<city></city> | ||||
<code></code> | ||||
<region></region> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<phone></phone> | ||||
<email>bew.stds@gmail.com</email> | <email>bew.stds@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="September" year="2025"/> | ||||
<area>SEC</area> | ||||
<workgroup>ipsecme</workgroup> | ||||
<date /> | <!-- [rfced] Please insert any keywords (beyond those that appear in | |||
the title) for use on https://www.rfc-editor.org/search. --> | ||||
<area>Security Area</area> | <keyword>example</keyword> | |||
<abstract> | <abstract> | |||
<t> This document presents an extension to the Internet Key Exchange versi | <t> This document presents an extension to the Internet Key Exchange Proto | |||
on 2 (IKEv2) protocol | col Version 2 (IKEv2) | |||
for the purpose of a group key management. The protocol is in conformance | for the purpose of group key management. The protocol is in conformance wi | |||
with the | th the | |||
Multicast Security (MSEC) key management architecture, which contains | Multicast Security (MSEC) key management architecture, which contains | |||
two components: member registration and group rekeying. Both components ar e | two components: member registration and group rekeying. Both components ar e | |||
required for a GCKS (Group Controller/Key Server) to provide authorized Gr | required for a Group Controller/Key Server (GCKS) to provide authorized Gr | |||
oup Members (GMs) | oup Members (GMs) | |||
with IPsec group security associations. The group members then | with IPsec Group Security Associations (GSAs). The group members then | |||
exchange IP multicast or other group traffic as IPsec packets. | exchange IP multicast or other group traffic as IPsec packets. | |||
</t> | </t> | |||
<t>This document obsoletes RFC 6407. | ||||
<t> This document obsoletes RFC 6407. | ||||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction and Overview"> | <section> | |||
<t> This document presents an extension to IKEv2 | <name>Introduction and Overview</name> | |||
<xref target="RFC7296"></xref> called G-IKEv2, which allows performing a g | <t>This document presents an extension to IKEv2 | |||
roup key | <xref target="RFC7296"/> called G-IKEv2, which allows performing group key | |||
management. A group key management protocol provides IPsec keys and policy to a | management. A group key management protocol provides IPsec keys and policy to a | |||
set of IPsec devices which are authorized to communicate using a Group | set of IPsec devices that are authorized to communicate using a Group | |||
Security Association (GSA) defined in Multicast Group Security Architectur | Security Association (GSA) defined in Multicast Group Security Architectur | |||
e <xref target="RFC3740"></xref>. | e <xref target="RFC3740"/>. | |||
The data communications within the group (e.g., IP multicast packets) | The data communications within the group (e.g., IP multicast packets) | |||
are protected by a key pushed to the group members (GMs) by the Group | are protected by a key pushed to the Group Members (GMs) by the Group Cont | |||
Controller/Key Server (GCKS). </t> | roller/Key Server (GCKS). </t> | |||
<t>G-IKEv2 conforms to "The Multicast Group Security | ||||
<t>G-IKEv2 conforms to the Multicast Group Security | Architecture" <xref target="RFC3740"/>, "Multicast Extensions to the | |||
Architecture <xref target="RFC3740"></xref>, Multicast Extensions to the | Security Architecture for the Internet Protocol" <xref target="RFC5374"/>, | |||
Security Architecture for the Internet Protocol <xref target="RFC5374"></x | and "Multicast Security (MSEC) Group Key Management Architecture" <xref ta | |||
ref> | rget="RFC4046"/>. | |||
and the Multicast Security (MSEC) Group Key Management Architecture <xref | G-IKEv2 replaces "The Group Domain of Interpretation" <xref target="RFC640 | |||
target="RFC4046"></xref>. | 7"/>, which defines a | |||
G-IKEv2 replaces GDOI <xref target="RFC6407"></xref>, which defines a | similar group key management protocol using IKEv1 <xref target="RFC2409"/> | |||
similar group key management protocol using IKEv1 <xref | (since deprecated by IKEv2). When G-IKEv2 is | |||
target="RFC2409"></xref> (since deprecated by IKEv2). When G-IKEv2 is | ||||
used, group key management use cases can benefit from the simplicity, | used, group key management use cases can benefit from the simplicity, | |||
increased robustness and cryptographic improvements of IKEv2 (see | increased robustness, and cryptographic improvements of IKEv2 (see | |||
Appendix A of <xref target="RFC7296"></xref>).</t> | <xref section="A" target="RFC7296"/>).</t> | |||
<t>G-IKEv2 is composed of two phases: registration and rekeying. In the re | ||||
<t>G-IKEv2 is composed of two phases: registration and rekeying. In the re | gistration phase, a GM | |||
gistration phase a GM | ||||
contacts a GCKS to register to a group and to receive the necessary policy and the keying material | contacts a GCKS to register to a group and to receive the necessary policy and the keying material | |||
to be able communicate with the other GMs in the group as well as with the GCKS. | to be able communicate with the other GMs in the group as well as with the GCKS. | |||
The rekeying phase allows the GCKS to periodically renew the keying materi al for both GM-to-GM | The rekeying phase allows the GCKS to periodically renew the keying materi al for both GM-to-GM | |||
communications as well as for communication between the GM and the GCKS. | communications as well as for communication between the GM and the GCKS. | |||
</t> | </t> | |||
<t>G-IKEv2 defines two ways to perform registration. When a GM first | ||||
<t>G-IKEv2 defines two ways to perform registration. When a GM first conta | contacts a GCKS, it uses the GSA_AUTH exchange (<xref | |||
cts a GCKS it uses the GSA_AUTH exchange | target="gsa_auth"/>) to register to a group. This exchange happens after | |||
(<xref target="gsa_auth" />) to register to a group. This exchange happens | the IKE_SA_INIT exchange (similarly to the IKE_AUTH exchange in IKEv2) | |||
after the IKE_SA_INIT exchange | and results in establishing an IKE Security Association (SA) between the G | |||
(similarly to the IKE_AUTH exchange in IKEv2) and results in establishing | M and the GCKS. | |||
an IKE SA between the GM and the GCKS. | During this exchange, the GCKS authenticates and authorizes the GM and the | |||
During this exchange the GCKS authenticates and authorizes the GM, then pu | n | |||
shes policy and keys used by the group to the GM. | pushes policy and keys used by the group to the GM. The second new | |||
The second new exchange type is the GSA_REGISTRATION exchange (<xref targe | exchange type is the GSA_REGISTRATION exchange (<xref | |||
t="gsa_registration" />), | target="gsa_registration"/>), which can be used by the GM within the alrea | |||
which a GM can use within the already established IKE SA with the GCKS (e. | dy-established | |||
g. for registering to another group). | IKE SA with the GCKS (e.g., for registering to another | |||
group). | ||||
</t> | </t> | |||
<t>Refreshing the group keys can be performed either in a unicast mode via | ||||
<t> Refreshing the group keys can be performed either in an unicast mode v | the | |||
ia the | GSA_INBAND_REKEY exchange (<xref target="gsa_inband_rekey"/>) performed ov | |||
GSA_INBAND_REKEY exchange (<xref target="gsa_inband_rekey" />) performed o | er a specific IKE SA between a GM and a GCKS | |||
ver a specific IKE SA between a GM and a GCKS | or in a multicast mode with the GSA_REKEY pseudo exchange (<xref target="g | |||
or in a multicast mode with the GSA_REKEY pseudo exchange (<xref target="g | sa_rekey"/>) when new keys are being distributed to all GMs. | |||
sa_rekey" />), when new keys are being distributed to all GMs. | ||||
</t> | </t> | |||
<t>Large and small groups may use different sets of these mechanisms. | <t>Large and small groups may use different sets of these mechanisms. | |||
When a large group of devices are communicating, the GCKS is likely to | When a large group of devices are communicating, the GCKS is likely to | |||
use the GSA_REKEY message for efficiency. This is shown in <xref | use the GSA_REKEY message for efficiency. This is shown in <xref target="l | |||
target="large-groups"></xref>, where multicast communications indicated wi | arge-groups"/>, where multicast communications are indicated with a double line. | |||
th a double line. | <!-- [rfced] Please review whether any of the notes in this document | |||
(Note: For clarity, IKE_SA_INIT is omitted from <xref target="large-groups | should be in the <aside> element. It is defined as "a container for | |||
" /> and <xref target="small-groups" />).</t> | content that is semantically less important or tangential to the | |||
content that surrounds it" (https://authors.ietf.org/en/rfcxml-vocabulary#aside) | ||||
. | ||||
--> | ||||
(Note: For clarity, IKE_SA_INIT is omitted from Figures <xref target="larg | ||||
e-groups" format="counter"/> and <xref target="small-groups" format="counter"/>. | ||||
)</t> | ||||
<figure anchor="large-groups" title="G-IKEv2 used in large groups"> | <figure anchor="large-groups"> | |||
<artwork align="center" name=""><![CDATA[ | <name>G-IKEv2 Used in Large Groups</name> | |||
<artwork name=""><![CDATA[ | ||||
+--------+ | +--------+ | |||
+----IKEv2---->| GCKS |<----IKEv2----+ | +----IKEv2---->| GCKS |<----IKEv2----+ | |||
| +--------+ | | | +--------+ | | |||
| || ^ | | | || ^ | | |||
| || | | | | || | | | |||
| || GSA_AUTH | | | || GSA_AUTH | | |||
| || or | | | || or | | |||
| || GSA_REGISTRATION | | | || GSA_REGISTRATION | | |||
| || | | | | || | | | |||
GSA_AUTH || IKEv2 GSA_AUTH | GSA_AUTH || IKEv2 GSA_AUTH | |||
skipping to change at line 140 ¶ | skipping to change at line 155 ¶ | |||
|| || || | || || || | |||
*=====ESP/AH=====**=====ESP/AH====* | *=====ESP/AH=====**=====ESP/AH====* | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>Alternatively, a small group may simply use the GSA_AUTH or GSA_REGISTR ATION as | <t>Alternatively, a small group may simply use the GSA_AUTH or GSA_REGISTR ATION as | |||
registration protocols, where the GCKS issues rekeys using the | registration protocols, where the GCKS issues rekeys using the | |||
GSA_INBAND_REKEY within the same IKE SA. | GSA_INBAND_REKEY within the same IKE SA. | |||
</t> | </t> | |||
<figure anchor="small-groups" title="G-IKEv2 used in small groups"> | <figure anchor="small-groups"> | |||
<artwork align="center" name=""><![CDATA[ | <name>G-IKEv2 Used in Small Groups</name> | |||
<artwork name=""><![CDATA[ | ||||
GSA_AUTH or GSA_REGISTRATION, GSA_INBAND_REKEY | GSA_AUTH or GSA_REGISTRATION, GSA_INBAND_REKEY | |||
+--------------------IKEv2----------------------+ | +--------------------IKEv2----------------------+ | |||
| | | | | | |||
| GSA_AUTH or GSA_REGISTRATION, | | | GSA_AUTH or GSA_REGISTRATION, | | |||
| GSA_INBAND_REKEY | | | GSA_INBAND_REKEY | | |||
| +-----------IKEv2-------------+ | | | +-----------IKEv2-------------+ | | |||
| | | | | | | | | | |||
| |GSA_AUTH or GSA_REGISTRATION,| | | | |GSA_AUTH or GSA_REGISTRATION,| | | |||
| | GSA_INBAND_REKEY | | | | | GSA_INBAND_REKEY | | | |||
| | +--IKEv2-+ | | | | | +--IKEv2-+ | | | |||
skipping to change at line 163 ¶ | skipping to change at line 179 ¶ | |||
+---------+ +----+ +----+ +----+ | +---------+ +----+ +----+ +----+ | |||
| GCKS/GM | | GM | | GM | | GM | | | GCKS/GM | | GM | | GM | | GM | | |||
+---------+ +----+ +----+ +----+ | +---------+ +----+ +----+ +----+ | |||
|| || || || | || || || || | |||
*==ESP/AH==**=====ESP/AH====**===ESP/AH===* | *==ESP/AH==**=====ESP/AH====**===ESP/AH===* | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> A combination of these approaches is also possible. For example, | <t> A combination of these approaches is also possible. For example, | |||
the GCKS may use more robust GSA_INBAND_REKEY to provide keys for some GMs | the GCKS may use more robust GSA_INBAND_REKEY to provide keys for some GMs | |||
(for example, those acting as senders in the group) and GSA_REKEY for the | (for example, those acting as senders in the group) and GSA_REKEY for the | |||
rest. | rest. Also note that GCKS may be a GM (as shown in <xref target="small-groups"/> | |||
Note also, that GCKS may also be a GM (as shown in <xref target="small-gro | ). | |||
ups"></xref>). | ||||
</t> | </t> | |||
<t>IKEv2 message semantics are preserved in that all communications | <t>IKEv2 message semantics are preserved in that all communications | |||
consists of message request-response pairs. The exception to this rule | consist of message request-response pairs. The exception to this rule | |||
is the GSA_REKEY pseudo-exchange, which is a single message delivering gro up | is the GSA_REKEY pseudo-exchange, which is a single message delivering gro up | |||
updates to the GMs.</t> | updates to the GMs.</t> | |||
<section> | ||||
<section title="Requirements Notation"> | <name>Requirements Notation</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
14 <xref target="RFC2119"></xref> <xref target="RFC8174"></xref> when, | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
and only when, they appear in all capitals, as shown here.</t> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor="terms"> | ||||
<section title="Terminology" anchor="terms"> | <name>Terminology</name> | |||
<t> It is assumed that readers are familiar with the IPsec architecture | <t> It is assumed that readers are familiar with the IPsec | |||
<xref target="RFC4301" />, | architecture <xref target="RFC4301"/> and its extension for multicast | |||
and its extension for multicast <xref target="RFC5374" />. This document | <xref target="RFC5374"/>. This document defines an extension to the | |||
defines an extension to the IKEv2 protocol <xref target="RFC7296" /> | IKEv2 protocol <xref target="RFC7296"/> and skips many of its | |||
and skips many its details. The notation and conventions from <xref targ | details. The notation and conventions from <xref target="RFC7296"/> | |||
et="RFC7296" /> are used for describing G-IKEv2 payloads and exchanges. | are used for describing G-IKEv2 payloads and exchanges. | |||
</t> | </t> | |||
<t>The following key terms are used throughout this document (mostly bor | <!--[rfced] As the full titles of RFCs 3740, 5374, and 6407 are | |||
rowed from Multicast Group Security Architecture <xref target="RFC3740" />, | included in Section 1, we removed the titles from the following | |||
Multicast Extensions to the Security Architecture <xref target="RFC53 | text in Section 1.2. Please let us know of any objections. | |||
74" /> and GDOI <xref target="RFC6407" />).</t> | ||||
<dl anchor="definitions" newline="true"> | Original: | |||
<dt>Group</dt> | The following key terms are used throughout this document (mostly | |||
<dd>A set of IPsec devices that communicate to each other using multic | borrowed from the Multicast Group Security Architecture [RFC3740], | |||
ast.</dd> | Multicast Extensions to the Security Architecture [RFC5374], and the | |||
Group Domain of Interpretation (GDOI) [RFC6407]). | ||||
<dt>Group Member (GM)</dt> | Current: | |||
The following key terms are used throughout this document (mostly | ||||
borrowed from [RFC3740], [RFC5374], and [RFC6407]). | ||||
--> | ||||
<t>The following key terms are used throughout this document (mostly | ||||
borrowed from <xref | ||||
target="RFC3740"/>, <xref target="RFC5374"/>, and <xref target="RFC6407" | ||||
/>).</t> | ||||
<dl anchor="definitions" newline="true" spacing="normal"> | ||||
<dt>Group:</dt> | ||||
<dd>A set of IPsec devices that communicate to each other using multic | ||||
ast.</dd> | ||||
<dt>Group Member (GM):</dt> | ||||
<dd>An IPsec device that belongs to a group. A Group Member is | <dd>An IPsec device that belongs to a group. A Group Member is | |||
authorized to be a Group Sender and/or a Group Receiver. | authorized to be a Group Sender and/or a Group Receiver. | |||
</dd> | </dd> | |||
<dt>Group Receiver:</dt> | ||||
<dt>Group Receiver</dt> | ||||
<dd>A Group Member that is authorized to receive packets sent to a gro up by a Group Sender. | <dd>A Group Member that is authorized to receive packets sent to a gro up by a Group Sender. | |||
</dd> | </dd> | |||
<dt>Group Sender:</dt> | ||||
<dt>Group Sender</dt> | ||||
<dd>A Group Member that is authorized to send packets to a group. | <dd>A Group Member that is authorized to send packets to a group. | |||
</dd> | </dd> | |||
<dt>Group Key Management (GKM) Protocol:</dt> | ||||
<dt>Group Key Management (GKM) Protocol</dt> | ||||
<dd>A key management protocol used by a GCKS to distribute IPsec | <dd>A key management protocol used by a GCKS to distribute IPsec | |||
Security Association policy and keying material. A GKM protocol | Security Association policy and keying material. A GKM protocol | |||
is needed because a group of IPsec devices require the same SAs. For | is needed because a group of IPsec devices require the same SAs. For | |||
example, when an IPsec SA describes an IP multicast destination, | example, when an IPsec SA describes an IP multicast destination, | |||
the sender and all receivers need to have the group SA. | the sender and all receivers need to have the group SA. | |||
</dd> | </dd> | |||
<dt>Group Controller/Key Server (GCKS):</dt> | ||||
<dt>Group Controller/Key Server (GCKS)</dt> | ||||
<dd>A Group Key Management (GKM) protocol server that manages IPsec | <dd>A Group Key Management (GKM) protocol server that manages IPsec | |||
state for a group. A GCKS authenticates and provides the IPsec SA | state for a group. A GCKS authenticates and provides the IPsec SA | |||
policy and keying material to GMs. | policy and keying material to GMs. | |||
</dd> | </dd> | |||
<dt>Data-Security SA:</dt> | ||||
<dt>Data-Security SA</dt> | ||||
<dd>A multicast SA between each multicast sender and the group's recei vers. | <dd>A multicast SA between each multicast sender and the group's recei vers. | |||
The Data-Security SA protects data between member senders and | The Data-Security SA protects data between member senders and | |||
member receivers. One or more SAs are required for the multicast trans mission of | member receivers. One or more SAs are required for the multicast trans mission of | |||
data-messages from the Group Sender to other group members. | data messages from the Group Sender to other group members. | |||
This specification relies on ESP and AH as protocols for Data-Security | This specification relies on Encapsulating Security Payload (ESP) and | |||
SAs. | Authentication Header (AH) as protocols for Data-Security SAs. | |||
</dd> | </dd> | |||
<dt>Rekey SA:</dt> | ||||
<dt>Rekey SA</dt> | ||||
<dd>A single multicast SA between the GCKS and all of the group member s. | <dd>A single multicast SA between the GCKS and all of the group member s. | |||
This SA is used for multicast transmission of key management messages from the GCKS to all GMs. | This SA is used for multicast transmission of key management messages from the GCKS to all GMs. | |||
</dd> | </dd> | |||
<dt>Group Security Association (GSA):</dt> | ||||
<dt>Group Security Association (GSA)</dt> | <dd>A collection of Data-Security SAs and Rekey SAs | |||
<dd>A collection of Data-Security SAs and Rekey SA | ||||
necessary for a Group Member to receive key updates. | necessary for a Group Member to receive key updates. | |||
A GSA describes the working policy for a group. Refer to MSEC Group K ey Management Architecture <xref target="RFC4046" /> | A GSA describes the working policy for a group. Refer to the MSEC Gro up Key Management Architecture <xref target="RFC4046"/> | |||
for additional information. | for additional information. | |||
</dd> | </dd> | |||
<dt>Traffic Encryption Key (TEK):</dt> | ||||
<dt>Traffic Encryption Key (TEK)</dt> | ||||
<dd>The symmetric cipher key used in a Data-Security SA (e.g., IPsec E SP) to protect traffic. | <dd>The symmetric cipher key used in a Data-Security SA (e.g., IPsec E SP) to protect traffic. | |||
</dd> | </dd> | |||
<dt>Key Encryption Key (KEK):</dt> | ||||
<dt>Key Encryption Key (KEK)</dt> | ||||
<dd>The symmetric key (or a set of keys) used in a Rekey SA to protect its messages. The set of keys may include keys | <dd>The symmetric key (or a set of keys) used in a Rekey SA to protect its messages. The set of keys may include keys | |||
for encryption and authentication, as well as keys for key wrapping. | for encryption and authentication, as well as keys for key wrapping. | |||
</dd> | </dd> | |||
<dt>Key Wrap Key (KWK):</dt> | ||||
<dt>Key Wrap Key (KWK)</dt> | ||||
<dd>The symmetric cipher key used to protect another key. | <dd>The symmetric cipher key used to protect another key. | |||
</dd> | </dd> | |||
<dt>Group-wide (GW) policy:</dt> | ||||
<dt>Group-wide (GW) policy</dt> | ||||
<dd>Group policy not related to a particular SA. | <dd>Group policy not related to a particular SA. | |||
</dd> | </dd> | |||
<dt>Activation Time Delay (ATD):</dt> | ||||
<dt>Activation Time Delay (ATD)</dt> | <dd>Defines how long Group Senders should wait after receiving new SAs | |||
<dd>Defines how long Group Senders should wait after receiving new SAs | before sending traffic over them. | |||
before starting sending traffic over them. | ||||
</dd> | </dd> | |||
<dt>Deactivation Time Delay (DTD):</dt> | ||||
<dt>Deactivation Time Delay (DTD)</dt> | ||||
<dd>Defines how long Group Members should wait after receiving a reque st to delete Data-Security SAs before actually deleting them. | <dd>Defines how long Group Members should wait after receiving a reque st to delete Data-Security SAs before actually deleting them. | |||
</dd> | </dd> | |||
<dt>Sender-ID:</dt> | ||||
<dt>Sender-ID</dt> | <dd>A unique identifier of a Group Sender in the context of an active | |||
<dd>A unique identifier of a Group Sender in the context of an active | GSA used to form the Initialization Vector (IV) in counter-based cipher modes. | |||
GSA, used to form Initialization Vector (IV) in counter-based cipher modes. | ||||
</dd> | </dd> | |||
<dt>Logical Key Hierarchy (LKH):</dt> | ||||
<dt>Logical Key Hierarchy (LKH)</dt> | <dd>A group management method defined in <xref target="RFC2627" sectio | |||
<dd>A group management method defined in Section 5.4 of Key Management | nFormat="of" section="5.4"/>. | |||
for Multicast <xref target="RFC2627" />. | ||||
</dd> | </dd> | |||
</dl> | </dl> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | ||||
<section title="G-IKEv2 Protocol"> | <name>G-IKEv2 Protocol</name> | |||
<t>G-IKEv2 is an extension to the IKEv2 protocol <xref target="RFC7296" | <t>G-IKEv2 is an extension to the IKEv2 protocol <xref target="RFC7296"/> | |||
/> that provides group authorization, | that provides group authorization, | |||
secure policy and keys download from the GCKS to GMs. | secure policy, and keys download from the GCKS to GMs. | |||
</t> | </t> | |||
<section> | ||||
<section title="G-IKEv2 Integration into IKEv2 Protocol"> | <name>G-IKEv2 Integration into the IKEv2 Protocol</name> | |||
<t>G-IKEv2 is compatible with most IKEv2 extensions defined so far (see | <t>G-IKEv2 is compatible with most IKEv2 extensions defined so far (see | |||
<xref target="ike_ext" /> for details). | <xref target="ike_ext"/> for details). | |||
In particular, it is assumed that, if necessary, the IKE_INTERMEDIATE ex | In particular, it is assumed that, if necessary, the IKE_INTERMEDIATE ex | |||
changes <xref target="RFC9242" /> may be utilized | changes <xref target="RFC9242"/> may be utilized | |||
while establishing the registration SA. It is also believed that | while establishing the registration SA. It is also believed that | |||
future IKEv2 extensions will be possible to use with G-IKEv2, however, s ome IKEv2 extensions may require | future IKEv2 extensions will be possible to use with G-IKEv2. However, s ome IKEv2 extensions may require | |||
special handling when used with G-IKEv2.</t> | special handling when used with G-IKEv2.</t> | |||
<section> | ||||
<name>G-IKEv2 Transport and Port</name> | ||||
<t> As an IKEv2 extension, G-IKEv2 <bcp14>SHOULD</bcp14> use the IKEv2 | ||||
ports (500, 4500). | ||||
<!-- [rfced] Should the following sentence be rephrased as shown below | ||||
to clarify "IKE SA"? | ||||
<section title="G-IKEv2 Transport and Port"> | Current: | |||
<t> As IKEv2 extension, G-IKEv2 <bcp14>SHOULD</bcp14> use the IKEv2 po | G-IKEv2 MAY also use TCP transport for registration (unicast) IKE SA, | |||
rts (500, 4500). | as defined in TCP Encapsulation of IKEv2 and IPsec [RFC9329]. | |||
Perhaps: | ||||
G-IKEv2 MAY also use TCP transport for the registration (unicast) of IKE SA, | ||||
as defined in TCP Encapsulation of IKEv2 and IPsec [RFC9329]. | ||||
--> | ||||
G-IKEv2 <bcp14>MAY</bcp14> also use TCP transport for registration (un icast) IKE SA, | G-IKEv2 <bcp14>MAY</bcp14> also use TCP transport for registration (un icast) IKE SA, | |||
as defined in TCP Encapsulation of IKEv2 and IPsec <xref target="RFC93 | as defined in TCP Encapsulation of IKEv2 and IPsec <xref target="RFC93 | |||
29" />. | 29"/>. | |||
G-IKEv2 <bcp14>MAY</bcp14> also use UDP port 848, the same as GDOI <xr | G-IKEv2 <bcp14>MAY</bcp14> also use UDP port 848, the same as Group Do | |||
ef | main of Interpretation (GDOI) <xref target="RFC6407"/>, because they serve a sim | |||
target="RFC6407"></xref>, because they serve a similar function. | ilar function. | |||
The version number in the IKE header distinguishes the G-IKEv2 | The version number in the IKE header distinguishes the G-IKEv2 | |||
protocol from GDOI protocol <xref target="RFC6407"></xref>. | protocol from the GDOI protocol <xref target="RFC6407"/>. | |||
</t> | </t> | |||
<t><xref target="RFC7296" sectionFormat="of" | ||||
<t>Section 2.23 of IKEv2 <xref target="RFC7296" /> describes how IKEv2 | section="2.23"/> describes how IKEv2 supports paths with NATs. | |||
supports paths with NATs. | The G-IKEv2 registration SA doesn't create any unicast IPsec SAs; thus | |||
G-IKEv2 registration SA doesn't create any unicast IPsec SAs, thus if | , | |||
a NAT is present between the GM and the GCKS, there is no unicast | if a NAT is present between the GM and the GCKS, there is no unicast | |||
ESP traffic to encapsulate in UDP. However, the actions described | ESP traffic to encapsulate in UDP. However, the actions described in | |||
in this section regarding the IKE SA <bcp14>MUST</bcp14> be honored. | this section regarding the IKE SA <bcp14>MUST</bcp14> be honored. | |||
The behavior of GMs and GCKS <bcp14>MUST NOT</bcp14> depend on the por | The behavior of GMs and GCKS <bcp14>MUST NOT</bcp14> depend on the | |||
t used to create the initial IKE SA. | port used to create the initial IKE SA. For example, if the GM and | |||
For example, if the GM and the GCKS used UDP port 848 for the IKE_SA_I | the GCKS used UDP port 848 for the IKE_SA_INIT exchange, they will | |||
NIT exchange, they | operate the same as if they had used UDP port 500. | |||
will operate the same as if they had used UDP port 500. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | ||||
<name>G-IKEv2 Payloads</name> | ||||
<t>In the following descriptions, the payloads contained in the G-IKEv2 | ||||
messages are indicated by names as listed below.</t> | ||||
<!-- [rfced] Please review Table 1 in Section 2.2. We note that there | ||||
is some variation between the payload names used in this table | ||||
and those used in RFC 7296. For example, in RFC 7296, "HDR" is | ||||
"IKE header (not a payload)" and "SK" is "Encrypted and | ||||
Authenticated". Please let us know if we should update this table | ||||
to match what appears in RFC 7296. | ||||
<section title="G-IKEv2 Payloads"> | In addition, we note the following variations in Table 1 and the | |||
<t>In the following descriptions, the payloads contained in the G-IKEv | running text. Should the payload for "IDg" be updated as "Group | |||
2 | Identification" to match Table 18 (i.e., the "IKEv2 Payload Types" | |||
messages are indicated by names as listed below.</t> | IANA registry)? Please let us know how we may make these | |||
consistent. | ||||
<table title="Payloads used in G-IKEv2"> | ||||
<thead> | ||||
<tr> | ||||
<th>Notation</th><th>Payload</th><th>Defined in</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>AUTH</td><td>Authentication</td><td><xref target="RFC7296"/> | ||||
</td> | ||||
</tr> | ||||
<tr> | ||||
<td>CERT</td><td>Certificate</td><td><xref target="RFC7296"/></t | ||||
d> | ||||
</tr> | ||||
<tr> | ||||
<td>CERTREQ</td><td>Certificate Request</td><td><xref target="RF | ||||
C7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>D</td><td>Delete</td><td><xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA</td><td>Group Security Association</td><td><xref target= | ||||
"gsa_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>HDR</td><td>IKEv2 Header</td><td><xref target="RFC7296"/></t | ||||
d> | ||||
</tr> | ||||
<tr> | ||||
<td>IDg</td><td>Identification - Group</td><td><xref target="idg | ||||
_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>IDi</td><td>Identification - Initiator</td><td><xref target= | ||||
"RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>IDr</td><td>Identification - Responder</td><td><xref target= | ||||
"RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>KD</td><td>Key Download</td><td><xref target="kd_payload"/>< | ||||
/td> | ||||
</tr> | ||||
<tr> | ||||
<td>KE</td><td>Key Exchange</td><td><xref target="RFC7296"/></td | ||||
> | ||||
</tr> | ||||
<tr> | ||||
<td>Ni, Nr</td><td>Nonce</td><td><xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>N</td><td>Notify</td><td><xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SA</td><td>Security Association</td><td><xref target="RFC729 | ||||
6"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SAg</td><td>Security Association - GM Supported Transforms</ | ||||
td><td><xref target="sag_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SK</td><td>Encrypted</td><td><xref target="RFC7296"/></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t> Payloads defined as part of other IKEv2 extensions <bcp14>MAY</bcp | IDg: Identification - Group (Table 1) vs. | |||
14> also be included in | Group Identification (IDg) vs. | |||
Group ID (IDg) vs. | ||||
group IDg vs. | ||||
group ID | ||||
--> | ||||
<table> | ||||
<name>Payloads Used in G-IKEv2</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Notation</th> | ||||
<th>Payload</th> | ||||
<th>Defined in</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>AUTH</td> | ||||
<td>Authentication</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>CERT</td> | ||||
<td>Certificate</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>CERTREQ</td> | ||||
<td>Certificate Request</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>D</td> | ||||
<td>Delete</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA</td> | ||||
<td>Group Security Association</td> | ||||
<td> | ||||
<xref target="gsa_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>HDR</td> | ||||
<td>IKEv2 Header</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>IDg</td> | ||||
<td>Identification - Group</td> | ||||
<td> | ||||
<xref target="idg_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>IDi</td> | ||||
<td>Identification - Initiator</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>IDr</td> | ||||
<td>Identification - Responder</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>KD</td> | ||||
<td>Key Download</td> | ||||
<td> | ||||
<xref target="kd_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>KE</td> | ||||
<td>Key Exchange</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Ni, Nr</td> | ||||
<td>Nonce</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>N</td> | ||||
<td>Notify</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SA</td> | ||||
<td>Security Association</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SAg</td> | ||||
<td>Security Association - GM Supported Transforms</td> | ||||
<td> | ||||
<xref target="sag_payload"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SK</td> | ||||
<td>Encrypted</td> | ||||
<td> | ||||
<xref target="RFC7296"/></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t> Payloads defined as part of other IKEv2 extensions <bcp14>MAY</bcp14 | ||||
> also be included in | ||||
these messages. Payloads that may optionally appear in G-IKEv2 message s | these messages. Payloads that may optionally appear in G-IKEv2 message s | |||
will be shown in brackets, such as [CERTREQ]. | will be shown in brackets, such as [CERTREQ]. | |||
</t> | </t> | |||
<t>G-IKEv2 defines several new payloads not used in IKEv2:</t> | ||||
<t>G-IKEv2 defines several new payloads not used in IKEv2:</t> | <dl newline="true" spacing="normal"> | |||
<t><list style="symbols"> | <dt>Group ID (IDg):</dt><dd>The GM requests the GCKS for membership | |||
<t>IDg (Group ID) -- The GM requests the GCKS for membership into | into the group by sending its IDg payload.</dd> | |||
the group by sending its IDg payload.</t> | <dt>Security Association - GM Supported | |||
Transforms (SAg):</dt><dd>The GM optionally sends supported transforms | ||||
<t>SAg (Security Association -- GM Supported Transforms) -- the GM o | so | |||
ptionally sends | that GCKS may select a policy appropriate for all members of the | |||
supported transforms, so that GCKS may select a policy appropriate f | group (which is not negotiated, unlike SA parameters in IKEv2).</dd> | |||
or all members | <dt>Group Security Association (GSA):</dt><dd>The GCKS sends the | |||
of the group (which is not negotiated, unlike SA parameters in IKEv2 | group policy to the GM using this payload.</dd> | |||
).</t> | <dt>Key Download (KD):</dt><dd>The GCKS sends the keys and the | |||
security parameters to the GMs using this payload.</dd> | ||||
<t>GSA (Group Security Association) -- The GCKS sends the group | </dl> | |||
policy to the GM using this payload.</t> | <t> The details of the contents of each payload are described in <xref t | |||
arget="header_payload"/>. | ||||
<t>KD (Key Download) -- The GCKS sends the keys and the security par | </t> | |||
ameters | ||||
to the GMs using this payload.</t> | ||||
</list></t> | ||||
<t> The details of the contents of each payload are described in <xref | ||||
target="header_payload"></xref>. | ||||
</t> | ||||
</section> | </section> | |||
<section anchor="registration"> | ||||
<section title="G-IKEv2 Member Registration and Secure Channel Establishme | <name>G-IKEv2 Member Registration and Secure Channel Establishment</name | |||
nt" anchor="registration"> | > | |||
<t>Initial registration is combined with establishing a secure connectio n between the | <t>Initial registration is combined with establishing a secure connectio n between the | |||
entity seeking registration and the GCKS. This process consists of a min imum of two | entity seeking registration and the GCKS. This process consists of a min imum of two | |||
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 Extensible Authentication Protocol (E | |||
DoS protection), negotiation of key exchange method or IKEv2 extensions | AP) method, cookie challenge (for | |||
based on the IKEv2 Intermediate exchange <xref target="RFC9242" /> | DoS protection), negotiation of key exchange method, or IKEv2 extensions | |||
are used. Each exchange consists of request/response pairs. The first ex | based on the IKEv2 Intermediate Exchange <xref target="RFC9242"/> | |||
change | are used. Each exchange consists of request/response pairs. The first ex | |||
IKE_SA_INIT is defined in IKEv2 <xref target="RFC7296"></xref>. This | change, called | |||
exchange negotiates cryptographic algorithms, exchanges nonces and | IKE_SA_INIT, is defined in IKEv2 <xref target="RFC7296"/>. | |||
This | ||||
exchange negotiates cryptographic algorithms, exchanges nonces, and | ||||
computes a shared key between the GM and the GCKS. | computes a shared key between the GM and the GCKS. | |||
In addition to the cryptographic algorithms negotiated for use in IKEv2 SA, | In addition to the cryptographic algorithms negotiated for use in IKEv2 SA, | |||
a key wrap algorithm is also negotiated in this exchange by means of a n ew "Key Wrap Algorithm" transform. | a key wrap algorithm is also negotiated in this exchange by means of a n ew "Key Wrap Algorithm" transform. | |||
See <xref target="wrapped_key" /> for details. | See <xref target="wrapped_key"/> for details. | |||
</t> | </t> | |||
<t>The second exchange, called GSA_AUTH, is similar to the IKEv2 IKE_AUT | ||||
<t>The second exchange called GSA_AUTH is similar to the IKEv2 IKE_AUTH | H exchange <xref target="RFC7296"/>. | |||
exchange <xref target="RFC7296"></xref>. | It authenticates the previously exchanged messages and exchanges identit | |||
It authenticates the previously exchanged messages, exchanges identities | ies and certificates. | |||
and certificates. | ||||
The GSA_AUTH messages are encrypted and integrity protected with keys es tablished through the previous | The GSA_AUTH messages are encrypted and integrity protected with keys es tablished through the previous | |||
exchanges, so the identities are hidden from eavesdroppers and all | exchanges, so the identities are hidden from eavesdroppers and all | |||
fields in all the messages are authenticated. The GCKS authorizes | fields in all the messages are authenticated. The GCKS authorizes | |||
group members to be allowed into the group as part of the | group members to be allowed into the group as part of the | |||
GSA_AUTH exchange. Once the GCKS accepts a GM to join a | GSA_AUTH exchange. Once the GCKS accepts a GM to join a | |||
group it will provide the GM with the data-security keys (TEKs) and/or g roup key | group, it will provide the GM with the data-security keys (TEKs) and/or a group key | |||
encrypting key (KEK) as part of the GSA_AUTH response message. </t> | encrypting key (KEK) as part of the GSA_AUTH response message. </t> | |||
<t>The established secure channel between the GM and the GCKS is in fact IKE SA (as defined in | <t>The established secure channel between the GM and the GCKS is in fact IKE SA (as defined in | |||
<xref target="RFC7296"></xref>) and is referred to as such throughout th is document. | <xref target="RFC7296"/>) and is referred to as such throughout this doc ument. | |||
However, it is <bcp14>NOT RECOMMENDED</bcp14> to use this IKE SA for the purpose of creating | However, it is <bcp14>NOT RECOMMENDED</bcp14> to use this IKE SA for the purpose of creating | |||
unicast Child SAs between the GM and the GCKS, since authentication requ | unicast Child SAs between the GM and the GCKS since authentication requi | |||
irements for | rements for | |||
group admission and for unicast communication may differ. In addition, t | group admission and for unicast communication may differ. In addition, t | |||
he lifecycle | he life cycle | |||
of this IKE SA is determined by the GCKS and this SA can be deleted at a ny time. | of this IKE SA is determined by the GCKS and this SA can be deleted at a ny time. | |||
</t> | </t> | |||
<section anchor="gsa_auth"> | ||||
<section anchor="gsa_auth" title="GSA_AUTH Exchange"> | <name>GSA_AUTH Exchange</name> | |||
<t>The GSA_AUTH exchange is used to authenticate the previous exchange | <t>The GSA_AUTH exchange is used to authenticate the previous exchange | |||
s, | s and | |||
exchange identities and certificates. G-IKEv2 also uses this | exchange identities and certificates. G-IKEv2 also uses this | |||
exchange for group member registration and authorization. | exchange for group member registration and authorization. | |||
</t> | </t> | |||
<t> The GSA_AUTH exchange is similar to the IKE_AUTH exchange with the | <t> The GSA_AUTH exchange is similar to the IKE_AUTH exchange with the | |||
difference that its goal is to establish multicast Data-Security SA(s) | difference that its goal is to establish a multicast Data-Security SA( | |||
and optionally provide GM with the keys for Rekey SA. The set of paylo | s) | |||
ads | and optionally provide GM with the keys for a Rekey SA. The set of pay | |||
in the GSA_AUTH exchange is slightly different, because policy is not | loads | |||
negotiated between the group member and the GCKS, but instead | in the GSA_AUTH exchange is slightly different because policy is not | |||
provided by the GCKS for the GM. Note also, that GSA_AUTH | negotiated between the group member and the GCKS; instead, it is | |||
provided by the GCKS for the GM. Also note that GSA_AUTH | ||||
has its own exchange type, which is different from the IKE_AUTH exchan ge type. | has its own exchange type, which is different from the IKE_AUTH exchan ge type. | |||
</t> | </t> | |||
<t>Note that due to the similarities between IKE_AUTH and GSA_AUTH, | ||||
<t>Note, that due to the similarities between IKE_AUTH and GSA_AUTH, | ||||
most IKEv2 extensions to the IKE_AUTH exchange | most IKEv2 extensions to the IKE_AUTH exchange | |||
(like Secure Password authentication <xref target="RFC6467" />) can al so be used with the GSA_AUTH exchange. | (like secure password authentication <xref target="RFC6467"/>) can als o be used with the GSA_AUTH exchange. | |||
</t> | </t> | |||
<figure title="GSA_AUTH Request" anchor="gsa_auth_request"> | <figure anchor="gsa_auth_request"> | |||
<preamble></preamble> | <name>GSA_AUTH Request</name> | |||
<artwork><![CDATA[ | ||||
<artwork><![CDATA[ | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDi, [CERT,] [CERTREQ,] [IDr,] | HDR, SK{IDi, [CERT,] [CERTREQ,] [IDr,] | |||
AUTH, IDg, [SAg,] [N(GROUP_SENDER),] [N]} --> | AUTH, IDg, [SAg,] [N(GROUP_SENDER),] [N]} --> | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>A group member initiates a GSA_AUTH request to join a group indicat ed | <t>A group member initiates a GSA_AUTH request to join a group indicat ed | |||
by the IDg payload. The GM may include an SAg payload declaring which | by the IDg payload. The GM may include an SAg payload declaring which | |||
Transforms it is willing to accept. A GM that intends to act as Group Sender | Transforms it is willing to accept. A GM that intends to act as Group Sender | |||
<bcp14>MUST</bcp14> include a Notify payload status type of GROUP_SEND ER, | <bcp14>MUST</bcp14> include a Notify payload status type of GROUP_SEND ER, | |||
which enables the GCKS to provide any additional policy necessary by | which enables the GCKS to provide any additional policy necessary by | |||
group senders.</t> | group senders.</t> | |||
<figure title="GSA_AUTH Normal Response" anchor="gsa_auth_norm_respons | <figure anchor="gsa_auth_norm_response"> | |||
e"> | <name>GSA_AUTH Normal Response</name> | |||
<preamble></preamble> | <artwork><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK{IDr, [CERT,] | <-- HDR, SK{IDr, [CERT,] | |||
AUTH, GSA, KD, [N]} | AUTH, GSA, KD, [N]} | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t> The GCKS responds with IDr, optional CERT, and AUTH payloads | <t> The GCKS responds with IDr, optional CERT, and AUTH payloads | |||
with the same meaning as in IKE_AUTH. It also informs the group member | with the same meaning as in IKE_AUTH. It also informs the group member | |||
of the cryptographic policies of the group in the GSA payload and | of the cryptographic policies of the group in the GSA payload and | |||
the key material in the KD payload. | the key material in the KD payload. | |||
</t> | </t> | |||
<t> Possible errors should be handled in accordance with <xref target= | ||||
<t> Possible erors should be handled in accordance with Section 2.21.2 | "RFC7296" sectionFormat="of" section="2.21.2"/>. | |||
of <xref target="RFC7296"/>. | ||||
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 <xref target="notify"></xref>, the GSA_AUTH | etc. In these cases (see <xref target="notify"/>), the GSA_AUTH | |||
response will not include the GSA and KD, but will include a Notify | response will not include the GSA and KD but will include a Notify | |||
payload indicating errors. If a GM included an SAg | payload indicating errors. If a GM included an SAg | |||
payload, and the GCKS chooses to evaluate it, and the GCKS detects tha t | payload and the GCKS chooses to evaluate it and detects that | |||
the group member cannot support the security policy defined for the | the group member cannot support the security policy defined for the | |||
group, then the GCKS returns the NO_PROPOSAL_CHOSEN notification. | group, then the GCKS returns the NO_PROPOSAL_CHOSEN notification. | |||
Other types of error notifications can be INVALID_GROUP_ID, AUTHORIZAT ION_FAILED or REGISTRATION_FAILED.</t> | Other types of error notifications can be INVALID_GROUP_ID, AUTHORIZAT ION_FAILED, or REGISTRATION_FAILED.</t> | |||
<figure title="GSA_AUTH Error Response for Group-Related Errors" ancho | <figure anchor="gsa_auth_err_response"> | |||
r="gsa_auth_err_response"> | <name>GSA_AUTH Error Response for Group-Related Errors</name> | |||
<preamble></preamble> | <artwork><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
<-- HDR, SK{IDr, [CERT,] AUTH, N} | <-- HDR, SK{IDr, [CERT,] AUTH, N} | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>If the GSA_AUTH exchange is completed successfully, but | <t>If the GSA_AUTH exchange is completed successfully but | |||
the group member finds the policy sent by the GCKS is | the group member finds that the policy sent by the GCKS is | |||
unacceptable, the member <bcp14>SHOULD</bcp14> inform the GCKS about t his by initiating the GSA_REGISTRATION exchange | unacceptable, the member <bcp14>SHOULD</bcp14> inform the GCKS about t his by initiating the GSA_REGISTRATION exchange | |||
with the IDg payload and the NO_PROPOSAL_CHOSEN notification | with the IDg payload and the NO_PROPOSAL_CHOSEN notification | |||
(see <xref target="gsa_registration_gm_error" />). | (see <xref target="gsa_registration_gm_error"/>). | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="gsa_registration"> | ||||
<section anchor="gsa_registration" title="GSA_REGISTRATION Exchange"> | <name>GSA_REGISTRATION Exchange</name> | |||
<t>Once the IKE SA between the GM and the GCKS is established, | <t>Once the IKE SA between the GM and the GCKS is established, | |||
the GM can use it for other registration requests, if this is needed. | the GM can use it for other registration requests if needed. | |||
In this scenario the GM will use the | 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 <xref target="gsa_auth"></xref>.</t> | and processed as defined in <xref target="gsa_auth"/>.</t> | |||
<figure title="GSA_REGISTRATION Normal Exchange" anchor="gsa_registrat | <figure anchor="gsa_registration_exchange"> | |||
ion_exchange"> | <name>GSA_REGISTRATION Normal Exchange</name> | |||
<preamble></preamble> | <artwork><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDg, [SAg,] | HDR, SK{IDg, [SAg,] | |||
[N(GROUP_SENDER),] [N]} --> | [N(GROUP_SENDER),] [N]} --> | |||
<-- HDR, SK{GSA, KD, [N]} | <-- HDR, SK{GSA, KD, [N]} | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>As with GSA_AUTH exchange, the GCKS can reject the | <t>As with GSA_AUTH exchange, 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, | |||
or GM cannot support the security policy defined for the | or GM cannot support the security policy defined for the | |||
group (which can be concluded by GCKS by evaluation of SAg payload). | group (which can be concluded by the GCKS by evaluation of the SAg pay | |||
In this case the GCKS returns an appropriate error notification | load). | |||
as described in <xref target="gsa_auth" />. | In this case, the GCKS returns an appropriate error notification | |||
as described in <xref target="gsa_auth"/>. | ||||
</t> | </t> | |||
<figure title="GSA_REGISTRATION Error Exchange" anchor="gsa_registrati | <figure anchor="gsa_registration_err_exchange"> | |||
on_err_exchange"> | <name>GSA_REGISTRATION Error Exchange</name> | |||
<preamble></preamble> | <artwork><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDg, [SAg,] | HDR, SK{IDg, [SAg,] | |||
[N(GROUP_SENDER),] [N]} --> | [N(GROUP_SENDER),] [N]} --> | |||
<-- HDR, SK{N} | <-- HDR, SK{N} | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | </figure> | |||
</figure> | ||||
<t>This exchange can also be used if the group member finds the | <t>This exchange can also be used if the group member finds that the | |||
policy sent by the GCKS is unacceptable or for some reason wants to le | policy sent by the GCKS is unacceptable or wants to leave | |||
ave | the group for some reason. The group member <bcp14>SHOULD</bcp14> | |||
the group. The group member <bcp14>SHOULD</bcp14> | ||||
notify the GCKS by sending IDg and the Notify type | notify the GCKS by sending IDg and the Notify type | |||
NO_PROPOSAL_CHOSEN or REGISTRATION_FAILED, as shown below. | NO_PROPOSAL_CHOSEN or REGISTRATION_FAILED as shown below. | |||
The GCKS in this case <bcp14>MUST</bcp14> remove the GM from the group | In this case, the GCKS <bcp14>MUST</bcp14> remove the GM from the grou | |||
IDg. | p IDg. | |||
</t> | </t> | |||
<figure title="GM Reporting Errors in GSA_REGISTRATION Exchange" ancho | <figure anchor="gsa_registration_gm_error"> | |||
r="gsa_registration_gm_error"> | <name>GM Reporting Errors in GSA_REGISTRATION Exchange</name> | |||
<preamble></preamble> | <artwork><![CDATA[ | |||
<artwork><![CDATA[ | ||||
Initiator (GM) Responder (GCKS) | Initiator (GM) Responder (GCKS) | |||
-------------------- ------------------ | -------------------- ------------------ | |||
HDR, SK{IDg, N} --> | HDR, SK{IDg, N} --> | |||
<-- HDR, SK{} | <-- HDR, SK{} | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | ||||
<section title="GM Registration Operations"> | </section> | |||
<section> | ||||
<name>GM Registration Operations</name> | ||||
<t>A GM requesting registration contacts the | <t>A GM requesting registration contacts the | |||
GCKS using the IKE_SA_INIT exchange. This exchange is unchanged from I KE_SA_INIT | GCKS using the IKE_SA_INIT exchange. This exchange is unchanged from I KE_SA_INIT | |||
in the IKEv2 protocol. The IKE_SA_INIT exchange may optionally be foll | in the IKEv2 protocol. | |||
owed | ||||
by one or more the IKE_INTERMEDIATE exchanges if the GM and the GCKS | The IKE_SA_INIT exchange may optionally be followed | |||
by one or more of the IKE_INTERMEDIATE exchanges if the GM and the GCK | ||||
S | ||||
negotiated use of IKEv2 extensions based on this exchange. | negotiated use of IKEv2 extensions based on this exchange. | |||
</t> | </t> | |||
<t>Next, the GM sends the GSA_AUTH request message with the IKEv2 payl | ||||
<t>Next the GM sends the GSA_AUTH request message with the IKEv2 paylo | oads | |||
ads | from IKE_AUTH (without the SAi2, TSi, and TSr payloads) along with | |||
from IKE_AUTH (without the SAi2, TSi and TSr payloads) along with | ||||
the Group ID informing the GCKS of the group the GM wishes to | the Group ID informing the GCKS of the group the GM wishes to | |||
join. An GM intending to emit data traffic <bcp14>MUST</bcp14> send a | join. A GM intending to emit data traffic <bcp14>MUST</bcp14> send a | |||
GROUP_SENDER Notify message type. The GROUP_SENDER notification not on ly signifies that it | GROUP_SENDER Notify message type. The GROUP_SENDER notification not on ly signifies that it | |||
is a sender, but provides the GM the ability to request | is a sender but provides the GM 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 | |||
mode cipher. <xref target="sid_alloc"></xref> includes guidance | cipher. <xref target="sid_alloc"/> includes guidance | |||
on requesting Sender-ID values.</t> | on requesting Sender-ID values.</t> | |||
<t>A GM may be limited in the Transforms IDs that it is | <t>A GM may be limited in the Transforms IDs that it is | |||
able or willing to use, and may find it useful to inform the GCKS | able or willing to use and may find it useful to inform the GCKS | |||
which Transform IDs it is willing to accept for different security pro tocols | which Transform IDs it is willing to accept for different security pro tocols | |||
by including the SAg payload into the request message. | by including the SAg payload into the request message. | |||
Proposals for Rekey SA and for Data-Security | Proposals for Rekey SA and for Data-Security | |||
(AH <xref target="RFC4302" /> and/or ESP <xref target="RFC4303" />) SA s | (AH <xref target="RFC4302"/> and/or ESP <xref target="RFC4303"/>) SAs | |||
may be included into SAg. Proposals for Rekey SA are identified | may be included into SAg. Proposals for Rekey SA are identified | |||
by a new Protocol ID GIKE_UPDATE with the value <TBA by IANA>. | by new Protocol ID GIKE_UPDATE with the value 6. | |||
Each Proposal contains a list of Transforms that the GM is able | Each Proposal contains a list of Transforms that the GM is able | |||
and willing to support for that protocol. Valid transform types depend on the | and willing to support for that protocol. Valid transform types depend on the | |||
protocol (AH, ESP, GIKE_UPDATE) and are defined in <xref target="allow ed_transforms" />. | protocol (AH, ESP, GIKE_UPDATE) and are defined in <xref target="allow ed_transforms"/>. | |||
Other transform types <bcp14>SHOULD NOT</bcp14> be included as they wi ll be ignored by the GCKS. | Other transform types <bcp14>SHOULD NOT</bcp14> be included as they wi ll be ignored by the GCKS. | |||
The SPI length of each Proposal in an SAg is set to zero, and thus the SPI field is empty. | The Security Parameter Index (SPI) length of each Proposal in an SAg i s set to zero, and thus the SPI field is empty. | |||
The GCKS <bcp14>MUST NOT</bcp14> use SPI length and SPI fields in the SAg payload. | The GCKS <bcp14>MUST NOT</bcp14> use SPI length and SPI fields in the SAg payload. | |||
</t> | </t> | |||
<t>Generally, a single Proposal for each protocol (GIKE_UPDATE, | ||||
<t>Generally, a single Proposal for each protocol (GIKE_UPDATE, AH/ESP | AH/ESP) will suffice. Because the transforms are not negotiated, the | |||
) | GM simply alerts the GCKS to restrictions it may have. In | |||
will suffice, because the transforms are not negotiated, the GM | particular, the restriction from <xref target="RFC7296" | |||
simply alerts the GCKS to restrictions it may have. | sectionFormat="of" section="3.3"/> that Authenticated Encryption with | |||
In particular, the restriction from Section 3.3 of IKEv2 <xref target= | Associated Data (AEAD) and non-AEAD | |||
"RFC7296" /> that | transforms not be combined in a single proposal doesn't hold when | |||
AEAD and non-AEAD transforms not be combined in a single proposal | the SAg payload is being formed. However, if the GM has restrictions | |||
doesn't hold when the SAg payload is being formed. However | on the combination of algorithms, this can be expressed by sending | |||
if the GM has restrictions on combination of algorithms, | several proposals.</t> | |||
this can be expressed by sending several proposals.</t> | <t>The Proposal Num field in the Proposal substructure is treated spec | |||
ially in the SAg payload: | ||||
<t>Proposal Num field in Proposal substructure is treated specially in | ||||
SAg payload: | ||||
it allows a GM to indicate that algorithms used in Rekey SA and in | it allows a GM to indicate that algorithms used in Rekey SA and in | |||
Data-Security (AH and/or ESP) SAs are dependent. | Data-Security (AH and/or ESP) SAs are dependent. | |||
In particular, Proposals for different protocols having the same value | In particular, Proposals for different protocols having the same value | |||
in | in the | |||
Proposal Num field are treated as a set, so that if GCKS uses transfor | Proposal Num field are treated as a set so that if GCKS uses transform | |||
ms | s | |||
from one of such Proposal for one protocol, then it <bcp14>MUST</bcp14 > only use transforms from | from one of such Proposal for one protocol, then it <bcp14>MUST</bcp14 > only use transforms from | |||
one of the Proposals with the same value in Proposal Num field for oth er protocols. | one of the Proposals with the same value in the Proposal Num field for other protocols. | |||
For example, a GM may support algorithms X and Y for both Rekey and | For example, a GM may support algorithms X and Y for both Rekey and | |||
Data-Security SAs, but with a restriction that if X is used in Rekey S A, then only X can be used | Data-Security SAs, but with a restriction that if X is used in Rekey SAs, then only X can be used | |||
in Data-Security SAs, and the same for Y. | in Data-Security SAs, and the same for Y. | |||
Use of the same value in the Proposal Num field of different | Use of the same value in the Proposal Num field of different | |||
proposals indicates that the GM expects these proposals to be | proposals indicates that the GM expects these proposals to be | |||
used in conjunction with each other. | used in conjunction with each other. | |||
In the simplest case when no dependency between transforms exists, | In the simplest case when no dependency between transforms exists, | |||
all Proposals in SAg payload will have the same value in Proposal Num field. | all Proposals in the SAg payload will have the same value in the Propo sal Num field. | |||
</t> | </t> | |||
<t>Although the SAg payload is optional, it is <bcp14>RECOMMENDED</bcp | ||||
<t>Although the SAg payload is optional, it is <bcp14>RECOMMENDED</bcp | 14> that the GM include | |||
14> for the GM to include | ||||
this payload into the GSA_AUTH request to allow the GCKS to select an appropriate policy. | this payload into the GSA_AUTH request to allow the GCKS to select an appropriate policy. | |||
</t> | </t> | |||
<t>A GM <bcp14>MAY</bcp14> also indicate the support for IPcomp by inc luding one or more the IPCOMP_SUPPORTED | <t>A GM <bcp14>MAY</bcp14> also indicate the support for IPcomp by inc luding one or more the IPCOMP_SUPPORTED | |||
notifications along with the SAg payload in the request. The Compressi on Parameter Index (CPI) in these notifications is set to zero | notifications along with the SAg payload in the request. The Compressi on Parameter Index (CPI) in these notifications is set to zero | |||
and <bcp14>MUST</bcp14> be ignored by the GCKS. | and <bcp14>MUST</bcp14> be ignored by the GCKS. | |||
</t> | </t> | |||
<t>Upon receiving the GSA_AUTH response, the GM parses the | <t>Upon receiving the GSA_AUTH response, the GM 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 payloads.</t> | method, then processes the GSA and KD payloads.</t> | |||
<t>The GSA payload contains the security policy and cryptographic | <t>The GSA payload contains the security policy and cryptographic | |||
protocols used by the group. This policy describes the optional Rekey | protocols used by the group. | |||
SA | ||||
<!--[rfced] In the following, should "Data-Security SAs" be singular | ||||
since "TEK" is singular? Also, are all of these items optional | ||||
(option A), or are only the Rekey SA and Group-wide policy | ||||
optional (option B)? | ||||
Original: | ||||
This policy describes the optional Rekey SA (KEK), | ||||
Data-Security SAs (TEK), and optional Group-wide (GW) | ||||
policy. | ||||
Perhaps A: | ||||
This policy describes the Rekey SA (KEK), | ||||
Data-Security SA (TEK), and Group-wide (GW) | ||||
policy, which are all optional. | ||||
or | ||||
Perhaps B: | ||||
This policy describes the Data-Security SA (TEK), optional | ||||
Rekey SA (KEK), and optional Group-wide (GW) policy. | ||||
--> | ||||
This policy describes the optional Rekey SA | ||||
(KEK), Data-Security SAs (TEK), and optional Group-wide (GW) policy. | (KEK), Data-Security SAs (TEK), and optional Group-wide (GW) policy. | |||
If the policy in the GSA payload is not acceptable to the GM, | If the policy in the GSA payload is not acceptable to the GM, | |||
it <bcp14>SHOULD</bcp14> notify the GCKS by initiating a GSA_REGISTRAT ION exchange | it <bcp14>SHOULD</bcp14> notify the GCKS by initiating a GSA_REGISTRAT ION exchange | |||
with a NO_PROPOSAL_CHOSEN Notify payload (see <xref target="gsa_regist | with a NO_PROPOSAL_CHOSEN Notify payload (see <xref target="gsa_regist | |||
ration"></xref>). | ration"/>). | |||
Note, that this should normally not happen if the GM includes SAg payl | Note that this should normally not happen if the GM includes the SAg p | |||
oad | ayload | |||
in the GSA_AUTH request and the GCKS takes it into account. | in the GSA_AUTH request and the GCKS takes it into account. | |||
Finally the KD payload is parsed providing the keying material for the TEK and/or KEK. | Finally, the KD payload is parsed, providing the keying material for t he TEK and/or KEK. | |||
The KD payload contains a list of key bags, where each key bag include s the | The KD payload contains a list of key bags, where each key bag include s the | |||
keying material for SAs distributed in the GSA payload. Keying | keying material for SAs distributed in the GSA payload. Keying | |||
material is matched by comparing the SPIs in the key bags to SPIs | material is matched by comparing the SPIs in the key bags to SPIs | |||
previously included in the GSA payloads. Once TEK keys and policy | previously included in the GSA payloads. Once TEK keys and policy | |||
are matched, the GM provides them to the data-security subsystem, | are matched, the GM provides them to the data-security subsystem, | |||
and it is ready to send or receive packets matching the TEK | and it is ready to send or receive packets matching the TEK | |||
policy.</t> | policy.</t> | |||
<t> If the group member is not a sender for a received Data-Security S A, | <t> If the group member is not a sender for a received Data-Security S A, | |||
then it <bcp14>MUST</bcp14> install this SA only in the inbound direct ion. | then it <bcp14>MUST</bcp14> install this SA only in the inbound direct ion. | |||
If the group member is a sender for a received Data-Security SA, | If the group member is a sender for a received Data-Security SA, | |||
and it is not going to receive back the data it sends, | and it is not going to receive back the data it sends, | |||
then it <bcp14>MUST</bcp14> install this SA only in the outgoing direc tion. | then it <bcp14>MUST</bcp14> install this SA only in the outgoing direc tion. | |||
</t> | </t> | |||
<t>If the first Message ID the GM should expect to receive is non-zero , | <t>If the first Message ID the GM should expect to receive is non-zero , | |||
the GSA KEK policy includes the attribute GSA_INITIAL_MESSAGE_ID with | the GSA KEK policy includes the attribute GSA_INITIAL_MESSAGE_ID with | |||
the expected non-zero value. | the expected non-zero value. | |||
The value of the attribute <bcp14>MUST</bcp14> be checked by a GM agai nst any previously received Message ID for this group. | The value of the attribute <bcp14>MUST</bcp14> be checked by a GM agai nst any previously received Message ID for this group. | |||
If it is less than the previously received number, it should be | If it is less than the previously received number, it should be | |||
considered stale and <bcp14>MUST</bcp14> be ignored. This could happen if two GSA_AUTH | considered stale and <bcp14>MUST</bcp14> be ignored. This could happen if two GSA_AUTH | |||
exchanges happened in parallel, and the Message ID changed. This | exchanges happened in parallel and the Message ID changed. This | |||
attribute is used by the GM to prevent GSA_REKEY message replay | attribute is used by the GM to prevent GSA_REKEY message replay | |||
attacks. The first GSA_REKEY message that the GM receives from the | attacks. The first GSA_REKEY message that the GM receives from the | |||
GCKS will have a Message ID greater or equal to the Message ID | GCKS will have a Message ID greater than or equal to the Message ID | |||
received in the GSA_INITIAL_MESSAGE_ID attribute.</t> | received in the GSA_INITIAL_MESSAGE_ID attribute.</t> | |||
<t>Group members <bcp14>MUST</bcp14> install the Rekey SA only in the inbound direction. | <t>Group members <bcp14>MUST</bcp14> install the Rekey SA only in the inbound direction. | |||
</t> | </t> | |||
<t>Once a GM successfully registers to the group, it <bcp14>MUST</bcp1 | ||||
<t>Once a GM successfully registers to the group it <bcp14>MUST</bcp14 | 4> replace | |||
> replace | ||||
any information related to this group (policy, keys) that it might | any information related to this group (policy, keys) that it might | |||
have as a result of a previous registration with a new one. | have as a result of a previous registration with a new one. | |||
</t> | </t> | |||
<t>Once a GM has received GIKE_UPDATE policy during a registration, | ||||
<t>Once a GM has received GIKE_UPDATE policy during a registration, th | the IKE SA <bcp14>MAY</bcp14> be closed. By convention, the GCKS | |||
e | closes the IKE SA; the GM <bcp14>SHOULD NOT</bcp14> close it. The | |||
IKE SA <bcp14>MAY</bcp14> be closed. By convention, the GCKS closes t | GCKS <bcp14>MAY</bcp14> choose to keep the IKE SA open for inband | |||
he IKE SA, | rekey, especially for small groups. If inband rekey is used, then | |||
the GM <bcp14>SHOULD NOT</bcp14> close it. | the initial IKE SA can be rekeyed by any side with the standard | |||
The GKCS <bcp14>MAY</bcp14> choose to keep the IKE SA open for inband | IKEv2 mechanism described in <xref target="RFC7296" | |||
rekey, | sectionFormat="of" section="1.3.2"/>. If for some reason the | |||
especially for small groups. If inband rekey is used, then the | ||||
initial IKE SA can be rekeyed by any side with the standard IKEv2 mech | ||||
anism | ||||
described in Section 1.3.2 of IKEv2 <xref target="RFC7296" />. If for | ||||
some reason the | ||||
IKE SA is closed and no GIKE_UPDATE policy is received during the | IKE SA is closed and no GIKE_UPDATE policy is received during the | |||
registration process, the GM <bcp14>MUST</bcp14> consider itself exclu | registration process, the GM <bcp14>MUST</bcp14> consider itself | |||
ded from the | excluded from the group. To continue participating in the group, | |||
group. To continue participating in the group, the GM needs to | the GM needs to re-register. | |||
re-register. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="GCKS Registration Operations"> | <name>GCKS Registration Operations</name> | |||
<t>A G-IKEv2 GCKS listens for incoming requests from group | <t>A G-IKEv2 GCKS listens for incoming requests from group | |||
members. When the GCKS receives an IKE_SA_INIT request, it selects | members. When the GCKS receives an IKE_SA_INIT request, it selects | |||
an IKE proposal and generates a nonce and DH to include them in the | an IKE proposal and generates a nonce and Diffie-Hellman (DH) to inclu de in the | |||
IKE_SA_INIT response.</t> | IKE_SA_INIT response.</t> | |||
<t>Upon receiving the GSA_AUTH request, the GCKS authenticates the | <t>Upon receiving the GSA_AUTH request, the GCKS authenticates the | |||
group member via the GSA_AUTH exchange. The | group member via the GSA_AUTH exchange. The | |||
GCKS then authorizes the group member according to group policy | GCKS then authorizes the group member according to group policy | |||
before preparing to send the GSA_AUTH response. If the GCKS fails to | before preparing to send the GSA_AUTH response. If the GCKS fails to | |||
authorize the GM, it responds with an AUTHORIZATION_FAILED | authorize the GM, it responds with an AUTHORIZATION_FAILED | |||
notify message type. The GCKS may also respond with an INVALID_GROUP_I D notify message | notify message type. The GCKS may also respond with an INVALID_GROUP_I D notify message | |||
if the requested group is unknown to the GCKS or with an REGISTRATION_ FAILED | if the requested group is unknown to the GCKS or with an REGISTRATION_ FAILED | |||
notify message if there is a problem with the requested group (for exa mple | notify message if there is a problem with the requested group (e.g., i f | |||
the capacity of the group is exceeded).</t> | the capacity of the group is exceeded).</t> | |||
<t>The GSA_AUTH response will include the group policy in the GSA | <t>The GSA_AUTH response will include the group policy in the GSA | |||
payload and keys in the KD payload. If the GCKS policy includes a | payload and keys in the KD payload. | |||
If the GCKS policy includes a | ||||
group rekey option and the initial Message ID value the GCKS will use when sending the GSA_REKEY messages | group rekey option and the initial Message ID value the GCKS will use when sending the GSA_REKEY messages | |||
to the group members is non-zero, then this value is specified in the GSA_INITIAL_MESSAGE_ID attribute. | to the group members is non-zero, then this value is specified in the GSA_INITIAL_MESSAGE_ID attribute. | |||
This Message ID is used to prevent GSA_REKEY | This Message ID is used to prevent GSA_REKEY | |||
message replay attacks and will be increased each time a GSA_REKEY mes sage is sent | message replay attacks and will be increased each time a GSA_REKEY mes sage is sent | |||
to the group. The GCKS data traffic policy is included in the GSA | to the group. The GCKS data traffic policy is included in the GSA | |||
TEK and keys are included in the KD TEK. The GW policy <bcp14>MAY</bcp 14> also be | TEK and keys are included in the KD TEK. The GW policy <bcp14>MAY</bcp 14> also be | |||
included to provide the ATD and/or DTD (<xref target="gwp_attr_atd_dtd | included to provide the Activation | |||
"></xref>) | Time Delay (ATD) and/or Deactivation Time Delay (DTD) (<xref target="gwp_attr | |||
specifying activation and deactivation | _atd_dtd"/>) | |||
to specify activation and deactivation | ||||
delays for SAs generated from the TEKs. If the group member has | delays for SAs generated from the TEKs. If the group member has | |||
indicated that it is a sender of data traffic and one or more Data | indicated that it is a sender of data traffic and one or more Data-Sec | |||
Security SAs distributed in the GSA payload included a counter mode | urity SAs distributed in the GSA payload included a counter mode | |||
of operation, the GCKS responds with one or more Sender-ID values (see | of operation, the GCKS responds with one or more Sender-ID values (see | |||
<xref | <xref target="counter-modes"/>).</t> | |||
target="counter-modes"></xref>).</t> | <t> Multicast Extensions to the Security Architecture <xref target="RF | |||
C5374"/> defines two modes of operation for multicast | ||||
<t> Multicast Extensions to the Security Architecture <xref target="RF | ||||
C5374" /> defines two modes of operation for multicast | ||||
Data-Security SAs: transport mode and tunnel mode with address preserv ation. | Data-Security SAs: transport mode and tunnel mode with address preserv ation. | |||
In the latter case outer source and destination addresses are taken fr om | In the latter case, outer source and destination addresses are taken f rom | |||
the inner IP packet. The mode of operation for the Data-Security SAs i s determined | the inner IP packet. The mode of operation for the Data-Security SAs i s determined | |||
by the presence of the USE_TRANSPORT_MODE notification | by the presence of the USE_TRANSPORT_MODE notification | |||
in the GCKS's response message of the registration exchange: if it is present, | in the GCKS's response message of the registration exchange. If it is present, | |||
then SAs are created in transport mode; otherwise, SAs are created in tunnel mode. | then SAs are created in transport mode; otherwise, SAs are created in tunnel mode. | |||
If multiple Data-Security SAs are being created in a single registrati on exchange, | If multiple Data-Security SAs are being created in a single registrati on exchange, | |||
then all of them will have the same mode of operation. | then all of them will have the same mode of operation. | |||
</t> | </t> | |||
<t>If the GCKS receives a GSA_REGISTRATION exchange with a request | <t>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 | to 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 | with the new group (IDg) and respond with the corresponding group | |||
policy and keys. If the GCKS fails to authorize the GM, it will | policy and keys. If the GCKS fails to authorize the GM, it will | |||
respond with the AUTHORIZATION_FAILED notification. The GCKS may also | respond with the AUTHORIZATION_FAILED notification. The GCKS may also | |||
respond with an INVALID_GROUP_ID or REGISTRATION_FAILED notify message s | respond with an INVALID_GROUP_ID or REGISTRATION_FAILED notify message s | |||
for the reasons described above.</t> | for the reasons described above.</t> | |||
<t>If a group member includes an SAg in its GSA_AUTH or | <t>If a group member includes an SAg in its GSA_AUTH or | |||
GSA_REGISTRATION request, the GCKS may evaluate it according to an | GSA_REGISTRATION request, the GCKS may evaluate it according to an | |||
implementation specific policy. | implementation-specific policy. | |||
<list style="symbols"> | </t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
<t>The GCKS could evaluate the list of Transforms and compare it | <t>The GCKS could evaluate the list of Transforms and compare it | |||
to its current policy for the group. If the group member did not | to its current policy for the group. If the group member did not | |||
include all of the ESP, AH or GIKE_UPDATE Transforms that match th e current group policy | include all of the ESP, AH, or GIKE_UPDATE Transforms that match t he current group policy | |||
or the capabilities of all other currently active GMs, | or the capabilities of all other currently active GMs, | |||
then the GCKS <bcp14>SHOULD</bcp14> return a NO_PROPOSAL_CHOSEN No tification. | then the GCKS <bcp14>SHOULD</bcp14> return a NO_PROPOSAL_CHOSEN no tification. | |||
Alternatively, the GCKS can change the group policy as defined bel ow.</t> | Alternatively, the GCKS can change the group policy as defined bel ow.</t> | |||
</li> | ||||
<li> | ||||
<!-- [rfced] How may we update the sentence below to clarify the second | ||||
and third instances of "Transforms"? | ||||
<t>The GCKS could store the list of Transforms, with the goal of | Original: | |||
* The GCKS could store the list of Transforms, with the goal of | ||||
migrating the group policy to a different Transforms when all of | ||||
the group members indicate that they can support that Transforms. | ||||
Perhaps A: | ||||
* The GCKS could store the list of Transforms with the goal of | ||||
migrating the group policy to a different Transform when all of | ||||
the group members indicate that they can support that Transform. | ||||
or | ||||
Perhaps B: | ||||
* The GCKS could store the list of Transforms with the goal of | ||||
migrating the group policy to a different Transforms list when all of | ||||
the group members indicate that they can support that Transforms list. | ||||
--> | ||||
<t>The GCKS could store the list of Transforms with the goal of | ||||
migrating the group policy to a different Transforms when all of | migrating the group policy to a different Transforms when all of | |||
the group members indicate that they can support that | the group members indicate that they can support that | |||
Transforms.</t> | Transforms.</t> | |||
</li> | ||||
<li> | ||||
<t>The GCKS could store the list of Transforms and adjust the | <t>The GCKS could store the list of Transforms and adjust the | |||
current group policy based on the capabilities of the devices as | current group policy based on the capabilities of the devices as | |||
long as they fall within the acceptable security policy of the | long as they fall within the acceptable security policy of the | |||
GCKS.</t> | GCKS.</t> | |||
</list> | </li> | |||
</ul> | ||||
<t> | ||||
Depending on its policy, the GCKS may have no further need for the | Depending on its policy, the GCKS may have no further need for the | |||
IKE SA (e.g., it does not plan to initiate an GSA_INBAND_REKEY | IKE SA (e.g., it does not plan to initiate a GSA_INBAND_REKEY | |||
exchange). If the GM does not initiate another registration exchange | exchange). If the GM does not initiate another registration exchange | |||
or Notify (e.g., NO_PROPOSAL_CHOSEN), and the GCKS is not intended to | or Notify (e.g., NO_PROPOSAL_CHOSEN) and the GCKS is not intended to u | |||
use the SA, then after a | se the SA, then the GCKS <bcp14>SHOULD</bcp14> close the IKE SA to save resource | |||
short period of time the GCKS <bcp14>SHOULD</bcp14> close the IKE SA t | s after a short period of time.</t> | |||
o save resources.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section> | ||||
<section title="Group Maintenance Channel"> | <name>Group Maintenance Channel</name> | |||
<t>The GCKS is responsible for rekeying the secure group per the group | <t>The GCKS is responsible for rekeying the secure group per the group | |||
policy. Rekeying is an operation whereby the GCKS provides replacement | policy. | |||
TEKs and KEK, deleting TEKs, and/or excluding group members. The GCKS | ||||
<!--[rfced] How may we clarify this sentence. Should "KEK" be plural | ||||
like "TEKs"? Does the GCKS delete the TEKs and/or exclude the | ||||
group members as shown below? | ||||
Original: | ||||
Rekeying is an operation whereby the GCKS provides | ||||
replacement TEKs and KEK, deleting TEKs, and/or | ||||
excluding group members. | ||||
Perhaps: | ||||
Rekeying is an operation whereby the GCKS provides | ||||
replacement TEKs and KEKs, deletes TEKs, and/or | ||||
excludes group members. | ||||
--> | ||||
Rekeying is an operation whereby the GCKS provides replacement | ||||
TEKs and KEKs, deleting TEKs, and/or excluding group members. The GCKS | ||||
may initiate a rekey message if group membership and/or policy has | may initiate a rekey message if group membership and/or policy has | |||
changed, or if the keys are about to expire. Two forms of group | changed or if the keys are about to expire. Two forms of group | |||
maintenance channels are provided in G-IKEv2 to push new policy to | maintenance channels are provided in G-IKEv2 to push new policy to | |||
group members.</t> | group members.</t> | |||
<dl newline="true" spacing="normal"> | ||||
<dl newline="true"> | <dt>GSA_REKEY:</dt> | |||
<dt>GSA_REKEY</dt> | ||||
<dd>The GSA_REKEY is a pseudo-exchange, consisting | <dd>The GSA_REKEY is a pseudo-exchange, consisting | |||
of a one-way IKEv2 message sent by the GCKS, where the rekey policy is delivered | of a one-way IKEv2 message sent by the GCKS where the rekey policy is delivered | |||
to group members using IP multicast as a transport. This method is | to group members using IP multicast as a transport. This method is | |||
valuable for large and dynamic groups, and where policy may change | valuable for large and dynamic groups and where policy may change | |||
frequently and a scalable rekey method is required. When the | frequently and a scalable rekey method is required. When the | |||
GSA_REKEY is used, the IKE SA protecting the member | GSA_REKEY is used, the IKE SA protecting the member | |||
registration exchanges is usually terminated, and group members await | registration exchanges is usually terminated and group members await | |||
policy changes from the GCKS via the GSA_REKEY messages.</dd> | policy changes from the GCKS via the GSA_REKEY messages.</dd> | |||
<dt>GSA_INBAND_REKEY:</dt> | ||||
<dt>GSA_INBAND_REKEY</dt> | ||||
<dd>The GSA_INBAND_REKEY is a | <dd>The GSA_INBAND_REKEY is a | |||
normal IKEv2 exchange using the IKE SA that was setup to protecting th e | normal IKEv2 exchange using the IKE SA that was set up to protect the | |||
member registration exchange. This exchange allows the GCKS to | member registration exchange. This exchange allows the GCKS to | |||
rekey without using an independent GSA_REKEY pseudo-exchange. The | rekey without using an independent GSA_REKEY pseudo-exchange. The | |||
GSA_INBAND_REKEY exchange provides a reliable policy delivery and | GSA_INBAND_REKEY exchange provides a reliable policy delivery and | |||
is useful when G-IKEv2 is used with a small group of cooperating devic es.</dd> | is useful when G-IKEv2 is used with a small group of cooperating devic es.</dd> | |||
</dl> | </dl> | |||
<t>Depending on its policy, the GCKS <bcp14>MAY</bcp14> combine these tw | ||||
<t>Depending on its policy the GCKS <bcp14>MAY</bcp14> combine these two | o methods. | |||
methods. | For example, the GCKS may use the GSA_INBAND_REKEY to deliver a key to t | |||
For example, it may use the GSA_INBAND_REKEY to deliver key to the | he | |||
GMs in the group acting as senders (as this would provide reliable keys | GMs in the group acting as senders (as this would provide reliable keys | |||
delivery), | delivery) | |||
and the GSA_REKEY for the rest GMs. | and the GSA_REKEY for the rest of the GMs. | |||
</t> | </t> | |||
<section anchor="gsa_rekey"> | ||||
<section anchor="gsa_rekey" title="GSA_REKEY"> | <name>GSA_REKEY</name> | |||
<t>The GCKS initiates the G-IKEv2 Rekey by sending a protected message | <t>The GCKS initiates the G-IKEv2 rekey by sending a protected | |||
to the GMs, | message to the GMs, usually using IP multicast. Since the Rekey | |||
usually using IP multicast. Since the Rekey messages do not require re | messages do not require responses and are sent to multiple GMs, | |||
sponses and they are sent | the windowing mechanism described in <xref target="RFC7296" | |||
to multiple GMs, the windowing mechanism described in Section 2.3 | sectionFormat="of" section="2.3"/> <bcp14>MUST NOT</bcp14> | |||
of IKEv2 <xref target="RFC7296" /> <bcp14>MUST NOT</bcp14> be used for | be used for the Rekey messages. The GCKS rekey message replaces the | |||
the Rekey messages. | current rekey GSA KEK or KEK array (e.g., in the case of LKH) and/or | |||
The GCKS rekey message replaces the current rekey GSA KEK or KEK array | creates new Data-Security GSA TEKs. The GM_SENDER_ID attribute in | |||
(e.g. in case of LKH), | the Key Download payload (defined in <xref | |||
and/or creates new Data-Security GSA TEKs. The GM_SENDER_ID | target="mkd_attr_gm_sid"/>) <bcp14>MUST NOT</bcp14> be part of the | |||
attribute in the Key Download payload (defined in <xref | Rekey Exchange, as this is sender-specific information and the Rekey | |||
target="mkd_attr_gm_sid"></xref>) <bcp14>MUST NOT</bcp14> be part of t | ||||
he Rekey | ||||
Exchange as this is sender specific information and the Rekey | ||||
Exchange is group specific. The GCKS initiates the GSA_REKEY | Exchange is group specific. The GCKS initiates the GSA_REKEY | |||
pseudo-exchange as following:</t> | pseudo-exchange as following:</t> | |||
<t><figure title="GSA_REKEY Pseudo-Exchange" anchor="gsa_rekey_exchang | <figure anchor="gsa_rekey_exchange"> | |||
e"> | <name>GSA_REKEY Pseudo-Exchange</name> | |||
<preamble></preamble> | ||||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
GMs (Receivers) GCKS (Sender) | GMs (Receivers) GCKS (Sender) | |||
----------------- --------------- | ----------------- --------------- | |||
<-- HDR, SK{GSA, KD, [N,] [AUTH]} | <-- HDR, SK{GSA, KD, [N,] [AUTH]} | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | </figure> | |||
</figure></t> | ||||
<t>HDR is defined in <xref target="header"></xref>. While GSA_REKEY re -uses IKEv2 header, | <t>HDR is defined in <xref target="header"/>. While GSA_REKEY reuses t he IKEv2 header, | |||
the "IKE SA Initiator's SPI" and the "IKE SA Responder's SPI" fields a re treated as a single field | the "IKE SA Initiator's SPI" and the "IKE SA Responder's SPI" fields a re treated as a single field | |||
with a length of 16 octets containing the SPI of Rekey SA. The value f | with a length of 16 octets containing the SPI of a Rekey SA. The value | |||
or this field is provided by the GCKS | for this field is provided by the GCKS | |||
in the GSA payload (see <xref target="gsa_policy" />). | in the GSA payload (see <xref target="gsa_policy"/>). | |||
The Message ID in this message will start with the value the GCKS sent to the | The Message ID in this message will start with the value the GCKS sent to the | |||
group members in the attribute GSA_INITIAL_MESSAGE_ID or from | group members in the attribute GSA_INITIAL_MESSAGE_ID or from | |||
zero if this attribute wasn't sent. The Message ID will be incremented each time a new | zero if this attribute wasn't sent. The Message ID will be incremented each time a new | |||
GSA_REKEY message is sent to the group members.</t> | GSA_REKEY message is sent to the group members.</t> | |||
<t>The GSA payload contains the current policy for rekey and Data-Secu rity SAs. | <t>The GSA payload contains the current policy for rekey and Data-Secu rity SAs. | |||
The GSA may contain a new Rekey SA and/or a new Data-Security SAs | ||||
<xref target="gsa_payload"></xref>.</t> | ||||
<!--[rfced] Should "a Data-Security SAs" be singular or plural in this | ||||
sentence (e.g., "a new Data-Security SA" or "new Data-Security | ||||
SAs")? | ||||
Original: | ||||
The GSA may contain a new Rekey SA and/or a new Data- | ||||
Security SAs Section 4.4. | ||||
Perhaps: | ||||
The GSA may contain a new Rekey SA and/or a new Data- | ||||
Security SA (Section 4.4). | ||||
--> | ||||
The GSA may contain a new Rekey SA and/or a new Data-Security SAs | ||||
(<xref target="gsa_payload"/>).</t> | ||||
<t>The KD payload contains the keys for the policy included in the | <t>The KD payload contains the keys for the policy included in the | |||
GSA. If one or more Data-Security SAs are being refreshed in this reke y | GSA. If one or more Data-Security SAs are being refreshed in this reke y | |||
message, the IPsec keys are updated in the KD, and/or if the rekey | message, the IPsec keys are updated in the KD, and/or if the Rekey | |||
SA is being refreshed in this rekey message, the rekey Key or the | SA is being refreshed in this rekey message, the rekey Key or the | |||
LKH KEK array (e.g. in case of LKH) is updated in the KD payload.</t> | LKH KEK array (e.g., in case of LKH) is updated in the KD payload.</t> | |||
<t>A Delete payload <bcp14>MAY</bcp14> be included to instruct the GM to delete | <t>A Delete payload <bcp14>MAY</bcp14> be included to instruct the GM to delete | |||
existing SAs. See <xref target="delete" /> for more detail.</t> | existing SAs. See <xref target="delete"/> for more detail.</t> | |||
<t>The AUTH payload <bcp14>MUST</bcp14> be included to authenticate th e GSA_REKEY | <t>The AUTH payload <bcp14>MUST</bcp14> be included to authenticate th e GSA_REKEY | |||
message if the authentication method is based on public key signatures | message if the authentication method is based on public key signatures | |||
and <bcp14>MUST NOT</bcp14> be included if authentication is implicit. | and <bcp14>MUST NOT</bcp14> be included if authentication is implicit. | |||
In the latter case, the fact that a GM can decrypt the GSA_REKEY messa ge and verify its ICV | In the latter case, the fact that a GM can decrypt the GSA_REKEY messa ge and verify its Integrity Check Value (ICV) | |||
proves that the sender of this message knows the current KEK, | proves that the sender of this message knows the current KEK, | |||
thus authenticating the sender as a member of the group. | thus authenticating the sender as a member of the group. | |||
Note, that implicit authentication doesn't provide source origin authe | Note that implicit authentication doesn't provide source origin authen | |||
ntication. | tication. | |||
For this reason using implicit authentication for GSA_REKEY is <bcp14> | For this reason, using implicit authentication for GSA_REKEY is <bcp14 | |||
NOT RECOMMENDED</bcp14> | >NOT RECOMMENDED</bcp14> | |||
unless source origin authentication is not required (for example, in a small group of | unless source origin authentication is not required (for example, in a small group of | |||
highly trusted GMs). See more about authentication methods in <xref ta rget="auth_method" />. | highly trusted GMs). See more about authentication methods in <xref ta rget="auth_method"/>. | |||
</t> | </t> | |||
<t> During group member registration, the GCKS | <t> During group member registration, the GCKS | |||
sends the authentication key in the KD payload, AUTH_KEY attribute, | sends the authentication key in the KD payload, the AUTH_KEY attribute , | |||
which the group member uses to authenticate the key | which the group member uses to authenticate the key | |||
server. Before the current authentication key expires, the GCKS will | server. Before the current authentication key expires, the GCKS will | |||
send a new AUTH_KEY to the group members in a GSA_REKEY message. | send a new AUTH_KEY to the group members in a GSA_REKEY message. | |||
The authentication key that is sent in the rekey message may be not th | The authentication key that is sent in the rekey message may not | |||
e same | be the same | |||
as the authentication key sent during the GM registration. If implicit authentication | as the authentication key sent during the GM registration. If implicit authentication | |||
is used, then AUTH_KEY <bcp14>MUST NOT</bcp14> be sent to GMs.</t> | is used, then AUTH_KEY <bcp14>MUST NOT</bcp14> be sent to GMs.</t> | |||
<section anchor="gsa_rekey_auth"> | ||||
<section anchor="gsa_rekey_auth" title="GSA_REKEY Message Authenticati | <name>GSA_REKEY Message Authentication</name> | |||
on"> | <t>The content of the AUTH payload generally depends on the authenti | |||
<t>The content of the AUTH payload generally depends on the authenti | cation method from the Group Controller Authentication Method (GCAUTH) transform | |||
cation method from the Group Controller Authentication Method transform | (<xref target="auth_method"/>). | |||
(<xref target="auth_method" />). This specification defines the use | This specification defines the use of only one authentication method, Digital Si | |||
of only one authentication method - Digital Signature, | gnature, and the AUTH payload contains a digital signature calculated over the c | |||
and the AUTH payload contains digital signature calculated over the | ontent of the not-yet-encrypted GSA_REKEY message. | |||
content of the not yet encrypted GSA_REKEY message. | ||||
</t> | </t> | |||
<t>The digital signing is applied to the concatenation of two chunks : A and P. | <t>The digital signing is applied to the concatenation of two chunks : A and P. | |||
The chunk A starts with the first octet of the G-IKEv2 header (not i | Chunk A starts with the first octet of the G-IKEv2 header (not inclu | |||
ncluding prepended four octets of zeros, if port 4500 is used) | ding prepended four octets of zeros, if port 4500 is used) | |||
and continues to the last octet of the Encrypted Payload header. The | and continues to the last octet of the Encrypted Payload header. | |||
chunk P consists of the not yet encrypted content of the Encrypted payload, exc | Chunk P consists of the not-yet-encrypted content of the Encrypted payload, excl | |||
luding | uding | |||
the Initialization Vector, the Padding, the Pad Length and the Integ | the Initialization Vector, the Padding, the Pad Length, and the Inte | |||
rity Checksum Data fields (see 3.14 of IKEv2 <xref target="RFC7296" /> for descr | grity Checksum Data fields (see <xref section="3.14" target="RFC7296"/> for the | |||
iption | description | |||
of the Encrypted payload). In other words, the P chunk is the inner | of the Encrypted payload). In other words, chunk P is the inner payl | |||
payloads of the Encrypted payload in plaintext form. | oads of the Encrypted payload in plaintext form. | |||
<xref target="auth_data" /> illustrates the layout of the P and A ch | <xref target="auth_data"/> illustrates the layout of chunks P and A | |||
unks in the GSA_REKEY message. | in the GSA_REKEY message. | |||
</t> | </t> | |||
<t>Before the calculation of the AUTH payload, the inner payloads | ||||
<t>Before the calculation of the AUTH payload the inner payloads of | of the Encrypted payload must be fully formed and ready for | |||
Encrypted payload must be | encryption except for the content of the AUTH payload. The AUTH | |||
fully formed and ready for encryption, except for the content of the | payload must have correct values in the Payload Header, the Auth | |||
AUTH payload. | Method, and the RESERVED fields. The Authentication Data field is | |||
The AUTH payload must have correct values in the Payload Header, the | zeroed, but the ASN.1 Length and the AlgorithmIdentifier fields | |||
Auth Method and the RESERVED fields. | must be properly filled in; see Signature Authentication in | |||
The Authentication Data field is zeroed, but the ASN.1 Length and th | <xref target="RFC7427"/>. | |||
e AlgorithmIdentifier fields must be properly filled in, | ||||
see Signature Authentication in IKEv2 <xref target="RFC7427" />. | ||||
</t> | </t> | |||
<t>For the purpose of the AUTH payload calculation, the Length field | ||||
<t>For the purpose of the AUTH payload calculation the Length field | in the IKE header and the Payload Length | |||
in the IKE header and the Payload Length | ||||
field in the Encrypted Payload header are adjusted so that they don' t count the lengths | 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). | of Initialization Vector, Integrity Checksum Data, and Padding (alon g with Pad Length field). | |||
In other words, the Length field in the IKE header (denoted as Adjus tedLen in | In other words, the Length field in the IKE header (denoted as Adjus tedLen in | |||
<xref target="auth_data" />) is set to the sum of the lengths of A a nd P, and the Payload Length | <xref target="auth_data"/>) is set to the sum of the lengths of A an d P, and the Payload Length | |||
field in the Encrypted Payload header (denoted as AdjustedPldLen in | field in the Encrypted Payload header (denoted as AdjustedPldLen in | |||
<xref target="auth_data" />) is set to the length of P plus the size of the Payload header (four octets). | <xref target="auth_data"/>) is set to the length of P plus the size of the Payload header (four octets). | |||
</t> | </t> | |||
<t>The input to the digital signature algorithm that computes the co ntent of the AUTH payload can be described as: | <t>The input to the digital signature algorithm that computes the co ntent of the AUTH payload can be described as: | |||
</t> | </t> | |||
<figure align="center"> | <figure> | |||
<artwork align="left"><![CDATA[ | <artwork align="left"><![CDATA[ | |||
DataToAuthenticate = A | P | DataToAuthenticate = A | P | |||
GsaRekeyMessage = GenIKEHDR | EncPayload | GsaRekeyMessage = GenIKEHDR | EncPayload | |||
GenIKEHDR = [ four octets 0 if using port 4500 ] | AdjustedIKEHDR | GenIKEHDR = [ four octets 0 if using port 4500 ] | AdjustedIKEHDR | |||
AdjustedIKEHDR = SPIi | SPIr | . . . | AdjustedLen | AdjustedIKEHDR = SPIi | SPIr | . . . | AdjustedLen | |||
EncPayload = AdjustedEncPldHdr | IV | InnerPlds | Pad | PadLen | ICV | EncPayload = AdjustedEncPldHdr | IV | InnerPlds | Pad | PadLen | ICV | |||
AdjustedEncPldHdr = NextPld | C | RESERVED | AdjustedPldLen | AdjustedEncPldHdr = NextPld | C | RESERVED | AdjustedPldLen | |||
A = AdjustedIKEHDR | AdjustedEncPldHdr | A = AdjustedIKEHDR | AdjustedEncPldHdr | |||
P = InnerPlds | P = InnerPlds | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure align="center" anchor="auth_data" title="Data to Authenticat | <figure anchor="auth_data"> | |||
e in the GSA_REKEY Messages"> | <name>Data to Authenticate in the GSA_REKEY Messages</name> | |||
<artwork align="left"><![CDATA[ | <artwork align="left"><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^ ^ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ^ ^ | |||
| IKE SA Initiator's SPI | | | | | IKE SA Initiator's SPI | | | | |||
| | | | | | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ I | | |||
| IKE SA Responder's SPI | K | | | IKE SA Responder's SPI | K | | |||
| | E | | | | E | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| Next Payload | MjVer | MnVer | Exchange Type | Flags | H A | | Next Payload | MjVer | MnVer | Exchange Type | Flags | H A | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ d | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ d | | |||
| Message ID | r | | | Message ID | r | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | |||
| AdjustedLen | | | | | AdjustedLen | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ x | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ x | | |||
| Next Payload |C| RESERVED | AdjustedPldLen | | | | | Next Payload |C| RESERVED | AdjustedPldLen | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | v | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | v | |||
| | | | | | | | |||
~ Initialization Vector ~ E | ~ Initialization Vector ~ E | |||
| | n | | | n | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ c ^ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ c ^ | |||
| | r | | | | r | | |||
~ Inner payloads (not yet encrypted) ~ P | ~ Inner Payloads (not yet encrypted) ~ P | |||
| | P | | | | P | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ l v | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ l v | |||
~ Padding (0-255 octets) | Pad Length | d | ~ Padding (0-255 octets) | Pad Length | d | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
| | | | | | | | |||
~ Integrity Checksum Data ~ | | ~ Integrity Checksum Data ~ | | |||
| | | | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ v | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ v | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>The authentication data is calculated using the authentication al gorithm from the Group Controller Authentication Method transform | <t>The authentication data is calculated using the authentication al gorithm from the Group Controller Authentication Method transform | |||
(<xref target="auth_method" />) and the current authentication key p rovided in the AUTH_KEY attribute (<xref target="mkd_attr_auth_key" />). | (<xref target="auth_method"/>) and the current authentication key pr ovided in the AUTH_KEY attribute (<xref target="mkd_attr_auth_key"/>). | |||
The calculated authentication data is placed into the AUTH payload, the Length fields in the IKE Header and the Encryption Payload | 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 encrypt ed and the ICV is computed using the current KEK. | header are restored, the content of the Encrypted payload is encrypt ed and the ICV is computed using the current KEK. | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="IKE Fragmentation"> | <name>IKE Fragmentation</name> | |||
<t>IKEv2 fragmentation <xref target="RFC7383"></xref> can be used to | <t>IKEv2 fragmentation <xref target="RFC7383"/> can be used to | |||
perform fragmentation of large GSA_REKEY messages; however, when | perform fragmentation of large GSA_REKEY messages; however, when | |||
the GSA_REKEY message is emitted as an IP multicast packet there | the GSA_REKEY message is emitted as an IP multicast packet, there | |||
is a lack of response from the GMs. This has the following | is a lack of response from the GMs. This has the following | |||
implications. | implications. | |||
<list style="symbols"> | </t> | |||
<t>Policy regarding the use of IKE fragmentation is implicit. | <ul spacing="normal"> | |||
<li> | ||||
<t>Policy regarding the use of IKE fragmentation is implicit. | ||||
If a GCKS detects that all GMs have negotiated support of IKE | If a GCKS detects that all GMs have negotiated support of IKE | |||
fragmentation in IKE_SA_INIT, then it <bcp14>MAY</bcp14> use IKE | fragmentation in IKE_SA_INIT, then it <bcp14>MAY</bcp14> use IKE | |||
fragmentation on large GSA_REKEY messages.</t> | fragmentation on large GSA_REKEY messages.</t> | |||
</li> | ||||
<li> | ||||
<t>The GCKS must always use IKE fragmentation based on a | ||||
preconfigured fragmentation threshold, as there is no way to | ||||
check if fragmentation is needed by first sending unfragmented | ||||
messages and waiting for response. <xref | ||||
target="RFC7383" sectionFormat="of" section="2.5.1"/> contains r | ||||
ecommendations on selecting the | ||||
fragmentation threshold.</t> | ||||
</li> | ||||
<li> | ||||
<t>The Path MTU (PMTU) mechanism, defined in <xref target="RFC73 | ||||
83" | ||||
sectionFormat="of" section="2.5.2"/>, | ||||
cannot be used due to lack of GSA_REKEY response messages.</t> | ||||
</li> | ||||
</ul> | ||||
<t> The calculation of authentication data <bcp14>MUST</bcp14> be ap | ||||
plied to whole messages only before possible IKE Fragmentation. | ||||
If the message was received in fragmented form, it should be reconst | ||||
ructed before verifying its authenticity as if it were received unfragmented. | ||||
<!-- [rfced] FYI: We updated "that with" to "with the" as follows. | ||||
<t>The GCKS must always use IKE fragmentation based on a pre-confi | Original: | |||
gured | The RESERVED field in the reconstructed Encrypted Payload header | |||
fragmentation threshold, as there is no way to check if fragmentat | MUST be set to the value of the RESERVED field in the Encrypted | |||
ion is needed by first sending | Fragment payload header from the first fragment (that with | |||
unfragmented messages and waiting for response. Section 2.5.1 of I | Fragment Number equal to 1). | |||
KEv2 Fragmentation <xref target="RFC7383" /> | ||||
contains recommendation on selecting the fragmentation threshold.< | ||||
/t> | ||||
<t>PMTU mechanism, defined in Section 2.5.2 of IKEv2 Fragmentation | ||||
<xref target="RFC7383" />, | ||||
cannot be used due to lack of GSA_REKEY response messages.</t> | ||||
</list></t> | ||||
<t> The calculation of authentication data <bcp14>MUST</bcp14> be ap | Current: | |||
plied to whole messages only, before possible IKE Fragmentation. | The RESERVED field in the reconstructed Encrypted Payload header | |||
If the message was received in fragmented form, it should be reconst | MUST be set to the value of the RESERVED field in the Encrypted | |||
ructed before verifying its authenticity as if it were received unfragmented. | Fragment payload header from the first fragment (with the | |||
The RESERVED field in the reconstructed Encrypted Payload header <bc | Fragment Number equal to 1). | |||
p14>MUST</bcp14> be set to the value of the RESERVED | --> | |||
field in the Encrypted Fragment payload header from the first fragme | The RESERVED field in the reconstructed Encrypted Payload header <bcp14>MUST</bc | |||
nt (that with Fragment Number equal to 1). | p14> be set to the value of the RESERVED | |||
field in the Encrypted Fragment payload header from the first fragme | ||||
nt (with the Fragment Number equal to 1). | ||||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="GSA_REKEY GCKS Operations"> | <name>GSA_REKEY GCKS Operations</name> | |||
<t>The GCKS builds the rekey message with a Message ID value that | <t>The GCKS builds the rekey message with a Message ID value that | |||
is one greater than the value included in the previous rekey message . | is one greater than the value included in the previous rekey message . | |||
The first message sent over a new Rekey SA <bcp14>MUST</bcp14> use M | The first message sent over a new Rekey SA <bcp14>MUST</bcp14> use a | |||
essage ID of 0. | Message ID of 0. | |||
The GSA, KD and N payloads follow with the | The GSA, KD, and N payloads follow with the | |||
same characteristics as in the GSA Registration exchange. | same characteristics as in the GSA Registration exchange. | |||
The AUTH payload (if present) is created as defined in <xref target= "gsa_rekey_auth" />. | The AUTH payload (if present) is created as defined in <xref target= "gsa_rekey_auth"/>. | |||
</t> | </t> | |||
<t>Because GSA_REKEY messages are not acknowledged and could be | <t>Because GSA_REKEY messages are not acknowledged and could be | |||
discarded by the network, one or more GMs may not receive | discarded by the network, one or more GMs may not receive | |||
the new policy. To mitigate such lost messages, during a rekey event the | the new policy. To mitigate such lost messages, during a rekey event , the | |||
GCKS may transmit several copies of an encrypted GSA_REKEY message w ith the new | GCKS may transmit several copies of an encrypted GSA_REKEY message w ith the new | |||
policy. The (encrypted) retransmitted messages <bcp14>MUST</bcp14> b e bitwise identical and should be | policy. The (encrypted) retransmitted messages <bcp14>MUST</bcp14> b e bitwise identical and should be | |||
sent within a short time interval (a few seconds) to ensure | sent within a short time interval (a few seconds) to ensure | |||
that the SA lifetime calculations would not be substantially skewed for the GMs that | that the SA lifetime calculations would not be substantially skewed for the GMs that | |||
would receive different copies of the messages. </t> | would receive different copies of the messages. </t> | |||
<t> GCKS may also include one or several GSA_NEXT_SPI | <t> GCKS may also include one or several GSA_NEXT_SPI | |||
attributes specifying SPIs for the prospected rekeys, so that | attributes specifying SPIs for the prospected rekeys so that | |||
listening GMs are able to detect lost rekey messages and recover | listening GMs are able to detect lost rekey messages and recover | |||
from this situation. See Sections <xref target="gsa_attr_next_spi" / > for more detail. | from this situation. See <xref target="gsa_attr_next_spi"/> for more detail. | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="GSA_REKEY GM Operations"> | <name>GSA_REKEY GM Operations</name> | |||
<t> When a group member receives the Rekey message from the GCKS it | <t> When a group member receives the rekey message from the GCKS, i | |||
t | ||||
decrypts the message and verifies its integrity using the current KE K. If the AUTH payload is present | decrypts the message and verifies its integrity using the current KE K. If the AUTH payload is present | |||
in the decrypted message, then the GM validates authenticity of the message using the key retrieved | in the decrypted message, then the GM validates authenticity of the message using the key retrieved | |||
in a previous G-IKEv2 exchange. Then the GM verifies the Message ID, and processes | in a previous G-IKEv2 exchange. Then the GM verifies the Message ID and processes | |||
the GSA and KD payloads. The group member then installs the new Data -Security SA(s) | the GSA and KD payloads. The group member then installs the new Data -Security SA(s) | |||
and/or new Rekey SA. The parsing of the payloads is identical to | and/or a new Rekey SA. The parsing of the payloads is identical to | |||
the parsing done in the registration exchange.</t> | the parsing done in the registration exchange.</t> | |||
<t>Replay protection is achieved by a group member rejecting a | <t>Replay protection is achieved by a group member rejecting a | |||
GSA_REKEY message which has a Message ID smaller than the current | GSA_REKEY message that has a Message ID smaller than the current | |||
Message ID that the GM is expecting. The GM expects the Message ID | Message ID that the GM is expecting. The GM expects the Message ID | |||
in the first GSA_REKEY message it receives to be equal or greater | in the first GSA_REKEY message it receives to be equal to or greater | |||
than the Message ID it receives in the GSA_INITIAL_MESSAGE_ID attrib ute. | than the Message ID it receives in the GSA_INITIAL_MESSAGE_ID attrib ute. | |||
Note, that if the GSA_INITIAL_MESSAGE_ID attribute is not received f or the Rekey SA, | Note that if the GSA_INITIAL_MESSAGE_ID attribute is not received fo r the Rekey SA, | |||
the GM <bcp14>MUST</bcp14> assume zero as the first expected Message ID. | the GM <bcp14>MUST</bcp14> assume zero as the first expected Message ID. | |||
The GM expects the Message ID in subsequent GSA_REKEY messages to | The GM expects the Message ID in subsequent GSA_REKEY messages to | |||
be greater than the last valid GSA_REKEY message ID it | be greater than the last valid GSA_REKEY message ID it | |||
received.</t> | received.</t> | |||
<t> This specification assumes that the GSA_REKEY messages are sent | <t> This specification assumes that the GSA_REKEY messages are sent | |||
with intervals, that are significantly greater than typical network packet reordering intervals. | with intervals that are significantly greater than typical network p acket reordering intervals. | |||
</t> | </t> | |||
<t>If the GSA payload includes a Data-Security SA using cipher in | ||||
<t>If the GSA payload includes a Data-Security SA using cipher in a | a counter-mode of operation and the receiving group member is a | |||
counter-mode of operation and the receiving group member is a | ||||
sender for that SA, the group member uses its current Sender-ID valu e | sender for that SA, the group member uses its current Sender-ID valu e | |||
with the Data-Security SAs to create counter-mode nonces. If it is | with the Data-Security SAs to create counter-mode nonces. If it is | |||
a sender and does not hold a current Sender-ID value (for example, | a sender and does not hold a current Sender-ID value (for example, | |||
when no counter-mode is employed for other Data-Security SAs), | when no counter-mode is employed for other Data-Security SAs), | |||
it <bcp14>MUST NOT</bcp14> install the Data-Security SAs. It <bcp14> MUST</bcp14> initiate a re-registration | it <bcp14>MUST NOT</bcp14> install the Data-Security SAs. It <bcp14> MUST</bcp14> initiate a re-registration | |||
to the GCKS in order to obtain an Sender-ID value (along with | to the GCKS in order to obtain a Sender-ID value (along with | |||
the current group policy). | the current group policy). | |||
</t> | </t> | |||
<!-- [rfced] We added parentheses to this sentence for ease of | ||||
reading. Please let us know of any objections. | ||||
<t>Once a new Rekey SA is installed as a result of GSA_REKEY | Original: | |||
If the message includes Delete payload for existing Data-Security SA, | ||||
then after installing a new Data-Security SA the old one, identified | ||||
by the Protocol and SPI fields in the Delete payload, MUST be silently | ||||
deleted after waiting DEACTIVATION_TIME_DELAY interval regardless of | ||||
its expiration time. | ||||
Current: | ||||
If the message includes a Delete payload for an existing Data-Security SA, | ||||
then after installing a new Data-Security SA, the old one (identified by the | ||||
Protocol and SPI fields in the Delete payload) MUST be silently deleted after | ||||
waiting the DEACTIVATION_TIME_DELAY interval regardless of its expiration tim | ||||
e. | ||||
--> | ||||
<t>Once a new Rekey SA is installed as a result of a GSA_REKEY | ||||
message, the current Rekey SA (over which the message was received) | message, the current Rekey SA (over which the message was received) | |||
<bcp14>MUST</bcp14> be silently deleted after waiting DEACTIVATION_T | <bcp14>MUST</bcp14> be silently deleted after waiting the DEACTIVATI | |||
IME_DELAY interval | ON_TIME_DELAY interval | |||
regardless of its expiration time. If the message includes Delete pa | regardless of its expiration time. If the message includes a Delete | |||
yload | payload | |||
for existing Data-Security SA, then after installing a new Data-Secu | for an existing Data-Security SA, then after installing a new Data-S | |||
rity SA the old one, | ecurity SA, the old one | |||
identified by the Protocol and SPI fields in the Delete payload, <bc | (identified by the Protocol and SPI fields in the Delete payload) <b | |||
p14>MUST</bcp14> be silently deleted | cp14>MUST</bcp14> be silently deleted | |||
after waiting DEACTIVATION_TIME_DELAY interval regardless of its exp | after waiting the DEACTIVATION_TIME_DELAY interval regardless of its | |||
iration time. | expiration time. | |||
</t> | </t> | |||
<t>If a Data-Security SA is not rekeyed yet and is | <t>If a Data-Security SA is not rekeyed yet and is | |||
about to expire (a "soft lifetime" expiration is described | about to expire (a "soft lifetime" expiration is described | |||
in Section 4.4.2.1 of <xref target="RFC4301"></xref>), the GM <bcp14 >SHOULD</bcp14> | in <xref target="RFC4301" sectionFormat="of" section="4.4.2.1"/>), t he GM <bcp14>SHOULD</bcp14> | |||
initiate a registration to the GCKS. This registration serves as a | initiate a registration to the GCKS. This registration serves as a | |||
request for current SAs, and will result in the download of | request for current SAs and will result in the download of | |||
replacement SAs, assuming the GCKS policy has created them. | replacement SAs, assuming the GCKS policy has created them. | |||
A GM <bcp14>SHOULD</bcp14> also initiate a registration request if a Rekey SA | A GM <bcp14>SHOULD</bcp14> also initiate a registration request if a Rekey SA | |||
is about to expire and not yet replaced with a new one.</t> | is about to expire and not yet replaced with a new one.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="gsa_inband_rekey"> | ||||
<section anchor="gsa_inband_rekey" title="GSA_INBAND_REKEY Exchange"> | <name>GSA_INBAND_REKEY Exchange</name> | |||
<t>When the IKE SA protecting the member registration exchange is | <t>When the IKE SA protecting the member registration exchange is | |||
maintained while group member participates in the group, the GCKS | maintained while a group member participates in the group, the GCKS | |||
can use the GSA_INBAND_REKEY exchange to individually provide policy | can use the GSA_INBAND_REKEY exchange to individually provide policy | |||
updates to the group member.</t> | updates to the group member.</t> | |||
<figure title="GSA_INBAND_REKEY Exchange" anchor="gsa_inband_rekey_exc | <figure anchor="gsa_inband_rekey_exchange"> | |||
hange"> | <name>GSA_INBAND_REKEY Exchange</name> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
GM (Responder) GCKS (Initiator) | GM (Responder) GCKS (Initiator) | |||
---------------- ------------------ | ---------------- ------------------ | |||
<-- HDR, SK{GSA, KD, [N]} | <-- HDR, SK{GSA, KD, [N]} | |||
HDR, SK{} --> | HDR, SK{} --> | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>Because this is a normal IKEv2 exchange, the HDR is treated as defi ned | <t>Because this is a normal IKEv2 exchange, the HDR is treated as defi ned | |||
in IKEv2 <xref target="RFC7296"></xref>.</t> | in IKEv2 <xref target="RFC7296"/>.</t> | |||
<section> | ||||
<section title="GSA_INBAND_REKEY GCKS Operations"> | <name>GSA_INBAND_REKEY GCKS Operations</name> | |||
<t>The GSA, KD and N payloads are built in the same manner as in | <t>The GSA, KD, and N payloads are built in the same manner as in | |||
a registration exchange.</t> | a registration exchange.</t> | |||
</section> | </section> | |||
<section> | ||||
<section title="GSA_INBAND_REKEY GM Operations"> | <name>GSA_INBAND_REKEY GM Operations</name> | |||
<t>The GM processes the GSA, KD and N payloads in the same manner | <t>The GM processes the GSA, KD, and N payloads in the same manner | |||
as if they were received in a registration exchange.</t> | as if they were received in a registration exchange.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="deletion"> | ||||
<section title="Deletion of SAs" anchor="deletion" > | <name>Deletion of SAs</name> | |||
<t>There are occasions when the GCKS may want to signal to group | <t>There are occasions when the GCKS may want to signal to group | |||
members to delete policy when the application sending data traffic has ended, or if group | members to delete policy when the application sending data traffic has ended or if group | |||
policy has changed. Deletion of SAs is accomplished by sending | policy has changed. Deletion of SAs is accomplished by sending | |||
the Delete Payload described in Section 3.11 of IKEv2 <xref target="RF C7296"></xref> | the Delete Payload described in <xref target="RFC7296" sectionFormat=" of" section="3.11"/> | |||
as part of the GSA_REKEY pseudo-exchange as shown below.</t> | as part of the GSA_REKEY pseudo-exchange as shown below.</t> | |||
<t><figure title="SA Deletion in GSA_REKEY" anchor="gsa_rekey_sa_delet | <figure anchor="gsa_rekey_sa_deletion"> | |||
ion"> | <name>SA Deletion in GSA_REKEY</name> | |||
<preamble></preamble> | ||||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
GMs (Receivers) GCKS (Sender) | GMs (Receivers) GCKS (Sender) | |||
---------------- --------------- | ---------------- --------------- | |||
<-- HDR, SK{D, [N,] [AUTH]} | <-- HDR, SK{D, [N,] [AUTH]} | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | </figure> | |||
</figure></t> | ||||
<t>If GCKS has a unicast SA with group member then it can use the GSA_ INBAND_REKEY | <t>If GCKS has a unicast SA with a group member, then it can use the G SA_INBAND_REKEY | |||
exchange to delete SAs. | exchange to delete SAs. | |||
</t> | </t> | |||
<t><figure title="SA Deletion in GSA_INBAND_REKEY" anchor="gsa_inband_ | <figure anchor="gsa_inband_rekey_sa_deletion"> | |||
rekey_sa_deletion"> | <name>SA Deletion in GSA_INBAND_REKEY</name> | |||
<preamble></preamble> | ||||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
GM (Responder) GCKS (Initiator) | GM (Responder) GCKS (Initiator) | |||
--------------- ------------------ | --------------- ------------------ | |||
<-- HDR, SK{D, [N]} | <-- HDR, SK{D, [N]} | |||
HDR, SK{} --> | HDR, SK{} --> | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | </figure> | |||
</figure></t> | ||||
<t>There may be circumstances where the GCKS may want to start over | <t>There may be circumstances where the GCKS may want to start over | |||
with a clean state, for example in case it runs out of available Sende r-IDs. | with a clean state, e.g., in case it runs out of available Sender-IDs. | |||
The GCKS can signal deletion of all the Data-Security SAs by | The GCKS can signal deletion of all the Data-Security SAs by | |||
sending a Delete payload with an SPI value equal to zero. | sending a Delete payload with an SPI value equal to zero. | |||
For example, if the GCKS wishes to remove the Rekey SA and all the | For example, if the GCKS wishes to remove the Rekey SA and all the | |||
Data-Security SAs, the GCKS sends a Delete payload with an SPI | Data-Security SAs, the GCKS sends a Delete payload with an SPI | |||
of zero and Protocol ID of AH or ESP, followed by another Delete paylo | of zero and a Protocol ID of AH or ESP, followed by another Delete pay | |||
ad | load | |||
with a SPI of zero and Protocol ID of GIKE_UPDATE. | with an SPI of zero and a Protocol ID of GIKE_UPDATE. | |||
</t> | </t> | |||
<t> If a group member receives a Delete payload with zero SPI and a Pr | ||||
<t> If a group member receives a Delete payload with zero SPI and prot | otocol ID | |||
ocol ID | ||||
of GIKE_UPDATE, it means that the group member is excluded from the gr oup. | of GIKE_UPDATE, it means that the group member is excluded from the gr oup. | |||
Such Delete payload may be received either in the GSA_REKEY pseudo-exc hange or in the GSA_INBAND_REKEY exchange. | Such Delete payload may be received either in the GSA_REKEY pseudo-exc hange or in the GSA_INBAND_REKEY exchange. | |||
In this situation the group member <bcp14>MUST</bcp14> re-register if it wants to continue | In this situation, the group member <bcp14>MUST</bcp14> re-register if it wants to continue | |||
participating in this group. The registration is performed as describe d | participating in this group. The registration is performed as describe d | |||
in <xref target="registration" />. It is <bcp14>RECOMMENDED</bcp14> th at a GM waits some randomly chosen time | in <xref target="registration"/>. It is <bcp14>RECOMMENDED</bcp14> tha t a GM waits some randomly chosen time | |||
before initiating a registration request in this situation to avoid ov erloading the GCKS. | before initiating a registration request in this situation to avoid ov erloading the GCKS. | |||
This document doesn't specify the maximum delay, which is implementati on-dependent, | This document doesn't specify the maximum delay, which is implementati on-dependent, | |||
but it is believed, that the order of seconds suits most situations. | but it is believed that the order of seconds suits most situations. | |||
Note, that if the unicast SA between the group member and the GCKS exi | Note that if the unicast SA between the group member and the GCKS exis | |||
sts, then the group member may use the GSA_REGISTRATION exchange | ts, then the group member may use the GSA_REGISTRATION exchange | |||
to re-register. However, after excluding an GM from the group the GCKS | to re-register. However, after excluding a GM from the group, the GCKS | |||
<bcp14>MAY</bcp14> | <bcp14>MAY</bcp14> | |||
immediately delete the unicast SA with this GM (if any) if the credent ials of this GM are revoked. | immediately delete the unicast SA with this GM (if any) if the credent ials of this GM are revoked. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="counter-modes"> | ||||
<name>Counter-Based Modes of Operation</name> | ||||
<!-- [rfced] We have updated this sentence to use "AES CCM" (per | ||||
RFC 4309) rather than "AES-CCM". Please let us know any | ||||
objections. | ||||
<section anchor="counter-modes" title="Counter-based modes of operation"> | Original: | |||
Several counter-based modes of operation have been specified for ESP | ||||
(e.g., AES-CTR [RFC3686], AES-GCM [RFC4106], AES-CCM [RFC4309], | ||||
ChaCha20-Poly1305 [RFC7634], AES-GMAC [RFC4543]) and AH (e.g., AES- | ||||
GMAC [RFC4543]). | ||||
Current: | ||||
Several counter-based modes of operation have been specified for ESP | ||||
(e.g., AES-CTR [RFC3686], AES-GCM [RFC4106], AES CCM [RFC4309], | ||||
ChaCha20-Poly1305 [RFC7634], and AES-GMAC [RFC4543]) and AH (e.g., AES- | ||||
GMAC [RFC4543]). | ||||
--> | ||||
<t>Several counter-based modes of operation have been specified | <t>Several counter-based modes of operation have been specified | |||
for ESP (e.g., AES-CTR <xref target="RFC3686"></xref>, AES-GCM <xref | for ESP (e.g., AES-CTR <xref target="RFC3686"/>, AES-GCM <xref target="R | |||
target="RFC4106"></xref>, AES-CCM <xref target="RFC4309"></xref>, | FC4106"/>, AES CCM <xref target="RFC4309"/>, | |||
ChaCha20-Poly1305 <xref target="RFC7634"></xref>, | ChaCha20-Poly1305 <xref target="RFC7634"/>, and | |||
AES-GMAC <xref target="RFC4543"></xref>) and AH (e.g., AES-GMAC <xref | AES-GMAC <xref target="RFC4543"/>) and AH (e.g., AES-GMAC <xref target=" | |||
target="RFC4543"></xref>). These counter-based modes require that no | RFC4543"/>). These counter-based modes require that no | |||
two senders in the group ever send a packet with the same | two senders in the group ever send a packet with the same | |||
Initialization Vector (IV) using the same cipher key and mode. This | IV using the same cipher key and mode. This | |||
requirement is met in G-IKEv2 when the following measures are | requirement is met in G-IKEv2 when the following measures are | |||
taken: | taken: | |||
<list style="symbols"> | </t> | |||
<ul spacing="normal"> | ||||
<t>The GCKS distributes a unique key for each Data-Security SA.</t> | <li> | |||
<t>The GCKS distributes a unique key for each Data-Security SA.</t> | ||||
<t>The GCKS uses the method described in Using Counter Modes with ESP an | </li> | |||
d AH | <li> | |||
to Protect Group Traffic <xref target="RFC6054"></xref>, | <t>The GCKS uses the method described in <xref target="RFC6054"/>, | |||
which assigns each sender a portion of the IV space by provisioning each | which assigns each sender a portion of the IV space by provisioning each | |||
sender with one or more unique Sender-ID values.</t> | sender with one or more unique Sender-ID values.</t> | |||
</li> | ||||
</list></t> | </ul> | |||
<section anchor="sid_alloc"> | ||||
<section anchor="sid_alloc" title="Allocation of Sender-ID"> | <name>Allocation of Sender-ID</name> | |||
<t>When at least one Data-Security SA included in the group policy | <t>When at least one Data-Security SA included in the group policy | |||
includes a counter-based mode of operation, the GCKS automatically | includes a counter-based mode of operation, the GCKS automatically | |||
allocates and distributes one Sender-ID to each group member acting in the | allocates and distributes one Sender-ID to each group member acting in the | |||
role of sender on the Data-Security SA. The Sender-ID value is used | role of sender on the Data-Security SA. The Sender-ID value is used | |||
exclusively by the group sender to which it was allocated. The group | exclusively by the group sender to which it was allocated. The group | |||
sender uses the same Sender-ID for each Data-Security SA specifying th e | sender uses the same Sender-ID for each Data-Security SA specifying th e | |||
use of a counter-based mode of operation. A GCKS <bcp14>MUST</bcp14> d istribute | use of a counter-based mode of operation. A GCKS <bcp14>MUST</bcp14> d istribute | |||
unique keys for each Data-Security SA including a counter-based mode | unique keys for each Data-Security SA, including a counter-based mode | |||
of operation in order to maintain unique key and nonce usage.</t> | of operation in order to maintain unique key and nonce usage.</t> | |||
<t>During registration, the group sender can choose to request one | <t>During registration, the group sender can choose to request one | |||
or more Sender-ID values. Requesting a value of 1 is not necessary sin ce | or more Sender-ID values. Requesting a value of 1 is not necessary sin ce | |||
the GCKS will automatically allocate exactly one to the group | the GCKS will automatically allocate exactly one to the group | |||
sender. A group sender <bcp14>MUST</bcp14> request as many Sender-ID v alues matching the number | sender. A group sender <bcp14>MUST</bcp14> request as many Sender-ID v alues matching the number | |||
of encryption modules in which it will be installing the TEKs in the | of encryption modules in which it will be installing the TEKs in the | |||
outbound direction. Alternatively, a group sender <bcp14>MAY</bcp14> r equest more | outbound direction. Alternatively, a group sender <bcp14>MAY</bcp14> r equest more | |||
than one Sender-ID and use them serially. This could be useful when it is | than one Sender-ID and use them serially. This could be useful when it is | |||
anticipated that the group sender will exhaust their range of Data- | anticipated that the group sender will exhaust their range of Data-Sec | |||
Security SA nonces using a single Sender-ID too quickly (e.g., before | urity SA nonces using a single Sender-ID too quickly (e.g., before the | |||
the | ||||
time-based policy in the TEK expires).</t> | time-based policy in the TEK expires).</t> | |||
<t>When the group policy includes a counter-based mode of operation, | <t>When the group policy includes a counter-based mode of operation, | |||
a GCKS should use the following method to allocate Sender-ID values, w hich | a GCKS should use the following method to allocate Sender-ID values, w hich | |||
ensures that each Sender-ID will be allocated to just one group | ensures that each Sender-ID will be allocated to just one group | |||
sender.<list style="numbers"> | sender.</t> | |||
<ol spacing="normal" type="1"><li> | ||||
<t>A GCKS maintains an Sender-ID counter, which records the Sender-IDs | <t>A GCKS maintains a Sender-ID counter, which records the Sender- | |||
that | IDs that | |||
have been allocated. Sender-IDs are allocated sequentially, with zero | have been allocated. Sender-IDs are allocated sequentially with zero a | |||
as | s | |||
the first allocated value.</t> | the first allocated value.</t> | |||
</li> | ||||
<t>Each time an Sender-ID is allocated, the current value of the | <li> | |||
<t>Each time a Sender-ID is allocated, the current value of the | ||||
counter is saved and allocated to the group sender. The Sender-ID coun ter | counter is saved and allocated to the group sender. The Sender-ID coun ter | |||
is then incremented in preparation for the next allocation.</t> | is then incremented in preparation for the next allocation.</t> | |||
</li> | ||||
<t>When the GCKS specifies a counter-based mode of operation in | <li> | |||
the Data-Security SA a group sender may request a count of Sender-IDs | <t>When the GCKS specifies a counter-based mode of operation in | |||
the Data-Security SA, a group sender may request a count of Sender-IDs | ||||
during registration in a Notify payload information of type SENDER. | during registration in a Notify payload information of type SENDER. | |||
When the GCKS receives this request, it increments the Sender-ID count er | When the GCKS receives this request, it increments the Sender-ID count er | |||
once for each requested Sender-ID, and distributes each Sender-ID valu e to the | once for each requested Sender-ID and distributes each Sender-ID value to the | |||
group sender. The GCKS should have a policy-defined upper bound for | group sender. The GCKS should have a policy-defined upper bound for | |||
the number of Sender-ID values that it will return irrespective of the number | the number of Sender-ID values that it will return irrespective of the number | |||
requested by the GM.</t> | requested by the GM.</t> | |||
</li> | ||||
<t>A GCKS allocates new Sender-ID values for each registration operati | <li> | |||
on | <t>A GCKS allocates new Sender-ID values for each registration ope | |||
ration | ||||
by a group sender, regardless of whether the group | by a group sender, regardless of whether the group | |||
sender had previously contacted the GCKS. In this way, the GCKS is | sender had previously contacted the GCKS. In this way, the GCKS is | |||
not required to maintaining a record of which Sender-ID values it had | not required to maintain a record of which Sender-ID values it had | |||
previously allocated to each group sender. More importantly, since | previously allocated to each group sender. More importantly, since | |||
the GCKS cannot reliably detect whether the group sender had sent | the GCKS cannot reliably detect whether the group sender had sent | |||
data on the current group Data-Security SAs it does not know what | data on the current group Data-Security SAs, it does not know what | |||
Data-Security counter-mode nonce values that a group sender has | Data-Security counter-mode nonce values that a group sender has | |||
used. By distributing new Sender-ID values, the key server ensures tha t | used. By distributing new Sender-ID values, the key server ensures tha t | |||
each time a conforming group sender installs a Data-Security SA it | each time a conforming group sender installs a Data-Security SA, it | |||
will use a unique set of counter-based mode nonces.</t> | will use a unique set of counter-based mode nonces.</t> | |||
</li> | ||||
<t>When the Sender-ID counter maintained by the GCKS reaches its final | <li> | |||
<t>When the Sender-ID counter maintained by the GCKS reaches its f | ||||
inal | ||||
Sender-ID value, no more Sender-ID values can be distributed. Before | Sender-ID value, no more Sender-ID values can be distributed. Before | |||
distributing any new Sender-ID values, the GCKS <bcp14>MUST</bcp14> | distributing any new Sender-ID values, the GCKS <bcp14>MUST</bcp14> | |||
exclude all group members from the group as described | exclude all group members from the group as described | |||
in <xref target="deletion" />. This will result in the group members | in <xref target="deletion"/>. This will result in the group members | |||
performing re-registration, during which they will receive new Data-Se curity SAs | performing re-registration, during which they will receive new Data-Se curity SAs | |||
and group senders will additionally receive new Sender-ID values. | and group senders will additionally receive new Sender-ID values. | |||
The new Sender-ID values can safely be used because they are only used with | The new Sender-ID values can safely be used because they are only used with | |||
the new Data-Security SAs.</t> | the new Data-Security SAs.</t> | |||
</li> | ||||
</list></t> | </ol> | |||
</section> | </section> | |||
<section anchor="sid-usage"> | ||||
<section anchor="sid-usage" title="GM Usage of Sender-ID"> | <name>GM Usage of Sender-ID</name> | |||
<t>A GM applies the Sender-ID to Data-Security SAs as follows. | <t>A GM applies the Sender-ID to Data-Security SAs as follows: | |||
<list style="symbols"> | </t> | |||
<ul spacing="normal"> | ||||
<t>The most significant bits of the IV indicated in the GWP_SENDER_ID_ | <li> | |||
BITS attribute (<xref target="gwp_attr_sid_bits" />) are | <t>The most significant bits of the IV indicated in the GWP_SENDER | |||
_ID_BITS attribute (<xref target="gwp_attr_sid_bits"/>) are | ||||
taken to be the Sender-ID field of the IV.</t> | taken to be the Sender-ID field of the IV.</t> | |||
</li> | ||||
<t>The Sender-ID is placed in the least significant bits of the Sender | <li> | |||
-ID | <t>The Sender-ID is placed in the least significant bits of the Se | |||
nder-ID | ||||
field, where any unused most significant bits are set to zero. | field, where any unused most significant bits are set to zero. | |||
If the Sender-ID value doesn't fit into the number of bits from the GW P_SENDER_ID_BITS attributes, | If the Sender-ID value doesn't fit into the number of bits from the GW P_SENDER_ID_BITS attributes, | |||
then the GM <bcp14>MUST</bcp14> treat this as a fatal error and re-reg ister to the group. | then the GM <bcp14>MUST</bcp14> treat this as a fatal error and re-reg ister to the group. | |||
</t> | </t> | |||
</li> | ||||
</list></t> | </ul> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="seqnum"> | ||||
<section anchor="seqnum" title="Replay Protection for Multicast Data-Secur | <name>Replay Protection for Multicast Data-Security SAs</name> | |||
ity SAs"> | <t>IPsec provides anti-replay service as part of its security | |||
<t>IPsec provides anti-replay service as part of its security services. | services. With multicast extensions for IPsec, replay protection is not | |||
With multicast extension for IPsec replay protection is not always possi | always possible to achieve (see <xref target="RFC3740" | |||
ble to achieve | sectionFormat="of" section="6.1"/>). In particular, if there | |||
(see Section 6.1 of Multicast Group Security Architecture <xref target=" | are many group senders for a Data-Security SA, then each of them will | |||
RFC3740" />). | independently increment the Sequence Number field in the ESP header | |||
In particular, if there are many group senders for a Data-Security SA, t | (see <xref target="RFC4303" sectionFormat="of" | |||
hen | section="2.2"/> and <xref target="RFC4302" | |||
each of them will independently increment the Sequence Number field in t | sectionFormat="of" section="2.5"/>), thus making it impossible | |||
he ESP header | for the group receivers to filter out replayed packets. However, if | |||
(see Section 2.2 of ESP <xref target="RFC4303" /> and Section 2.5 of AH | there is only one group sender for a Data-Security SA, then it is | |||
<xref target="RFC4302" />) thus making it impossible for the | possible to achieve replay protection with some restrictions (see | |||
group receivers to filter out replayed packets. However, if there is onl | <xref target="antireplay"/>). The GCKS <bcp14>MAY</bcp14> create | |||
y one | several Data-Security SAs with the same traffic selectors allowing | |||
group sender for a Data-Security SA, then it is possible to achieve repl | only a single group sender in each SA if it is desirable to get replay | |||
ay protection | protection with multiple (but still a limited number) of group senders. | |||
with some restrictions (see <xref target="antireplay" />). The GCKS <bcp | ||||
14>MAY</bcp14> create several Data-Security SAs | ||||
with the same traffic selectors allowing only a single group sender in e | ||||
ach SA | ||||
if it is desirable to get replay protection with multiple (but still lim | ||||
ited number) of group senders. | ||||
</t> | </t> | |||
<t>IPsec architecture assumes that whether | ||||
<t>IPsec architecture assumes that it is a local matter for an IPsec rec | anti-replay service is enabled or not is a local matter for an IPsec rec | |||
eiver whether | eiver. In other words, an IPsec sender always increments | |||
anti-replay service is enabled or not. In other words, an IPsec sender a | ||||
lways increments | ||||
the Sequence Number field in the ESP/AH header and a receiver decides wh ether to check | the Sequence Number field in the ESP/AH header and a receiver decides wh ether to check | |||
for replayed packets or not. Since in some cases it is known that the re play protection | for replayed packets or not. Since it is known in some cases that the re play protection | |||
is not possible (like in an SA with many group senders), a new transform ID | is not possible (like in an SA with many group senders), a new transform ID | |||
"32-bit Unspecified Numbers" is defined for the Sequence Numbers (SN) tr | "32-bit Unspecified Numbers" is defined for the Sequence Numbers (SNs) t | |||
ansform type. | ransform type. | |||
Using this transform ID the the GCKS can inform group members that the u | Using this transform ID, the GCKS can inform group members that the uniq | |||
niqueness of sequence | ueness of sequence | |||
numbers for a given SA is not guaranteed. The decision whether to enable | numbers for a given SA is not guaranteed. The decision of whether to ena | |||
anti-replay service | ble anti-replay service | |||
is still a local matter of a GM (in accordance with IPsec architecture). | is still a local matter of a GM (in accordance with IPsec architecture). | |||
</t> | </t> | |||
<t>The GCKS <bcp14>MUST</bcp14> include the Sequence Numbers transform i | ||||
<t> The GCKS <bcp14>MUST</bcp14> include the Sequence Numbers transform | n the GSA payload for every Data-Security SA. | |||
in the GSA payload for every Data-Security SA. | See <xref target="antireplay"/> for more details. | |||
See <xref target="antireplay" /> for more details. | ||||
</t> | </t> | |||
<t>When a Data-Security SA has a single sender, the GCKS <bcp14>MUST</bc | ||||
<t> When a Data-Security SA has a single sender, the GCKS <bcp14>MUST</b | p14> | |||
cp14> | ||||
be configured to rekey the SA frequently enough so that the 32-bit seque nce numbers do not wrap. | be configured to rekey the SA frequently enough so that the 32-bit seque nce numbers do not wrap. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="implicit-iv"> | ||||
<section anchor="implicit-iv" title="Encryption Transforms with Implicit I | <name>Encryption Transforms with Implicit IV</name> | |||
V"> | <t>The "Transform Type 1 - Encryption Algorithm Transform IDs" IANA regi | |||
<t>IKEv2 IANA registry for Encryption Algorithm Transform IDs <xref targ | stry <xref target="IKEV2-IANA"/> defines several transforms | |||
et="IKEV2-IANA" /> defines several transforms | with implicit IV. These transforms rely on ESP Sequence Numbers for cons | |||
with implicit IV. These transforms rely on ESP Sequence Number for const | tructing IV | |||
ructing IV | (see <xref target="RFC8750"/> for details). | |||
(see Implicit IV for Counter-Based Ciphers in ESP <xref target="RFC8750" | ||||
/> for details). | ||||
It requires anti-replay service to be enabled for an ESP SA using these encryption transforms. | It requires anti-replay service to be enabled for an ESP SA using these encryption transforms. | |||
Unless the properties of sequence numbers for a multicast ESP SA include | Unless the properties of sequence numbers for a multicast ESP SA include | |||
their uniqueness (see <xref target="seqnum" />), | their uniqueness (see <xref target="seqnum"/>), | |||
encryption transforms that rely on Sequence Number for IV construction < | encryption transforms that rely on Sequence Numbers for IV construction | |||
bcp14>MUST NOT</bcp14> be used. | <bcp14>MUST NOT</bcp14> be used. | |||
In any case, such transforms <bcp14>MUST NOT</bcp14> be used for any G-I KEv2 SA (both unicast and multicast). | In any case, such transforms <bcp14>MUST NOT</bcp14> be used for any G-I KEv2 SA (both unicast and multicast). | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="key_management"> | ||||
<section anchor="key_management" title="Group Key Management and Access Cont | <name>Group Key Management and Access Control</name> | |||
rol"> | ||||
<t>Through the G-IKEv2 rekey, G-IKEv2 supports algorithms such as | <t>Through the G-IKEv2 rekey, G-IKEv2 supports algorithms such as | |||
Logical Key Hierarchy (LKH) that have the property of denying access to a | Logical Key Hierarchy (LKH) that have the property of denying access to | |||
new group key by | a new group key by a member removed from the group (forward access | |||
a member removed from the group (forward access control) and to an | control) and to an old group key by a member added to the group | |||
old group key by a member added to the group (backward access | (backward access control). This is unrelated to the Perfect Forward | |||
control). This is unrelated to PFS (Perfect Forward Secrecy) property as d | Secrecy (PFS) property as defined in <xref target="RFC7296" | |||
efined in Section 2.12 of IKEv2 <xref target="RFC7296" />. | sectionFormat="of" section="2.12"/>. | |||
</t> | </t> | |||
<!--[rfced] Please clarify what "literature" refers to here. | ||||
Original: | ||||
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]. | ||||
Perhaps: | ||||
Group management algorithms providing forward and backward access | ||||
control other than LKH have been proposed in other specifications, | ||||
for example, OFT [OFT] and Subset Difference [NNL]. | ||||
--> | ||||
<t>Group management algorithms providing forward and backward | <t>Group management algorithms providing forward and backward | |||
access control other than LKH have been proposed in the | access control other than LKH have been proposed in the | |||
literature, including OFT <xref target="OFT"></xref> and Subset | literature, including OFT <xref target="OFT"/> and Subset | |||
Difference <xref target="NNL"></xref>. These algorithms could be | Difference <xref target="NNL"/>. These algorithms could be | |||
used with G-IKEv2, but are not specified as a part of this | used with G-IKEv2 but are not specified as a part of this | |||
document.</t> | document.</t> | |||
<t>This specification assumes that all group keys, that are | <t>This specification assumes that all group keys, that are | |||
sent to the GMs by the GCKS, are encrypted with some other keys, | sent to the GMs by the GCKS, are encrypted with some other keys, | |||
called Key Wrap Keys (KWK). The Key Wrap Algorithm transform | called Key Wrap Keys (KWKs). The Key Wrap Algorithm transform | |||
defines the algorithm used for key wrapping in the context of an SA. | defines the algorithm used for key wrapping in the context of an SA. | |||
</t> | </t> | |||
<section anchor="kwk"> | ||||
<section anchor="kwk" title="Key Wrap Keys"> | <name>Key Wrap Keys</name> | |||
<t>Every GM always knows at least one KWK -- the KWK that is associated with the IKE SA | <t>Every GM always knows at least one KWK -- the KWK that is associated with the IKE SA | |||
or multicast Rekey SA over which wrapped keys are sent. | or multicast Rekey SA over which wrapped keys are sent. | |||
In this document it is called default KWK and is denoted as GSK_w. | In this document, it is called default KWK and is denoted as "GSK_w". | |||
</t> | </t> | |||
<t>For the purpose of forward access control, the GCKS may provide each | ||||
<t>For the purpose of forward access control the GCKS may provide each G | GM | |||
M | ||||
with its personal KWK at the time of registration. Additionally, several intermediate KWKs that form a key | with its personal KWK at the time of registration. Additionally, several intermediate KWKs that form a key | |||
hierarchy and are shared among several GMs may be provided by the GCKS. | hierarchy and are shared among several GMs may be provided by the GCKS. | |||
</t> | </t> | |||
<t>Each KWK is associated with a key wrap algorithm specified in the Key | ||||
<t>Each KWK is associated with a key wrap algorithm, specified in the Ke | Wrap Algorithm transform. | |||
y Wrap Algorithm transform. | The size of these KWKs is determined by the key wrap algorithm used, | |||
The size of these KWKs is determined by the used key wrap algorithm, | ||||
but it <bcp14>SHOULD NOT</bcp14> be less than the size of the key for th e Encryption Algorithm transform | but it <bcp14>SHOULD NOT</bcp14> be less than the size of the key for th e Encryption Algorithm transform | |||
for the Rekey SA and for all Data-Security SAs in the group (taking into consideration the Key Length attribute if present). | for the Rekey SA and for all Data-Security SAs in the group (taking the Key Length attribute into consideration if it is present). | |||
</t> | </t> | |||
<section anchor="sk_w"> | ||||
<section anchor="sk_w" title="Default Key Wrap Key"> | <name>Default Key Wrap Key</name> | |||
<t>The default KWK (GSK_w) is only used in the context of a single IKE SA. | <t>The default KWK (GSK_w) is only used in the context of a single IKE SA. | |||
Every IKE SA (unicast IKE SA or multicast Rekey SA) will have its own GSK_w. | Every IKE SA (unicast IKE SA or multicast Rekey SA) will have its own GSK_w. | |||
</t> | </t> | |||
<!-- [rfced] May we update "if they are take place" for clarity in the | ||||
sentence below? | ||||
Original: | ||||
For the unicast IKE SA (used for the GM registration and for the | ||||
GSA_INBAND_REKEY exchanges, if they are take place) the GSK_w is | ||||
computed as follows: | ||||
Perhaps: | ||||
For the unicast IKE SA (used for the GM registration and for | ||||
GSA_INBAND_REKEY exchanges if they appear), the GSK_w is | ||||
computed as follows: | ||||
--> | ||||
<t>For the unicast IKE SA (used for the GM registration | <t>For the unicast IKE SA (used for the GM registration | |||
and for the GSA_INBAND_REKEY exchanges, if they are take place) | and for the GSA_INBAND_REKEY exchanges, if they are take place), | |||
the GSK_w is computed as follows: | the GSK_w is computed as follows: | |||
</t> | ||||
<figure > | <artwork><![CDATA[ | |||
<artwork><![CDATA[ | ||||
GSK_w = prf+(SK_d, "Key Wrap for G-IKEv2") | GSK_w = prf+(SK_d, "Key Wrap for G-IKEv2") | |||
]]></artwork> | ]]></artwork> | |||
</figure> | ||||
<!--[rfced] Is "null termination" correct, or should it be "NUL termination"? | ||||
Current: | ||||
where the string "Key Wrap for G-IKEv2" is 20 ASCII characters | ||||
without null termination. | ||||
--> | ||||
<t> | ||||
where the string "Key Wrap for G-IKEv2" is 20 ASCII characters | where the string "Key Wrap for G-IKEv2" is 20 ASCII characters | |||
without null termination. | without null termination. | |||
</t> | </t> | |||
<t>For the multicast Rekey SA, the GSK_w is provided along with | ||||
<t>For the multicast Rekey SA the GSK_w is provided along with | other SA keys as defined in <xref target="group_sa_keys"/>. | |||
other SA keys as defined in <xref target="group_sa_keys" />. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="key_gcks_semantics"> | ||||
<section anchor="key_gcks_semantics" title="GCKS Key Management Semantics" | <name>GCKS Key Management Semantics</name> | |||
> | <t>The Wrapped Key Download method allows the GCKS to employ various key | |||
<t>Wrapped Key Download method allows the GCKS to employ various key man | management methods.</t> | |||
agement methods | <dl newline="false" spacing="normal"> | |||
<list style="symbols"> | <dt>A simple key management method:</dt><dd>The GCKS always sends | |||
<t>A simple key management methods -- when the GCKS always sends | group SA keys encrypted with the GSK_w.</dd> | |||
group SA keys encrypted with the GSK_w. | <dt>An LKH key management method:</dt><dd>The GCKS provides each | |||
</t> | GM with an individual key at the time of the GM registration | |||
<t>An LKH key management method -- when the GCKS provides | (encrypted with GSK_w). Then, the GCKS forms a hierarchy of keys so | |||
each GM with an individual key at the time of the GM registration | that the group SA keys are encrypted with other keys that are | |||
(encrypted with GSK_w). Then the GCKS forms an hierarchy of keys so th | encrypted with other keys and so on, tracing back to the keys for | |||
at the group | each GM.</dd> | |||
SA keys are encrypted with other keys which are encrypted with other k | </dl> | |||
eys and so on, | <t> | |||
tracing back to the keys for each GM. | ||||
</t> | ||||
</list> | ||||
Other key policies may also be employed by the GCKS. | Other key policies may also be employed by the GCKS. | |||
</t> | </t> | |||
<section> | ||||
<section title="Forward Access Control Requirements"> | <name>Forward Access Control Requirements</name> | |||
<t>When group membership is altered using a group management | <t>When a group membership is altered using a group management | |||
algorithm new Data-Security SAs and their associated keys are usually | algorithm, new Data-Security SAs and their associated keys are usually | |||
also needed. New Data-Security SAs and keys ensure that members who we re | also needed. New Data-Security SAs and keys ensure that members who we re | |||
denied access can no longer participate in the group.</t> | denied access can no longer participate in the group.</t> | |||
<t>If forward access control is a desired property of the group, | <t>If forward access control is a desired property of the group, | |||
new TEK policy and the associated keys <bcp14>MUST NOT</bcp14> be incl | a new TEK policy and the associated keys <bcp14>MUST NOT</bcp14> be in | |||
uded | cluded | |||
in a G-IKEv2 rekey message which changes group membership. | in a G-IKEv2 rekey message, which changes group membership. | |||
This is required because the GSA TEK policy | This is required because the GSA TEK policy | |||
and the associated keys are not protected with the new KEK. | and the associated keys are not protected with the new KEK. | |||
A second G-IKEv2 rekey message can | A second G-IKEv2 rekey message can | |||
deliver the new GSA TEK policies and their associated keys | deliver the new GSA TEK policies and their associated keys | |||
because it will be protected with the new KEK, and thus will not | because it will be protected with the new KEK and thus will not | |||
be visible to the members who were denied access.</t> | be visible to the members who were denied access.</t> | |||
<t>If forward access control policy for the group includes | <t>If forward access control policy for the group includes | |||
keeping group policy changes from members that are denied access | keeping group policy changes from members that are denied access | |||
to the group, then two sequential G-IKEv2 rekey messages | to the group, then two sequential G-IKEv2 rekey messages | |||
changing the group KEK <bcp14>MUST</bcp14> be sent by the GCKS. The fi rst | changing the group KEK <bcp14>MUST</bcp14> be sent by the GCKS. The fi rst | |||
G-IKEv2 rekey message creates a new KEK for the group. Group | G-IKEv2 rekey message creates a new KEK for the group. Group | |||
members, which are denied access, will not be able to access the | 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 | new KEK, but they will see the group policy since the G-IKEv2 rekey | |||
message is protected under the current KEK. A subsequent G-IKEv2 | message is protected under the current KEK. A subsequent G-IKEv2 | |||
rekey message containing the changed group policy and again | rekey message containing the changed group policy and again | |||
changing the KEK allows complete forward access control. A | changing the KEK allows complete forward access control. A | |||
G-IKEv2 rekey message <bcp14>MUST NOT</bcp14> change the policy withou t | G-IKEv2 rekey message <bcp14>MUST NOT</bcp14> change the policy withou t | |||
creating a new KEK.</t> | creating a new KEK.</t> | |||
<t>If other methods of using LKH or other group management | <t>If other methods of using LKH or other group management | |||
algorithms are added to G-IKEv2, those methods <bcp14>MAY</bcp14> remo ve the | algorithms are added to G-IKEv2, those methods <bcp14>MAY</bcp14> remo ve the | |||
above restrictions requiring multiple G-IKEv2 rekey messages, | above restrictions requiring multiple G-IKEv2 rekey messages, | |||
providing those methods specify how the forward access control | providing those methods specify how the forward access control | |||
policy is maintained within a single G-IKEv2 rekey message.</t> | policy is maintained within a single G-IKEv2 rekey message.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="keys_gm_semantics"> | ||||
<section anchor="keys_gm_semantics" title="GM Key Management Semantics"> | <name>GM Key Management Semantics</name> | |||
<t>This specification defines a GM Key Management semantics | <t>This specification defines GM Key Management semantics | |||
in such a way, that it doesn't depend on the key management | in such a way that it doesn't depend on the key management | |||
method employed by the GCKS. This allows having all the complexity | method employed by the GCKS. This allows having all the complexity | |||
of key management in the GCKS, which is free to implement various | of key management in the GCKS, which is free to implement various | |||
key management methods, such as direct transmitting of group SA | key management methods such as direct transmitting of group SA | |||
keys or using some kind of key hierarchy (e.g. LKH). | keys or using some kind of key hierarchy (e.g., LKH). | |||
For all these policies the GM behavior is the same. | The GM behavior is the same for all of these policies. | |||
</t> | </t> | |||
<t>All keys in G-IKEv2 are transmitted in encrypted form as specified | ||||
<t>All keys in G-IKEv2 are transmitted in encrypted form, as specified | in <xref target="wrapped_key"/>. This format includes a 32-bit Key ID | |||
in <xref target="wrapped_key" />. This format includes a 32-bit Key ID | ||||
(ID of a key that is encrypted) and a 32-bit KWK ID | (ID of a key that is encrypted) and a 32-bit KWK ID | |||
(ID of a key that was used to encrypt this key). Keys may be | (ID of a key that was used to encrypt this key). Keys may be | |||
encrypted either with default KWK (GSK_w) or with other keys, | encrypted either with a default KWK (GSK_w) or with other keys, | |||
which the GM has received in the WRAP_KEY attributes. | which the GM has received in the WRAP_KEY attributes. | |||
If a key was encrypted with GSK_w, then the KWK ID field is set to zero, | If a key was encrypted with GSK_w, then the KWK ID field is set to zero. | |||
otherwise the KWK ID field identifies the key used for encryption. | Otherwise, the KWK ID field identifies the key used for encryption. | |||
Zero Key ID always identifies the key from which the keys for protecting | A zero Key ID always identifies the key from which the keys for protecti | |||
Data-Security SAs and Rekey SA are taken. | ng Data-Security SAs and Rekey SA are taken. | |||
</t> | </t> | |||
<t>When a GM receives a message from the GCKS installing the new Data-Se | ||||
<t>When a GM receives a message from the GCKS installing new Data-Securi | curity or Rekey SA, | |||
ty or Rekey SA, | ||||
it will contain a KD payload with an SA_KEY attribute containing keying material for this SA. | it will contain a KD payload with an SA_KEY attribute containing keying material for this SA. | |||
For a Data-Security SA exactly one SA_KEY attribute will be present | 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 | with both Key ID and KWK ID fields set to zero. This means that the | |||
default KWK (GSK_w) should be used to extract this keying material. | default KWK (GSK_w) should be used to extract this keying material. | |||
</t> | </t> | |||
<t>For a multicast Rekey SA, multiple SA_KEY attributes may be present | ||||
<t>For a multicast Rekey SA multiple SA_KEY attributes may be present | ||||
depending on the key management method employed by the GCKS. If multiple SA_KEY attributes | depending on the key management method employed by the GCKS. If multiple SA_KEY attributes | |||
are present then all of them <bcp14>MUST</bcp14> contain the same keying material encrypted using different KWKs. | are present, then all of them <bcp14>MUST</bcp14> contain the same keyin g material encrypted using different KWKs. | |||
The GM in general is unaware of the key management method used by the GC KS and can always use the same procedure to get | The GM in general is unaware of the key management method used by the GC KS and can always use the same procedure to get | |||
the keys. The GM tries to decrypt at least one of the SA_KEY attributes | the keys. The GM tries to decrypt at least one of the SA_KEY attributes | |||
using either the GSK_w or the keys from the WRAP_KEY attributes that are present in the same message | using either the GSK_w or the keys from the WRAP_KEY attributes that are present in the same message | |||
or were receives in previous messages. | or were received in previous messages. | |||
</t> | </t> | |||
<t>We will use the term "Key Path" to describe an ordered sequence of ke ys | <t>We will use the term "Key Path" to describe an ordered sequence of ke ys | |||
where each subsequent key was used to encrypt the previous one. | where each subsequent key was used to encrypt the previous one. | |||
The GM keeps its own Key Path (called Working Key Path) in the memory as sociated | The GM keeps its own Key Path (called Working Key Path) in the memory as sociated | |||
with each group it is registered to and updates it when needed. | with each group it is registered to and updates it when needed. | |||
When the GSA_REKEY message is received the GM processes the received SA_ | When the GSA_REKEY message is received, the GM processes the received SA | |||
KEY attributes | _KEY attributes | |||
one by one trying to construct a new key path that starts from one of th | one by one and tries to construct a new key path that starts from one of | |||
ese attributes and | these attributes and | |||
ends with any key in the Working Key Path or with the default KWK (GSK_w ). | ends with any key in the Working Key Path or with the default KWK (GSK_w ). | |||
</t> | </t> | |||
<t>In the simplest case, the SA_KEY attribute is encrypted | ||||
<t>In the simplest case the SA_KEY attribute is encrypted | ||||
with GSK_w so that the new Key Path is empty. | with GSK_w so that the new Key Path is empty. | |||
If more complex key management methods are used then a Key Path will | If more complex key management methods are used, then a Key Path will | |||
contain intermediate keys from the WRAP_KEY attributes | contain intermediate keys from the WRAP_KEY attributes | |||
received by a GM so far starting from its registration to the group. If the GM is able | received by a GM so far, starting from its registration to the group. If the GM is able | |||
to construct a new Key Path using intermediate keys it has, then it is a ble to decrypt the SA_KEY attribute | to construct a new Key Path using intermediate keys it has, then it is a ble to decrypt the SA_KEY attribute | |||
and use its content to form new SA keys. If it is unable to build a new Key Path, then in means that the GM is excluded | and use its content to form new SA keys. If it is unable to build a new Key Path, then it means that the GM is excluded | |||
from the group. | from the group. | |||
</t> | </t> | |||
<t>Depending on the new Key Path, the GM should do the following actions | ||||
<t>Depending on the new Key Path the GM should do the following actions | to be prepared for future key updates: | |||
to be prepared for future key updates: | </t> | |||
<list style="symbols"> | <ul spacing="normal"> | |||
<t>If the new Key Path is empty then no actions are needed. This may h | <li> | |||
appen | <t>If the new Key Path is empty, then no actions are needed. This ma | |||
y happen | ||||
if no WRAP_KEY attributes from the received message were used. | if no WRAP_KEY attributes from the received message were used. | |||
</t> | </t> | |||
<t>If the new Key Path is non-empty and it ends with the default KWK ( | </li> | |||
GSK_w), then the whole new | <li> | |||
<t>If the new Key Path is non-empty and it ends with the default KWK | ||||
(GSK_w), then the whole new | ||||
Key Path is stored by the GM as the GM's Working Key Path. | 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 th | <!-- [rfced] We have replaced "it" with "GM" for clarity and removed | |||
e group, | "this GM" to avoid redundancy. Please let us know if this is not | |||
when the GCKS is providing it with its personal key and the other keys | correct. | |||
from the key tree that are needed for this GM. | ||||
Original: | ||||
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. | ||||
Current: | ||||
This situation may only happen at the time the GM is registering to | ||||
the group, when the GCKS is providing the GM with its personal key and the | ||||
other keys from the key tree that are needed. | ||||
--> | ||||
This situation may only happen at the time the GM is registering to the group, | ||||
when the GCKS is providing the GM with its personal key and the other | ||||
keys from the key tree that are needed. | ||||
These keys form an initial Working Key Path for this GM. | These keys form an initial Working Key Path for this GM. | |||
</t> | </t> | |||
<t>In all other cases the new Key Path will end at some intermediate k | </li> | |||
ey from the GM's current Working Key Path. | <li> | |||
In this case the new Key Path is constructed by replacing a part of th | <t>In all other cases, the new Key Path will end at some intermediat | |||
e GM's current Working Key Path from the beginning and up to (but not including) | e key from the GM's current Working Key Path. | |||
In this case, the new Key Path is constructed by replacing a part of t | ||||
he GM's current Working Key Path from the beginning and up to (but not including | ||||
) | ||||
the key that the GM has used to decrypt the last key in the new Key Pa th. | the key that the GM has used to decrypt the last key in the new Key Pa th. | |||
</t> | </t> | |||
</list> | </li> | |||
<xref target="lkh_key_management" /> contains an example of how this alg | </ul> | |||
orithm works in case of LKH key management method. | <t> | |||
<xref target="lkh_key_management"/> contains an example of how this algo | ||||
rithm works in case of LKH key management method. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="group_sa_keys"> | ||||
<section anchor="group_sa_keys" title="SA Keys"> | <name>SA Keys</name> | |||
<t>The keys that are used for Data-Security SAs or Rekey SA (called here | <t>The keys that are used for Data-Security SAs or a Rekey SA (called | |||
SA keys) are downloaded to GMs in the form of keying material from which | SA keys here) are downloaded to GMs in the form of keying material from | |||
, | which, | |||
according to policy, a set of keys are deterministically extracted. | according to policy, a set of keys are deterministically extracted. | |||
</t> | </t> | |||
<t>For a Data-Security SA, the keys are taken in accordance to the | ||||
<t>For a Data-Security SA the keys are taken in accordance to the third | third bullet from <xref target="RFC7296" sectionFormat="of" | |||
bullet from Section 2.17 of | section="2.17"/>. In particular, for the ESP and AH SAs, the encryption | |||
<xref target="RFC7296" />. In particular, for the ESP and AH SAs the enc | key (if any) <bcp14>MUST</bcp14> be taken from the leftmost bits of | |||
ryption key (if any) <bcp14>MUST</bcp14> be | the keying material and the integrity key (if any) <bcp14>MUST</bcp14> | |||
taken from the leftmost bits of the keying material and the integrity ke | be taken from the remaining bits. | |||
y (if any) <bcp14>MUST</bcp14> be | </t> | |||
taken from the remaining bits. | <t>For a Rekey SA, the following keys are taken from the keying material | |||
: | ||||
</t> | </t> | |||
<figure> | ||||
<artwork><![CDATA[ | ||||
GSK_e | GSK_a | GSK_w = KEYMAT | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | ||||
<!-- [rfced] In this sentence, is GSK_e used for the Encryption | ||||
Algorithm and GSK_a for the Integrity Algorithm (option A), or | ||||
are GSK_e and GSK_a used for both the Encryption Algorithm and | ||||
the Integrity Algorithm (option B)? | ||||
<t>For a Rekey SA the following keys are taken from the keying material: | Original: | |||
where GSK_e and GSK_a are the keys used for the Encryption Algorithm | ||||
and the Integrity Algorithm transforms for the corresponding SA and | ||||
GSK_w is a default KWK for this SA. | ||||
<figure > | Perhaps A: | |||
<artwork><![CDATA[ | where GSK_e and GSK_a are the keys used for the Encryption Algorithm and | |||
GSK_e | GSK_a | GSK_w = KEYMAT | the Integrity Algorithm transforms, respectively, for the corresponding | |||
]]></artwork> | SA and GSK_w is a default KWK for this SA. | |||
</figure> | ||||
where GSK_e and GSK_a are the keys used for the Encryption Algorithm and | or | |||
the Integrity Algorithm transforms | Perhaps B: | |||
for the corresponding SA and GSK_w is a default KWK for this SA. Note, t | where GSK_e and GSK_a are the keys used for both the Encryption Algorithm | |||
hat GSK_w is used with | and the Integrity Algorithm transforms for the corresponding SA and | |||
GSK_w is a default KWK for this SA. | ||||
--> | ||||
where GSK_e and GSK_a are the keys used for the Encryption Algorithm and the Int | ||||
egrity Algorithm transforms | ||||
for the corresponding SA and GSK_w is a default KWK for this SA. Note th | ||||
at GSK_w is used with | ||||
the key wrap algorithm specified in the Key Wrap Algorithm transform. If an AEAD algorithm is used for encryption, | the key wrap algorithm specified in the Key Wrap Algorithm transform. If an AEAD algorithm is used for encryption, | |||
then GSK_a key will not be used (GM can use the formula above assuming t he length of GSK_a is zero). | then the GSK_a key will not be used (GM can use the formula above assumi ng the length of GSK_a is zero). | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="header_payload"> | ||||
<section anchor="header_payload" title="Header and Payload Formats"> | <name>Header and Payload Formats</name> | |||
<t>The G-IKEv2 is an IKEv2 extension and thus inherits its wire format | <t>The G-IKEv2 is an IKEv2 extension and thus inherits its wire format | |||
for data structures. However, the processing of some payloads are | for data structures. However, the processing of some payloads are | |||
different. Several new payloads are defined: | different. Several new payloads are defined: | |||
Group Identification (IDg, <xref target="idg_payload" />), Security Associ | Group Identification (IDg) (<xref target="idg_payload"/>), Security Associ | |||
ation - GM Supported Transforms (SAg, <xref target="sag_payload" />), | ation - GM Supported Transforms (SAg) (<xref target="sag_payload"/>), | |||
Group Security Association (GSA, <xref target="gsa_payload" />), and Key D | Group Security Association (GSA) (<xref target="gsa_payload"/>), and Key D | |||
ownload (KD, <xref target="kd_payload" />). | ownload (KD) (<xref target="kd_payload"/>). | |||
G-IKEv2 header (<xref target="header" />), IDg payload and SAg payload reu | The G-IKEv2 header (<xref target="header"/>), IDg payload, and SAg payload | |||
se IKEv2 format for the IKEv2 header, IDi/IDr payloads | reuse the IKEv2 format for the IKEv2 header, IDi/IDr payloads, and SA payload, | |||
and SA payload respectively. New exchange types GSA_AUTH, GSA_REGISTRATION | respectively. New exchange types GSA_AUTH, GSA_REGISTRATION, GSA_REKEY, and GSA_ | |||
, GSA_REKEY and GSA_INBAND_REKEY are | INBAND_REKEY are | |||
also added. | also added. | |||
</t> | </t> | |||
<t>This section describes new payloads and the differences in the processi | ||||
<t>This section describes new payloads and the differences in processing | ng | |||
of existing IKEv2 payloads. | of existing IKEv2 payloads. | |||
</t> | </t> | |||
<section anchor="header"> | ||||
<section anchor="header" title="G-IKEv2 Header"> | <name>G-IKEv2 Header</name> | |||
<t>G-IKEv2 uses the same IKE header format as specified in <xref target= | <t>G-IKEv2 uses the same IKE header format as specified in <xref | |||
"RFC7296" /> | target="RFC7296" sectionFormat="of" section="3.1"/>. The Major Version i | |||
section 3.1. Major Version is 2 and Minor Version is 0 as in IKEv2. | s | |||
IKE SA Initiator's SPI, IKE SA Responder's SPI, Flags, Message ID, and L | 2 and the Minor Version is 0, as in IKEv2. IKE SA Initiator's SPI, IKE S | |||
ength are | A | |||
as specified in <xref target="RFC7296"></xref>. | Responder's SPI, Flags, Message ID, and Length are as specified in | |||
<xref target="RFC7296"/>. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="idg_payload"> | ||||
<section title="Group Identification Payload" anchor="idg_payload"> | <name>Group Identification Payload</name> | |||
<t>The Group Identification (IDg) payload allows the group member to ind icate which group it | <t>The Group Identification (IDg) payload allows the group member to ind icate which group it | |||
wants to join. The payload is constructed by using the IKEv2 | wants to join. The payload is constructed by using the IKEv2 | |||
Identification Payload (section 3.5 of <xref target="RFC7296"></xref>). | Identification Payload (<xref target="RFC7296" sectionFormat="of" sectio | |||
ID type ID_KEY_ID <bcp14>MUST</bcp14> be supported. ID types ID_IPV4_ADD | n="3.5"/>). | |||
R, ID_FQDN, ID_RFC822_ADDR, | ID type ID_KEY_ID <bcp14>MUST</bcp14> be supported. ID types ID_IPV4_ADD | |||
ID_IPV6_ADDR <bcp14>SHOULD</bcp14> be supported. ID types ID_DER_ASN1_DN | R, ID_FQDN, ID_RFC822_ADDR, and ID_IPV6_ADDR <bcp14>SHOULD</bcp14> be supported. | |||
and ID_DER_ASN1_GN | ID types ID_DER_ASN1_DN and ID_DER_ASN1_GN | |||
are not expected to be used. The Payload Type for the Group Identificati | are not expected to be used. The Payload Type for the IDg payload is fif | |||
on payload is fifty (50). | ty (50). | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sag_payload"> | ||||
<name>Security Association - GM Supported Transforms Payload</name> | ||||
<!-- [rfced] FYI - We have updated the following sentence to reduce | ||||
the repetition of "payload" and to match use in Table 1. Please | ||||
let us know any objections. | ||||
<section title="Security Association - GM Supported Transforms Payload" an | Original: | |||
chor="sag_payload"> | The Security Association - GM Supported Transforms Payload (SAg) | |||
<t>The Security Association - GM Supported Transforms Payload (SAg) | payload declares which Transforms a GM is willing to accept. | |||
payload declares which Transforms a GM is willing to | ||||
Current: | ||||
The Security Association - GM Supported Transforms (SAg) payload | ||||
declares which Transforms a GM is willing to accept. | ||||
--> | ||||
<t>The Security Association - GM Supported Transforms (SAg) payload | ||||
declares which Transforms a GM is willing to | ||||
accept. The payload is constructed using the format of the IKEv2 | accept. The payload is constructed using the format of the IKEv2 | |||
Security Association payload (section 3.3 of <xref target="RFC7296"></xr ef>). | Security Association payload (<xref target="RFC7296" sectionFormat="of" section="3.3"/>). | |||
The Payload Type for SAg payloads is thirty-three (33), which is | The Payload Type for SAg payloads is thirty-three (33), which is | |||
identical to the SA Payload Type. | identical to the SA Payload Type. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="gsa_payload"> | ||||
<section title="Group Security Association Payload" anchor="gsa_payload"> | <name>Group Security Association Payload</name> | |||
<t>The Group Security Association (GSA) payload is used by the GCKS to | <t>The GSA payload is used by the GCKS to | |||
assert security attributes for both Rekey SA and Data-Security SAs. | assert security attributes for both Rekey and Data-Security SAs. | |||
The Payload Type for the Group Security Association payload is fifty-one | The Payload Type for the GSA payload is fifty-one (51). | |||
(51). | ||||
</t> | </t> | |||
<figure title="GSA Payload Format" anchor="gsa_payload_format"> | <figure anchor="gsa_payload_format"> | |||
<preamble></preamble> | <name>GSA Payload Format</name> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Payload Length | | | Next Payload |C| RESERVED | Payload Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Group Policies> ~ | ~ <Group Policies> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ||||
]]></artwork> | ||||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>The Security Association Payload fields are defined as follows: | <t>The Security Association payload fields are defined as follows: | |||
<list style="symbols"> | ||||
<t>Next Payload, C, RESERVED, Payload Length fields comprise the IKE | ||||
v2 Generic Payload Header and | ||||
are defined in Section 3.2. of <xref target="RFC7296"></xref>.</t> | ||||
<t>Group Policies (variable) -- A set of group policies for the grou | ||||
p.</t> | ||||
</list> | ||||
</t> | </t> | |||
<dl spacing="normal" newline="true"> | ||||
<section anchor="group_policy" title="Group Policies"> | <dt>Next Payload, C, RESERVED, and Payload Length | |||
<t>Group policies are comprised of two types of policy -- Group SA (GS | fields:</dt><dd>Comprise the IKEv2 Generic Payload Header and are | |||
A) policy | defined in <xref target="RFC7296" sectionFormat="of" section="3.2"/>.< | |||
/dd> | ||||
<dt>Group Policies (variable):</dt><dd>A set of group policies for | ||||
the group.</dd> | ||||
</dl> | ||||
<section anchor="group_policy"> | ||||
<name>Group Policies</name> | ||||
<t>Group policies are comprised of two types: Group SA (GSA) policy | ||||
and Group-wide (GW) policy. GSA policy defines parameters | and Group-wide (GW) policy. GSA policy defines parameters | |||
for the Security Association for the group. Depending on the | for the Security Association of the group. Depending on the | |||
employed security protocol GSA policies may further be classified as | employed security protocol, GSA policies may further be classified as | |||
Rekey SA policy (GSA KEK) and Data-Security SA policy (GSA TEK). | Rekey SA policy (GSA KEK) and Data-Security SA policy (GSA TEK). | |||
GSA payload may contain zero or one GSA KEK policy, zero or more GSA T EK policies, | GSA payload may contain zero or one GSA KEK policy, zero or more GSA T EK policies, | |||
and zero or one GW policy, where either one GSA KEK or GSA TEK policy | and zero or one GW policy, where either one GSA KEK or one GSA TEK pol | |||
<bcp14>MUST</bcp14> be present.</t> | icy <bcp14>MUST</bcp14> be present.</t> | |||
<t>This latitude allows various group policies to be accommodated. | <t>This latitude allows various group policies to be accommodated. | |||
For example if the group policy does not require the use of a Rekey | 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 | 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 GSA_INBAND_RE KEY exchange via the | member since all SA updates would be performed using the GSA_INBAND_RE KEY exchange via the | |||
unicast IKE SA. Alternatively, group policy might use a Rekey SA | unicast IKE SA. Alternatively, group policy might use a Rekey SA | |||
but choose to download a KEK to the group member only as part of the | but choose to download a KEK to the group member only as part of the | |||
unicast IKE SA. Therefore, the GSA KEK policy would not be | unicast IKE SA. Therefore, the GSA KEK policy would not be | |||
necessary as part of the GSA_REKEY message.</t> | necessary as part of the GSA_REKEY message.</t> | |||
<t>Specifying multiple GSA TEKs allows multiple related data streams | <t>Specifying multiple GSA TEKs allows multiple related data streams | |||
(e.g., video, audio, and text) to be associated with a session, but | (e.g., video, audio, and text) to be associated with a session, but | |||
each protected with an individual security association policy.</t> | each are protected with an individual security association policy.</t> | |||
<t>A GW policy allows for the distribution of group-wide policy, | <t>A GW policy allows for the distribution of group-wide policy, | |||
such as instructions for when to activate and de-activate SAs.</t> | such as instructions for when to activate and deactivate SAs.</t> | |||
<t>Policies are distributed in substructures to the GSA payload. | <t>Policies are distributed in substructures to the GSA payload. | |||
The format of the substructures is defined below in <xref target="gsa_ | The format of the substructures is defined in <xref target="gsa_policy | |||
policy" /> | "/> | |||
(for GSA policy) and in <xref target="gw_policy" /> (for GW policy). | (for GSA policy) and in <xref target="gw_policy"/> (for GW policy). | |||
The first octet of the substructure unambiguously determines its type | The first octet of the substructure unambiguously determines its type; | |||
-- | it is zero for GW policy and non-zero (actually, it is a security Prot | |||
it is zero for GW policy and non-zero (actually, it is a security prot | ocol ID) | |||
ocol ID) | ||||
for GSA policies. | for GSA policies. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="gsa_policy"> | ||||
<section title="Group Security Association Policy Substructure" anchor=" | <name>Group Security Association Policy Substructure</name> | |||
gsa_policy"> | ||||
<t>The GSA policy substructure contains parameters for the SA | <t>The GSA policy substructure contains parameters for the SA | |||
used with this group. Depending on the security protocol | that are used with this group. Depending on the security protocol, | |||
the SA is either a Rekey SA or a Data-Security SA (ESP and AH). | the SA is either a Rekey SA or a Data-Security SA (ESP and AH). | |||
The GCKS <bcp14>MUST NOT</bcp14> distribute both ESP and AH | The GCKS <bcp14>MUST NOT</bcp14> distribute both ESP and AH | |||
policies for the same set of Traffic Selectors. | policies for the same set of Traffic Selectors. | |||
</t> | </t> | |||
<t><figure title="GSA Policy Substructure Format" anchor="gsa_format"> | <figure anchor="gsa_format"> | |||
<preamble></preamble> | <name>GSA Policy Substructure Format</name> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Protocol | SPI Size | Length | | | Protocol | SPI Size | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ SPI ~ | ~ SPI ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at line 1694 ¶ | skipping to change at line 1948 ¶ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <GSA Transforms> ~ | ~ <GSA Transforms> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <GSA Attributes> ~ | ~ <GSA Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | </figure> | |||
</figure></t> | ||||
<t>The GSA policy fields are defined as follows: | ||||
<ul> | ||||
<li><t>Protocol (1 octet) -- Identifies the security protocol for th | ||||
is group SA. | ||||
The values are defined in the IKEv2 Security Protocol Identifiers in | ||||
<xref target="IKEV2-IANA" />. The valid values for this field are: | ||||
<TBA> (GIKE_UPDATE) for Rekey SA and 2 (AH) or 3 (ESP) for Dat | ||||
a-Security SAs. | ||||
</t></li> | ||||
<li><t>SPI Size (1 octet) -- Size of Security Parameter Index (SPI) | ||||
for the SA. | ||||
SPI size depends on the SA protocol. For GIKE_UPDATE it is 16 octets | ||||
, while for AH and ESP it is 4 octets. | ||||
</t></li> | ||||
<li><t>Length (2 octets, unsigned integer) -- Length of this substru | <t>The GSA policy fields are defined as follows:</t> | |||
cture including the header. | ||||
</t></li> | ||||
<li><t>SPI (variable) -- Security Parameter Index for the group SA. | <dl spacing="normal" newline="true"> | |||
<dt>Protocol (1 octet):</dt><dd>Identifies the security protocol | ||||
for this group SA. The values are defined in the "IKEv2 Security | ||||
Protocol Identifiers" registry in <xref target="IKEV2-IANA"/>. The v | ||||
alid | ||||
values for this field are 6 (GIKE_UPDATE) for Rekey SA | ||||
and 2 (AH) or 3 (ESP) for Data-Security SAs.</dd> | ||||
<dt>SPI Size (1 octet):</dt><dd>Size of the SPI | ||||
for the SA. SPI size depends on the SA protocol. It is 16 octets fo | ||||
r GIKE_UPDATE and 4 octets for AH and ESP.</dd> | ||||
<dt>Length (2 octets, unsigned integer):</dt><dd>Length of this | ||||
substructure including the header.</dd> | ||||
<dt>SPI (variable):</dt><dd>Security Parameter Index for the group S | ||||
A. | ||||
The size of this field is determined by the SPI Size field. | The size of this field is determined by the SPI Size field. | |||
As described above, these SPIs are assigned by the GCKS. | As described above, these SPIs are assigned by the GCKS. | |||
In case of GIKE_UPDATE the SPI is the IKEv2 Header SPI pair where th e | In the case of GIKE_UPDATE, the SPI is the IKEv2 Header SPI pair whe re the | |||
first 8 octets become the "IKE SA Initiator's SPI" field in the | first 8 octets become the "IKE SA Initiator's SPI" field in the | |||
G-IKEv2 rekey message IKEv2 HDR, and the second 8 octets become | G-IKEv2 rekey message IKEv2 HDR, and the second 8 octets become | |||
the "IKE SA Responder's SPI" in the same HDR. | the "IKE SA Responder's SPI" in the same HDR.</dd> | |||
</t></li> | <dt>Source & Destination Traffic Selectors (variable):</dt><dd> | |||
<t>Substructures describing the source and destination of the networ | ||||
<li><t>Source & Destination Traffic Selectors (variable) -- | k | |||
Substructures describing the source and destination of the | identities. The format for these substructures is defined in IKEv2 | |||
network identities. The format for these substructures | (<xref target="RFC7296" sectionFormat="of" section="3.13.1"/>).</t> | |||
is defined in IKEv2 <xref target="RFC7296"></xref>, Section 3.13.1. | <t>For the Rekey SA (with the GIKE_UPDATE protocol), the | |||
</t> | destination traffic selectors <bcp14>MUST</bcp14> define a single | |||
<t>For the Rekey SA (with the GIKE_UPDATE protocol) the | multicast IP address, an IP protocol (assumed to be UDP), and a | |||
destination traffic selectors <bcp14>MUST</bcp14> define a single mu | single port the GSA_REKEY messages will be destined to. In this case | |||
lticast IP address, an IP protocol (assumed to be UDP) | , the source | |||
and a single port the GSA_REKEY messages will be destined to. The so | traffic selector <bcp14>SHOULD</bcp14> define a | |||
urce traffic selector in this case <bcp14>SHOULD</bcp14> define | single IP address, an IP protocol (assumed to be UDP), and a single | |||
a single IP address, an IP protocol (assumed to be UDP) and a single | port the GSA_REKEY messages will be originated from. The source | |||
port the GSA_REKEY messages will be originated from. | traffic selector <bcp14>MAY</bcp14> define a wildcard IP address | |||
The source traffic selector <bcp14>MAY</bcp14> define wildcard IP ad | and/or wildcard port. For the Data-Security (AH and ESP) SAs, the | |||
dress and/or wildcard port. For the Data-Security (AH and ESP) SAs the | destination traffic selectors will usually define a single | |||
destination traffic selectors will usually define a single multicast | multicast IP address. The source traffic selector in this case | |||
IP address. | will usually define a single IP address or be a wildcard selector. | |||
The source traffic selector in this case will usually define a singl | An IP protocol and ports define the characteristics of traffic | |||
e IP address or be a wildcard selector. | protected by this Data-Security SA.</t> | |||
IP protocol and ports define the characteristics of traffic protecte | <t>If the Data-Security SAs are created in tunnel mode, then it | |||
d by this Data-Security SA. | <bcp14>MUST</bcp14> be tunnel mode with address preservation (see | |||
</t> | Multicast Extensions to the Security Architecture <xref | |||
<t>If the Data-Security SAs are created in tunnel mode, then it <bcp | target="RFC5374"/>. UDP encapsulation of ESP packets <xref | |||
14>MUST</bcp14> be tunnel mode with address | target="RFC3948"/> cannot be specified in G-IKEv2 and thus is | |||
preservation (see Multicast Extensions to the Security Architecture | not used for the multicast Data-Security SAs.</t></dd> | |||
<xref target="RFC5374" />. | <dt>GSA Transforms (variable):</dt><dd>A list of Transform | |||
UDP encapsulation of ESP packets <xref target="RFC3948" /> cannot be | Substructures specifies the policy information for the SA. The | |||
specified in G-IKEv2 and | format is defined in IKEv2 (<xref target="RFC7296" | |||
thus it is not used for the multicast Data-Security SAs. | sectionFormat="of" section="3.3.2"/>). | |||
</t></li> | <!-- [rfced] Should "Last Substruc" be "Last Substruct" or "Last | |||
Substructure" in the sentence below? Or is "Last Substruc" | ||||
<li><t>GSA Transforms (variable) -- A list of Transform | correct here? | |||
Substructures specifies the policy information for the SA. | ||||
The format is defined in IKEv2 <xref target="RFC7296"></xref>, secti | ||||
on 3.3.2. | ||||
The "Last Substruc" field in each Transform Substructure is set to 3 | ||||
except for the last Transform Substructure, where it is | ||||
set to 0. <xref target="gsa_transforms" /> describes using IKEv2 tra | ||||
nsforms | ||||
in GSA policy substructure. | ||||
</t></li> | ||||
<li><t>GSA Attributes (variable) -- Contains policy attributes assoc | Original: | |||
iated | The "Last Substruc" field in each Transform Substructure is set to 3 | |||
with the group SA. The following sections describe the possible | except for the last Transform Substructure, where it is set to 0. | |||
attributes. Any or all attributes may be optional, depending on | ||||
the protocol and the group policy. <xref target="gsa_attr" /> | ||||
defines attributes used in GSA policy substructure.</t></li> | ||||
</ul></t> | ||||
<section anchor="gsa_transforms" title="GSA Transforms"> | Perhaps: | |||
<t>GSA policy is defined by means of transforms in the GSA policy su | The "Last Substructure" field in each Transform Substructure is set | |||
bstructure. | to 3 except for the last Transform Substructure, where it is set to 0. | |||
For this purpose the transforms defined in <xref target="RFC7296" /> | --> | |||
are used. In addition, new transform types are defined for using in | The "Last Substruc" | |||
G-IKEv2: | field in each Transform Substructure is set to 3 except for the | |||
last Transform Substructure, where it is set to 0. <xref | ||||
target="gsa_transforms"/> describes using IKEv2 transforms in GSA | ||||
policy substructure.</dd> | ||||
<dt>GSA Attributes (variable):</dt><dd>Contains policy attributes | ||||
associated with the group SA. The following sections describe the | ||||
possible attributes. Any or all attributes may be optional, | ||||
depending on the protocol and the group policy. <xref | ||||
target="gsa_attr"/> defines attributes used in GSA policy | ||||
substructure.</dd> | ||||
</dl> | ||||
<section anchor="gsa_transforms"> | ||||
<name>GSA Transforms</name> | ||||
<t>GSA policy is defined by the means of transforms in the GSA polic | ||||
y substructure. | ||||
For this purpose, the transforms defined in <xref target="RFC7296"/> | ||||
are used. In addition, new transform types are defined for use in G- | ||||
IKEv2: | ||||
Group Controller Authentication Method (GCAUTH) | Group Controller Authentication Method (GCAUTH) | |||
and Key Wrap Algorithm (KWA), see <xref target="IANA" />. | and Key Wrap Algorithm (KWA); see <xref target="IANA"/>. | |||
</t> | </t> | |||
<t> Valid transform types depend on the SA protocol and are summariz ed in the table below. | <t> Valid transform types depend on the SA protocol and are summariz ed in the table below. | |||
Exactly one instance of each mandatory transform type and at most on e instance of each | Exactly one instance of each mandatory transform type and at most on e instance of each | |||
optional transform type <bcp14>MUST</bcp14> be present in the GSA po licy substructure. | optional transform type <bcp14>MUST</bcp14> be present in the GSA po licy substructure. | |||
<figure align="center" anchor="allowed_transforms" title="Valid Tran | ||||
sform Types"> | ||||
<artwork align="left"><![CDATA[ | ||||
Protocol Mandatory Types Optional Types | ||||
GIKE_UPDATE ENCR, INTEG*, GCAUTH**, KWA | ||||
ESP ENCR, SN INTEG | ||||
AH INTEG, SN | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
<t>(*) If AEAD encryption algorithm is used, then INTEG transform | ||||
either <bcp14>MUST NOT</bcp14> be specified or <bcp14>MUST</bcp14> c | ||||
ontain value NONE; | ||||
otherwise it <bcp14>MUST</bcp14> be specified and <bcp14>MUST</bcp14 | ||||
> contain value other than NONE. | ||||
</t> | ||||
<t>(**) May only appear at the time of a GM registration, | ||||
(in the GSA_AUTH and GSA_REGISTRATION exchanges). | ||||
</t> | </t> | |||
<section anchor="auth_method" title="Group Controller Authentication | <table anchor="allowed_transforms"> | |||
Method Transform"> | <name>Valid Transform Types</name> | |||
<t>The Group Controller Authentication Method (GCAUTH) transform i | <thead> | |||
s used to convey information of how the GCKS | <tr> | |||
<th>Protocol</th> | ||||
<th>Mandatory Types</th> | ||||
<th>Optional Types</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>GIKE_UPDATE</td> | ||||
<td>ENCR, INTEG*, GCAUTH**, KWA</td> | ||||
<td></td> | ||||
</tr> | ||||
<tr> | ||||
<td>ESP</td> | ||||
<td>ENCR, SN</td> | ||||
<td>INTEG</td> | ||||
</tr> | ||||
<tr> | ||||
<td>AH</td> | ||||
<td>INTEG, SN</td> | ||||
<td></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>Notes:</t> | ||||
<dl spacing="normal" newline="false"> | ||||
<dt>(*):</dt><dd>If the AEAD encryption algorithm is used, then IN | ||||
TEG | ||||
transform either <bcp14>MUST NOT</bcp14> be specified or | ||||
<bcp14>MUST</bcp14> contain value NONE; otherwise, it | ||||
<bcp14>MUST</bcp14> be specified and <bcp14>MUST</bcp14> contain | ||||
a value other than NONE.</dd> | ||||
<dt>(**):</dt><dd>May only appear at the time of a GM | ||||
registration (in the GSA_AUTH and GSA_REGISTRATION | ||||
exchanges).</dd> | ||||
</dl> | ||||
<section anchor="auth_method"> | ||||
<name>Group Controller Authentication Method Transform</name> | ||||
<t>The Group Controller Authentication Method (GCAUTH) transform i | ||||
s used to convey information on how the GCKS | ||||
will authenticate the GSA_REKEY messages. | will authenticate the GSA_REKEY messages. | |||
</t> | </t> | |||
<t> This document creates a new IKEv2 IANA registry for transform | ||||
<t> This document creates a new IKEv2 IANA registry for transform | IDs of this transform type, which has been initially populated as described in < | |||
IDs for this transform type, | xref target="IANA"/>. | |||
which is initially filled as described in <xref target="IANA" />. | In particular, the following entries have been added: | |||
In particular, the following entries are initially added. | ||||
</t> | </t> | |||
<figure> | <table> | |||
<preamble></preamble> | <name></name> | |||
<artwork align="center"><![CDATA[ | <thead> | |||
Group Controller Authentication Method Value | <tr> | |||
Reserved 0 | <th>Group Controller Authentication Method</th> | |||
Implicit 1 | <th>Value</th> | |||
Digital Signature 2 | </tr> | |||
]]></artwork> | </thead> | |||
</figure> | <tbody> | |||
<tr> | ||||
<t>These transform IDs are defined as follows. | <td>Reserved</td><td>0</td> | |||
<ul> | </tr> | |||
<li><t> Implicit -- means that no authentication of the GSA_REKE | <tr> | |||
Y messages will be provided | <td>Implicit</td><td>1</td> | |||
by the GCKS besides the ability for the GMs to correctly decrypt | </tr> | |||
them and verify their ICV. | <tr> | |||
In this case the GCKS <bcp14>MUST NOT</bcp14> include the AUTH_K | <td>Digital Signature</td><td>2</td> | |||
EY attribute into the KD payload. | </tr> | |||
Additionally, the AUTH payload <bcp14>MUST NOT</bcp14> be includ | </tbody> | |||
ed in the GIKE_UPDATE messages.</t></li> | </table> | |||
<li><t> Digital Signature -- means that digital signatures will | ||||
be used by the GCKS to authenticate the GSA_REKEY messages. | ||||
In this case the GCKS <bcp14>MUST</bcp14> include the AUTH_KEY a | ||||
ttribute containing the public key | ||||
into the KD payload at the time the GM is registered to the grou | ||||
p. To specify the details of the | ||||
signature algorithm a new attribute Signature Algorithm Identifi | ||||
er (<TBA by IANA>) is defined. | ||||
This attribute contains DER-encoded ASN.1 object AlgorithmIdenti | ||||
fier, which specifies 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 | ||||
Internet X.509 Public | ||||
Key Infrastructure Certificate and CRL Profile <xref target="RFC | ||||
5280" />, | ||||
see also Signature Authentication in IKEv2 <xref target="RFC7427 | ||||
" /> for the list of common AlgorithmIdentifier values used in IKEv2.</t> | ||||
<t>In case of the Digital Signature transform ID, the GCKS <bcp1 | <t>These transform IDs are defined as follows:</t> | |||
4>MUST</bcp14> include the Signature Algorithm Identifier attribute | ||||
in the Group Controller Authentication Method transform. In this | ||||
case the AUTH payload | ||||
in the GIKE_UPDATE messages <bcp14>MUST</bcp14> contain the Digi | ||||
tal Signature authentication method (value 14) | ||||
and is formatted as defined in Section 3 of <xref target="RFC742 | ||||
7" />. The | ||||
AlgorithmIdentifier ASN.1 object in the AUTH payload <bcp14>MUST | ||||
</bcp14> match the content of the | ||||
Signature Algorithm Identifier attribute in the Group Controller | ||||
Authentication Method transform. | ||||
The Signature Algorithm Identifier attribute is only meaningful | ||||
for the Digital Signature transform ID | ||||
and <bcp14>MUST NOT</bcp14> be used with other transform IDs. | ||||
</t></li> | ||||
</ul> | ||||
More authentication methods may be defined in future. | <dl spacing="normal" newline="true"> | |||
<dt>Implicit:</dt><dd>No authentication of the | ||||
GSA_REKEY messages will be provided by the GCKS besides the | ||||
ability for the GMs to correctly decrypt them and verify their | ||||
ICV. In this case, the GCKS <bcp14>MUST NOT</bcp14> include | ||||
the AUTH_KEY attribute into the KD payload. Additionally, the | ||||
AUTH payload <bcp14>MUST NOT</bcp14> be included in the | ||||
GIKE_UPDATE messages.</dd> | ||||
<dt>Digital Signature</dt><dd><t>Digital signatures | ||||
will be used by the GCKS to authenticate the GSA_REKEY | ||||
messages. In this case, the GCKS <bcp14>MUST</bcp14> 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 | ||||
Signature Algorithm Identifier (value 18) is | ||||
defined. This attribute contains DER-encoded ASN.1 object | ||||
AlgorithmIdentifier, which specifies the signature algorithm | ||||
and the hash function that the GCKS will use for | ||||
authentication. The AlgorithmIdentifier object is defined in | ||||
<xref target="RFC5280" sectionFormat="of" | ||||
section="4.1.1.2"/>. Also, see <xref target="RFC7427"/> | ||||
for the list of common AlgorithmIdentifier values used in | ||||
IKEv2.</t> | ||||
<t>In the case of the Digital Signature transform ID, the GCKS | ||||
<bcp14>MUST</bcp14> include the Signature Algorithm Identifier | ||||
attribute in the Group Controller Authentication Method | ||||
transform. In this case, the AUTH payload in the GIKE_UPDATE | ||||
messages <bcp14>MUST</bcp14> contain the Digital Signature | ||||
authentication method (value 14) and be formatted as defined | ||||
in <xref target="RFC7427" sectionFormat="of" section="3"/>. The | ||||
AlgorithmIdentifier ASN.1 object in the AUTH payload | ||||
<bcp14>MUST</bcp14> match the content of the Signature | ||||
Algorithm Identifier attribute in the Group Controller | ||||
Authentication Method transform. The Signature Algorithm | ||||
Identifier attribute is only meaningful for the Digital | ||||
Signature transform ID and <bcp14>MUST NOT</bcp14> be used | ||||
with other transform IDs.</t></dd> | ||||
</dl> | ||||
<t> | ||||
More authentication methods may be defined in the future. | ||||
</t> | </t> | |||
<t>The authentication method <bcp14>MUST NOT</bcp14> change as a r | ||||
<t> The authentication method <bcp14>MUST NOT</bcp14> change as a | esult of rekey operations. | |||
result of rekey operations. | ||||
This means that the Group Controller Authentication Method transfo rm <bcp14>MUST NOT</bcp14> appear in the rekey | This means that the Group Controller Authentication Method transfo rm <bcp14>MUST NOT</bcp14> appear in the rekey | |||
messages, it may only appear in the registration exchange (either GSA_AUTH or GSA_REGISTRATION). | messages; it may only appear in the registration exchange (either GSA_AUTH or GSA_REGISTRATION). | |||
</t> | </t> | |||
<t>The type of the Group Controller Authentication Method transfor | ||||
<t>The type of the Group Controller Authentication Method Transfor | m is 14. | |||
m is <TBA by IANA>. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="wrapping_alg"> | ||||
<section anchor="wrapping_alg" title="Key Wrap Algorithm Transform"> | <name>Key Wrap Algorithm Transform</name> | |||
<t>The Key Wrap Algorithm (KWA) transform is used to convey inform | <t>The Key Wrap Algorithm (KWA) transform is used to convey inform | |||
ation about an algorithm, | ation about an algorithm | |||
that is used for key wrapping in G-IKEv2. See <xref target="wrappe | that is used for key wrapping in G-IKEv2. See <xref target="wrappe | |||
d_key" /> for details. | d_key"/> for details. | |||
</t> | </t> | |||
<t> This document creates a new IKEv2 IANA registry for the key wr | ||||
<t> This document creates a new IKEv2 IANA registry for the key wr | ap algorithms, | |||
ap algorithms | which has been initially populated as described in <xref target="I | |||
which is initially filled as described in <xref target="IANA" />. | ANA"/>. | |||
In particular, the following entries are initially added. | In particular, the following entries have been added: | |||
</t> | </t> | |||
<figure> | <table> | |||
<preamble></preamble> | <name></name> | |||
<artwork align="center"><![CDATA[ | <thead> | |||
Key Wrap Algorithm Value | <tr> | |||
Reserved 0 | <th>Key Wrap Algorithm</th> | |||
KW_5649_128 1 | <th>Value</th> | |||
KW_5649_192 2 | </tr> | |||
KW_5649_256 3 | </thead> | |||
KW_ARX 4 | <tbody> | |||
]]></artwork> | <tr> | |||
</figure> | <td>Reserved</td> | |||
<td>0</td> | ||||
<t>These algorithms are defined as follows. | </tr> | |||
<list style="symbols"> | <tr> | |||
<t> KW_5649_128, KW_5649_192, KW_5649_256 -- Key wrap algorithm | <td>KW_5649_128</td> | |||
defined in <xref target="RFC5649" /> with 128-bit, 192-bit and 256-bit key respe | <td>1</td> | |||
ctively. | </tr> | |||
This key wrap algorithm is designed for use with AES block ciphe | <tr> | |||
r.</t> | <td>KW_5649_192</td> | |||
<t> KW_ARX -- The ARX-KW-8-2-4-GX key wrap algorithm defined in | <td>2</td> | |||
<xref target="ARX-KW" />. This key wrap algorithm is designed for use | </tr> | |||
with Chacha20 stream cipher.</t> | <tr> | |||
</list> | <td>KW_5649_256</td> | |||
<td>3</td> | ||||
</tr> | ||||
<tr> | ||||
<td>KW_ARX</td> | ||||
<td>4</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>These algorithms are defined as follows:</t> | ||||
<dl spacing="normal" newline="true"> | ||||
<dt>KW_5649_128, KW_5649_192, KW_5649_256:</dt><dd>The key wrap | ||||
algorithm defined in <xref target="RFC5649"/> with a 128-bit, | ||||
192-bit, and 256-bit key, respectively. This key wrap algorithm | ||||
is designed for use with AES block cipher.</dd> | ||||
<dt>KW_ARX:</dt><dd>The ARX-KW-8-2-4-GX key wrap algorithm | ||||
defined in <xref target="ARX-KW"/>. This key wrap algorithm is | ||||
designed for use with Chacha20 stream cipher.</dd> | ||||
</dl> | ||||
More key wrap algorithms may be defined in future. The requirement | <t>More key wrap algorithms may be defined in the future. The | |||
is that these algorithms <bcp14>MUST</bcp14> be able | requirement is that these algorithms <bcp14>MUST</bcp14> be able | |||
to wrap key material of size up to 256 bytes. | to wrap key material of size up to 256 bytes. | |||
</t> | </t> | |||
<t>The type of the Key Wrap Algorithm transform is 13. | ||||
<t>The type of the Key Wrap Algorithm transform is <TBA by IANA | ||||
>. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="antireplay"> | ||||
<section anchor="antireplay" title="Sequence Numbers Transform"> | <name>Sequence Numbers Transform</name> | |||
<t>The "Sequence Numbers (SN)" transform type is defined in <xref | <t>The Sequence Numbers (SNs) transform type is defined in <xref t | |||
target="I-D.ietf-ipsecme-ikev2-rename-esn" />. | arget="RFC9827"/>. | |||
This transform describes the properties of sequence numbers of IPs ec packets. There are currently two transform IDs | This transform describes the properties of sequence numbers of IPs ec packets. There are currently two transform IDs | |||
defined for this transform type: "32-bit Sequential Numbers" and " Partially Transmitted 64-bit Sequential Numbers" | defined for this transform type: "32-bit Sequential Numbers" and " Partially Transmitted 64-bit Sequential Numbers" | |||
that correspond to non-ESN and ESN cases from AH <xref target="RFC 4302" /> and ESP <xref target="RFC4303" /> specifications. | that correspond to non-ESN and ESN cases from AH <xref target="RFC 4302"/> and ESP <xref target="RFC4303"/> specifications. | |||
</t> | </t> | |||
<t>Transform ID "32-bit Sequential Numbers" <bcp14>SHOULD</bcp14> | ||||
<t> Transform ID "32-bit Sequential Numbers" <bcp14>SHOULD</bcp14> | be used by the GCKS for | |||
be used by the GCKS for | ||||
single-sender multicast Data-Security SAs utilizing protocols ESP or AH. | single-sender multicast Data-Security SAs utilizing protocols ESP or AH. | |||
</t> | </t> | |||
<t>Since both AH <xref target="RFC4302"/> and ESP <xref target="RF | ||||
<t>Since both AH <xref target="RFC4302" /> and ESP <xref target="R | C4303"/> are defined in such a way that high-order 32 bits of extended sequence | |||
FC4303" /> are defined in such a way, | numbers are never transmitted, it makes using ESN in multicast Data-Security SAs | |||
that high-order 32 bits of extended sequence numbers are never tra | problematic because GMs that join the group long after it is creat | |||
nsmitted, it makes using ESN in multicast Data-Security SAs | ed will have to somehow learn the current high-order 32 bits | |||
problematic, because GMs that join group long after it is created | of ESN for each sender in the group. The algorithm for doing this | |||
will have to somehow learn the current high order 32 bits | described in AH <xref target="RFC4302"/> | |||
of ESN for each sender in the group. The algorithm for doing this | and ESP <xref target="RFC4303"/> is resource-consuming and is only | |||
described in AH <xref target="RFC4302" /> | suitable when a receiver is able to guess | |||
and ESP <xref target="RFC4303" /> is resource-consuming and is onl | ||||
y suitable when a receiver is able to guess | ||||
the high-order 32 bits close enough to its real value, which is no t the case for multicast SAs. | the high-order 32 bits close enough to its real value, which is no t the case for multicast SAs. | |||
For this reason the "Partially Transmitted 64-bit Sequential Numbe rs" transform ID | For this reason, the "Partially Transmitted 64-bit Sequential Numb ers" transform ID | |||
<bcp14>MUST NOT</bcp14> be used for multicast Data-Security SAs ut ilizing protocols ESP or AH. | <bcp14>MUST NOT</bcp14> be used for multicast Data-Security SAs ut ilizing protocols ESP or AH. | |||
</t> | </t> | |||
<t> This document defines a new transform ID | ||||
for this transform type: 32-bit Unspecified Numbers (2). | ||||
<!-- [rfced] May we restructure the text below as follows for readability? | ||||
<t> This document defines a new transform ID "32-bit Unspecified N | Current: | |||
umbers" (<TBA by IANA>) | This transform ID defines the following properties. Sequence numbers | |||
for this transform type. This transform ID defines the following p | are 32-bit in size and are transmitted in the Sequence Number field of AH and | |||
roperties. | ESP packets. The value of sequence numbers is not guaranteed to be unique fo | |||
Sequence numbers are 32-bit in size and are transmitted in the Seq | r | |||
uence Number field of AH and ESP packets. | the duration of an SA, thus they are not suitable for replay protection. Thi | |||
The value of sequence numbers is not guaranteed to be unique for t | s | |||
he duration of an SA, thus they | transform ID MUST be used by the GCKS in case of multi-sender multicast | |||
are not suitable for replay protection. This transform ID <bcp14>M | Data-Security SAs utilizing protocols ESP or AH to inform the GMs that the | |||
UST</bcp14> be used by the GCKS in case of multi-sender | replay protection is not expected to be possible. The GCKS MAY also use this | |||
multicast Data-Security SAs utilizing protocols ESP or AH to infor | transform ID for single-sender multicast Data-Security SAs if replay | |||
m the GMs that the replay protection is not expected to be possible. | protection is not needed (e.g. it is done on application level). | |||
The GCKS <bcp14>MAY</bcp14> also use this transform ID for single- | ||||
sender multicast Data-Security SAs if replay | Perhaps: | |||
protection is not needed (e.g. it is done on application level). | This transform ID defines the following properties: | |||
* Sequence numbers are 32 bits in size and are transmitted in the Sequence | ||||
Number field of AH and ESP packets. | ||||
* The value of sequence numbers is not guaranteed to be unique for | ||||
the duration of an SA, thus they are not suitable for replay | ||||
protection. | ||||
* This transform ID MUST be used by the GCKS in the case of multi-sender | ||||
multicast Data-Security SAs utilizing protocols ESP or AH to inform | ||||
the GMs that the replay protection is not expected to be possible. | ||||
* The GCKS MAY also use this transform ID for single-sender multicast | ||||
Data-Security SAs if replay protection is not needed (e.g., it is done | ||||
on the application level). | ||||
--> | ||||
This transform ID defines the following properties. Sequence numbers are | ||||
32 bits in size and are transmitted in the Sequence Number field of AH and ESP | ||||
packets. The value of sequence numbers is not guaranteed to be unique for the | ||||
duration of an SA, thus they are not suitable for replay protection. This | ||||
transform ID <bcp14>MUST</bcp14> be used by the GCKS in case of multi-sender | ||||
multicast Data-Security SAs utilizing protocols ESP or AH to inform the GMs | ||||
that the replay protection is not expected to be possible. The GCKS | ||||
<bcp14>MAY</bcp14> also use this transform ID for single-sender multicast | ||||
Data-Security SAs if replay protection is not needed (e.g., it is done on | ||||
the application level). | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="gsa_attr"> | ||||
<section anchor="gsa_attr" title="GSA Attributes"> | <name>GSA Attributes</name> | |||
<t>GSA attributes are generally used to provide GMs with additional parameters | <t>GSA attributes are generally used to provide GMs with additional parameters | |||
for the GSA policy. Unlike security parameters distributed via trans forms, | for the GSA policy. Unlike security parameters distributed via trans forms, | |||
which are expected not to change over time (unless policy changes), | which are expected not to change over time (unless the policy change s), | |||
the parameters distributed via GSA attributes | the parameters distributed via GSA attributes | |||
may depend on the time the provision takes place, on the | may depend on the time the provision takes place, on the | |||
existence of others group SAs or on other conditions. | existence of others group SAs, or on other conditions. | |||
</t> | </t> | |||
<t>This document creates a new IKEv2 IANA registry for the types | <t>This document creates a new IKEv2 IANA registry for the types | |||
of the GSA attributes which is initially filled as described in <xre | of GSA attributes, which has been initially populated as described i | |||
f target="IANA" />. | n <xref target="IANA"/>. | |||
In particular, the following attributes are initially added. | In particular, the following attributes have been added: | |||
<figure> | ||||
<artwork align="center"><![CDATA[ | ||||
GSA Attributes Value Format Multi-Valued Used in Protocol | ||||
Reserved 0 | ||||
GSA_KEY_LIFETIME 1 TLV NO GIKE_UPDATE, AH, ESP | ||||
GSA_INITIAL_MESSAGE_ID 2 TLV NO GIKE_UPDATE | ||||
GSA_NEXT_SPI 3 TLV YES GIKE_UPDATE, AH, ESP | ||||
]]></artwork> | ||||
</figure> | ||||
The attributes follow the format defined in the IKEv2 <xref | ||||
target="RFC7296"></xref> section 3.3.5. The "Format" column | ||||
defines what attribute format is allowed: Type/Length/Value (TLV) or | ||||
Type/Value (TV). | ||||
The "Multi-Valued" column defines whether multiple instances of the | ||||
attribute can appear. | ||||
The "Used in Protocol" column lists the security protocols, for whic | ||||
h the attribute can be used. | ||||
</t> | </t> | |||
<section anchor="gsa_attr_key_lifetime" title="GSA_KEY_LIFETIME Attr | <table> | |||
ibute"> | <name></name> | |||
<thead> | ||||
<tr> | ||||
<th>GSA Attributes</th> | ||||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
<th>Used in Protocol</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td colspan="4">0</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA_KEY_LIFETIME</td> | ||||
<td>1</td> | ||||
<td>TLV</td> | ||||
<td>NO</td> | ||||
<td>GIKE_UPDATE, AH, ESP</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA_INITIAL_MESSAGE_ID</td> | ||||
<td>2</td> | ||||
<td>TLV</td> | ||||
<td>NO</td> | ||||
<td>GIKE_UPDATE</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA_NEXT_SPI</td> | ||||
<td>3</td> | ||||
<td>TLV</td> | ||||
<td>YES</td> | ||||
<td>GIKE_UPDATE, AH, ESP</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t> | ||||
The attributes follow the format defined in IKEv2 (<xref | ||||
target="RFC7296" sectionFormat="of" section="3.3.5"/>). The | ||||
"Format" column defines what attribute format is allowed: | ||||
Type/Length/Value (TLV) or Type/Value (TV). The "Multi-Valued" | ||||
column defines whether multiple instances of the attribute can | ||||
appear. The "Used in Protocol" column lists the security | ||||
protocols, for which the attribute can be used. | ||||
</t> | ||||
<section anchor="gsa_attr_key_lifetime"> | ||||
<name>GSA_KEY_LIFETIME Attribute</name> | ||||
<t>The GSA_KEY_LIFETIME attribute (1) specifies the maximum time f or | <t>The GSA_KEY_LIFETIME attribute (1) specifies the maximum time f or | |||
which the SA is valid. The value is a 4 octet unsigned integer in | which the SA is valid. The value is a 4-octet unsigned integer in | |||
a network byte order, specifying a valid time period in seconds. | network byte order, specifying a valid time period in seconds. | |||
When the lifetime expires, the group security association and all | When the lifetime expires, the GSA and all associated keys <bcp14> | |||
associated keys <bcp14>MUST</bcp14> be deleted. | MUST</bcp14> be deleted. | |||
The GCKS may delete the SA at any time before the end of the valid ity period. | The GCKS may delete the SA at any time before the end of the valid ity period. | |||
</t> | </t> | |||
<t>A single attribute of this type <bcp14>MUST</bcp14> be included into any GSA policy substructure | <t>A single attribute of this type <bcp14>MUST</bcp14> be included into any GSA policy substructure | |||
if multicast rekey is employed by the GCKS. This attribute <bcp14> SHOULD NOT</bcp14> be used if inband rekey | if multicast rekey is employed by the GCKS. This attribute <bcp14> SHOULD NOT</bcp14> be used if inband rekey | |||
(via the GSA_INBAND_REKEY exchange) is employed by the GCKS for th e GM. | (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for th e GM. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="gsa_attr_initial_message_id"> | ||||
<section anchor="gsa_attr_initial_message_id" title="GSA_INITIAL_MES | <name>GSA_INITIAL_MESSAGE_ID Attribute</name> | |||
SAGE_ID Attribute"> | ||||
<t>The GSA_INITIAL_MESSAGE_ID attribute (2) defines the initial Me ssage ID | <t>The GSA_INITIAL_MESSAGE_ID attribute (2) defines the initial Me ssage ID | |||
to be used by the GCKS in the GSA_REKEY messages. The Message ID | to be used by the GCKS in the GSA_REKEY messages. The Message ID | |||
is a 4 octet unsigned integer in network byte order. | is a 4-octet unsigned integer in network byte order. | |||
</t> | </t> | |||
<t>A single attribute of this type is included into | <t>A single attribute of this type is included into | |||
the GSA KEK policy substructure if the initial Message ID of the R ekey SA is non-zero. | the GSA KEK policy substructure if the initial Message ID of the R ekey SA is non-zero. | |||
Note, that it is always the case if GMs join the group after some | ||||
multicast rekey operations | <!--[rfced] May we rephrase this sentence as shown below for clarity | |||
have already taken place, so in these cases this attribute will be | (i.e., remove "in these cases" to reduce redundancy)? Note that | |||
included into | we included the lead-in sentence for context. | |||
Lead-in sentence: | ||||
A single attribute of this type is included into the GSA KEK policy | ||||
substructure if the initial Message ID of the Rekey SA is non-zero. | ||||
Original: | ||||
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 when the | ||||
GM is registered. | ||||
Perhaps: | ||||
Note that this is always the case if GMs join the group after some | ||||
multicast rekey operations have already taken place, so this | ||||
attribute will be included into the GSA policy when the GM is | ||||
registered. | ||||
--> | ||||
Note that it is always the case if GMs join the group after some m | ||||
ulticast rekey operations | ||||
have already taken place, so in these cases, this attribute will b | ||||
e included into | ||||
the GSA policy when the GM is registered. | the GSA policy when the GM is registered. | |||
</t> | </t> | |||
<t>This attribute <bcp14>MUST NOT</bcp14> be used if inband rekey (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | <t>This attribute <bcp14>MUST NOT</bcp14> be used if inband rekey (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="gsa_attr_next_spi"> | ||||
<section anchor="gsa_attr_next_spi" title="GSA_NEXT_SPI Attribute"> | <name>GSA_NEXT_SPI Attribute</name> | |||
<t>The optional GSA_NEXT_SPI attribute (3) contains SPI that the G | <t>The optional GSA_NEXT_SPI attribute (3) contains the SPI that t | |||
CKS reserved | he GCKS reserved | |||
for the next Rekey SA or Data-Security SAs replacing the current o nes. The length of the attribute data | for the next Rekey SA or Data-Security SAs replacing the current o nes. The length of the attribute data | |||
is determined by the SPI Size field in the GSA Policy substructure | is determined by the SPI Size field in the GSA policy substructure | |||
the attribute | the attribute | |||
resides in (see <xref target="gsa_policy" />), and the attribute d | resides in (see <xref target="gsa_policy"/>), and the attribute da | |||
ata contains | ta contains the | |||
SPI as it would appear on the network. Multiple attributes of this type <bcp14>MAY</bcp14> be included, | SPI as it would appear on the network. Multiple attributes of this type <bcp14>MAY</bcp14> be included, | |||
meaning that any of the supplied SPIs can be used in the replaceme nt group SA. | meaning that any of the supplied SPIs can be used in the replaceme nt group SA. | |||
</t> | </t> | |||
<!-- [rfced] We have rephrased the sentence below as follows for | ||||
clarity. Please let us know any objections. | ||||
<t>The GM <bcp14>MAY</bcp14> store these values and if later the G | Original: | |||
M starts receiving | The GM MAY store these values and if later the GM starts receiving | |||
messages with one of these SPIs without seeing a rekey message ove | messages with one of these SPIs without seeing a rekey message over | |||
r the current Rekey SA, | the current Rekey SA, this may be used as an indication, that the | |||
this may be used as an indication, that the rekey message got lost | rekey message got lost on its way to this GM. | |||
on its way to this GM. | ||||
In this case the GM <bcp14>SHOULD</bcp14> re-register to the group | ||||
. | ||||
</t> | ||||
<t>Note, that this method of detecting lost rekey messages can onl | Current: | |||
y be used | The GM MAY store these values. Later on, if the GM starts receiving | |||
by group receivers. Additionally there is no point to include this | messages with one of these SPIs without seeing a rekey message over | |||
attribute in the GSA_INBAND_REKEY messages, | the current Rekey SA, then it may be used as an indication that | |||
since they use reliable transport. Note also, that the GCKS is fre | the rekey message got lost on its way to this GM. | |||
e | --> | |||
<t>The GM <bcp14>MAY</bcp14> store these values. Later on, if the | ||||
GM starts receiving | ||||
messages with one of these SPIs without seeing a rekey message ove | ||||
r the current Rekey SA, then | ||||
it may be used as an indication that the rekey message got lost on | ||||
its way to this GM. | ||||
In this case, the GM <bcp14>SHOULD</bcp14> re-register to the grou | ||||
p. | ||||
</t> | ||||
<t>Note that this method of detecting lost rekey messages can only | ||||
be used | ||||
by group receivers. Additionally, there is no point to include thi | ||||
s attribute in the GSA_INBAND_REKEY messages | ||||
since they use reliable transport. Also note that the GCKS is free | ||||
to forget its promises and not to use the SPIs it sent in the GSA_ NEXT_SPI | to forget its promises and not to use the SPIs it sent in the GSA_ NEXT_SPI | |||
attributes before (e.g. in case of the GCKS is rebooted), so the G | attributes before (e.g., in cases where the GCKS is rebooted), so | |||
M must only treat | the GM must only treat | |||
these information as a "best effort" made by the GCKS to prepare f | this information as a "best effort" made by the GCKS to prepare fo | |||
or future rekeys. | r future rekeys. | |||
</t> | </t> | |||
<t>This attribute <bcp14>MUST NOT</bcp14> be used if inband rekey (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | <t>This attribute <bcp14>MUST NOT</bcp14> be used if inband rekey (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="gw_policy"> | ||||
<section title="Group-wide Policy Substructure" anchor="gw_policy"> | <name>Group-Wide Policy Substructure</name> | |||
<t>Group specific policy that does not belong to any SA policy can be | <t>Group-specific policy that does not belong to any SA policy can be | |||
distributed to | distributed to | |||
all group member using Group-wide (GW) policy substructure.</t> | all group members using the Group-wide (GW) policy substructure.</t> | |||
<t>The GW policy substructure is defined as follows:</t> | <t>The GW policy substructure is defined as follows:</t> | |||
<figure title="GW Policy Substructure Format" anchor="gwp_format"> | <figure anchor="gwp_format"> | |||
<preamble></preamble> | <name>GW Policy Substructure Format</name> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Protocol | RESERVED | Length | | | Protocol | RESERVED | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <GW Policy Attributes> ~ | ~ <GW Policy Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>The GW policy substructure fields are defined as follows:</t> | <t>The GW policy substructure fields are defined as follows:</t> | |||
<dl spacing="normal" newline="false"> | ||||
<dt>Protocol (1 octet):</dt><dd><bcp14>MUST</bcp14> be zero. This | ||||
value is reserved (see <xref target="IANA"/>) and is never used for | ||||
any security protocol, so it is used here to indicate that this | ||||
substructure contains policy not related to any specific | ||||
protocol.</dd> | ||||
<!-- [rfced] Is the space in the parentheses intentional in the text | ||||
below, or should "( octet)" be updated as "(0 octet)" per the | ||||
description? Note that there are two instances (Sections 4.4.3 | ||||
and 4.5.3). | ||||
<t><list style="symbols"> | Original: | |||
<t>Protocol (1 octet) -- <bcp14>MUST</bcp14> be zero. This value is | * RESERVED ( octet) - MUST be zero on transmission, MUST be ignored | |||
reserved in <xref target="IANA" /> and is never | on receipt. | |||
used for any security protocol, so it is used here to indicate that | --> | |||
this substructure contains policy | <dt>RESERVED ( octet):</dt><dd><bcp14>MUST</bcp14> be zero on | |||
not related to any specific protocol. | transmission and <bcp14>MUST</bcp14> be ignored on receipt.</dd> | |||
</t> | <dt>Length (2 octets, unsigned integer):</dt><dd>Length of this | |||
substructure including the header.</dd> | ||||
<dt>GW Policy Attributes (variable):</dt><dd>Contains policy | ||||
attributes associated with no specific SA. The following sections | ||||
describe possible attributes. Any or all attributes may be | ||||
optional depending on the group policy.</dd> | ||||
</dl> | ||||
<t>RESERVED ( octet) -- <bcp14>MUST</bcp14> be zero on transmission, | <section anchor="gwp_attr"> | |||
<bcp14>MUST</bcp14> be ignored on receipt. | <name>GW Policy Attributes</name> | |||
<t>This document creates a new IKEv2 IANA registry for the types | ||||
of group-wide policy attributes, which has been initially populate | ||||
d as described in <xref target="IANA"/>. | ||||
In particular, the following attributes have been added: | ||||
</t> | </t> | |||
<t>Length (2 octets, unsigned integer) -- Length of this substructur | <table> | |||
e including the header. | <name></name> | |||
<thead> | ||||
<tr> | ||||
<th>GW Policy Attributes</th> | ||||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td colspan="3">0</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GWP_ATD</td> | ||||
<td>1</td> | ||||
<td>TV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GWP_DTD</td> | ||||
<td>2</td> | ||||
<td>TV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GWP_SENDER_ID_BITS</td> | ||||
<td>3</td> | ||||
<td>TV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>The attributes follow the format defined in the IKEv2 (<xref | ||||
target="RFC7296" sectionFormat="of" section="3.3.5"/>). The | ||||
"Format" column defines what attribute format is allowed: | ||||
Type/Length/Value (TLV) or Type/Value (TV). The "Multi-Valued" | ||||
column defines whether multiple instances of the attribute can | ||||
appear. | ||||
</t> | </t> | |||
<section anchor="gwp_attr_atd_dtd"> | ||||
<t>GW Policy Attributes (variable) -- Contains policy attributes ass | <name>GWP_ATD and GWP_DTD Attributes</name> | |||
ociated | <t><xref target="RFC5374" sectionFormat="of" | |||
with no specific SA. The following sections describe possible | section="4.2.1"/> specifies a key rollover method that | |||
attributes. Any or all attributes may be optional, depending on | requires two values be provided to group members: Activation | |||
the group policy.</t> | Time Delay (ATD) and Deactivation Time Delay (DTD). | |||
</list></t> | ||||
<section anchor="gwp_attr" title="GW Policy Attributes"> | ||||
<t>This document creates a new IKEv2 IANA registry for the types | ||||
of the group-wide policy attributes which is initially filled as d | ||||
escribed in <xref target="IANA" />. | ||||
In particular, the following attributes are initially added. | ||||
<figure> | ||||
<artwork align="center"><![CDATA[ | ||||
GW Policy Attributes Value Format Multi-Valued | ||||
Reserved 0 | ||||
GWP_ATD 1 TV NO | ||||
GWP_DTD 2 TV NO | ||||
GWP_SENDER_ID_BITS 3 TV NO | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
<t>The attributes follow the format defined in the IKEv2 <xref | ||||
target="RFC7296"></xref> section 3.3.5. The "Format" column | ||||
defines what attribute format is allowed: Type/Length/Value (TLV) | ||||
or Type/Value (TV). | ||||
The "Multi-Valued" column defines whether multiple instances of th | ||||
e attribute can appear. | ||||
</t> | </t> | |||
<t>The GWP_ATD attribute (1) allows a GCKS to set the | ||||
<section anchor="gwp_attr_atd_dtd" title="GWP_ATD And GWP_DTD Attr | ||||
ibutes"> | ||||
<t>Section 4.2.1 of Multicast Extensions to the Security Archite | ||||
cture <xref target="RFC5374" /> specifies a key rollover method that | ||||
requires two values be provided to group members -- Activation T | ||||
ime Delay (ATD) and | ||||
Deactivation Time Delay (DTD). | ||||
</t> | ||||
<t>The GWP_ATD attribute (1) allows a GCKS to set the | ||||
Activation Time Delay for Data-Security SAs of the group. The AT D | Activation Time Delay for Data-Security SAs of the group. The AT D | |||
defines how long active members of the group (those who sends tr affic) | defines how long active members of the group (those who sends tr affic) | |||
should wait after receiving new SAs before staring sending traff | should wait after receiving new SAs before sending traffic over | |||
ic over them. | them. | |||
Note, that to achieve smooth rollover passive members of the gro | Note that to achieve smooth rollover, passive members of the gro | |||
up should | up should | |||
activate the SAs immediately once they receive them. | activate the SAs immediately once they receive them. | |||
</t> | </t> | |||
<t>The GWP_DTD attribute (2) allows the GCKS to set the | ||||
<t>The GWP_DTD attribute (2) allows the GCKS to set the | DTD for previously distributed SAs. The | |||
Deactivation Time Delay for previously distributed SAs. The | ||||
DTD defines how long after receiving a request to delete Data-Se curity SAs | DTD defines how long after receiving a request to delete Data-Se curity SAs | |||
passive group members should wait before actually deleting them. | passive group members should wait before actually deleting them. | |||
Note that active members of the group should stop sending traffi c over these old SAs | Note that active members of the group should stop sending traffi c over these old SAs | |||
once new replacement SAs are activated (after time specified in the GWP_ATD attribute). | once new replacement SAs are activated (after time specified in the GWP_ATD attribute). | |||
</t> | </t> | |||
<t>The GWP_ATD and GWP_DTD attributes contain a 16-bit unsigned in | ||||
<t>The GWP_ATD and GWP_DTD attributes contain 16 bit unsigned in | teger in | |||
teger in a | network byte order, specifying the delay in seconds. These attri | |||
network byte order, specifying the delay in seconds. These attri | butes are <bcp14>OPTIONAL</bcp14>. | |||
butes are OPTIONAL. | ||||
If one of them or both are not sent by the GCKS, then no corresp onding delay | If one of them or both are not sent by the GCKS, then no corresp onding delay | |||
should be employed. | should be employed. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="gwp_attr_sid_bits"> | ||||
<section anchor="gwp_attr_sid_bits" title="GWP_SENDER_ID_BITS Attr | <name>GWP_SENDER_ID_BITS Attribute</name> | |||
ibute"> | <t>The GWP_SENDER_ID_BITS attribute (3) declares how many bits | |||
<t>The GWP_SENDER_ID_BITS attribute (3) declares how many bits o | of the cipher nonce are taken to represent a Sender-ID | |||
f the | value. The bits are applied as the most significant bits of the | |||
cipher nonce are taken to represent a Sender-ID value. The bits | IV, as shown in Figure 1 of Using Counter Modes with ESP and AH | |||
are | to Protect Group Traffic <xref target="RFC6054"/> and as specified | |||
applied as the most significant bits of the IV, as shown in Figu | in <xref target="sid-usage"/>. Guidance for a GCKS choosing the | |||
re 1 of | value is provided in <xref target="RFC6054" | |||
Using Counter Modes with ESP and AH to Protect Group Traffic <xr | sectionFormat="of" section="3"/>. This value is | |||
ef target="RFC6054"></xref> and specified in | applied to each Sender-ID value distributed in the KD | |||
<xref target="sid-usage"></xref>. Guidance for a GCKS choosing t | payload.</t> | |||
he | <t>The GCKS <bcp14>MUST</bcp14> include this attribute if there ar | |||
value is provided in Section 3 of Using Counter Modes with ESP a | e more than one senders | |||
nd AH to Protect Group Traffic | ||||
<xref target="RFC6054"></xref>. This value is applied to each Se | ||||
nder-ID value | ||||
distributed in the KD payload.</t> | ||||
<t>The GCKS <bcp14>MUST</bcp14> include this attribute if there | ||||
are more than one sender | ||||
in the group and any of the Data-Security SAs use counter-based | in the group and any of the Data-Security SAs use counter-based | |||
cipher mode. The number of Sender-ID bits is represented as 16 b it unsigned integer in | cipher mode. The number of Sender-ID bits is represented as a 16 -bit unsigned integer in | |||
network byte order. | network byte order. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="kd_payload"> | ||||
<section title="Key Download Payload" anchor="kd_payload"> | <name>Key Download Payload</name> | |||
<t>The Key Download (KD) payload contains the group keys for the SAs | <t>The Key Download (KD) payload contains the group keys for the SAs | |||
specified in the GSA Payload. | specified in the GSA payload. | |||
The Payload Type for the Key Download payload is fifty-two (52). | The Payload Type for the Key Download payload is fifty-two (52). | |||
</t> | </t> | |||
<figure title="Key Download Payload Format" anchor="kd_payload_format"> | <figure anchor="kd_payload_format"> | |||
<preamble></preamble> | <name>Key Download Payload Format</name> | |||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Payload |C| RESERVED | Length | | | Next Payload |C| RESERVED | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Key Bags> ~ | ~ <Key Bags> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>The Key Download payload fields are defined as follows:</t> | <t>The Key Download payload fields are defined as follows:</t> | |||
<dl spacing="normal" newline="true"> | ||||
<t><list style="symbols"> | <!--[rfced] "Length" vs. "Payload Length" | |||
<t>Next Payload, C, RESERVED, Payload Length fields comprise the IKEv2 | ||||
Generic Payload Header and | ||||
are defined in Section 3.2. of <xref target="RFC7296"></xref>.</t> | ||||
<t>Key Bags (variable) -- A set of Key Bag substructures. | a) We note that Figure 16 uses "Payload Length" whereas | |||
</t> | Figures 17, 18, 19, 20, and 21 use "Length". Is this | |||
</list> | variance okay, or is an update needed to Figure 16 | |||
</t> | for consistency? | |||
<section anchor="key_bag" title="Key Bags"> | b) In Section 4.5, we note "Length" in Figure 19 but "Payload | |||
<t> Keys are distributed in a substructures called key bags. Each key | Length" in the description. We updated the description to | |||
bag contains one or more keys | reflect "Length" as shown below. If that is not correct, | |||
that are logically related -- either these are keys for a single SA (D | please let us know. | |||
ata-Security SA or Rekey SA) | ||||
or these are keys for a single group member (in the latter case beside | Original: | |||
s keys the key bag may also | Next Payload, C, RESERVED, and Payload Length fields: | |||
Comprise the IKEv2 Generic Payload Header and are defined in | ||||
Section 3.2 of [RFC7296]. | ||||
Current: | ||||
Next Payload, C, RESERVED, and Length fields: | ||||
Comprise the IKEv2 Generic Payload Header and are defined in | ||||
Section 3.2 of [RFC7296]. | ||||
--> | ||||
<dt>Next Payload, C, RESERVED, and Length fields:</dt><dd> | ||||
Comprise the IKEv2 Generic Payload Header and are defined in <xref | ||||
target="RFC7296" sectionFormat="of" section="3.2"/>.</dd> | ||||
<dt>Key Bags (variable):</dt><dd>A set of Key Bag substructures.</dd> | ||||
</dl> | ||||
<section anchor="key_bag"> | ||||
<name>Key Bags</name> | ||||
<t> Keys are distributed in substructures called key bags. Each key ba | ||||
g contains one or more keys | ||||
that are logically related -- these are keys for either a single SA (D | ||||
ata-Security SA or Rekey SA) | ||||
or a single group member (in the latter case, besides keys, the key ba | ||||
g may also | ||||
contain security parameters for this group member). | contain security parameters for this group member). | |||
</t> | </t> | |||
<!-- [rfced] May we rephrase the following text to simplify the | ||||
sentence structure? Also, does "the following SPI" refer to the | ||||
SPI in Figure 20? | ||||
<t> For this reason two types of key bags are defined -- Group Key Bag | Original: | |||
and Member Key Bag. The type is unambiguously | For this reason two types of key bags are defined - Group Key Bag | |||
determined by the first byte of the key bag substructure -- for member | and Member Key Bag. The type is unambiguously determined by the first | |||
key bag it is zero and for group | byte of the key bag substructure - for member key bag it is zero and | |||
key bag it represents the protocol number, which along with the follow | for group key bag it represents the protocol number, which along with | |||
ing SPI, identify the SA associated with the keys in the bag. | the following SPI, identify the SA associated with the keys in the | |||
bag. | ||||
Perhaps: | ||||
For this reason, two types of key bags are defined: Group Key Bag and | ||||
Member Key Bag. The type is unambiguously determined by the first byte of | ||||
the key bag substructure; for a Member Key Bag, it is zero. The Group Key | ||||
Gag is represented by the protocol number, and the protocol number along | ||||
with the SPI (see Figure 20) identify the SA that is associated with | ||||
the keys in the bag. | ||||
--> | ||||
<t> | ||||
For this reason, two types of key bags are defined: Group Key Bag | ||||
and Member Key Bag. The type is unambiguously determined by the first | ||||
byte of the key bag substructure. For a Member Key Bag, it is zero, and | ||||
for Group Key Bag, it represents the protocol number, which along with | ||||
the following SPI, identify the SA associated with the keys in the | ||||
bag. | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="group_key_bag"> | ||||
<section anchor="group_key_bag" title="Group Key Bag Substructure"> | <name>Group Key Bag Substructure</name> | |||
<t>The Group Key Bag substructure contains SA key information. This ke y information is associated | <t>The Group Key Bag substructure contains SA key information. This ke y information is associated | |||
with some group SAs: either with Data-Security SAs or with group Rekey SA. | with some group SAs: either with Data-Security SAs or with a group Rek ey SA. | |||
</t> | </t> | |||
<figure title="Group Key Bag Substructure Format" anchor="group_key_ba | <figure anchor="group_key_bag_format"> | |||
g_format"> | <name>Group Key Bag Substructure Format</name> | |||
<preamble></preamble> | <artwork ><![CDATA[ | |||
<artwork align="center"><![CDATA[ | ||||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Protocol | SPI Size | Length | | | Protocol | SPI Size | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ SPI ~ | ~ SPI ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Group Key Bag Attributes> ~ | ~ <Group Key Bag Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t><list style="symbols"> | <dl spacing="normal" newline="true"> | |||
<t>Protocol (1 octet) -- Identifies the security protocol for this k | <dt>Protocol (1 octet):</dt><dd>Identifies the security protocol | |||
ey bag. | for this key bag. The values are defined in the "IKEv2 Security | |||
The values are defined in the IKEv2 Security Protocol Identifiers in | Protocol Identifiers" registry in <xref target="IKEV2-IANA"/>. The v | |||
<xref target="IKEV2-IANA" />. The valid values for this field are: | alid | |||
<TBA> (GIKE_UPDATE) for KEK Key packet and 2 (AH) or 3 (ESP) f | values for this field are: 6 (GIKE_UPDATE) for KEK Key | |||
or TEK key bag. | packet and 2 (AH) or 3 (ESP) for TEK key bag.</dd> | |||
</t> | <dt>SPI Size (1 octet):</dt><dd>Size of the | |||
SPI for the corresponding SA. SPI size depends on the security | ||||
<t>SPI Size (1 octet) -- Size of Security Parameter Index (SPI) for | protocol. It is 16 octets for GIKE_UPDATE and 4 octets for AH and ES | |||
the corresponding SA. | P.</dd> | |||
SPI size depends on the security protocol. For GIKE_UPDATE it is 16 | <dt>Length (2 octets, unsigned integer):</dt><dd>Length of this subs | |||
octets, while for AH and ESP it is 4 octets. | tructure including the header.</dd> | |||
</t> | <dt>SPI (variable):</dt><dd>Security Parameter Index for the corresp | |||
onding SA. | ||||
<t>Length (2 octets, unsigned integer) -- Length of this substructur | ||||
e including the header. | ||||
</t> | ||||
<t>SPI (variable) -- Security Parameter Index for the corresponding | ||||
SA. | ||||
The size of this field is determined by the SPI Size field. | The size of this field is determined by the SPI Size field. | |||
In case of GIKE_UPDATE the SPI is the IKEv2 Header SPI pair where th e | In the case of GIKE_UPDATE, the SPI is the IKEv2 Header SPI pair whe re the | |||
first 8 octets become the "IKE SA Initiator's SPI" field in the | first 8 octets become the "IKE SA Initiator's SPI" field in the | |||
G-IKEv2 rekey message IKEv2 HDR, and the second 8 octets become | G-IKEv2 rekey message IKEv2 HDR, and the second 8 octets become | |||
the "IKE SA Responder's SPI" in the same HDR. | the "IKE SA Responder's SPI" in the same HDR. </dd> | |||
</t> | <dt>Group Key Bag Attributes (variable):</dt><dd>Contains Key | |||
information for the corresponding SA.</dd> | ||||
<t>Group Key Bag Attributes (variable) -- Contains Key | </dl> | |||
information for the corresponding SA. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
<t>This document creates a new IKEv2 IANA registry for the types | <t>This document creates a new IKEv2 IANA registry for the types | |||
of the Group Key Bag attributes which is initially filled as described | of Group Key Bag attributes, which has been initially populated as des | |||
in <xref target="IANA" />. | cribed in <xref target="IANA"/>. | |||
In particular, the following attributes are initially added. | In particular, the following attributes have been added: | |||
</t> | ||||
<figure> | <!-- [rfced] Please review Table 7 and let us know if the format appears | |||
<artwork align="center"><![CDATA[ | as intended. Specifically, are the "Multi-Valued" and "Used in Protocol" | |||
Group Key Bag | columns correctly formatted? | |||
Attributes Value Format Multi-Valued Used in Protocol | --> | |||
Reserved 0 | <table> | |||
SA_KEY 1 TLV YES* GIKE_UPDATE | <name></name> | |||
NO AH, ESP | <thead> | |||
]]></artwork> | <tr> | |||
</figure> | <th>Group Key Bag Attributes</th> | |||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
<th>Used in Protocol</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td colspan="4">0</td> | ||||
</tr> | ||||
<tr> | ||||
<td>SA_KEY</td> | ||||
<td>1</td> | ||||
<td>TLV</td> | ||||
<td>YES*<br/>NO</td> | ||||
<td>GIKE_UPDATE<br/>AH, ESP</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
(*) Multiple SA_KEY attributes may only appear for the GIKE_UPDATE pro | <t>Notes:</t> | |||
tocol | <dl spacing="normal" newline="false"> | |||
<dt>(*):</dt><dd>Multiple SA_KEY attributes may only appear for the GIK | ||||
E_UPDATE protocol | ||||
in the GSA_REKEY exchange if the GCKS uses the group key management | in the GSA_REKEY exchange if the GCKS uses the group key management | |||
method that allows excluding GMs from the group (like LKH). | method that allows excluding GMs from the group (like LKH).</dd> | |||
</t> | </dl> | |||
<t>The attributes follow the format defined in IKEv2 (<xref | ||||
<t>The attributes follow the format defined in the IKEv2 <xref | target="RFC7296" sectionFormat="of" section="3.3.5"/>). The | |||
target="RFC7296"></xref> section 3.3.5. The "Format" column | "Format" column defines what attribute format is allowed: | |||
defines what attribute format is allowed: Type/Length/Value (TLV) or T | Type/Length/Value (TLV) or Type/Value (TV). The "Multi-Valued" | |||
ype/Value (TV). | column defines whether multiple instances of the attribute can | |||
The "Multi-Valued" column defines whether multiple instances of the at | appear. The "Used in Protocol" column lists the security protocols, | |||
tribute can appear. | for which the attribute can be used. | |||
The "Used in Protocol" column lists the security protocols, for which | ||||
the attribute can be used. | ||||
</t> | </t> | |||
<section anchor="gkd_attr_group_key"> | ||||
<section anchor="gkd_attr_group_key" title="SA_KEY Attribute"> | <name>SA_KEY Attribute</name> | |||
<t>The SA_KEY attribute (1) contains a keying material for the corre sponding SA. | <t>The SA_KEY attribute (1) contains a keying material for the corre sponding SA. | |||
The content of the attribute is formatted according to | The content of the attribute is formatted according to | |||
<xref target="wrapped_key" /> with a precondition that the Key ID fi eld <bcp14>MUST</bcp14> always be zero. | <xref target="wrapped_key"/> with a precondition that the Key ID fie ld <bcp14>MUST</bcp14> always be zero. | |||
The size of the keying material <bcp14>MUST</bcp14> be equal to the total size of the keys needed to be taken | The size of the keying material <bcp14>MUST</bcp14> be equal to the total size of the keys needed to be taken | |||
from this keying material (see <xref target="group_sa_keys" />) for the corresponding SA. | from this keying material (see <xref target="group_sa_keys"/>) for t he corresponding SA. | |||
</t> | </t> | |||
<t>If the key bag is for a Data-Security SA (AH or ESP protocols), | <t>If the key bag is for a Data-Security SA (AH or ESP protocols), | |||
then exactly one SA_KEY attribute <bcp14>MUST</bcp14> be present wit h both | then exactly one SA_KEY attribute <bcp14>MUST</bcp14> be present wit h both | |||
Key ID and KWK ID fields set to zero. | Key ID and KWK ID fields set to zero. | |||
</t> | </t> | |||
<!-- [rfced] FYI - We rephrased the text below for better sentence | ||||
flow. Please let us know of any objections. | ||||
<t>If the key bag is for a Rekey SA (GIKE_UPDATE protocol), | Original: | |||
then in the GSA_AUTH, GSA_REGISTRATION and GSA_INBAND_REKEY exchange | If the key bag is for a Rekey SA (GIKE_UPDATE protocol), then in the | |||
s | GSA_AUTH, GSA_REGISTRATION and GSA_INBAND_REKEY exchanges exactly one SA_KEY | |||
exactly one SA_KEY attribute <bcp14>MUST</bcp14> be present. | attribute MUST be present. | |||
In the GSA_REKEY exchange at least one SA_KEY attribute <bcp14>MUST< | ||||
/bcp14> be present, | Current: | |||
If the key bag is for a Rekey SA (GIKE_UPDATE protocol), then exactly | ||||
one SA_KEY attribute MUST be present in the GSA_AUTH, GSA_REGISTRATION, and | ||||
GSA_INBAND_REKEY exchanges. | ||||
--> | ||||
<t>If the key bag is for a Rekey SA (GIKE_UPDATE protocol), | ||||
then exactly one SA_KEY attribute <bcp14>MUST</bcp14> be present in the GSA_AUTH | ||||
, GSA_REGISTRATION, and GSA_INBAND_REKEY exchanges. | ||||
In the GSA_REKEY exchange, at least one SA_KEY attribute <bcp14>MUST | ||||
</bcp14> be present, | ||||
and more attributes <bcp14>MAY</bcp14> be present (depending on the key management method employed by the GCKS). | and more attributes <bcp14>MAY</bcp14> be present (depending on the key management method employed by the GCKS). | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="member_key_bag"> | ||||
<section anchor="member_key_bag" title="Member Key Bag Substructure" > | <name>Member Key Bag Substructure</name> | |||
<t>The Member Key Bag substructure contains keys and other | <t>The Member Key Bag substructure contains keys and other | |||
parameters that are specific for a member of the group and are not | parameters that are specific for a member of the group and are not | |||
associated with any particular group SA. | associated with any particular group SA. | |||
</t> | </t> | |||
<figure title="Member Key Bag Substructure Format" anchor="mkd_key_bag | <figure anchor="mkd_key_bag"> | |||
"> | <name>Member Key Bag Substructure Format</name> | |||
<preamble></preamble> | ||||
<artwork><![CDATA[ | <artwork><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Protocol | RESERVED | Length | | | Protocol | RESERVED | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ <Member Key Bag Attributes> ~ | ~ <Member Key Bag Attributes> ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>The Member Key Bag substructure fields are defined as follows:</t> | <t>The Member Key Bag substructure fields are defined as follows:</t> | |||
<dl spacing="normal" newline="true"> | ||||
<dt>Protocol (1 octet):</dt><dd><bcp14>MUST</bcp14> be zero. This | ||||
value is reserved (see <xref target="IANA"/>) and is never used for | ||||
any security protocol, so it is used here to indicate that this | ||||
key bag is not associated with any particular SA.</dd> | ||||
<dt>RESERVED ( octet):</dt><dd><bcp14>MUST</bcp14> be zero on | ||||
transmission and <bcp14>MUST</bcp14> be ignored on receipt.</dd> | ||||
<dt>Length (2 octets, unsigned integer):</dt><dd>Length of this | ||||
substructure including the header.</dd> | ||||
<dt>Member Key Bag Attributes (variable):</dt><dd>Contains Key | ||||
information and other parameters exclusively for a particular | ||||
member of the group.</dd> | ||||
</dl> | ||||
<t><list style="symbols"> | <t> | |||
<t>Protocol (1 octet) -- <bcp14>MUST</bcp14> be zero. This value is | The Member Key Bag substructure contains sensitive information for a s | |||
reserved in <xref target="IANA" /> and is never | ingle GM. For this reason, | |||
used for any security protocol, so it is used here to indicate that | ||||
this key bag is not associated | ||||
with any particular SA. | ||||
</t> | ||||
<t>RESERVED ( octet) -- <bcp14>MUST</bcp14> be zero on transmission | ||||
, <bcp14>MUST</bcp14> be ignored on receipt. | ||||
</t> | ||||
<t>Length (2 octets, unsigned integer) -- Length of this substructur | ||||
e including the header. | ||||
</t> | ||||
<t>Member Key Bag Attributes (variable) -- Contains Key | ||||
information and other parameters exclusively for a particular member | ||||
of the group. | ||||
</t> | ||||
</list> | ||||
The member Key Bag substructure contains sensitive information for a s | ||||
ingle GM, for this reason | ||||
it <bcp14>MUST NOT</bcp14> be sent in GSA_REKEY messages and <bcp14>MU ST</bcp14> only be sent via unicast | it <bcp14>MUST NOT</bcp14> be sent in GSA_REKEY messages and <bcp14>MU ST</bcp14> only be sent via unicast | |||
SA at the time the GM registers to the group (in either GSA_AUTH or GS A_REGISTRATION exchanges). | SA at the time the GM registers to the group (in either GSA_AUTH or GS A_REGISTRATION exchanges). | |||
</t> | </t> | |||
<t>This document creates a new IKEv2 IANA registry for the types | <t>This document creates a new IKEv2 IANA registry for the types | |||
of the Member Key Bag attributes which is initially filled as describe | of Member Key Bag attributes, which has been initially populated as de | |||
d in <xref target="IANA" />. | scribed in <xref target="IANA"/>. | |||
In particular, the following attributes are initially added. | In particular, the following attributes have been added: | |||
<figure> | ||||
<artwork align="center"><![CDATA[ | ||||
Member Key Bag | ||||
Attributes Value Format Multi-Valued | ||||
Reserved 0 | ||||
WRAP_KEY 1 TLV YES | ||||
AUTH_KEY 2 TLV NO | ||||
GM_SENDER_ID 3 TLV YES | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | </t> | |||
<t>The attributes follow the format defined in the IKEv2 <xref | <table> | |||
target="RFC7296"></xref> section 3.3.5. The "Format" column | <name></name> | |||
defines what attribute format is allowed: Type/Length/Value (TLV) or T | <thead> | |||
ype/Value (TV). | <tr> | |||
The "Multi-Valued" column defines whether multiple instances of the at | <th>Member Key Bag Attributes</th> | |||
tribute can appear. | <th>Value</th> | |||
</t> | <th>Format</th> | |||
<th>Multi-Valued</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td colspan="3">0</td> | ||||
</tr> | ||||
<tr> | ||||
<td>WRAP_KEY</td> | ||||
<td>1</td> | ||||
<td>TLV</td> | ||||
<td>YES</td> | ||||
</tr> | ||||
<tr> | ||||
<td>AUTH_KEY</td> | ||||
<td>2</td> | ||||
<td>TLV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GM_SENDER_ID</td> | ||||
<td>3</td> | ||||
<td>TLV</td> | ||||
<td>YES</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<section anchor="mkd_attr_kwk" title="WRAP_KEY Attribute"> | <t>The attributes follow the format defined in the IKEv2 (<xref | |||
target="RFC7296" sectionFormat="of" section="3.3.5"/>). The | ||||
"Format" column defines what attribute format is allowed: | ||||
Type/Length/Value (TLV) or Type/Value (TV). The "Multi-Valued" | ||||
column defines whether multiple instances of the attribute can | ||||
appear. | ||||
</t> | ||||
<section anchor="mkd_attr_kwk"> | ||||
<name>WRAP_KEY Attribute</name> | ||||
<t>The WRAP_KEY attribute (1) contains a key that is used | <t>The WRAP_KEY attribute (1) contains a key that is used | |||
to encrypt other keys. One or more these | to encrypt other keys. One or more of these | |||
attributes are sent to GMs if the GCKS key management method | attributes are sent to GMs if the GCKS key management method | |||
relies on some key hierarchy (e.g. LKH). | relies on some key hierarchy (e.g., LKH). | |||
This attribute <bcp14>MUST NOT</bcp14> be used if inband rekey (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | This attribute <bcp14>MUST NOT</bcp14> be used if inband rekey (via the GSA_INBAND_REKEY exchange) is employed by the GCKS for the GM. | |||
</t> | </t> | |||
<t>The content of the attribute has a format defined in <xref target | ||||
<t>The content of the attribute has a format defined in <xref target | ="wrapped_key"/> | |||
="wrapped_key" /> | ||||
with a precondition that the Key ID field <bcp14>MUST NOT</bcp14> be zero. | with a precondition that the Key ID field <bcp14>MUST NOT</bcp14> be zero. | |||
The algorithm associated with the key is defined by the Key Wrap Alg orithm transform | The algorithm associated with the key is defined by the Key Wrap Alg orithm transform | |||
for the SA the WRAP_KEY attributes was sent in. | for the SA the WRAP_KEY attributes was sent in. | |||
The size of the attribute data <bcp14>MUST</bcp14> be equal to the k ey size for this key wrap algorithm. | The size of the attribute data <bcp14>MUST</bcp14> be equal to the k ey size for this key wrap algorithm. | |||
</t> | </t> | |||
<t>Multiple instances of the WRAP_KEY attributes <bcp14>MAY</bcp14> be present in the key bag. | <t>Multiple instances of the WRAP_KEY attributes <bcp14>MAY</bcp14> be present in the key bag. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="mkd_attr_auth_key"> | ||||
<section anchor="mkd_attr_auth_key" title="AUTH_KEY Attribute"> | <name>AUTH_KEY Attribute</name> | |||
<t>The AUTH_KEY attribute (2) contains the key that is used to authe nticate | <t>The AUTH_KEY attribute (2) contains the key that is used to authe nticate | |||
the GSA_REKEY messages. The content of the attribute depends on the authentication | the GSA_REKEY messages. The content of the attribute depends on the authentication | |||
method the GCKS specified in the Group Controller Authentication Met hod transform in the GSA payload. | method the GCKS specified in the Group Controller Authentication Met hod transform in the GSA payload. | |||
<list style="symbols"> | </t> | |||
<t>If digital signatures are used for the GSA_REKEY message authen | <!-- [rfced] In Section 4.5.3.2, since there is only one list item in | |||
tication | this unordered list, would it be appropriate to remove the bullet | |||
then the content of the AUTH_KEY attribute is a public key used | and make it into a paragraph? | |||
for digital signature authentication. The public key <bcp14>MUST</ | ||||
bcp14> be represented | Original: | |||
as DER-encoded ASN.1 object SubjectPublicKeyInfo, defined in Secti | * If digital signatures are used for the GSA_REKEY message | |||
on | authentication then the content of the AUTH_KEY attribute is a | |||
4.1.2.7 of Internet X.509 Public Key Infrastructure Certificate an | public key used for digital signature authentication. The public | |||
d CRL Profile <xref target="RFC5280" />. | key MUST be represented as DER-encoded ASN.1 object | |||
The algorithm field inside the SubjectPublicKeyInfo object <bcp14> | SubjectPublicKeyInfo, defined in Section 4.1.2.7 of "Internet | |||
MUST</bcp14> match the | X.509 Public Key Infrastructure Certificate and Certificate | |||
content of the Signature Algorithm Identifier attribute in the Gro | Revocation List (CRL) Profile" [RFC5280]. The algorithm field | |||
up Controller Authentication Method transform. | inside the SubjectPublicKeyInfo object MUST match the content of | |||
When the id-RSASSA-PSS object identifier appears in the algorithm | the Signature Algorithm Identifier attribute in the Group | |||
field of the SubjectPublicKeyInfo object, | Controller Authentication Method transform. When the id-RSASSA- | |||
then the parameters field <bcp14>MUST</bcp14> include the RSASSA-P | PSS object identifier appears in the algorithm field of the | |||
SS-params structure. | SubjectPublicKeyInfo object, then the parameters field MUST | |||
</t> | include the RSASSA-PSS-params structure. | |||
</list> | ||||
Perhaps: | ||||
If digital signatures are used for the GSA_REKEY message | ||||
authentication, then the content of the AUTH_KEY attribute is a | ||||
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]. The algorithm field inside the SubjectPublicKeyInfo | ||||
object MUST match the content of the Signature Algorithm | ||||
Identifier attribute in the Group Controller Authentication Method | ||||
transform. When the id-RSASSA-PSS object identifier appears in | ||||
the algorithm field of the SubjectPublicKeyInfo object, then the | ||||
parameters field MUST include the RSASSA-PSS-params structure. | ||||
--> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>If digital signatures are used for the GSA_REKEY message | ||||
authentication, then the content of the AUTH_KEY attribute is a | ||||
public key used for digital signature authentication. The | ||||
public key <bcp14>MUST</bcp14> be represented as DER-encoded | ||||
ASN.1 object SubjectPublicKeyInfo, defined in <xref | ||||
target="RFC5280" sectionFormat="of" section="4.1.2.7"/>. The alg | ||||
orithm field inside the | ||||
SubjectPublicKeyInfo object <bcp14>MUST</bcp14> match the | ||||
content of the Signature Algorithm Identifier attribute in the | ||||
Group Controller Authentication Method transform. When the | ||||
id-RSASSA-PSS object identifier appears in the algorithm field | ||||
of the SubjectPublicKeyInfo object, then the parameters field | ||||
<bcp14>MUST</bcp14> include the RSASSA-PSS-params structure. | ||||
</t> | ||||
</li> | ||||
</ul> | ||||
<t> | ||||
Multiple instances of the AUTH_KEY attributes <bcp14>MUST NOT</bcp14 > be sent. | Multiple instances of the AUTH_KEY attributes <bcp14>MUST NOT</bcp14 > be sent. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="mkd_attr_gm_sid"> | ||||
<section anchor="mkd_attr_gm_sid" title="GM_SENDER_ID Attribute"> | <name>GM_SENDER_ID Attribute</name> | |||
<t>The GM_SENDER_ID attribute (3) is used to download one or more Se nder-ID | <t>The GM_SENDER_ID attribute (3) is used to download one or more Se nder-ID | |||
values for the exclusive use of a group member. One or more of this attributes <bcp14>MUST</bcp14> be | values for the exclusive use of a group member. One or more of thes e attributes <bcp14>MUST</bcp14> be | |||
sent by the GCKS if the GM informed the GCKS that it would be a send er (by including | sent by the GCKS if the GM informed the GCKS that it would be a send er (by including | |||
the GROUP_SENDER notification to the request) and at least one of th | the GROUP_SENDER notification to the request) and if at least one of | |||
e Data-Security SAs | the Data-Security SAs | |||
included in the GSA payload uses counter-based mode of encryption. | included in the GSA payload uses a counter-based mode of encryption. | |||
</t> | </t> | |||
<t>If the GMs have requested multiple Sender-ID values in the GROUP_ | ||||
<t>If the GMs has requested multiple Sender-ID values in the GROUP_S | SENDER notification, then the GCKS <bcp14>SHOULD</bcp14> | |||
ENDER notification, then the GCKS <bcp14>SHOULD</bcp14> | ||||
provide it with the requested number of Sender-IDs by sending multip le instances of the GM_SENDER_ID | provide it with the requested number of Sender-IDs by sending multip le instances of the GM_SENDER_ID | |||
attribute. The GCKS <bcp14>MAY</bcp14> send fewer values than reques ted by the GM (e.g. if it is running out of Sender-IDs), | attribute. The GCKS <bcp14>MAY</bcp14> send fewer values than reques ted by the GM (e.g., if it is running out of Sender-IDs), | |||
but it <bcp14>MUST NOT</bcp14> send more than requested. | but it <bcp14>MUST NOT</bcp14> send more than requested. | |||
</t> | </t> | |||
<t>This attribute <bcp14>MUST NOT</bcp14> appear in the rekey operat ions (in the GSA_REKEY or GSA_INBAND_REKEY exchanges). | <t>This attribute <bcp14>MUST NOT</bcp14> appear in the rekey operat ions (in the GSA_REKEY or GSA_INBAND_REKEY exchanges). | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="wrapped_key"> | ||||
<section anchor="wrapped_key" title="Key Wrapping"> | <name>Key Wrapping</name> | |||
<t>Symmetric keys in G-IKEv2 are never sent in clear inside G-IKEv2 me ssages. | <t>Symmetric keys in G-IKEv2 are never sent in clear inside G-IKEv2 me ssages. | |||
They are always protected with other symmetric keys. This protection i s called key wrapping. | They are always protected with other symmetric keys. This protection i s called key wrapping. | |||
Algorithms used for key wrapping are usually based on generic encrypti on algorithms, | Algorithms used for key wrapping are usually based on generic encrypti on algorithms, | |||
but their mode of operation is optimized for protecting short high-ent ropy data with minimal additional overhead. | but their mode of operation is optimized for protecting short high-ent ropy data with minimal additional overhead. | |||
While in general key wrap algorithms can be generic, in practice they | While key wrap algorithms can be generic in general, they are often ti | |||
are often tied to the underlying | ed to the underlying | |||
encryption algorithms. For example, AES Key Wrap with Padding Algorith | encryption algorithms in practice. For example, AES Key Wrap with Padd | |||
m <xref target="RFC5649" /> defines key wrapping using AES, | ing Algorithm <xref target="RFC5649"/> defines key wrapping using AES, | |||
and Key Wrapping Constructions using SipHash and ChaCha <xref target=" | and Key Wrapping Constructions using SipHash and ChaCha <xref target=" | |||
ARX-KW" /> defines key wrapping using Chacha20. | ARX-KW"/> define key wrapping using Chacha20. | |||
</t> | </t> | |||
<t>In G-IKEv2, the key wrap algorithm <bcp14>MUST</bcp14> be negotiate | ||||
<t> In G-IKEv2 the key wrap algorithm <bcp14>MUST</bcp14> be negotiate | d in the IKE_SA_INIT | |||
d in the IKE_SA_INIT | exchange so that the GCKS is able to send encrypted keys to the GM in | |||
exchange, so that the GCKS be able to send encrypted keys to the GM in | the GSA_AUTH exchange. | |||
the GSA_AUTH exchange. | ||||
In addition, if the GCKS plans to use the multicast Rekey SA for group rekey, then it <bcp14>MUST</bcp14> | In addition, if the GCKS plans to use the multicast Rekey SA for group rekey, then it <bcp14>MUST</bcp14> | |||
specify the key wrap algorithm in the GSA payload. Note that key wrap algorithms | specify the key wrap algorithm in the GSA payload. Note that key wrap algorithms | |||
for these cases <bcp14>MAY</bcp14> be different - for the unicast SA t | for these cases <bcp14>MAY</bcp14> be different. For the unicast SA, t | |||
he key wrap algorithms is negotiated | he key wrap algorithm is negotiated | |||
between the GM and the GCKS, while for the multicast Rekey SA the key | between the GM and the GCKS, while for the multicast Rekey SA, the key | |||
wrap algorithm | wrap algorithm | |||
is provided by the GCKS to the group members as part of the group poli cy. | is provided by the GCKS to the group members as part of the group poli cy. | |||
If SAg payload is included in the GSA_AUTH request, then it <bcp14>MUS | If an SAg payload is included in the GSA_AUTH request, then it <bcp14> | |||
T</bcp14> indicate which key wrap algorithms are supported by the GM. | MUST</bcp14> indicate which key wrap algorithms are supported by the GM. | |||
In all these cases the key wrap algorithm is specified in a Key Wrap A | In all these cases, the key wrap algorithm is specified in a Key Wrap | |||
lgorithm transform <xref target="wrapping_alg"/>. | Algorithm transform (see <xref target="wrapping_alg"/>). | |||
</t> | </t> | |||
<t> The format of the wrapped key is shown in <xref target="key_format | ||||
<t> The format of the wrapped key is shown in <xref target="key_format | "/>. | |||
" />. | ||||
</t> | </t> | |||
<figure title="Wrapped Key Format" anchor="key_format"> | <figure anchor="key_format"> | |||
<preamble></preamble> | <name>Wrapped Key Format</name> | |||
<artwork align="center"><![CDATA[ | <artwork ><![CDATA[ | |||
1 2 3 | 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Key ID | | | Key ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| KWK ID | | | KWK ID | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
~ Encrypted Key ~ | ~ Encrypted Key ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ]]></artwork> | |||
<postamble></postamble> | ||||
</figure> | </figure> | |||
<t>The Wrapped Key fields are defined as follows:</t> | <t>The Wrapped Key fields are defined as follows:</t> | |||
<dl spacing="normal" newline="true"> | ||||
<t><list style="symbols"> | <dt>Key ID (4 octets):</dt><dd>ID of the encrypted key. The value | |||
<t>Key ID (4 octets) -- ID of the encrypted key. The value zero mea | zero means that the encrypted key contains SA keys (in the form of | |||
ns that the encrypted key | keying material; see <xref target="group_sa_keys"/>). Otherwise, | |||
contains SA keys (in the form of keying material, see <xref target= | it contains some intermediate key.</dd> | |||
"group_sa_keys" />)), otherwise it contains some intermediate key.</t> | <dt>KWK ID (4 octets):</dt><dd>ID of the key that was used to | |||
<t>KWK ID (4 octets) -- ID of the key that was used to encrypt key | encrypt the key with a specified Key ID. The value zero means that | |||
with specified Key ID. | the | |||
The value zero means that the default KWK was used to encrypt the k | default KWK was used to encrypt the key. Otherwise, some | |||
ey, otherwise some intermediate | intermediate key was used.</dd> | |||
key was used.</t> | <dt>Encrypted Key (variable):</dt><dd>The encrypted key bits. These | |||
<t>Encrypted Key (variable) -- The encrypted key bits. These bits c | bits comprise either a single encrypted key or a result of | |||
omprise either a single | encryption of a concatenation of keys (key material) for several | |||
encrypted key or a result of encryption of a concatenation of keys | algorithms. The format of this field is determined by the key | |||
(key material) for several algorithms. | wrap algorithm for the SA the wrapped key is sent over.</dd> | |||
The format of this fields is determined by the key wrap algorithm f | </dl> | |||
or the SA the wrapped key is sent over. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="delete"> | ||||
<section anchor="delete" title="Delete Payload"> | <name>Delete Payload</name> | |||
<t> Delete payload is used in G-IKEv2 when the GCKS wants to | <t>Delete payload is used in G-IKEv2 when the GCKS wants to | |||
delete Data-Security and Rekey SAs. The interpretation of the Protocol | delete Data-Security and Rekey SAs. The interpretation of the Protocol | |||
field in the Delete payload is extended, so that zero protocol | field in the Delete payload is extended so that zero protocol | |||
indicates deletion of whole Group SA (i.e. all Data-Security SAs and Rek | indicates deletion of whole Group SA (i.e., all Data-Security SAs and th | |||
ey SA). | e Rekey SA). | |||
See <xref target="deletion" /> for detail. | See <xref target="deletion"/> for detail. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="notify"> | ||||
<section anchor="notify" title="Notify Payload"> | <name>Notify Payload</name> | |||
<t>G-IKEv2 uses the same Notify payload as specified in <xref | <t>G-IKEv2 uses the same Notify payload as specified in <xref target="RF | |||
target="RFC7296"></xref>, section 3.10. | C7296" sectionFormat="of" section="3.10"/>. | |||
</t> | </t> | |||
<t>There are additional Notify Message types introduced by G-IKEv2 to | <t>There are additional Notify Message types introduced by G-IKEv2 to | |||
communicate error conditions and status (see <xref target="IANA" />). | communicate error conditions and status (see <xref target="IANA"/>). | |||
</t> | </t> | |||
<section anchor="inv_gr_id"> | ||||
<section anchor="inv_gr_id" title="INVALID_GROUP_ID Notification"> | <name>INVALID_GROUP_ID Notification</name> | |||
<t>INVALID_GROUP_ID (45) is a new error type notification that indicat es that | <t>INVALID_GROUP_ID (45) is a new error type notification that indicat es that | |||
the group ID sent during the registration process is invalid. | the group ID sent during the registration process is invalid. | |||
The Protocol ID and SPI Size fields in the Notify payload <bcp14>MUST< /bcp14> be zero. | The Protocol ID and SPI Size fields in the Notify payload <bcp14>MUST< /bcp14> be zero. | |||
There is no data associated with this notification and the content of the | There is no data associated with this notification and the content of the | |||
Notification Data field <bcp14>MUST</bcp14> be ignored on receipt. | Notification Data field <bcp14>MUST</bcp14> be ignored on receipt. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="autz_failed"> | ||||
<section anchor="autz_failed" title="AUTHORIZATION_FAILED Notification"> | <name>AUTHORIZATION_FAILED Notification</name> | |||
<t>AUTHORIZATION_FAILED (46) is a new error type notification that is sent in | <t>AUTHORIZATION_FAILED (46) is a new error type notification that is sent in | |||
the response to a GSA_AUTH or GSA_REGISTRATION message when authorizat ion failed. | the response to a GSA_AUTH or GSA_REGISTRATION message when authorizat ion failed. | |||
The Protocol ID and SPI Size fields in the Notify payload <bcp14>MUST< /bcp14> be zero. | The Protocol ID and SPI Size fields in the Notify payload <bcp14>MUST< /bcp14> be zero. | |||
There is no data associated with this notification and the content of the | There is no data associated with this notification and the content of the | |||
Notification Data field <bcp14>MUST</bcp14> be ignored on receipt. | Notification Data field <bcp14>MUST</bcp14> be ignored on receipt. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="reg_failed"> | ||||
<section anchor="reg_failed" title="REGISTRATION_FAILED Notification"> | <name>REGISTRATION_FAILED Notification</name> | |||
<t>REGISTRATION_FAILED (<TBA>) is a new error type notification | <t>REGISTRATION_FAILED (49) is a new error type notification that is s | |||
that is sent | ent | |||
by the GCKS when the GM registration request cannot be satisfied | by the GCKS when the GM registration request cannot be satisfied | |||
for the reasons not related to this particular GM, for example if | for reasons not related to this particular GM, e.g., if | |||
the capacity of the group is exceeded. | the capacity of the group is exceeded. | |||
The Protocol ID and SPI Size fields in the Notify payload <bcp14>MUST< /bcp14> be zero. | The Protocol ID and SPI Size fields in the Notify payload <bcp14>MUST< /bcp14> be zero. | |||
There is no data associated with this notification and the content of the | There is no data associated with this notification and the content of the | |||
Notification Data field <bcp14>MUST</bcp14> be ignored on receipt. | Notification Data field <bcp14>MUST</bcp14> be ignored on receipt. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="sender"> | ||||
<section anchor="sender" title="GROUP_SENDER Notification"> | <name>GROUP_SENDER Notification</name> | |||
<t>GROUP_SENDER (16429) is a new status type notification that is sent in | <t>GROUP_SENDER (16429) is a new status type notification that is sent in | |||
the GSA_AUTH or the GSA_REGISTRATION exchanges to indicate that the GM | 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 | intends to be sender of data traffic. The data includes a count of | |||
how many Sender-ID values the GM desires. The count <bcp14>MUST</bcp14 > be 4 octets long | how many Sender-ID values the GM desires. The count <bcp14>MUST</bcp14 > be 4 octets long | |||
and contain the big endian representation of the number of | and contain the big-endian representation of the number of | |||
requested Sender-IDs. The Protocol ID and SPI Size fields in the Notif y payload <bcp14>MUST</bcp14> be zero. | requested Sender-IDs. The Protocol ID and SPI Size fields in the Notif y payload <bcp14>MUST</bcp14> be zero. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | ||||
<section title="Authentication Payload"> | <name>Authentication Payload</name> | |||
<t>G-IKEv2 uses the same Authentication payload as specified in <xref | <t>G-IKEv2 uses the same Authentication payload as specified in <xref | |||
target="RFC7296"></xref>, section 3.8, to authenticate the rekey message | target="RFC7296" sectionFormat="of" section="3.8"/> to | |||
. | authenticate the rekey message. However, if it is used in the | |||
However, if it is used in the GSA_REKEY messages the content of the payl | GSA_REKEY messages, the content of the payload is computed differently | |||
oad | as described in <xref target="gsa_rekey_auth"/>. | |||
is computed differently, as described in <xref target="gsa_rekey_auth" / | ||||
>. | ||||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="restrictions"> | ||||
<section anchor="restrictions" title="Using G-IKEv2 Attributes"> | <name>Using G-IKEv2 Attributes</name> | |||
<t>G-IKEv2 defines a number of attributes, that are used to convey informa | <t>G-IKEv2 defines a number of attributes that are used to convey informat | |||
tion | ion | |||
from GCKS to GMs. There are some restrictions on where and when these attr | from the GCKS to GMs. There are some restrictions on where and when these | |||
ibutes | attributes | |||
can appear in G-IKEv2 messages, which are defined when the attributes are introduced. | can appear in G-IKEv2 messages, which are defined when the attributes are introduced. | |||
For convenience these restrictions are summarized in <xref target="mcast_a | For convenience, these restrictions are summarized in <xref target="mcast_ | |||
ttr" /> (for | attr"/> (for | |||
multicast rekey operations) and <xref target="inband_attr" /> (for inband | multicast rekey operations) and <xref target="inband_attr"/> (for inband r | |||
rekey operations) below. | ekey operations) below. | |||
</t> | ||||
<t>The following notations are used: | ||||
</t> | </t> | |||
<dl newline="false" spacing="normal" indent="5"> | ||||
<dt>S</dt> | ||||
<dd> | ||||
A single attribute of this type <bcp14>MUST</bcp14> be present. | ||||
</dd> | ||||
<dt>M</dt> | ||||
<dd> | ||||
Multiple attributes of this type <bcp14>MAY</bcp14> be present. | ||||
</dd> | ||||
<dt>[]</dt> | ||||
<dd> | ||||
Attribute is <bcp14>OPTIONAL</bcp14>. | ||||
</dd> | ||||
<dt>-</dt> | ||||
<dd> | ||||
Attribute <bcp14>MUST NOT</bcp14> be present. | ||||
</dd> | ||||
</dl> | ||||
<t> | ||||
<!-- [rfced] The following sentence is hard to parse. Would either of | ||||
the following proposals improve readability and retain the | ||||
sentence's original meaning? | ||||
<t>The following notation is used: | Original: | |||
<list style="hanging" hangIndent="6" > | Note, that the restrictions are defined per a substructure | |||
<t hangText = "S" > | corresponding attributes are defined for and not per whole G-IKEv2 | |||
A single attribute of this type <bcp14>MUST</bcp14> be present | message. | |||
</t> | ||||
<t hangText = "M" > | Perhaps A: | |||
Multiple attributes of this type <bcp14>MAY</bcp14> be present | Note that the restrictions are defined per a substructure | |||
</t> | corresponding to the attributes that are defined and not | |||
<t hangText = "[]" > | per a whole G-IKEv2 message. | |||
Attribute is <bcp14>OPTIONAL</bcp14> | ||||
</t> | or | |||
<t hangText = "-" > | Perhaps B: | |||
Attribute <bcp14>MUST NOT</bcp14> be present | Note that the restrictions are defined per a substructure for which | |||
</t> | corresponding attributes are defined and not per a whole | |||
</list> | G-IKEv2 message. | |||
Note, that the restrictions are defined per a substructure corresponding a | --> | |||
ttributes | Note that the restrictions are defined per a substructure corresponding at | |||
tributes | ||||
are defined for and not per whole G-IKEv2 message. | are defined for and not per whole G-IKEv2 message. | |||
</t> | </t> | |||
<table anchor="mcast_attr"> | <table anchor="mcast_attr"> | |||
<name>Attributes in G-IKEv2 exchanges with multicast rekey operations</n ame> | <name>Attributes in G-IKEv2 Exchanges with Multicast Rekey Operations</n ame> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th>Attributes</th> | <th>Attributes</th> | |||
<th align="center">GSA_AUTH GSA_REGISTRATION</th> | <th >GSA_AUTH GSA_REGISTRATION</th> | |||
<th align="center">GSA_REKEY</th> | <th >GSA_REKEY</th> | |||
<th>Notes</th> | <th>Notes</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<th colspan="4" align="center">GSA Attributes (<xref target="gsa_att r" />)</th> | <th colspan="4" >GSA Attributes (<xref target="gsa_attr"/>)</th> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GSA_KEY_LIFETIME</td> | <td>GSA_KEY_LIFETIME</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GSA_INITIAL_MESSAGE_ID</td> | <td>GSA_INITIAL_MESSAGE_ID</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GSA_NEXT_SPI</td> | <td>GSA_NEXT_SPI</td> | |||
<td align="center">[M]</td> | <td >[M]</td> | |||
<td align="center">[M]</td> | <td >[M]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<th colspan="4" align="center">GW Policy Attributes (<xref target="g wp_attr" />)</th> | <th colspan="4" >GW Policy Attributes (<xref target="gwp_attr"/>)</t h> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GWP_ATD</td> | <td>GWP_ATD</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GWP_DTD</td> | <td>GWP_DTD</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GWP_SENDER_ID_BITS</td> | <td>GWP_SENDER_ID_BITS</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">1</td> | <td >1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<th colspan="4" align="center">Key Bag Attributes (<xref target="key _bag" />)</th> | <th colspan="4" >Key Bag Attributes (<xref target="key_bag"/>)</th> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SA_KEY</td> | <td>SA_KEY</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center">S[M]</td> | <td >S[M]</td> | |||
<td align="center">2</td> | <td >2</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>WRAP_KEY</td> | <td>WRAP_KEY</td> | |||
<td align="center">[M]</td> | <td >[M]</td> | |||
<td align="center">[M]</td> | <td >[M]</td> | |||
<td align="center">3</td> | <td >3</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>AUTH_KEY</td> | <td>AUTH_KEY</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">4</td> | <td >4</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GM_SENDER_ID</td> | <td>GM_SENDER_ID</td> | |||
<td align="center">S[M]</td> | <td >S[M]</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">1</td> | <td >1</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
<tfoot> | ||||
<tr> | ||||
<td colspan="4"> | ||||
<t> | ||||
Notes: | ||||
<list style="hanging" hangIndent="6" > | ||||
<t hangText = "(1)" > | ||||
The GWP_SENDER_ID_BITS attribute <bcp14>MUST</bcp14> be pres | ||||
ent if the GCKS policy includes at least one | ||||
cipher in counter mode of operation and the GM included the | ||||
GROUP_SENDER notify into the registration request. | ||||
Otherwise it <bcp14>MUST NOT</bcp14> be present. At least on | ||||
e GM_SENDER_ID attribute <bcp14>MUST</bcp14> be present | ||||
in the former case (and more <bcp14>MAY</bcp14> be present i | ||||
f the GM requested more Sender-IDs) | ||||
and it <bcp14>MUST NOT</bcp14> be present in the latter case | ||||
. | ||||
</t> | ||||
<t hangText="(2)" > | ||||
For a Data-Security SA exactly one SA_KEY attribute <bcp14>M | ||||
UST</bcp14> be present. | ||||
For a Rekey SA one SA_KEY attribute <bcp14>MUST</bcp14> be p | ||||
resent in all cases and | ||||
more these attributes <bcp14>MAY</bcp14> be present in GSA_R | ||||
EKEY exchange. | ||||
</t> | ||||
<t hangText = "(3)" > | ||||
The WRAP_KEY attributes <bcp14>MUST</bcp14> be present if th | ||||
e GCKS employs key management | ||||
method that relies on key tree (like LKH). | ||||
</t> | ||||
<t hangText = "(4)" > | ||||
The AUTH_KEY attribute <bcp14>MUST</bcp14> be present in the | ||||
GSA_AUTH / GSA_REGISTRATION exchanges | ||||
if the GCKS employs authentication method of rekey operation | ||||
s based on digital signatures and <bcp14>MUST NOT</bcp14> be present | ||||
if implicit authentication is employed. The AUTH_KEY attribu | ||||
te <bcp14>MUST</bcp14> be present | ||||
in the GSA_REKEY exchange if the GCKS employs authentication | ||||
method | ||||
based on digital signatures and wants to change the public k | ||||
ey for the following multicast rekey | ||||
operations. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</td> | ||||
</tr> | ||||
</tfoot> | ||||
</table> | </table> | |||
<t>Notes:</t> | ||||
<dl newline="false" spacing="normal" indent="6"> | ||||
<dt>(1):</dt> | ||||
<dd>The GWP_SENDER_ID_BITS attribute <bcp14>MUST</bcp14> be present | ||||
if the GCKS policy includes at least one cipher in counter mode of | ||||
operation and if the GM included the GROUP_SENDER notify into the | ||||
registration request. Otherwise, it <bcp14>MUST NOT</bcp14> be | ||||
present. At least one GM_SENDER_ID attribute <bcp14>MUST</bcp14> be | ||||
present in the former case (and more <bcp14>MAY</bcp14> be present if | ||||
the GM requested more Sender-IDs), and it <bcp14>MUST NOT</bcp14> be | ||||
present in the latter case.</dd> | ||||
<dt>(2):</dt> | ||||
<!--[rfced] How may we update this sentence to clarify "and more these | ||||
attributes MAY be present"? Perhaps "one or more SA_KEY | ||||
attributes MAY be present in a GSA_REKEY exchange"? | ||||
Current: | ||||
For a Data-Security SA, exactly one SA_KEY attribute MUST be | ||||
present. For a Rekey SA, one SA_KEY attribute MUST be present in all | ||||
cases and more these attributes MAY be present in a GSA_REKEY exchange. | ||||
Perhaps: | ||||
For a Data-Security SA, exactly one SA_KEY attribute MUST be | ||||
present. For a Rekey SA, one SA_KEY attribute MUST be present in all | ||||
cases and one or more SA_KEY attributes MAY be present in a GSA_REKEY | ||||
exchange. | ||||
--> | ||||
<dd>For a Data-Security SA, exactly one SA_KEY attribute | ||||
<bcp14>MUST</bcp14> be present. For a Rekey SA, one SA_KEY attribute | ||||
<bcp14>MUST</bcp14> be present in all cases and more these attributes | ||||
<bcp14>MAY</bcp14> be present in a GSA_REKEY exchange.</dd> | ||||
<dt>(3):</dt> | ||||
<dd>The WRAP_KEY attribute <bcp14>MUST</bcp14> be present if the | ||||
GCKS employs a key management method that relies on a key tree (like LKH | ||||
).</dd> | ||||
<dt>(4):</dt> | ||||
<dd>The AUTH_KEY attribute <bcp14>MUST</bcp14> be present in the | ||||
GSA_AUTH and GSA_REGISTRATION exchanges if the GCKS employs | ||||
an authentication method of rekey operations based on digital signatures | ||||
and <bcp14>MUST NOT</bcp14> be present if implicit authentication is | ||||
employed. The AUTH_KEY attribute <bcp14>MUST</bcp14> be present in the | ||||
GSA_REKEY exchange if the GCKS employs an authentication method based on | ||||
digital signatures and wants to change the public key for the | ||||
following multicast rekey operations.</dd> | ||||
</dl> | ||||
<table anchor="inband_attr"> | <table anchor="inband_attr"> | |||
<name>Attributes in G-IKEv2 exchanges with inband rekey operations</name > | <name>Attributes in G-IKEv2 Exchanges with Inband Rekey Operations</name > | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th>Attributes</th> | <th>Attributes</th> | |||
<th align="center">GSA_AUTH GSA_REGISTRATION</th> | <th >GSA_AUTH GSA_REGISTRATION</th> | |||
<th align="center">GSA_INBAND_REKEY</th> | <th >GSA_INBAND_REKEY</th> | |||
<th>Notes</th> | <th>Notes</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<th colspan="4" align="center">GSA Attributes (<xref target="gsa_att r" />)</th> | <th colspan="4" >GSA Attributes (<xref target="gsa_attr"/>)</th> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GSA_KEY_LIFETIME</td> | <td>GSA_KEY_LIFETIME</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GSA_INITIAL_MESSAGE_ID</td> | <td>GSA_INITIAL_MESSAGE_ID</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GSA_NEXT_SPI</td> | <td>GSA_NEXT_SPI</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<th colspan="4" align="center">GW Policy Attributes (<xref target="g wp_attr" />)</th> | <th colspan="4" >GW Policy Attributes (<xref target="gwp_attr"/>)</t h> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GWP_ATD</td> | <td>GWP_ATD</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GWP_DTD</td> | <td>GWP_DTD</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center">[S]</td> | <td >[S]</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GWP_SENDER_ID_BITS</td> | <td>GWP_SENDER_ID_BITS</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">1</td> | <td >1</td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<th colspan="4" align="center">Key Bag Attributes (<xref target="key _bag" />)</th> | <th colspan="4" >Key Bag Attributes (<xref target="key_bag"/>)</th> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>SA_KEY</td> | <td>SA_KEY</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center">S</td> | <td >S</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>WRAP_KEY</td> | <td>WRAP_KEY</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>AUTH_KEY</td> | <td>AUTH_KEY</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center"></td> | <td /> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td>GM_SENDER_ID</td> | <td>GM_SENDER_ID</td> | |||
<td align="center">S[M]</td> | <td >S[M]</td> | |||
<td align="center">-</td> | <td >-</td> | |||
<td align="center">1</td> | <td >1</td> | |||
</tr> | </tr> | |||
</tbody> | </tbody> | |||
<tfoot> | ||||
<tr> | ||||
<td colspan="4"> | ||||
<t> | ||||
Notes: | ||||
<list style="hanging" hangIndent="6" > | ||||
<t hangText = "(1)" > | ||||
The GWP_SENDER_ID_BITS attribute <bcp14>MUST</bcp14> be pr | ||||
esent if the GCKS policy includes at least one | ||||
cipher in counter mode of operation and the GM included th | ||||
e GROUP_SENDER notify into the registration request. | ||||
Otherwise it <bcp14>MUST NOT</bcp14> be present. At least | ||||
one GM_SENDER_ID attribute <bcp14>MUST</bcp14> be present | ||||
in the former case (and more <bcp14>MAY</bcp14> be present | ||||
if the GM requested more Sender-IDs) | ||||
and it <bcp14>MUST NOT</bcp14> be present in the latter ca | ||||
se. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</td> | ||||
</tr> | ||||
</tfoot> | ||||
</table> | </table> | |||
</section> | <t>Notes:</t> | |||
<dl newline="false" spacing="normal" indent="6"> | ||||
<dt>(1):</dt> | ||||
<dd>The GWP_SENDER_ID_BITS attribute <bcp14>MUST</bcp14> be present if | ||||
the GCKS policy includes at least one cipher in counter mode of | ||||
operation and the GM included the GROUP_SENDER notify into the | ||||
registration request. Otherwise, it <bcp14>MUST NOT</bcp14> be | ||||
present. At least one GM_SENDER_ID attribute <bcp14>MUST</bcp14> be | ||||
present in the former case (and more <bcp14>MAY</bcp14> be present if | ||||
the GM requested more Sender-IDs), and it <bcp14>MUST NOT</bcp14> be | ||||
present in the latter case.</dd> | ||||
</dl> | ||||
<section title="Interaction with IKEv2 and ESP Extensions" anchor="ike_ext" | </section> | |||
> | <section anchor="ike_ext"> | |||
<t>A number of IKEv2 and ESP extensions is defined that can be used to ext | <name>Interaction with IKEv2 and ESP Extensions</name> | |||
end | <t>A number of IKEv2 and ESP extensions are defined that can be used to ex | |||
tend | ||||
protocol functionality. G-IKEv2 is compatible with most of them. | protocol functionality. G-IKEv2 is compatible with most of them. | |||
In particular, EAP authentication defined in <xref target="RFC7296" /> can | In particular, EAP authentication defined in <xref target="RFC7296"/> can | |||
be used | be used | |||
to establish registration IKE SA, as well as EAP-only authentication <xref | to establish registration IKE SA, as well as EAP-only authentication <xref | |||
target="RFC5998" /> and | target="RFC5998"/> and | |||
Secure Password authentication <xref target="RFC6467" />. | secure password authentication <xref target="RFC6467"/>. | |||
G-IKEv2 is compatible with and can use IKEv2 Redirect Mechanism <xref targ | G-IKEv2 is compatible with and can use IKEv2 Redirect Mechanism <xref targ | |||
et="RFC5685" /> and | et="RFC5685"/> and | |||
IKEv2 Session Resumption <xref target="RFC5723"></xref>. | IKEv2 Session Resumption <xref target="RFC5723"/>. | |||
G-IKEv2 is also compatible with Multiple Key Exchanges in IKEv2 | G-IKEv2 is also compatible with Multiple Key Exchanges in the IKEv2 | |||
framework, defined in <xref target="RFC9370" />. | framework, as defined in <xref target="RFC9370"/>. | |||
</t> | </t> | |||
<t>The above list of compatible IKEv2 extensions is not exhaustive. Howeve | ||||
<t>The above list of compatible IKEv2 extensions is not exhaustive, howeve | r, some IKEv2 | |||
r some IKEv2 | ||||
extensions require special handling if used in G-IKEv2. | extensions require special handling if used in G-IKEv2. | |||
</t> | </t> | |||
<section> | ||||
<section title="Implicit IV for Counter-Based Ciphers in ESP"> | <name>Implicit IV for Counter-Based Ciphers in ESP</name> | |||
<t> Using implicit IV for counter-based encryption modes in ESP is defin | <t> Using implicit IV for counter-based encryption modes in ESP is defin | |||
ed in <xref target="RFC8750" />. | ed in <xref target="RFC8750"/>. | |||
This extension relies on the uniqueness of ESP sequence numbers. Thus, i t cannot be used for multi-sender | This extension relies on the uniqueness of ESP sequence numbers. Thus, i t cannot be used for multi-sender | |||
multicast SAs. However, it is possible to use implicit IV extension for a single-sender multicast ESP SA. | multicast SAs. However, it is possible to use implicit IV extension for a single-sender multicast ESP SA. | |||
Note, that while implicit IVs can be used with ESN, using ESN is prohibi | Note that while implicit IVs can be used with ESN, using ESN is prohibit | |||
ted | ed | |||
in multicast SAs (see <xref target="antireplay" />). | in multicast SAs (see <xref target="antireplay"/>). | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Mixing Preshared Keys in IKEv2 for Post-quantum Security"> | <name>Mixing Preshared Keys in IKEv2 for Post-Quantum Security</name> | |||
<t> G-IKEv2 can take advantage of the protection provided by | <t>G-IKEv2 can take advantage of the protection provided by | |||
Postquantum Preshared Keys (PPK) for IKEv2 <xref | Post-quantum Preshared Keys (PPKs) for IKEv2 <xref target="RFC8784"/>. H | |||
target="RFC8784"></xref>. However, the use of | owever, the use of | |||
PPK leaves the initial IKE SA susceptible to quantum | PPKs leaves the initial IKE SA susceptible to quantum | |||
computer (QC) attacks. Group SA keys are protected with | computer (QC) attacks. Group SA keys are protected with | |||
the default KWK (GSK_w), which is derived from SK_d and thus | the default KWK (GSK_w), which is derived from SK_d and thus | |||
cannot be broken even by attacker equipped with a QC. | cannot be broken even by an attacker equipped with a QC. | |||
However, other data sent over the initial IKE SA may | However, other data sent over the initial IKE SA may | |||
be susceptible to an attacker equipped with a QC of a sufficient size. S uch an attacker can store all the traffic | be susceptible to an attacker equipped with a QC of a sufficient size. S uch an attacker can store all the traffic | |||
until it obtains such a QC and then decrypt it (Store Now Decrypt Later | until it obtains such a QC and then decrypt it (i.e., Store Now Decrypt | |||
attack). | Later attack). | |||
See Section 6 of <xref target="RFC8784" /> for details. | See <xref target="RFC8784" sectionFormat="of" section="6"/> for details. | |||
</t> | </t> | |||
<t>While the group keys are protected with PPK and thus are immune to QC , GCKS implementations that care about other data sent over initial IKE SA | <t>While the group keys are protected with PPK and thus are immune to QC , GCKS implementations that care about other data sent over initial IKE SA | |||
<bcp14>MUST</bcp14> rely on IKEv2 extensions that protect even initial I KE SA against QC | <bcp14>MUST</bcp14> rely on IKEv2 extensions that protect even initial I KE SA against QC | |||
(like <xref target="I-D.ietf-ipsecme-ikev2-qr-alt" />). | (like <xref target="I-D.ietf-ipsecme-ikev2-qr-alt"/>). | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Aggregation and Fragmentation Mode for ESP"> | <name>Aggregation and Fragmentation Mode for ESP</name> | |||
<t> Aggregation and fragmentation mode for ESP is defined in <xref targe | <t>Aggregation and fragmentation mode for ESP is defined in <xref target | |||
t="RFC9347" />. This mode allows IP packets to | ="RFC9347"/>. This mode allows IP packets to | |||
be split over several ESP packets, or several IP packets to be aggregate | be split over several ESP packets or several IP packets to be aggregated | |||
d in a single ESP packet. | in a single ESP packet. | |||
This mode can only be used with ESP tunnel mode and relies on monotonica lly increasing sequence numbers | This mode can only be used with ESP tunnel mode and relies on monotonica lly increasing sequence numbers | |||
in the incoming packets. Thus, it is impossible to use this mode for mul ti-sender multicast SAs. | in the incoming packets. Thus, it is impossible to use this mode for mul ti-sender multicast SAs. | |||
Since multicast Data-Security SAs are unidirectional, the congestion con trol feature of aggregation and fragmentation mode cannot be used. | Since multicast Data-Security SAs are unidirectional, the congestion con trol feature of aggregation and fragmentation mode cannot be used. | |||
</t> | </t> | |||
<t> It is possible to use the aggregation and fragmentation mode without congestion control for a single-sender multicast ESP SA created in tunnel mode. | <t> It is possible to use the aggregation and fragmentation mode without congestion control for a single-sender multicast ESP SA created in tunnel mode. | |||
GMs supporting this mode can send the USE_AGGFRAG notification in the re gistration request along with the SAg payload. | GMs supporting this mode can send the USE_AGGFRAG notification in the re gistration request along with the SAg payload. | |||
If the Data-Security SA(s) to be installed on GMs use the aggregation an d fragmentation mode, the GCKS would indicate it by including | If the Data-Security SA(s) to be installed on GMs uses the aggregation a nd fragmentation mode, the GCKS would indicate it by including | |||
the USE_AGGFRAG notification along with the GSA payload in its response. | the USE_AGGFRAG notification along with the GSA payload in its response. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="gdoi_ext"> | ||||
<section title="GDOI Protocol Extensions" anchor="gdoi_ext"> | <name>GDOI Protocol Extensions</name> | |||
<t> Few extensions were defined for GDOI protocol <xref target="RFC6407" | <t> Few extensions were defined for the GDOI protocol <xref target="RFC640 | |||
/>, like | 7"/>, like | |||
GDOI Support for IEC 62351 Security Services <xref target="RFC8052" /> o | GDOI Support for IEC 62351 Security Services <xref target="RFC8052"/> or | |||
r GDOI GROUPKEY-PUSH Acknowledgement Message <xref target="RFC8263" />. | the GDOI GROUPKEY-PUSH Acknowledgement Message <xref target="RFC8263"/>. | |||
It is expected that these extensions will be redefined for G-IKEv2 in se parate documents, if needed. | It is expected that these extensions will be redefined for G-IKEv2 in se parate documents, if needed. | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Security Considerations"> | <name>Security Considerations</name> | |||
<t> When an entity joins the group and becomes a group member, it has to | <t> When an entity joins the group and becomes a group member, it has to | |||
trust the GCKS that only authorized entities are admitted to the group and | trust that the GCKS only authorized entities that are admitted to the grou | |||
has to trust other group members that they will not leak the information s | p and | |||
hared within the group. | has to trust that other group members will not leak the information shared | |||
within the group. | ||||
</t> | </t> | |||
<section> | ||||
<section title="GSA Registration and Secure Channel"> | <name>GSA Registration and Secure Channel</name> | |||
<t>G-IKEv2 registration exchange uses IKEv2 IKE_SA_INIT protocols, | <t>G-IKEv2 registration exchange uses IKEv2 IKE_SA_INIT protocols, | |||
inheriting all the security considerations documented in the Section 5 o | inheriting all the security considerations documented in <xref target="R | |||
f <xref target="RFC7296"/>, | FC7296" sectionFormat="of" section="5"/>, | |||
including authentication, confidentiality, protection against man-in-the | including authentication, confidentiality, protection against man-in-the | |||
-middle, | -middle attacks, | |||
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 | protection. The GSA_AUTH and GSA_REGISTRATION exchanges also take | |||
advantage of those protections. In addition, G-IKEv2 brings in the | advantage of those protections. In addition, G-IKEv2 brings in the | |||
capability to authorize a particular group member regardless of | capability to authorize a particular group member regardless of | |||
whether they have the IKEv2 credentials.</t> | whether they have the IKEv2 credentials.</t> | |||
</section> | </section> | |||
<section> | ||||
<section title="GSA Maintenance Channel"> | <name>GSA Maintenance Channel</name> | |||
<t>The GSA maintenance channel is cryptographically and integrity | <t>The GSA maintenance channel is cryptographically and integrity | |||
protected using the cryptographic algorithm and key negotiated in the | protected using the cryptographic algorithm and key negotiated in the | |||
GSA member registration exchange.</t> | GSA member registration exchange.</t> | |||
<section> | ||||
<section title="Authentication/Authorization"> | <name>Authentication/Authorization</name> | |||
<t>The authentication key is distributed during the GM registration, | <t>The authentication key is distributed during the GM registration | |||
and the receiver of the rekey message uses that key to verify the mess age came | and the receiver of the rekey message uses that key to verify the mess age came | |||
from the authorized GCKS. An implicit authentication can also be used, | from the authorized GCKS. | |||
in which case the ability of the GM to decrypt and to verify ICV | ||||
<!--[rfced] How may we clarify this sentence? Is the sender proven to | ||||
be a member of the group when the GM "decrypts and verifies the | ||||
ICV"? | ||||
Original: | ||||
An implicit authentication can also be used, in which case, | ||||
the ability of the GM to decrypt and to verify ICV of the | ||||
received message proved that a sender of the message is a | ||||
member of the group. | ||||
Perhaps: | ||||
An implicit authentication can also be used, in which case | ||||
the GM decrypts and verifies the ICV of the received | ||||
message to prove that a sender of the message is a | ||||
member of the group. | ||||
--> | ||||
An implicit authentication can also be used, | ||||
in which case, the ability of the GM to decrypt and to verify ICV | ||||
of the received message proved that a sender of the message is a membe r of the group. | of the received message proved that a sender of the message is a membe r of the group. | |||
However, implicit authentication doesn't provide source origin authent ication, so the GM cannot be sure | However, implicit authentication doesn't provide source origin authent ication, so the GM cannot be sure | |||
that the message came from the GCKS. For this reason using implicit | that the message came from the GCKS. For this reason, using implicit | |||
authentication is <bcp14>NOT RECOMMENDED</bcp14> | authentication is <bcp14>NOT RECOMMENDED</bcp14> | |||
unless used with a small group of trusted parties. | unless used with a small group of trusted parties. | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Confidentiality"> | <name>Confidentiality</name> | |||
<t>Confidentiality is provided by distributing a confidentiality key | <t>Confidentiality is provided by distributing a confidentiality key | |||
as part of the GSA member registration exchange.</t> | as part of the GSA member registration exchange.</t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Man-in-the-Middle Attack Protection"> | <name>Man-in-the-Middle Attack Protection</name> | |||
<t>GSA maintenance channel is integrity protected by using a digital | <t>The GSA maintenance channel is integrity protected by using a digit | |||
al | ||||
signature.</t> | signature.</t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Replay/Reflection Attack Protection"> | <name>Replay/Reflection Attack Protection</name> | |||
<t>The GSA_REKEY message includes a monotonically increasing | <t>The GSA_REKEY message includes a monotonically increasing | |||
sequence number to protect against replay and reflection attacks. A | sequence number to protect against replay and reflection attacks. A | |||
group member will recognize a replayed message by comparing the | group member will recognize a replayed message by comparing the | |||
Message ID number to that of the last received rekey message, any | Message ID number to that of the last received rekey message. Any | |||
rekey message containing a Message ID number less than or equal to | rekey message containing a Message ID number less than or equal to | |||
the last received value <bcp14>MUST</bcp14> be discarded. Implementati ons should | the last received value <bcp14>MUST</bcp14> be discarded. Implementati ons should | |||
keep a record of recently received GSA rekey messages for this | keep a record of recently received GSA rekey messages for this | |||
comparison.</t> | comparison.</t> | |||
<t>The strict role separation between the GCKS and the GMs and, as a c onsequence, | <t>The strict role separation between the GCKS and the GMs and, as a c onsequence, | |||
the limitation for Rekey SA to be outbound/inbound only, helps to prev ent reflection attack. | the limitation for a Rekey SA to be outbound/inbound only, helps to pr event reflection attack. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="IANA"> | ||||
<name>IANA Considerations</name> | ||||
<section> | ||||
<name>New Registries</name> | ||||
<t>Per this document, new registries have been created for G-IKEv2 under | ||||
the "Internet Key Exchange Version 2 (IKEv2) Parameters" registry group <xref t | ||||
arget="IKEV2-IANA"/>. The terms | ||||
Reserved, Expert Review, and Private Use are as defined | ||||
in <xref target="RFC8126"/>.</t> | ||||
<section anchor="IANA" title="IANA Considerations"> | <!-- [rfced] We have included some specific questions about the IANA | |||
<section title="Note for Reviewers"> | text below. In addition to responding to those questions, please | |||
<t> **** RFC Editor, please DELETE this Section prior to publication! | review all of the IANA-related updates carefully, including the | |||
**** | IANA values in the running text, and let us know if any further | |||
</t> | updates are needed. | |||
<t> While reviewing the document please note, that some of the codepoi | Please refer to the following URL to view the IANA registries: | |||
nts, that this draft claims | <https://www.iana.org/assignments/ikev2-parameters/> | |||
to have allocated, in fact have been allocated by its predecessor, dra | ||||
ft-yeung-g-ikev2-07 in 2013, | ||||
as part of the early codepoint assignment. This documents makes use of | ||||
these already allocated | ||||
codepoints, renames one of them and allocates additional codepoints. N | ||||
ote also, that the semantics | ||||
of the codepoints allocated by draft-yeung-g-ikev2-07 is preserved, in | ||||
cluding for the renamed one. | ||||
</t> | ||||
</section> | ||||
<section title="New Registries"> | a) For Tables 3-7 and 11-16, may we order the "Value" columns first to match | |||
<t>A new set of registries is created for G-IKEv2 on IKEv2 | the corresponding IANA registries? | |||
parameters page <xref target="IKEV2-IANA" />. The terms | ||||
Reserved, Expert Review and Private Use are to be applied as defined | ||||
in <xref target="RFC8126"></xref>.</t> | ||||
<ol> | b) FYI: For Tables 11-16, we updated "Private Use" to "Reserved | |||
<li> | for Private Use" to match the corresponding IANA registries. | |||
<t>This document creates a new IANA registry "Transform Type <TBA> | ||||
-- Key Wrap Algorithm Transform IDs". | ||||
The initial values of the new registry are: | ||||
<figure> | ||||
<preamble></preamble> | ||||
<artwork align="left"><![CDATA[ | ||||
Key Wrap Algorithm Value | ||||
Reserved 0 | ||||
KW_5649_128 1 | ||||
KW_5649_192 2 | ||||
KW_5649_256 3 | ||||
KW_ARX 4 | ||||
Unassigned 5-1023 | ||||
Private Use 1024-65535 | ||||
]]></artwork> | ||||
</figure> | ||||
Changes and additions to the unassigned range of this registry are by | ||||
the Expert Review Policy <xref target="RFC8126" />.</t> | ||||
</li> | ||||
<li> | c) Please clarify the text below. Was "new registrations" perhaps | |||
<t>This document creates a new IANA registry "Transform Type <TBA> | intended rather than "changes and additions to the unassigned range"? | |||
-- Group Controller Authentication Method Transform IDs". | Note that there are multiple instances. | |||
The initial values of the new registry are: | ||||
<figure> | ||||
<preamble></preamble> | ||||
<artwork align="left"><![CDATA[ | ||||
Group Controller Authentication Method Value | ||||
Reserved 0 | ||||
Implicit 1 | ||||
Digital Signature 2 | ||||
Unassigned 3-1023 | ||||
Private Use 1024-65535 | ||||
]]></artwork> | ||||
</figure> | ||||
Changes and additions to the unassigned range of this registry are by | ||||
the Expert Review Policy <xref target="RFC8126" />.</t> | ||||
</li> | ||||
<li> | Original: | |||
<t>This document creates a new IANA registry "GSA Attributes". The initi | Changes and additions to the unassigned range of this registry | |||
al values of the new registry are: | are by the Expert Review Policy [RFC8126]. | |||
<figure> | ||||
<preamble></preamble> | ||||
<artwork align="left"><![CDATA[ | ||||
GSA Attributes Value Format Multi-Valued Used in Protocol | ||||
Reserved 0 | ||||
GSA_KEY_LIFETIME 1 TLV NO GIKE_UPDATE, AH, ESP | ||||
GSA_INITIAL_MESSAGE_ID 2 TLV NO GIKE_UPDATE | ||||
GSA_NEXT_SPI 3 TLV YES GIKE_UPDATE, AH, ESP | ||||
Unassigned 5-16383 | ||||
Private Use 16384-32767 | ||||
]]></artwork> | ||||
</figure> | ||||
Changes and additions to the unassigned range of this registry are by | ||||
the Expert Review Policy <xref target="RFC8126" />.</t> | ||||
</li> | ||||
<li> | Perhaps: | |||
<t>This document creates a new IANA registry "Group-wide Policy Attribut | In this registry, new registrations are to be made by Expert | |||
es". The initial values of the new registry are: | Review [RFC8126]. | |||
<figure> | ||||
<preamble></preamble> | ||||
<artwork align="left"><![CDATA[ | ||||
GW Policy Attributes Value Format Multi-Valued | ||||
Reserved 0 | ||||
GWP_ATD 1 TV NO | ||||
GWP_DTD 2 TV NO | ||||
GWP_SENDER_ID_BITS 3 TV NO | ||||
Unassigned 4-16383 | ||||
Private Use 16384-32767 | ||||
]]></artwork> | ||||
</figure> | ||||
Changes and additions to the unassigned range of this registry are by | ||||
the Expert Review Policy <xref target="RFC8126" />.</t> | ||||
</li> | ||||
<li> | d) May we update the title of the "Group-wide Policy Attributes" registry | |||
<t>This document creates a new IANA registry "Group Key Bag Attributes". | to "Group-Wide Policy Attributes" (i.e., make "wide" uppercase as it's an | |||
The initial values of the new registry are: | adjective within a hyphenated compound)? | |||
<figure> | ||||
<preamble></preamble> | e) FYI: For clarity, we added the "Reference" column to Table 19 to show | |||
<artwork align="left"><![CDATA[ | that the "Security Association" Payload Type was registered by RFC 7296. | |||
Group Key Bag | If this is not desired, please let us know. | |||
Attributes Value Format Multi-Valued Used in Protocol | ||||
Reserved 0 | f) Is it helpful for the reader if the history of the SENDER_REQUEST_ID | |||
SA_KEY 1 TLV YES GIKE_UPDATE | registration is included? If so, should an informative reference to | |||
NO AH, ESP | "draft-yeung-g-ikev2-07" (e.g., "[G-IKEV2]") be added (option A)? Or | |||
Unassigned 2-16383 | if the history isn't necessary, is option B preferred? | |||
Private Use 16384-32767 | ||||
]]></artwork> | Original: | |||
</figure> | The Notify type with the value 16429 was allocated earlier in the | |||
Changes and additions to the unassigned range of this registry are by | development of G-IKEv2 document in the "IKEv2 Notify Message | |||
the Expert Review Policy <xref target="RFC8126" />.</t> | Status Types" registry with the name SENDER_REQUEST_ID. This document | |||
</li> | renames it as follows: | |||
Perhaps A: | ||||
An earlier draft of this document [G-IKEV2] registered the Notify | ||||
type 16429 with the name SENDER_REQUEST_ID. Per this document, | ||||
IANA has updated the "IKEv2 Notify Message Status Types" registry | ||||
as follows: | ||||
or | ||||
Perhaps B: | ||||
IANA has registered the following in the "IKEv2 Notify Message Status | ||||
Types" registry: | ||||
--> | ||||
<ol type="1" spacing="normal"> | ||||
<li> | <li> | |||
<t>This document creates a new IANA registry "Member Key Bag Attributes" | <t>IANA has created the "Transform Type 13 - Key Wrap Algorithm Transf | |||
. The initial values of the new registry are: | orm IDs" registry. | |||
<figure> | Changes and additions to the unassigned range of this registry are to be made th | |||
<preamble></preamble> | rough Expert Review <xref target="RFC8126"/>. The initial values of the registry | |||
<artwork align="left"><![CDATA[ | are as follows:</t> | |||
Member Key Bag | ||||
Attributes Value Format Multi-Valued | <table> | |||
Reserved 0 | <name></name> | |||
WRAP_KEY 1 TLV YES | <thead> | |||
AUTH_KEY 2 TLV NO | <tr> | |||
GM_SENDER_ID 3 TLV YES | <th>Key Wrap Algorithm</th> | |||
Unassigned 4-16383 | <th>Value</th> | |||
Private Use 16384-32767 | </tr> | |||
]]></artwork> | </thead> | |||
</figure> | <tbody> | |||
Changes and additions to the unassigned range of this registry are by | <tr> | |||
the Expert Review Policy <xref target="RFC8126" />.</t> | <td>Reserved</td> | |||
<td>0</td> | ||||
</tr> | ||||
<tr> | ||||
<td>KW_5649_128</td> | ||||
<td>1</td> | ||||
</tr> | ||||
<tr> | ||||
<td>KW_5649_192</td> | ||||
<td>2</td> | ||||
</tr> | ||||
<tr> | ||||
<td>KW_5649_256</td> | ||||
<td>3</td> | ||||
</tr> | ||||
<tr> | ||||
<td>KW_ARX</td> | ||||
<td>4</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Unassigned</td> | ||||
<td>5-1023</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Reserved for Private Use</td> | ||||
<td>1024-65535</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | </li> | |||
</ol> | <li> | |||
<t>IANA has created the "Transform Type | ||||
14 - Group Controller Authentication Method Transform | ||||
IDs" registry. Changes and additions to the unassigned range of thi | ||||
s registry are to be made through | ||||
Expert Review <xref target="RFC8126"/>. The initial values of the regis | ||||
try are as follows:</t> | ||||
<section title="Guidance for Designated Experts"> | <table> | |||
<t> In all cases of Expert Review Policy described here, | <name></name> | |||
the Designated Expert (DE) is expected to ascertain the existence of | <thead> | |||
suitable | <tr> | |||
documentation (a specification) as described in <xref target="RFC8126 | <th>Group Controller Authentication Method</th> | |||
" /> and to | <th>Value</th> | |||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td>0</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Implicit</td> | ||||
<td>1</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Digital Signature</td> | ||||
<td>2</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Unassigned</td> | ||||
<td>3-1023</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Reserved for Private Use</td> | ||||
<td>1024-65535</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>IANA has created the "GSA Attributes" registry. Changes and addi | ||||
tions to the unassigned range of this registry are to be made through | ||||
Expert Review <xref target="RFC8126"/>. The initial values of the regist | ||||
ry are as follows: | ||||
</t> | ||||
<table> | ||||
<name></name> | ||||
<thead> | ||||
<tr> | ||||
<th>GSA Attributes</th> | ||||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
<th>Used in Protocol</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td>0</td> | ||||
<td colspan="3"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA_KEY_LIFETIME</td> | ||||
<td>1</td> | ||||
<td>TLV</td> | ||||
<td>NO</td> | ||||
<td>GIKE_UPDATE, AH, ESP</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA_INITIAL_MESSAGE_ID</td> | ||||
<td>2</td> | ||||
<td>TLV</td> | ||||
<td>NO</td> | ||||
<td>GIKE_UPDATE</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GSA_NEXT_SPI</td> | ||||
<td>3</td> | ||||
<td>TLV</td> | ||||
<td>YES</td> | ||||
<td>GIKE_UPDATE, AH, ESP</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Unassigned</td> | ||||
<td>5-16383</td> | ||||
<td colspan="3"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Reserved for Private Use</td> | ||||
<td>16384-32767</td> | ||||
<td colspan="3"></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>IANA has created the "Group-wide Policy Attributes" registry. C | ||||
hanges and additions to the unassigned range of this registry are to be made thr | ||||
ough | ||||
Expert Review <xref target="RFC8126"/>. The initial values of the regist | ||||
ry are as follows: | ||||
</t> | ||||
<table> | ||||
<name></name> | ||||
<thead> | ||||
<tr> | ||||
<th>GW Policy Attributes</th> | ||||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td>0</td> | ||||
<td colspan="2"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>GWP_ATD</td> | ||||
<td>1</td> | ||||
<td>TV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GWP_DTD</td> | ||||
<td>2</td> | ||||
<td>TV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GWP_SENDER_ID_BITS</td> | ||||
<td>3</td> | ||||
<td>TV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Unassigned</td> | ||||
<td>4-16383</td> | ||||
<td colspan="2"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Reserved for Private Use</td> | ||||
<td>16384-32767</td> | ||||
<td colspan="2"></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>IANA has created the "Group Key Bag Attributes" registry. Change | ||||
s and additions to the unassigned range of this registry are to be made through | ||||
Expert Review <xref target="RFC8126"/>. The initial values of the regist | ||||
ry are as follows: | ||||
</t> | ||||
<table> | ||||
<name></name> | ||||
<thead> | ||||
<tr> | ||||
<th>Group Key Bag Attributes</th> | ||||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
<th>Used in Protocol</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td>0</td> | ||||
<td colspan="3"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>SA_KEY</td> | ||||
<td>1</td> | ||||
<td>TLV</td> | ||||
<td>YES<br/>NO</td> | ||||
<td>GIKE_UPDATE<br/>AH, ESP</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Unassigned</td> | ||||
<td>2-16383</td> | ||||
<td colspan="3"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Reserved for Private Use</td> | ||||
<td>16384-32767</td> | ||||
<td colspan="3"></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>IANA has created the "Member Key Bag Attributes" registry. Chang | ||||
es and additions to the unassigned range of this registry are to be made through | ||||
Expert Review <xref target="RFC8126"/>. The initial values of the regist | ||||
ry are as follows: | ||||
</t> | ||||
<table> | ||||
<name></name> | ||||
<thead> | ||||
<tr> | ||||
<th>Member Key Bag Attributes</th> | ||||
<th>Value</th> | ||||
<th>Format</th> | ||||
<th>Multi-Valued</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>Reserved</td> | ||||
<td>0</td> | ||||
<td colspan="2"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>WRAP_KEY</td> | ||||
<td>1</td> | ||||
<td>TLV</td> | ||||
<td>YES</td> | ||||
</tr> | ||||
<tr> | ||||
<td>AUTH_KEY</td> | ||||
<td>2</td> | ||||
<td>TLV</td> | ||||
<td>NO</td> | ||||
</tr> | ||||
<tr> | ||||
<td>GM_SENDER_ID</td> | ||||
<td>3</td> | ||||
<td>TLV</td> | ||||
<td>YES</td> | ||||
</tr> | ||||
<tr> | ||||
<td>Unassigned</td> | ||||
<td>4-16383</td> | ||||
<td colspan="2"></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Reserved for Private Use</td> | ||||
<td>16384-32767</td> | ||||
<td colspan="2"></td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
</ol> | ||||
<section> | ||||
<name>Guidance for Designated Experts</name> | ||||
<t> In all cases of Expert Review described in this section, | ||||
the designated expert (DE) is expected to ascertain the existence of | ||||
suitable | ||||
documentation (a specification) as described in <xref target="RFC8126 | ||||
"/> and | ||||
verify that the document is permanently and publicly available. The | verify that the document is permanently and publicly available. The | |||
DE is also expected to check the clarity of purpose and use of the | DE is also expected to check the clarity of purpose and use of the | |||
requested code points. Last, the DE must verify that any specificatio n produced outside the IETF does not | requested code points. Lastly, the DE must verify that any specificat ion produced outside the IETF does not | |||
conflict with work that is active or already published within the IET F. | conflict with work that is active or already published within the IET F. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section> | ||||
<section title="Changes in the Existing IKEv2 Registries"> | <name>Changes in the Existing IKEv2 Registries</name> | |||
<ol> | <ol> | |||
<li> | <li> | |||
<t>This document defines new Exchange Types in the "IKEv2 Exchange Types | <t>In the "IKEv2 Exchange Types" registry, IANA has updated the references for | |||
" registry: | the following entries to point to this document and has registered "GSA_INBAND_R | |||
<figure align="center"> | EKEY": | |||
<artwork align="left"><![CDATA[ | </t> | |||
Value Exchange Type | <table> | |||
39 GSA_AUTH | <thead> | |||
40 GSA_REGISTRATION | <tr><th>Value</th><th>Exchange Type</th></tr> | |||
41 GSA_REKEY | </thead> | |||
<TBA> GSA_INBAND_REKEY | <tbody> | |||
]]></artwork> | <tr><td>39</td><td>GSA_AUTH</td></tr> | |||
</figure> | <tr><td>40</td><td>GSA_REGISTRATION</td></tr> | |||
</t> | <tr><td>41</td><td>GSA_REKEY</td></tr> | |||
</li> | <tr><td>42</td><td>GSA_INBAND_REKEY</td></tr> | |||
</tbody> | ||||
</table> | ||||
<li> | </li> | |||
<t>This document defines new Payload Types in the "IKEv2 Payload Types" | <li> | |||
registry: | <t>In the "IKEv2 Payload Types" registry, IANA has listed this docume | |||
<figure align="center"> | nt as a reference for the following entries: | |||
<artwork align="left"><![CDATA[ | </t> | |||
Value Next Payload Type Notation | ||||
50 Group Identification IDg | ||||
51 Group Security Association GSA | ||||
52 Key Download KD | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
</li> | ||||
<table> | ||||
<thead> | ||||
<tr> | ||||
<th>Value</th> | ||||
<th>Next Payload Type</th> | ||||
<th>Notation</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>50</td> | ||||
<td>Group Identification</td> | ||||
<td>IDg</td> | ||||
</tr> | ||||
<tr> | ||||
<td>51</td> | ||||
<td>Group Security Association</td> | ||||
<td>GSA</td> | ||||
</tr> | ||||
<tr> | ||||
<td>52</td> | ||||
<td>Key Download</td> | ||||
<td>KD</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | <li> | |||
<t>This document also updates definition of Payload Type 33 in the "IKEv | <t>In the "IKEv2 Payload Types" registry, IANA has updated the definitio | |||
2 Payload | n of Payload Type 33 and added a reference to this document as follows:</t> | |||
Types" registry by adding an alternative name and notation for it refere | ||||
ncing | ||||
this document: | ||||
<figure align="center"> | <table> | |||
<artwork align="left"><![CDATA[ | <thead> | |||
Value Next Payload Type Notation | <tr> | |||
33 Security Association SA | <th>Value</th> | |||
Security Association - GM Supported Transforms SAg | <th>Next Payload Type</th> | |||
]]></artwork> | <th>Notation</th> | |||
</figure> | <th>Reference</th> | |||
</t> | </tr> | |||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td rowspan="2">33</td> | ||||
<td>Security Association</td> | ||||
<td>SA</td> | ||||
<td><xref target="RFC7296"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td>Security Association - GM Supported Transforms</td> | ||||
<td>SAg</td> | ||||
<td>RFC 9838</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | </li> | |||
<li> | <li> | |||
<t>This document makes the following changes in the "Transform Type Valu | <t>In the "Transform Type Values" registry, IANA has made the following changes: | |||
es" registry: | </t> | |||
<list style="symbols" > | ||||
<t>Defines two new transform types -- "Key Wrap Algorithm (KWA)" and " | ||||
Group Controller Authentication Method (GCAUTH)";</t> | ||||
<t>Changes the "Used In" column for the values 1 and 3 as follows;</t> | ||||
<t>Appends reference to this document to the values 1 and 3;</t> | ||||
</list> | ||||
<figure align="center"> | ||||
<artwork align="left"><![CDATA[ | ||||
Type Description Used In | ||||
1 Encryption Algorithm (ENCR) (IKE, GIKE_UPDATE and ESP) | ||||
3 Integrity Algorithm (INTEG) (IKE, GIKE_UPDATE, AH, | ||||
optional in ESP) | ||||
<TBA> Key Wrap Algorithm (KWA) (IKE, GIKE_UPDATE) | ||||
<TBA> Group Controller | ||||
Authentication Method (GCAUTH) (GIKE_UPDATE) | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
</li> | ||||
<li> | <ul spacing="normal"> | |||
<t>This document defines a new Attribute Type in the "IKEv2 Transform At | <li>Registered "Key Wrap Algorithm (KWA)" and "Group Controller Au | |||
tribute Types" registry: | thentication Method (GCAUTH)".</li> | |||
<figure align="center"> | <li> | |||
<artwork align="left"><![CDATA[ | <t>Updated the "Used In" column for values 1 and 3 and listed th | |||
Value Attribute Type Format | is document as an additional reference.</t> | |||
<TBA> Signature Algorithm Identifier TLV | </li> | |||
]]></artwork> | </ul> | |||
</figure> | ||||
</t> | ||||
</li> | ||||
<li> | <table> | |||
<t>This document defines a new value in the "Transform Type 5 - Sequence | <thead> | |||
Numbers Transform IDs" registry: | <tr> | |||
<figure align="center"> | <th>Type</th> | |||
<artwork align="left"><![CDATA[ | <th>Description</th> | |||
Number Name | <th>Used In</th> | |||
<TBA> 32-bit Unspecified Numbers | </tr> | |||
]]></artwork> | </thead> | |||
</figure> | <tbody> | |||
</t> | <tr> | |||
</li> | <td>1</td> | |||
<td>Encryption Algorithm (ENCR)</td> | ||||
<td>(IKE, GIKE_UPDATE, ESP)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>3</td> | ||||
<td>Integrity Algorithm (INTEG)</td> | ||||
<td>(IKE, GIKE_UPDATE, AH, optional in ESP)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>13</td> | ||||
<td>Key Wrap Algorithm (KWA)</td> | ||||
<td>(IKE, GIKE_UPDATE)</td> | ||||
</tr> | ||||
<tr> | ||||
<td>14</td> | ||||
<td>Group Controller Authentication Method (GCAUTH)</td> | ||||
<td>(GIKE_UPDATE)</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<li> | </li> | |||
<t>This document defines new Notify Message types in the "IKEv2 Notify M | <li> | |||
essage Error Types" registry: | <t>In the "IKEv2 Transform Attribute Types" registry, IANA has added | |||
<figure align="center"> | the following entry: | |||
<artwork align="left"><![CDATA[ | </t> | |||
Value Notify Message Error Type | ||||
45 INVALID_GROUP_ID | ||||
46 AUTHORIZATION_FAILED | ||||
<TBA> REGISTRATION_FAILED | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
</li> | ||||
<li> | <table> | |||
<t>The Notify type with the value 16429 was allocated earlier in the dev | <thead> | |||
elopment of G-IKEv2 document | <tr> | |||
<th>Value</th> | ||||
<th>Attribute Type</th> | ||||
<th>Format</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>18</td> | ||||
<td>Signature Algorithm Identifier</td> | ||||
<td>TLV</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>In the "Transform Type 5 - Sequence Numbers Transform IDs" regist | ||||
ry, IANA has added the following entry: | ||||
</t> | ||||
<table> | ||||
<thead> | ||||
<tr> | ||||
<th>Number</th> | ||||
<th>Name</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>2</td> | ||||
<td>32-bit Unspecified Numbers</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>In the "IKEv2 Notify Message Error Types" registry, IANA has made | ||||
the following changes: | ||||
</t> | ||||
<ul> | ||||
<li>Registered "REGISTRATION_FAILED".</li> | ||||
<li>Updated the references for "INVALID_GROUP_ID" and "AUTHORIZATIO | ||||
N_FAILED" to point to this document.</li> | ||||
</ul> | ||||
<table> | ||||
<thead> | ||||
<tr> | ||||
<th>Value</th> | ||||
<th>Notify Message Error Type</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>45</td> | ||||
<td>INVALID_GROUP_ID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>46</td> | ||||
<td>AUTHORIZATION_FAILED</td> | ||||
</tr> | ||||
<tr> | ||||
<td>49</td> | ||||
<td>REGISTRATION_FAILED</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>The Notify type with the value 16429 was allocated earlier in the | ||||
development of G-IKEv2 document | ||||
in the "IKEv2 Notify Message Status Types" registry with the name SENDER _REQUEST_ID. | in the "IKEv2 Notify Message Status Types" registry with the name SENDER _REQUEST_ID. | |||
This document renames it as follows: | This document renames it as follows: | |||
<figure align="center"> | </t> | |||
<artwork align="left"><![CDATA[ | ||||
Value Notify Message Status Type | ||||
16429 GROUP_SENDER | ||||
]]></artwork> | ||||
</figure> | ||||
</t> | ||||
</li> | ||||
<li> | <table> | |||
<t>This document defines a new Security Protocol Identifier in the "IKEv | <thead> | |||
2 Security Protocol Identifiers" registry: | <tr> | |||
<figure align="center"> | <th>Value</th> | |||
<artwork align="left"><![CDATA[ | <th>Notify Message Status Type</th> | |||
Protocol ID Protocol | </tr> | |||
<TBA> GIKE_UPDATE | </thead> | |||
]]></artwork> | <tbody> | |||
</figure> | <tr> | |||
</t> | <td>16429</td> | |||
</li> | <td>GROUP_SENDER</td> | |||
</ol> | </tr> | |||
</tbody> | ||||
</table> | ||||
</li> | ||||
<li> | ||||
<t>In the "IKEv2 Security Protocol Identifiers" registry, IANA has a | ||||
dded the following entry: | ||||
</t> | ||||
<table> | ||||
<thead> | ||||
<tr> | ||||
<th>Protocol ID</th> | ||||
<th>Protocol</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>6</td> | ||||
<td>GIKE_UPDATE</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</li> | ||||
</ol> | ||||
</section> | </section> | |||
</section> | </section> | |||
</middle> | ||||
<back> | ||||
<displayreference target="I-D.ietf-ipsecme-ikev2-qr-alt" to="IPSEC-IKEV2-QR-ALT" | ||||
/> | ||||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
054.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
296.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
301.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
302.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
303.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
119.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
174.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
126.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
280.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
427.xml"/> | ||||
<section anchor="Acknowledgements" title="Acknowledgements"> | <!-- [RFC9827] draft-ietf-ipsecme-ikev2-rename-esn-05; companion doc RFC 9827 is | |||
<t>The authors thank Lakshminath Dondeti and Jing Xiang for first | in AUTH48-DONE as of 09/11/25 and is waiting for this doc for PUB. | |||
exploring the use of IKEv2 for group key management and providing the | --> | |||
basis behind the protocol. Mike Sullenberger and Amjad Inamdar were | ||||
instrumental in helping resolve many issues in several versions of the | ||||
document.</t> | ||||
<t>The authors are grateful to Tero Kivinen, Daniel Migault, Gorry Fairhur | <reference anchor="RFC9827" target="https://www.rfc-editor.org/info/rfc9827"> | |||
st, Robert Sparks, Russ Housley and Paul Wouters | <front> | |||
for their careful reviews and valuable proposals for improving the documen | <title>Renaming the Extended Sequence Numbers (ESN) Transform Type in the In | |||
t quality. | ternet Key Exchange Protocol Version 2 (IKEv2)</title> | |||
</t> | <author initials="V." surname="Smyslov" fullname="Valery Smyslov"> | |||
</section> | <organization>ELVIS-PLUS</organization> | |||
</author> | ||||
<date month='September' year='2025'/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="9827"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC9827"/> | ||||
</reference> | ||||
<section anchor="Contributers" title="Contributors"> | </references> | |||
<t>The following individuals made substantial contributions to early | <references> | |||
versions of this memo.</t> | <name>Informative References</name> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
409.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
627.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
740.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
046.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
407.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
686.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
106.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
309.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
543.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
374.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
685.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
998.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
723.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
467.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
383.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
634.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
784.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 | ||||
948.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
242.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
329.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
750.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
347.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
370.xml"/> | ||||
<t><figure> | <!-- [I-D.ietf-ipsecme-ikev2-qr-alt] draft-ietf-ipsecme-ikev2-qr-alt-06; IESG | |||
<preamble></preamble> | State: in RFC-EDITOR as of 09/11/25 | |||
--> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml3/reference.I-D. | ||||
ietf-ipsecme-ikev2-qr-alt.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
052.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
263.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
649.xml"/> | ||||
<artwork><![CDATA[ | <reference anchor="ARX-KW" target="https://eprint.iacr.org/2020/059.pdf" | |||
Sheela Rowles | > | |||
Cisco Systems | <front> | |||
]]></artwork> | <title>ARX-KW, a family of key wrapping constructions using SipHash | |||
</figure> | and ChaCha</title> | |||
<figure> | <author fullname="" initials="S." surname="Shinichi"/> | |||
<artwork><![CDATA[ | <date month="January" year="2020"/> | |||
Aldous Yeung | </front> | |||
Cisco Systems | <refcontent>Cryptology ePrint Archive, Paper 2020/059</refcontent> | |||
Email: cyyeung@cisco.com | </reference> | |||
]]></artwork> | ||||
</figure> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
Paulina Tran | ||||
Cisco Systems | ||||
]]></artwork> | ||||
</figure> | ||||
<figure> | ||||
<artwork><![CDATA[ | ||||
Yoav Nir | ||||
Dell EMC | ||||
Email: ynir.ietf@gmail.com | ||||
]]></artwork> | ||||
</figure></t> | ||||
</section> | ||||
</middle> | ||||
<back> | <reference anchor="OFT" target="https://pdfs.semanticscholar.org/d24c/7b | |||
<references title="Normative References"> | 41f7bcc2b6690e1b4d80eaf8c3e1cc5ee5.pdf"> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.60 | <front> | |||
54.xml"?> | <title>Key Establishment in Large Dynamic Groups Using One-Way Funct | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.72 | ion Trees</title> | |||
96.xml"?> | <author fullname="" initials="D." surname="McGrew"> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.43 | <organization/> | |||
01.xml"?> | </author> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.43 | <author fullname="" initials="A." surname="Sherman"> | |||
02.xml"?> | <organization/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.43 | </author> | |||
03.xml"?> | <date month="May" year="1998"/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.21 | </front> | |||
19.xml"?> | <seriesInfo name="DOI" value="10.1109/TSE.2003.1199073"/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.81 | <refcontent>IEEE Transactions on Software Engineering, vol. 29, no. 5, | |||
74.xml"?> | pp. 444-458</refcontent> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.81 | </reference> | |||
26.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.52 | ||||
80.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.74 | ||||
27.xml"?> | ||||
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference | ||||
.I-D.ietf-ipsecme-ikev2-rename-esn.xml"?> | ||||
</references> | ||||
<references title="Informative References"> | <reference anchor="NNL" target="http://www.wisdom.weizmann.ac.il/~naor/P | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.24 | APERS/2nl.pdf"> | |||
09.xml"?> | <front> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.26 | <title>Revocation and Tracing Schemes for Stateless Receivers</title | |||
27.xml"?> | > | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.37 | <author fullname="" initials="D." surname="Naor"> | |||
40.xml"?> | <organization/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.40 | </author> | |||
46.xml"?> | <author fullname="" initials="M." surname="Naor"> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.64 | <organization/> | |||
07.xml"?> | </author> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.36 | <author fullname="" initials="J." surname="Lotspiech"> | |||
86.xml"?> | <organization/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.41 | </author> | |||
06.xml"?> | <date month="" year="2001"/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.43 | </front> | |||
09.xml"?> | <seriesInfo name="DOI" value="10.1007/3-540-44647-8_3"/> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.45 | <refcontent>Advances in Cryptology - CRYPTO 2001, Lecture Notes in Com | |||
43.xml"?> | puter Science, vol. 2139, pp. 41-62</refcontent> | |||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.53 | </reference> | |||
74.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.56 | ||||
85.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.59 | ||||
98.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.57 | ||||
23.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.64 | ||||
67.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.73 | ||||
83.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.76 | ||||
34.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.87 | ||||
84.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.39 | ||||
48.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.92 | ||||
42.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.93 | ||||
29.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.87 | ||||
50.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.93 | ||||
47.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.93 | ||||
70.xml"?> | ||||
<?rfc include="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference | ||||
.I-D.ietf-ipsecme-ikev2-qr-alt.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.80 | ||||
52.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.82 | ||||
63.xml"?> | ||||
<?rfc include="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.56 | ||||
49.xml"?> | ||||
<reference anchor="ARX-KW" | ||||
target="https://eprint.iacr.org/2020/059.pdf"> | ||||
<front> | ||||
<title>ARX-KW, a family of key wrapping constructions using SipHash an | ||||
d ChaCha</title> | ||||
<author fullname="" initials="S." surname="Shinichi"></author> | ||||
<date month="January" year="2020" /> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="OFT" | ||||
target="https://pdfs.semanticscholar.org/d24c/7b41f7bcc2b6690e1 | ||||
b4d80eaf8c3e1cc5ee5.pdf"> | ||||
<front> | ||||
<title>Key Establishment in Large Dynamic Groups Using One-Way Functio | ||||
n Trees</title> | ||||
<author fullname="" initials="D." surname="McGrew"> | ||||
<organization></organization> | ||||
</author> | ||||
<author fullname="" initials="A." surname="Sherman"> | ||||
<organization></organization> | ||||
</author> | ||||
<date month="" year="1998" /> | ||||
</front> | ||||
<seriesInfo name="Manuscript, " | ||||
value="submitted to IEEE Transactions on Software Engineerin | ||||
g" /> | ||||
</reference> | ||||
<reference anchor="NNL" | ||||
target="http://www.wisdom.weizmann.ac.il/~naor/PAPERS/2nl.pdf"> | ||||
<front> | ||||
<title>Revocation and Tracing Schemes for Stateless Receivers</title> | ||||
<author fullname="" initials="D." surname="Naor"> | ||||
<organization></organization> | ||||
</author> | ||||
<author fullname="" initials="M." surname="Noal"> | ||||
<organization></organization> | ||||
</author> | ||||
<author fullname="" initials="J." surname="Lotspiech"> | ||||
<organization></organization> | ||||
</author> | ||||
<date month="" year="2001" /> | ||||
</front> | ||||
<seriesInfo name="Advances in Cryptology, Crypto '01, " | ||||
value="Springer-Verlag LNCS 2139, 2001, pp. 41-62" /> | ||||
</reference> | ||||
<reference anchor="IKEV2-IANA" | ||||
target="http://www.iana.org/assignments/ikev2-parameters/ikev2- | ||||
parameters.xhtml"> | ||||
<front> | ||||
<title>Internet Key Exchange Version 2 (IKEv2) Parameters</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date /> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<section anchor="lkh_key_management" title="Use of LKH in G-IKEv2"> | <reference anchor="IKEV2-IANA" target="http://www.iana.org/assignments/i | |||
<t>Section 5.4 of <xref target="RFC2627"></xref> describes the LKH | kev2-parameters"> | |||
architecture, and how a GCKS uses LKH to exclude group members. This | <front> | |||
<title>Internet Key Exchange Version 2 (IKEv2) Parameters</title> | ||||
<author> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="lkh_key_management"> | ||||
<name>Use of LKH in G-IKEv2</name> | ||||
<t><xref target="RFC2627" sectionFormat="of" section="5.4"/> describes the | ||||
LKH | ||||
architecture and how a GCKS uses LKH to exclude group members. This | ||||
section clarifies how the LKH architecture is used with G-IKEv2.</t> | section clarifies how the LKH architecture is used with G-IKEv2.</t> | |||
<section anchor="lkh_notation"> | ||||
<section anchor="lkh_notation" title="Notation"> | <name>Notation</name> | |||
<t>In this section we will use the notation X{Y} | <t>In this section, we will use the notation X{Y}, | |||
where a key with ID Y is encrypted with the key with ID X. | where a key with ID Y is encrypted with the key with ID X. | |||
The notation GSK_w{Y} means that the default wrap key GSK_w (with zero K WK ID)is used | The notation GSK_w{Y} means that the default wrap key GSK_w (with zero K WK ID)is used | |||
to encrypt key Y, and the notation X{K_sa} means key X is used | to encrypt key Y, and the notation X{K_sa} means key X is used | |||
to encrypt the SA key K_sa (wich always has zero Key ID). Note, that GSK | to encrypt the SA key K_sa (which always has a Key ID of zero). Note tha | |||
_w{K_sa} means that | t GSK_w{K_sa} means that | |||
the SA key is encrypted with the default wrap key, in which case both KW | the SA key is encrypted with the default wrap key, in which case, both K | |||
K ID and Key ID are zero. | WK ID and Key ID are zero. | |||
</t> | </t> | |||
<t>The content of the KD payload will be shown as a sequence | <t>The content of the KD payload will be shown as a sequence | |||
of key bags. The Group Key Bag substructure will be denoted as GP(SAn)() | of key bags. The Group Key Bag substructure will be denoted as GP(SAn)() | |||
, | when n is an SPI for the SA and the Member Key Bag substructure | |||
when n is an SPI for the SA, and the Member Key Bag substructure | ||||
will be denoted as MP(). The content of the key bags | will be denoted as MP(). The content of the key bags | |||
is shown as SA_KEY and WRAP_KEY attributes with the notation | is shown as SA_KEY and WRAP_KEY attributes with the notation | |||
described above. For simplicity the type of the attribute will not be sh own, | described above. For simplicity, the type of the attribute will not be s hown | |||
because it is implicitly defined by the type of key bag. | because it is implicitly defined by the type of key bag. | |||
</t> | </t> | |||
<t>Below is the example of a KD payload:</t> | ||||
<t> Here is the example of KD payload. | <figure> | |||
<figure align="center"> | <artwork ><![CDATA[ | |||
<artwork align="center"><![CDATA[ | ||||
KD(GP(SA1)(X{K_sa}),MP(Y{X},Z{Y},GSK_w{Z}) | KD(GP(SA1)(X{K_sa}),MP(Y{X},Z{Y},GSK_w{Z}) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
For simplicity any other attributes in the KD payload are omitted. | <t> | |||
For simplicity, any other attributes in the KD payload are omitted. | ||||
</t> | </t> | |||
<t>We will also use the notation X->Y->Z | <t>We will also use the notation X->Y->Z | |||
to describe the Key Path. In this case key Y is needed to decrypt key X | to describe the Key Path. In this case, key Y is needed to decrypt key X | |||
and key Z is needed to decrypt key Y. | and key Z is needed to decrypt key Y. | |||
In the example above the keys had the following relation: K_sa->X-> | In the example above, the keys had the following relation: K_sa->X-&g | |||
;Y->Z->GSK_w. | t;Y->Z->GSK_w. | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Group Creation"> | <name>Group Creation</name> | |||
<t>When a GCKS forms a group, it creates a key tree as shown in the | <t>When a GCKS forms a group, it creates a key tree as shown in | |||
figure below. The key tree contains logical keys (which are represented | <xref target="initial-tree"/>. The key tree contains logical keys (which | |||
as | are represented as | |||
the values of their Key IDs in the figure) and a private key shared with only a single GM | the values of their Key IDs in the figure) and a private key shared with only a single GM | |||
(the GMs are represented as letters followed by the corresponding | (the GMs are represented as letters followed by the corresponding | |||
key ID in parentheses in the figure). The root of the tree contains the | key ID in parentheses in the figure). The root of the tree contains the | |||
multicast Rekey SA key (which is represented as SAn(K_san). The figure b elow assumes that the Key IDs | multicast Rekey SA key (which is represented as SAn(K_san). The figure b elow assumes that the Key IDs | |||
are assigned sequentially; this is not a requirement and only used | are assigned sequentially; this is not a requirement and only used | |||
for illustrative purposes. The GCKS may create a complete tree as shown, or a partial tree which is | 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. | created on demand as members join the group. | |||
</t> | </t> | |||
<figure align="center" anchor="initial-tree" title="Initial LKH tree"> | <figure anchor="initial-tree"> | |||
<artwork align="center"><![CDATA[ | <name>Initial LKH Tree</name> | |||
<artwork ><![CDATA[ | ||||
SA1(K_sa1) | SA1(K_sa1) | |||
+------------------------------+ | +------------------------------+ | |||
1 2 | 1 2 | |||
+---------------+ +---------------+ | +---------------+ +---------------+ | |||
3 4 5 6 | 3 4 5 6 | |||
+-------+ +-------+ +--------+ +--------+ | +-------+ +-------+ +--------+ +--------+ | |||
A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>When GM A joins the group, the GCKS provides it | <t>When GM A joins the group, the GCKS provides it | |||
with the keys in the KD payload of the GSA_AUTH or | with the keys in the KD payload of the GSA_AUTH or | |||
GSA_REGISTRATION exchange. Given the tree shown in figure above, the | GSA_REGISTRATION exchange. Given the tree shown in figure above, the | |||
KD payload will be: | KD payload will be: | |||
<figure align="center" title="KD Payload for the Group Member A"> | </t> | |||
<artwork align="center"><![CDATA[ | <figure> | |||
<name>KD Payload for the Group Member A</name> | ||||
<artwork ><![CDATA[ | ||||
KD(GP(SA1)(1{K_sa1}),MP(3{1},7{3},GSK_w{7}) | KD(GP(SA1)(1{K_sa1}),MP(3{1},7{3},GSK_w{7}) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> | ||||
From these attributes the GM A will construct | From these attributes, the GM A will construct | |||
the Key Path K_sa1->1->3->7->GSK_w and since it | the Key Path K_sa1->1->3->7->GSK_w. Since it | |||
ends up with GSK_w, it will use all the WRAP_KEY attributes | ends up with GSK_w, it will use all the WRAP_KEY attributes | |||
present in the path as its Working Key Path: 1->3->7. | present in the path as its Working Key Path: 1->3->7. | |||
</t> | </t> | |||
<!-- [rfced] May we replace "so after all" with "and thus" in the | ||||
sentence below for improved clarity? | ||||
<t>Similarly, when other GMs will be joining the group they will be prov | Current: | |||
ided with the corresponding | Similarly, when other GMs will be joining the group, they will be | |||
keys, so after all the GMs will have the following Working Key Paths: | provided with the corresponding keys, so after all, the GMs will have | |||
<figure align="center"> | the following Working Key Paths: | |||
<artwork align="left"><![CDATA[ | ||||
Perhaps: | ||||
Similarly, when other GMs join the group, they will be | ||||
provided with the corresponding keys and thus the GMs | ||||
will have the following Working Key Paths: | ||||
--> | ||||
<t>Similarly, when other GMs will be joining the group, they will be pro | ||||
vided with the corresponding | ||||
keys, so after all, the GMs will have the following Working Key Paths: | ||||
</t> | ||||
<figure> | ||||
<artwork align="left"><![CDATA[ | ||||
A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | |||
E: 2->5->11 F: 2->5->12 G: 2->6->13 H: 2->6->14 | E: 2->5->11 F: 2->5->12 G: 2->6->13 H: 2->6->14 | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</t> | ||||
</section> | ||||
<section title="Simple Group SA Rekey"> | </section> | |||
<section> | ||||
<name>Simple Group SA Rekey</name> | ||||
<t>If the GCKS performs a simple SA rekey without changing group members hip, | <t>If the GCKS performs a simple SA rekey without changing group members hip, | |||
it will only send group key bag in the KD payload with a new | it will only send a Group Key Gag in the KD payload with a new | |||
SA key encrypted with the default KWK. | SA key encrypted with the default KWK. | |||
</t> | ||||
<figure align="center" title="KD Payload for the Simple Group SA Rekey"> | <figure> | |||
<artwork align="center"><![CDATA[ | <name>KD Payload for the Simple Group SA Rekey</name> | |||
<artwork ><![CDATA[ | ||||
KD(GP(SA2)(GSK_w{K_sa2})) | KD(GP(SA2)(GSK_w{K_sa2})) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t> | ||||
All the GMs will be able to decrypt it and no changes in their Working K ey Paths will happen. | All the GMs will be able to decrypt it and no changes in their Working K ey Paths will happen. | |||
</t> | </t> | |||
</section> | </section> | |||
<section> | ||||
<section title="Group Member Exclusion"> | <name>Group Member Exclusion</name> | |||
<t>If the GKCS has reason to believe that a GM should be excluded, | <t>If the GCKS has reason to believe that a GM should be excluded, | |||
then it can do so by sending a GSA_REKEY message that includes a set | then it can do so by sending a GSA_REKEY message that includes a set | |||
of GM_KEY attributes which would allow all GMs except for the excluded o ne | of GM_KEY attributes, which would allow all GMs, except for the excluded one, | |||
to get a new SA key. | to get a new SA key. | |||
</t> | </t> | |||
<t>In the example below, the GCKS excludes GM F. For this purpose, | ||||
<t>In the example below the GCKS excludes GM F. For this purpose | it changes the key tree as follows, replacing key 2 with key 15 and | |||
it changes the key tree as follows, replacing the key 2 with the key 15 | key 5 with key 16. It also generates a new SA key for a new SA3. | |||
and | ||||
the key 5 with the key 16. It also generates a new SA key for a new SA3. | ||||
</t> | </t> | |||
<figure align="center" anchor="updated-tree" | <figure anchor="updated-tree"> | |||
title="LKH tree after F has been excluded"> | <name>LKH Tree after F Has Been Excluded</name> | |||
<artwork align="center"><![CDATA[ | <artwork ><![CDATA[ | |||
SA3(K_sa3) | SA3(K_sa3) | |||
+------------------------------+ | +------------------------------+ | |||
1 15 | 1 15 | |||
+---------------+ +---------------+ | +---------------+ +---------------+ | |||
3 4 16 6 | 3 4 16 6 | |||
+-------+ +-------+ +---- +--------+ | +-------+ +-------+ +---- +--------+ | |||
A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | A(7) B(8) C(9) D(10) E(11) F(12) G(13) H(14) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<t>Then it sends the following KD payload for the new Rekey SA3: | <t>Then it sends the following KD payload for the new Rekey SA3: | |||
</t> | ||||
<figure align="center" title="KD Payload for the Group Member F"> | <figure> | |||
<artwork align="center"><![CDATA[ | <name>KD Payload for the Group Member F</name> | |||
<artwork ><![CDATA[ | ||||
KD(GP(SA3)(1{K_sa3},15{K_sa3}),MP(6{15},16{15},11{16}) | KD(GP(SA3)(1{K_sa3},15{K_sa3}),MP(6{15},16{15},11{16}) | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
While processing this KD payload: | <t> | |||
<list style="symbols"> | While processing this KD payload:</t> | |||
<t>GMs A, B, C and D will be able to decrypt the SA_KEY attribute 1{K_ | <ul spacing="normal"> | |||
sa3} by using | <li> | |||
<t>GMs A, B, C, and D will be able to decrypt the SA_KEY attribute 1 | ||||
{K_sa3} by using | ||||
the "1" key from their key path. Since no new GM_KEY attributes are in the new | the "1" key from their key path. Since no new GM_KEY attributes are in the new | |||
Key Path, they won't update their Working Key Paths. | Key Path, they won't update their Working Key Paths. | |||
</t> | </t> | |||
<t>GMs G and H will construct new Key Path 15->6 and will be able t | </li> | |||
o decrypt | <li> | |||
the intermediate key 15 using the key 6 from their Working Key Paths. | <t>GMs G and H will construct new Key Path 15->6 and will be able | |||
So, they will | to decrypt | |||
update their Working Key Paths replacing their beginnings up to the ke | the intermediate key 15 using key 6 from their Working Key Paths. So, | |||
y 6 | they will | |||
update their Working Key Paths replacing their beginnings up to key 6 | ||||
with the new Key Path (thus replacing the key 2 with the key 15). | with the new Key Path (thus replacing the key 2 with the key 15). | |||
</t> | </t> | |||
<t>GM E will construct new Key Path 16->15->11 and will be able | </li> | |||
to decrypt | <li> | |||
the intermediate key 16 using the key 11 from its Working Key Path. So | <t>GM E will construct a new Key Path 16->15->11 and will be a | |||
, it will | ble to decrypt | |||
update its Working Key Path replacing its beginnings up to the key 11 | the intermediate key 16 using key 11 from its Working Key Path. So, it | |||
with the new Key Path (thus replacing the key 2 with the key 15 and th | will | |||
e key 5 with the key 16). | update its Working Key Path replacing its beginnings up to key 11 | |||
</t> | with the new Key Path (thus replacing key 2 with key 15 and key 5 with | |||
<t>GM F won't be able to construct any Key Path leading to any key he | key 16). | |||
possesses, | </t> | |||
so it will be unable to decrypt the new SA key for the SA3 and thus it | </li> | |||
will be excluded | <li> | |||
<t>GM F won't be able to construct any Key Path leading to any key i | ||||
t possesses, | ||||
so it will be unable to decrypt the new SA key for the SA3. Thus, it w | ||||
ill be excluded | ||||
from the group once the SA3 is used. | from the group once the SA3 is used. | |||
</t> | </t> | |||
</list> | </li> | |||
</ul> | ||||
<t>Finally, the GMs will have the following Working Key Paths: | ||||
</t> | </t> | |||
<t>Finally, the GMs will have the following Working Key Paths: | <figure> | |||
<figure align="center"> | <artwork align="left"><![CDATA[ | |||
<artwork align="left"><![CDATA[ | ||||
A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | A: 1->3->7 B: 1->3->8 C: 1->4->9, D: 1->4->10 | |||
E: 15->16->11 F: excluded G: 15->6->13 H: 15->6->14 | E: 15->16->11 F: excluded G: 15->6->13 H: 15->6->14 | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Acknowledgements" numbered="false"> | ||||
<name>Acknowledgements</name> | ||||
<t>The authors thank <contact fullname="Lakshminath Dondeti"/> and | ||||
<contact fullname="Jing Xiang"/> for first exploring the use of IKEv2 | ||||
for group key management and providing the basis behind the | ||||
protocol. <contact fullname="Mike Sullenberger"/> and <contact | ||||
fullname="Amjad Inamdar"/> were instrumental in helping resolve many | ||||
issues in several draft versions of the document.</t> | ||||
<t>The authors are grateful to <contact fullname="Tero Kivinen"/>, | ||||
<contact fullname="Daniel Migault"/>, <contact fullname="Gorry | ||||
Fairhurst"/>, <contact fullname="Robert Sparks"/>, <contact | ||||
fullname="Russ Housley"/>, and <contact fullname="Paul Wouters"/> for | ||||
their careful reviews and valuable proposals for improving the document | ||||
quality. | ||||
</t> | ||||
</section> | ||||
<section anchor="Contributors" numbered="false"> | ||||
<name>Contributors</name> | ||||
<t>The following individuals made substantial contributions to earlier | ||||
draft versions of this document.</t> | ||||
<contact fullname="Sheela Rowles"> | ||||
<organization>Cisco Systems</organization> | ||||
</contact> | ||||
<contact fullname="Aldous Yeung"> | ||||
<organization>Cisco Systems</organization> | ||||
<address> | ||||
<email>cyyeung@cisco.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Paulina Tran"> | ||||
<organization>Cisco Systems</organization> | ||||
</contact> | ||||
<contact fullname="Yoav Nir"> | ||||
<organization>Dell EMC</organization> | ||||
<address> | ||||
<email>ynir.ietf@gmail.com</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
<!-- [rfced] Abbreviations | ||||
a) FYI - We have added expansions for abbreviations upon first use | ||||
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each | ||||
expansion in the document carefully to ensure correctness. | ||||
b) We note that some abbreviations are expanded multiple times | ||||
throughout the document. If there are no objections, we will update terms | ||||
to use their abbreviations after their first expansions for consistency. | ||||
One example (see the document for more examples): | ||||
Group Member -> GM | ||||
--> | ||||
<!-- [rfced] Terminology | ||||
a) Please review the following terms for capitalization and let us know which | ||||
form you prefer (uppercase or lowercase) for consistency. | ||||
Data-Security vs. data-security | ||||
[Note: Only two instances of "data-security" are lowercase; | ||||
should they be uppercase?] | ||||
Group Member vs. group member | ||||
Group Receiver vs. group receiver | ||||
Group Sender vs. group sender | ||||
Group-wide policy vs. group-wide policy | ||||
GSA registration exchange vs. GSA_REGISTRATION exchange | ||||
Header vs. header (when referring to specific headers, e.g., Payload Header vs. | ||||
IKE header) | ||||
Key Bag vs. key bag | ||||
Key information vs. key information | ||||
Key Wrap Algorithm vs. key wrap algorithm | ||||
Notify Message vs. Notify message vs. notify message | ||||
Security Association vs. security association | ||||
[Note: should the security association policy be uppercase | ||||
(e.g., "Security Association policy")? | ||||
Transform(s) vs. transform(s) | ||||
Transform ID vs. transform ID | ||||
b) We note that the following terms are used inconsistently. Please review and | ||||
let us know which form you prefer to use throughout the document. | ||||
Data-Security GSA TEK vs. GSA TEK vs. Data-Security SA policy (GSA TEK) | ||||
[Note: Are any of these terms the same?] | ||||
group key management vs. group key management protocol | ||||
Multicast Security (MSEC) Group Key Management Architecture vs. | ||||
Multicast Security (MSEC) key management architecture | ||||
c) FYI: We updated the text to reflect the forms on the right for consistency. | ||||
Please let us know of any objections. | ||||
G-IKEv2 Rekey -> G-IKEv2 rekey | ||||
GKCS -> GCKS | ||||
group key bag -> Group Key Bag | ||||
group security association -> Group Security Association | ||||
GSA Policy -> GSA policy= | ||||
IKEv2 Intermediate exchange -> IKEv2 Intermediate Exchange (per RFC 9242) | ||||
member Key Bag and member key bag -> Member Key Bag | ||||
NO_PROPOSAL_CHOSEN Notification -> NO_PROPOSAL_CHOSEN notification | ||||
protocol ID -> Protocol ID | ||||
Rekey message -> rekey message | ||||
rekey SA -> Rekey SA | ||||
Security Association Payload -> Security Association payload (per RFC 7296) | ||||
Secure Password authentication -> secure password authentication (per RFC 6467) | ||||
--> | ||||
<!-- [rfced] Some figures and tables were updated during the | ||||
formatting process and do not have titles. Would you like to add | ||||
titles to the figures and tables below for consistency throughout | ||||
the document? If so, please let us know the desired text. | ||||
Current: | ||||
Figure 10 | ||||
Figure 15 | ||||
Figure 16 | ||||
Figure 24 | ||||
Figure 27 | ||||
Figure 31 | ||||
Tables 3-8 | ||||
Tables 11-25 | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
For example, please consider whether the term "man-in-the-middle" should be | ||||
updated. --> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 642 change blocks. | ||||
2584 lines changed or deleted | 3517 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |