Hi Paul,

> [ Removed everything where there is agreement ]

I also removed topics that require no further discussion.

> >> I wonder why the design for GSA_AUTH is not more genericly done, so
> >> that it would be possible to mix regular IKE/Child SAs with GSAs ? It
> >> seems things are now tied to the IKE_SA_INIT followed by GSA_AUTH,
> >> but there is no CREATE_CHILD_SA method to start a GSA_AUTH ?
> >
> > This is an interesting question. Technically it is possible to mix
> > creating unicast Child SAs with joining multicast GSAs using the same
> > IKE SA between the GM and the GCKS (BTW, the GSA_REGISTRATION
> exchange is used to join a group at any time once IKE SA is created).
> > But I'm not sure this is a good idea. The IKE SA authenticates the
> > peers and in general authentication requirement for unicast
> > communication will be different from those for joining multicast
> > group. I think that it is clearer if different IKE SAs are used for
these purposes.
> 
> Then maybe this should be started somewhere clearly.

I've added the text at the end of Section 2.3:

   The established secure channel between the GM and the GCKS is in fact
   IKE SA (as defined in [RFC7296]) and is referred to as such
   throughout this document.  However, it is NOT RECOMMENDED to use this
   IKE SA for the purpose of creating unicast Child SAs between the GM
   and the GCKS, since authentication requirements for group admission
   and for unicast communications may differ.  In addition, the
   lifecycle of this IKE SA is determined by the GCKS and this SA can be
   deleted at any time.

> > OLD:
> >   After the GM and GCKS complete the IKE_SA_INIT exchange, the GSA_AUTH
> >   exchange MUST complete before any other exchanges defined in this
> >   document can be done.  GSA_AUTH is used to authenticate the previous
> >   exchanges, exchange identities and certificates.  G-IKEv2 also uses
> >   this exchange for group member registration and authorization.
> >
> > NEW:
> >   The GSA_AUTH exchange MUST complete before any other exchanges
> >   defined in this document can be done.  GSA_AUTH is used to
> >   authenticate the previous exchanges, exchange identities and
> >   certificates.  G-IKEv2 also uses this exchange for group member
> >   registration and authorization.
> 
> Since I am now going by the presumption regular IKE SAs and group IKE SAs
cant
> mix, I don't understand the use of "other exchanges defined in this
document".
> Because it kinda applies to "all other exchanges". Maybe just say
something like
> "The GSA_AUTH exchange MUST follow the IKE_SA_INIT (or
> IKE_INTERMEDIARY) exchanges."

Perhaps we can remove this sentence at all. From the text below
it is clear that GSA_REGISTRATION and GSA_INBAND_REKEY 
can only be used after the IKE SA is established, as well as 
all other exchanges. To make it clear that the GSA_AUTH exchange 
completes establishing IKE SA I changed the first para of Section 2.3:

   Initial registration is combined with establishing a secure connection
   between the entity seeking for registration and the GCKS.  This
   process consists of a minimum of two exchanges, IKE_SA_INIT and
   GSA_AUTH...

Is it OK?

> >>  Initiator (GM)                   Responder (GCKS)
> >> --------------------             ------------------
> >>                            <--   HDR, SK{IDr, [CERT,] AUTH, N}
> >>
> >> Figure 5: GSA_AUTH Error Response
> >>
> >> Why would the responder in this case send its AUTH payload? Compare
> >> this to
> >> RFC7296 error handling here:
> >>
> >>         If the error occurred on the responder, the notification is
> >>         returned in the protected response, and is usually the only
> >>         payload in that response.
> >>
> >> I would omit the AUTH payload in this case to keep it the same as
regular
> IKEv2.
> >
> > I don't think the cited text from RFC 7296 is relevant here. It is
> > concerned with failed authentication.
> 
> > The draft here (Section 2.3.1) is talking about errors that prevent
> > the GM to join the group:
> 
> Ok that was not clear to me. The figure says "GSA_AUTH Error Response"
> and an AUTH error is also an error.
> 
> Perhaps add a sentence (and fix AUTH to be [AUTH]* with some text like:
> 
>       * If the initiator's authentication fails, the AUTH payload MUST be
omited.

I think this would confuse readers: in case of failed authentication IDr and
CERT are both omitted.
Thus we have to show all payloads as optional and this is not helpful for
readers.

Instead, I suggest to point to Section 2.21.2 of RFC7296,
which defines how to handle errors in IKE_AUTH (including failed
authentication), 
and clarify that this figure is for group related errors.

Is it OK?

> I think the original IKEv2 did this mainly to prevent DDoS attacks by
sending
> garbage and forcing the responder the compute an AUTH signature.

Perhaps. Another reason - there is no point to compute AUTH payload in this
case,
since if the initiator cannot authenticate itself to the responder, then
it will most probably not be able to verify responder's AUTH payload.

> > The GMs are expected to not delete IKE SA on their own.
> 
> Then that should be written down. But also how does that interact with
things like
> liveness ?

In the last para of Section 2.3.3. there is a text:

   Once a GM has received GIKE_UPDATE policy during a registration, the
   IKE SA MAY be closed.  By convention, the GCKS closes the IKE SA.

We can make it stronger:

   Once a GM has received GIKE_UPDATE policy during a registration, the
   IKE SA MAY be closed.  By convention, the GCKS closes the IKE SA, the
   GM SHOULD NOT close it.

> > If the GCKS doesn't need the IKE SA with a particular GM, it will close
it.
> > If this GM needs it later (e.g. to join other group) it will re-create
it.
> 
> Maybe add this text as well :)

