[Lake] spt review of echoc-12

Sean Turner <sean@sn3rd.com> Wed, 15 December 2021 06:35 UTC

Return-Path: <sean@sn3rd.com>
X-Original-To: lake@ietfa.amsl.com
Delivered-To: lake@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 89B483A05A0 for <lake@ietfa.amsl.com>; Tue, 14 Dec 2021 22:35:10 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.099
X-Spam-Level:
X-Spam-Status: No, score=-2.099 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=sn3rd.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id oWt7TjmaFPVB for <lake@ietfa.amsl.com>; Tue, 14 Dec 2021 22:35:05 -0800 (PST)
Received: from mail-qt1-x833.google.com (mail-qt1-x833.google.com [IPv6:2607:f8b0:4864:20::833]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 44A2E3A040C for <lake@ietf.org>; Tue, 14 Dec 2021 22:35:05 -0800 (PST)
Received: by mail-qt1-x833.google.com with SMTP id o17so20869492qtk.1 for <lake@ietf.org>; Tue, 14 Dec 2021 22:35:05 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sn3rd.com; s=google; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=m9Z13AEPhSiGD8vgCzGaAIJv+Uvzeeex6qv3IQtdS3U=; b=FIFWVk2KBFJtlp5bYVl5XIcfYkmspdLjIplqVPgnQfhNsbq4TrNMkPfTxtowzBmaSq dxBwzMyKlq5ICO0KHAh/ZRp08iWosjkaOrlS+6GNQ+nX1tO6A4ieUsTMihB0jNGPGmNK biwBvxTGGrOUFjuBzoS1IcbNGALa4W/rhvBcE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:to; bh=m9Z13AEPhSiGD8vgCzGaAIJv+Uvzeeex6qv3IQtdS3U=; b=0zD8/uXIFZtok/TWi0k10Wqa7S2og9aNiMmNM0k/8scdAQ/Azl4bUnpoZqBrKcyqlk do3/1eBZvAIQaedikmZEB2Z+5iu4O0ey1siLIHiuFSAy8fhr2sxsLb9RK7iDICfS+p1a 4s6l4OzxkiNweGm/MVrUadH96xz/pjGGlBDRNObCvkXFXb1niHH9sEXhjBuO3zrjeR/s 0xnR5iWZVKu2nf5DVKV6GLH3CNwLBacFbLuU3ZKp19ftSo7IBQcHLyD7i0E3/lcHlfVu 41z45EISXjDHCk3XZXvHjORwuyEoidZEKfxzZt3z1HN7Y288ZhcEyLtGzxfVdXGTBR3F qAdg==
X-Gm-Message-State: AOAM533UTB/Lcvo2y4aglH/F5RUF+0W9KzqiLwBJUM+ggybAJJ/pb3v2 PYkf2v/wDy3Ck+99/GEEVrjEU2zQnE9WFQ==
X-Google-Smtp-Source: ABdhPJy08AZavlfXwkaLsB+zQgehHRwzm1DrjjuPvJu6BZhadz1xmbeF+2nYcJSfqogiY9FGqn1dgg==
X-Received: by 2002:a05:622a:11cf:: with SMTP id n15mr10250576qtk.557.1639550101926; Tue, 14 Dec 2021 22:35:01 -0800 (PST)
Received: from smtpclient.apple (pool-71-178-177-131.washdc.fios.verizon.net. [71.178.177.131]) by smtp.gmail.com with ESMTPSA id w13sm619366qko.20.2021.12.14.22.35.01 for <lake@ietf.org> (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 14 Dec 2021 22:35:01 -0800 (PST)
From: Sean Turner <sean@sn3rd.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\))
Message-Id: <1B6DD418-03D8-4B78-9C26-3C821DF2DB9E@sn3rd.com>
Date: Wed, 15 Dec 2021 01:35:00 -0500
To: LAKE List <lake@ietf.org>
X-Mailer: Apple Mail (2.3654.120.0.1.13)
Archived-At: <https://mailarchive.ietf.org/arch/msg/lake/01_qDnQqJlsem3KT58F6XNVbSQ4>
Subject: [Lake] spt review of echoc-12
X-BeenThere: lake@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Lightweight Authenticated Key Exchange <lake.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/lake>, <mailto:lake-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lake/>
List-Post: <mailto:lake@ietf.org>
List-Help: <mailto:lake-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/lake>, <mailto:lake-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 15 Dec 2021 06:35:11 -0000

Like others I agreed to review the edhoc I-D at the last meeting. I did not have a chance to make sure that I am not repeating comments from others. To save the WG some time, I tried to categorize these along the lines of questions/nits where discuss might need some f2f time and nits, I believe, can be dealt with by the authors as they see fit.

Disclaimers: 0) I am not a cryptographer or security researcher. 1) It is entirely possible I am entirely missing the plot/point. 

Apologies: I ran out of time to submit these as Issues/PRs. I can do so after the interim, including those that got rejected at the 12/15 interim for posterity sake. 

s1.2 (nit): If s1.2 is supposed to be an applicability statement in the context of RFC 2026, can we call it that. i.e., r/Use of EDHOC/Applicability Statement. 

revised: And then, I see section 3.9. Maybe instead of renaming s1.2, a forward pointer to s3.9 is all that is needed to say that an applicability statement is required?

s2, 2nd para (nit): refer to both because it’s (D)TLS and not just TLS?  I.e.,
s/(D)TLS 1.3 [RFC8446]/(D)TLS 1.3 [RFC8446] [I-D.ietf-tls-dtls13]

s2, 2nd para (nit): I think you can safely drop the 2nd reference to IKEv2
s/like IKEv2 [RFC7296],/like IKEv2,

