Subject: Re: [IPsec] Comments to draft-corcoran-cnsa-ipsec-profile-05

From: "RFC ISE (Adrian Farrel)" <[email-masked]>
Date: Tue, 4 Jan 2022 08:31:08 -0000

Thanks Tero, much appreciated.

I will discuss this with the authors.

It is sometimes the case that this type of document (i.e. an NSA profile),
tightens the 2119 language from the referenced RFCs or removes options.
The argument in the past has been that, while the base spec gives some
degree of permissible variance, the specific deployment environment
requires particular behavior.

(FYI, these documents *never* relax the 2119 language.)

Nevertheless, I will check that the authors intended this behavior and
flag it to the responsible AD for confirmation.

Best,
Adrian

Tero Kivinen wrote:
> While doing IANA expert review on the document I found some issues
> with this document, so here are my comments to it.
>
> In section 5 there is text which says:
>
> 	In particular, since AES-GCM is an AEAD
>    algorithm, ESP implementing AES-GCM MUST indicate the integrity
>    algorithm NONE.  [RFC7296]
>
> This does not match the recommendation for the RFC7296 which says in
> section 3.3:
>
>      	      	    Combined-mode ciphers include
>    both integrity and encryption in a single encryption algorithm, and
>    MUST either offer no integrity algorithm or a single integrity
>    algorithm of "NONE", with no integrity algorithm being the
>    RECOMMENDED method.
>
> This would mean that this document if approved would make the
> recommended method of RFC7296 of no integrity algorithm not allowed by
> this draft.
>
> I do not think it is appropriate to this draft make such change, and I
> would propose to change the wording on the section 5 to match the
> RFC7296, i.e., say that it is RECOMMENDED that no integrity algorithm
> is being sent in proposal at all, but it is also allowed to send
> single integrity algorithm of "NONE".
>
> --
>
> And then some nits:
>
> --
>
> In the abstract there is unexpanded acronym NSA on first line. On the
> introduction this is spelled out but there is acronym (NSA) listed
> there, it is only included on the first line of section 3. Usually it
> would be best to include the full expanded version of the acronym on
> the first use, and then use the acronym, and also expand all acronyms
> in the abstract.
>
> --
>
>>From section 5 forward the references to RFCs use bit funny format,
> where the reference is AFTER the period of the sentence. This makes it
> hard to parse the text, as some times you could assume that the
> reference refers to the next sentence not the previous one.
>
> For example the text:
>
>    User Interface (UI) suites are named suites that cover some typical
>    security policy options for IPsec.  [RFC4308] Use of UI suites does
>    not change the IPsec protocol in any way.
>
> does not make clear where the RFC4308 reference belongs. Looking that
> the text I think it belongs to the first sentence, so better format
> would be:
>
>
>    User Interface (UI) suites are named suites that cover some typical
>    security policy options for IPsec ([RFC4308]).  Use of UI suites does
>    not change the IPsec protocol in any way.
>
> (with or without parenthesis).
>
> Same with some other references in the document.
>
> --
>
> In section 5.1, 5.2, 5.3, it would be good idea to explictly mention
> that ENCR_AES_GCM_16 is to be used with key size of 256 bits. This is
> already mentioned in the section 4, but implementors might just jump
> to section 5 and define suites from there, so changing:
>
>          Encryption: ENCR_AES_GCM_16
>
> to
>
>          Encryption: ENCR_AES_GCM_16 (with key size of 256 bits)
>
> would make all information needed available in that section.
>
> --
>
> I think we can still keep the
>
>          Integrity: NONE
>
> even if we fix the section 5 to use the recommended way of not
> including integrity algorithm at all, as this should be clear enough.
>
> --
>
> Section 6 is not really part of the UI suites, as they authentication
> is separate from the algorithm negotiation in the IKEv2, but I think
> including it here will make sense, but I wonder why text is written in
> such way that RSA with 3072-bit or 4096-bit modulus using SHA-512 is
> not allowed? I would have assumed that either SHA-384 or SHA-512 would
> have been good enough for RSA.
>
> With ECDSA I can see that match hash length with the group length, but
> that does not really apply with RSA.
>
> --
>
> Section 7 has again text that changes RFC7296.
>
> RFC7296 section 3.5 explictly says that:
>
> 		    	      This identity may
>    be used for policy lookup, but does not necessarily have to match
>    anything in the CERT payload;
>
> Text in section 7 says that:
>
>      		The identity authentication
>    method MUST use an end-entity certificate provided by the
>    authenticating party and MUST NOT use the Identification Payload for
>    policy lookup.
>
>
> Usually implementations do so that they use the Identification Payload
> to find the matching Peer Authorization Database (PAD) entry and from
> there they can then find the rules how the certificates needs to be
> matched.
>
> The problem is that there is general way of taking certificate and
> getting some information there and matching that to PAD. The
> information in certificate can come from multiple locations, i.e., it
> might be Subject or from SubjectAltName etc. Usually what field is
> used depends on the policy, and the identification payload is used to
> find the PAD entry, and then PAD entry will tell that end entity
> certificate must have matching entry in for example SubjectAltName if
> the Identification payload happened to be ID_RFC822_ADDR.
>
> I have no idea how to implement section 7, i.e., how do I use the
> end-entity certificate provided by the authentication party to find
> policy...
>
> --
>
> In section 11 there is bit more of this Identification payloads text,
> but I do not think it helps at all, just repeats the confusion:
>
>    For CNSA compliant systems, the IKEv2 authentication method MUST use
>    an end-entity certificate provided by the authenticating party.
>    Identification Payloads (Idi and IDr) in the IKE_AUTH exchanges MUST
>    NOT be used for the IKEv2 authentication method , but may be used for
>    policy lookup.
>
> here it actually contradicts the section 7, which said "MUST NOT use
> the Identification Payload for policy lookup".
>
> --
>
> In section 12 there is text:
>
>    For all applications to which this section applies, PSK
>    authentication MUST be performed using HMAC-SHA-384 [RFC4868].
>
> which is contradicting section 6 which says that
>
>
>    For CNSA compliant systems, authentication methods other than
>    ECDSA-384 or RSA MUST NOT be accepted for IKEv2 authentication.
>
> thus PSK is not allowed authentication method, so why specify MUST use
> HMAC-SHA-384 for authentication method which is not allowed?
>
> --
>
> I do not think any of the issues affect the IANA allocations, thus I
> will go forward with that, but I would prefer that the authors would
> fix at least the issues where this document is not matching RFC7296,
> and perhaps clarify how the implementations are supposed to use the
> Identification payload and end entity certificate.
> --
> [email-masked]
>