I think this is already clear from the last paras of Sections 2.3.3. 

   Once a GM has received GIKE_UPDATE policy during a registration, the
   IKE SA MAY be closed.  By convention, the GCKS closes the IKE SA, the
   GM SHOULD NOT close it.  The GKCS MAY choose to keep the IKE SA open
   for inband rekey, especially for small groups.  If inband rekey is
   used, then the initial IKE SA can be rekeyed with the standard IKEv2
   mechanism described in Section 1.3.2 of IKEv2 [RFC7296].  If for some
   reason the IKE SA is closed and no GIKE_UPDATE policy is received
   during the registration process, the GM MUST consider itself excluded
   from the group.  To continue participating in the group, the GM needs
   to re-register.

and 2.3.4:

   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
   exchange).  If the GM does not initiate another registration exchange
   or Notify (e.g., NO_PROPOSAL_CHOSEN), and the GCKS is not intended to
   use the SA, then after a short period of time the GCKS SHOULD close
   the IKE SA to save resources.

> > In G-IKEv2 GMs play mostly passive role with keeping IKE SA.
> > They just create IKE SA to join the group. The GCKS decides whether
> > this SA should be kept or it is OK to delete it. See the last paras of
Section 2.3.3
> and 2.3.4.
> >
> > The GCKS never initiates IKE SA to GMs.
> 
> And this :)

Isn't this clear? :-) How this can look like? In particular - what to put in
GSA_AUTH? 
If the GCKS ever started a connection, then it would have become a GM :-)
Unlike IKEv2, the G-IKEv2 participants have distinct roles and 
the direction of SA establishment depends on these roles (as in TLS).

The GCKS is free to initiate rekey of IKE SA, but this is already stated.

   If inband rekey is
   used, then the initial IKE SA can be rekeyed with the standard IKEv2
   mechanism described in Section 1.3.2 of IKEv2 [RFC7296].

I can add a clarification "by any side":

   If inband rekey is
   used, then the initial IKE SA can be rekeyed by any side with the
   standard IKEv2 mechanism described in Section 1.3.2 of IKEv2
   [RFC7296].

> >>         The digital signing is applied to the concatenation of two
chunks: A and P.
> >>
> >> Why is just signing Chunk A or just Chunk P not enough?
> >
> > The digital signature is the only way for the GCKS to authenticate the
> > multicast rekey message, since the group keys are known to all
> > members. And since the message contains new keys, it must be signed
entirely,
> from the start of the header to the end of last payload.
> > Since the content of the IV (which is in the middle of the message to
> > be signed) is unknown at the time of signing, it is excluded from
signing by
> splitting a message into two chunks.
> > This approach works if even the size of IV is unknown at the time of
> > signing, since the Length fields are adjusted for the purpose of signing
to be as if
> no IV is present.
> 
> I am just unsure why it can't sign the "plaintext" and then let it all get
encrypted and
> sent. Why does it need this special handling of double signing similar
data - once
> plain and once encrypted. 

Only plaintext is signed, no double signing. 
But the plaintext is split into two parts (up to IV and past IV up to
padding) and the signature is applied
to the concatenation of them. This is to exclude the IV (and possible
padding) from the signed data.
This allows the IV to be generated and inserted on the later stage,
when the packet is encrypted. This also allows to fragment message
using IKE fragmentation and send it as several parts (with different IVs).

> I understand the final packets entire encryption can be
> decrypted by all group members, and the outer encryption cannot be used as
> authentication.

Correct.