s3.2/s3.5.2 (question): Smarter people than I have devised plans to allow mixing of different METHODs. How does this impact the key usage extension present in certificates? In other words, are METHODS 1 and 2 suggesting that a DS and DH key be used together and does that violate any kind of restrictions on the key usage settings for certificates?

s3.4 (nit): Is transport of error messages, as noted by s6 (2nd para), needed in the list.

s3.5 para after the bullets (nit): I think you are trying to say the credentials have to be the same type, i.e., you can’t have PGP one one side and x.509 on the other. I am not sure that the following is the best wording:

s/Identical authentication credentials need to be established in both endpoints to be able to verify integrity./The same type of authentication credentials are needed baby the endpoints to be able to verify integrity.

s3.5.1, 1st para (nit): At first I thought for sure this had to be a MUST, but it says or application so I am not sure:

The EDHOC implementation or the application must enforce information about the intended endpoint …

s3.5.1 (nit): expand on first use NAI & EUI

s3.5.1, 1st bullet (nit): Often we refer to this a Proof-of-Possession so maybe you could say that:

s/EDHOC provides
      proof that the other party possesses the private authentication
      key corresponding to the public authentication key in its
      certificate./EDHOC provides
      proof that the other party possesses the private authentication
      key corresponding to the public authentication key in its
      certificate, which is also known as proof-of-possesion.

s3.5.1, 1st bullet (question): This seems like the “mixing” discussed in s3.2, relies on the identity provide in the certificate?

    The certification path provides proof that the
    subject of the certificate owns the public key in the certificate.

s3.5.2 (question): related to comment on s3.2.

s3.5.3, 2nd para (nit): Could point to RFC 3279/5480 for some key usages for ECDSA and RFC 8410 for x25519/x448.

In
   X.509 and C509 certificates, signature keys typically have key usage
   "digitalSignature" and Diffie-Hellman public keys typically have key
   usage "keyAgreement" [RFC3279][RFC8410].

s3.6 (nit): refer to both?:
s/TLS 1.3 [RFC8446]/
(D)TLS 1.3 [RFC8446] [I-D.ietf-tls-dtls13]

s3.5.3 (question): EDHOC seems to assume you only provide the reference for the initiator's/responder’s. Was there any thought it to providing references for the rest of the certification path up to but not including the Root CA’s certificate? I mean technically they can also be in there certificate provided so not necessarily needed.

s3.6, CNSA ref (nit): I made a similar comment against the ZRTP spec when they said their alg suites were compliant with Suite B … probably best to say Suite 24 and 25 use algorithms in CNSA and leave the word “compatible” for “them” to say.

s3.8 (comment): Wow .. so you can send in the CSR in EAD, if it works then you can use the cert in the later messages (e.g., kind of like EAP)? Sure hope there’s no kind of CSR-related error. And, you know that the CA gets to decide the name right. Sorry just trying to digest it all.

s4.3 (nit): s/kan/can

s4.4/s5.1 (question): Do you need to provide advice on when to delete the old PRK_4x3m? I.e., does the peer that sent this need to wait for some kind of confirmation before deleting it?

s5.1 (question): Is a state diagram needed? One thing people clamored for from TLS was a state machine. Maybe a diagram isn’t needed because there are so few states?

s5.1 (comment, no action required): Cute. Deduplication is how to deal with message reply ;)

s5.2.1, s.5.3.1, s5.4.1, s5.5.1 (nit): is the “,” before the closing bracket right? e.g.,

OLD:

    ? EAD_1 : ead,
}

NEW:

    ? EAD_1 : ead
}

s5.2.2 (question): If this this initiator processing section, how does the initiator know to truncate?

  …, truncated after the cipher suite selected for this
  session.

s5.2.3, s5.3.3, s5.4.3, s5.5.3, last sentence (question - probably being pedantic): If there is an error but an error message is not sent, is the session discontinued? How does the peer know it was discontinued if an error is not sent?

s5.2.3, s5.3.3, s5.4.3, s5.5.3 (nit, which I am sure the RFC editor fix better than I could, but I couldn’t help myself): Instead of the e.g., in middle of the MAY sentence maybe:

OLD:

   Sending error
   messages is essential for debugging but MAY e.g., be skipped if a
   session cannot be found or due to denial-of-service reasons, see
   Section 8.6.

NEW:

   Sending error
   messages is essential for debugging but MAY be skipped if, for
   example, a
   session cannot be found or due to denial-of-service reasons, see
   Section 8.6.

s6.1 (nit): To stop loops, should any peer that receives an ERR_CODE=0 discontinue the session? I.e., is that worth stating in the I-D?

s6.2 (nit): It’s really more “Freeform” than unspecified right? I mean the string is required so it’s definitely not unspecified per se.

s6.3.2, 2nd to last para (nit): s/shall/SHALL

s6.3.2/s5.2.1 (nit): Might be worth noting earlier that SUITES_R is not important. Also, s5.2.1, mentioned SUITES_I, but s5.2.2 does not mention SUITES_R.

s7, last para (nit): s/To enable as much interoperability as we can
   reasonably achieve,/To enable as much interoperability as possible,

s8 (question): Isn’t some kind of consideration needed to address the use of PSKs shared by more than two? See RFC 8773 for some considerations wrt to group key sharing and that sharing impact on authentication.

s8.3 (nit): You can informatively refer to RFC 6194 to slam the door on SHA-1.

s9 and onwaard (apologies): I ran out of steam.

s? (question): Is a peer supposed to check status information for its peer’s certificate/key? 

I-D Nit complaints (not all of them because the DOWNREFs (mostly) looked intentional):

== Missing Reference: 'RFC9052' is mentioned on line 2411, but not defined

Cheers,
spt