-- 
Adrian Farrel (ISE),
[email-masked]

---

From: "RFC ISE (Adrian Farrel)" <[email-masked]>
Date: Tue, 4 Jan 2022 08:32:39 -0000

Resend with corrected email alias

Adrian

-- 
Adrian Farrel (ISE),
[email-masked]

---

From: Dan Harkins <[email-masked]>
Date: Tue, 04 Jan 2022 12:13:55 -0800

Hello,

   I agree with Tero here. This "tightening" is not necessary. There's 
no security
benefit by disallowing the RFC 7296 RECOMMENDED method of treating AEAD 
ciphers.
The only thing this will do is require pointless changes to existing RFC 
7296
compliant implementations.

   regards,

   Dan.

-- 
"The object of life is not to be on the side of the majority, but to
escape finding oneself in the ranks of the insane." -- Marcus Aurelius

---

From: Paul Wouters <[email-masked]>
Date: Wed, 5 Jan 2022 10:01:23 -0500 (EST)

On Tue, 4 Jan 2022, Dan Harkins wrote:

>   I agree with Tero here. This "tightening" is not necessary. There's no 
> security
> The only thing this will do is require pointless changes to existing RFC 7296

I also agree. While I wish we had only one way of specifing an AEAD
without integrity algorithm instead of two, the ship sailed long ago
and code is there do deal with both of these. There is no gain from
restricting it.

Paul