> >> What is the Responder SPI set to for a GSA_REKEY IKE message that is
> >> broadcast to all GMs?
> >
> > In this case the concatenation of the Initiator SPI and Responder SPI is
used as
> an GIKE_UPDATE SA SPI (16 bytes).
> > The GCKS chooses all 16 bytes, there is no "Initiator" or "Responder"
here.
> 
> Perhaps a reminder sentence there could be added (I know it states this
elsewhere
> in the document)

I add a clarification in the para following Figure 9:

   HDR is defined in Section 4.1.  While GSA_REKEY re-uses IKEv2 header,
   the "IKE SA Initiator's SPI" and the "IKE SA Responder's SPI" fields
   are treated as a single field with a length of 16 octets containing
   the SPI of Rekey SA.  The value for this field is provided by the
   GCKS in the GSA payload (see Section 4.4.2). ...

Also fixed some inconsistencies of naming "IKE SA Initiator's SPI" and "IKE
SA Responder's SPI"
throughout the document.

> >>         If a Data-Security SA is not rekeyed yet and is about to expire
> >>         (a "soft lifetime" expiration is described in Section 4.4.2.1
of
> >>         [RFC4301]), the GM SHOULD initiate a registration to the GCKS.
> >>
> >> Wouldn't this cause all DM's to simultaniously try to do IKE to do
GCKS?
> >> Maybe at the very least, suggest some "fuzz" is used with the timer
> >> to ensure not all GMs rekey at the same second.
> >
> > In normal case the GCKS must ensure this never happens by rekeying GSA
> > before its expiration time. This may happen if the GM misses some
> > multicast GIKE_UPDATE message, for example due to network loss.
> > We expect that this will be relatively seldom event affecting only
> > some GMs. Thus, we don't think any fuzz is needed.
> >
> >> A similar problem happens after a REKEY_SA Delete operation. Maybe
> >> suggest some "fuzz" in the timing there as well? (although I guess
> >> every member wants to reconnect as fast as possible as to not miss
> >> any messages :/ )
> >
> > Nobody wants to be left behind :-)
> 
> Yes, but now the GCKS will have to do like 3000 DH's when all the GMs come
> back at once. Maybe say if this causes load/strain, the GCKS can return
> TEMPORARY_FAILURE ?

We can add advice to the last para of Section 2.4.3. for implementers to do
some fuzzing:

   It is RECOMMENDED that a GM waits some
   randomly chosen time before initiating a registration request in this
   situation to avoid overloading the GCKS.  This document doesn't
   specify the maximum delay, which is implementation-dependent, but it
   is believed, that the order of seconds suits most situations.

> > OK. I changed the text as follows:
> >
> >   (*) If AEAD encryption algorithm is used, then INTEG transform either
> >   MUST NOT be specified or MUST contain value NONE; otherwise it MUST
> >   be specified and MUST contain value other than NONE.
> 
> Maybe "values other than NONE" as you could have multiple INTEG
transforms?

No, this text is about the GSA payload content, and this payload is sent by
the GCKS to the GM
to specify group policy. Thus, only a single instance of each transform type
is allowed there.

If the GM supports different algorithms, then it would indicate this by
placing
multiple instances of the same transform types in the SAg payload.

To make this clear I updated the text just above Figure 16:

OLD:
   Valid Transform Types depend on the SA protocol and are summarized in
   the table below.

NEW:
   Valid transform types depend on the SA protocol and are summarized in
   the table below.  Exactly one instance of each mandatory transform
   type and at most one instance of each optional transform type MUST be
   present in the GSA policy substructure.

> >>          If it is a sender and does not hold a current Sender-ID
> >> value
> >>
> >> I believe that just means it is not a sender and it wants to become a
sender?
> >
> > No, it is a sender, but all the Data-Security SAs it sent data over
> > did not have counter mode ciphers, thus it doesn't have a Sender-ID.
> > At some point the GCKS installs additional Data-Security SA with
> > counter mode cipher and the sender finds itself in a situation that it
cannot use it
> as a sender, because it doesn't have Sender-iD. It should re-registered
and ask for
> one.
> 
> Thanks. It might be worth adding this text to the draft to clarify.

I added a clarification:

   ...If it is a
   sender and does not hold a current Sender-ID value (for example, when
   no counter-mode is employed for other Data-Security SAs), it MUST NOT
   install the Data-Security SAs.  It MUST initiate a re-registration to
   the GCKS in order to obtain an Sender-ID value (along with the
   current group policy).

Thank you for these comments. The updated PR is here:
https://github.com/smyslov/G-IKEv2/pull/29

Regards,
Valery.

> Paul

_______________________________________________
IPsec mailing list -- ipsec@ietf.org
To unsubscribe send an email to ipsec-le...@ietf.org

Reply via email to