[Lake] Re: Comments on draft-ietf-lake-ra-01

Yuxuan Song <yuxuan.song@inria.fr> Tue, 18 March 2025 09:41 UTC

Return-Path: <yuxuan.song@inria.fr>
X-Original-To: lake@mail2.ietf.org
Delivered-To: lake@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 73CA4DB86E2 for <lake@mail2.ietf.org>; Tue, 18 Mar 2025 02:41:53 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -4.395
X-Spam-Level:
X-Spam-Status: No, score=-4.395 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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (1024-bit key) header.d=inria.fr
Received: from mail2.ietf.org ([166.84.6.31]) by localhost (mail2.ietf.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id b4xJ5BUYCz2X for <lake@mail2.ietf.org>; Tue, 18 Mar 2025 02:41:52 -0700 (PDT)
Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 328E9DB86D3 for <lake@ietf.org>; Tue, 18 Mar 2025 02:41:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:cc:message-id:in-reply-to:references: subject:mime-version; bh=aqTWk1sn30CW8/DtLpAb63MMxAo60OqZu9L75EUOdNg=; b=nTDiIlbhSJntHQFiWi6Y08ltGaBDDOn9zjv6uxxeWWArMyhy01X7kWmj pT/laRxB5RYHaArnIp5Kkn12GB4Z/yIp8p5Ptiaj+i1GD6xY+MEZH5RVM AE7K4bACsIA+urFZTkc1tTgR+JgYS4QiwO5panXt1Fk5uW6rdosAj+z6v k=;
Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=Pass smtp.mailfrom=yuxuan.song@inria.fr; spf=None smtp.helo=postmaster@zcs2-store3.inria.fr
Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of yuxuan.song@inria.fr designates 128.93.142.8 as permitted sender) identity=mailfrom; client-ip=128.93.142.8; receiver=mail2-relais-roc.national.inria.fr; envelope-from="yuxuan.song@inria.fr"; x-sender="yuxuan.song@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all"
Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@zcs2-store3.inria.fr) identity=helo; client-ip=128.93.142.8; receiver=mail2-relais-roc.national.inria.fr; envelope-from="yuxuan.song@inria.fr"; x-sender="postmaster@zcs2-store3.inria.fr"; x-conformance=spf_only
X-IronPort-AV: E=Sophos;i="6.14,256,1736809200"; d="scan'208,217";a="213429931"
X-MGA-submission: MDEwMKBM1u1+Gxj8D17ZLlEX4YmnQR02phT6JfXOtOUPml2pdLBuKWQ16FRwaXyi3d7DcJTqOAYkBjNC0vfjcLegHMahBeOJzFhOrjDU1PI91WQ1uZ1bIRswBdEVp4smdZsyDtayWW/WovAHQVzcwr4AwTjqmqZ0Fd8nBNtxLP3eWQ==
Received: from zcs2-store3.inria.fr ([128.93.142.8]) by mail2-relais-roc.national.inria.fr with ESMTP; 18 Mar 2025 10:41:52 +0100
Date: Tue, 18 Mar 2025 10:41:51 +0100
From: Yuxuan Song <yuxuan.song@inria.fr>
To: Marco Tiloca <marco.tiloca=40ri.se@dmarc.ietf.org>
Message-ID: <1499932924.8591597.1742290911351.JavaMail.zimbra@inria.fr>
In-Reply-To: <198ac6e8-9e1c-43d4-ba22-a05f10489a6c@ri.se>
References: <198ac6e8-9e1c-43d4-ba22-a05f10489a6c@ri.se>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=_71fb6b6c-471c-4aa2-833e-98a899dcce85"
X-Originating-IP: [31.133.134.69]
X-Mailer: Zimbra 10.1.5_GA_4724 (ZimbraWebClient - GC133 (Win)/10.1.5_GA_4734)
Thread-Topic: Comments on draft-ietf-lake-ra-01
Thread-Index: roQkDP2ZnH3cis3wytgsmBr99g4iZA==
Message-ID-Hash: HOR6P4Q7OEATDUY2AOFRVPRFTECOSKHE
X-Message-ID-Hash: HOR6P4Q7OEATDUY2AOFRVPRFTECOSKHE
X-MailFrom: yuxuan.song@inria.fr
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: lake <lake@ietf.org>
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [Lake] Re: Comments on draft-ietf-lake-ra-01
List-Id: Lightweight Authenticated Key Exchange <lake.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/lake/7n0Z00SX0-c6208PaU9JveiD7ak>
List-Archive: <https://mailarchive.ietf.org/arch/browse/lake>
List-Help: <mailto:lake-request@ietf.org?subject=help>
List-Owner: <mailto:lake-owner@ietf.org>
List-Post: <mailto:lake@ietf.org>
List-Subscribe: <mailto:lake-join@ietf.org>
List-Unsubscribe: <mailto:lake-leave@ietf.org>

Hi Marco, 

Thanks for sharing the comments! Although we went through these points together during the Hackathon, I’d like to document them inline here for clarity. 

> [Section 5.2.1.1.2]

> It says:
>> In case none of the evidence types is supported, the Relying Party rejects the
> > first message_1 with an error indicating support for another evidence type.
> This requires a separate error type, in addition to the one defined for a
> different reason in Section 8.1.

You are right, I've also raised it during the side meeting in Hacathon that Section 8.1 needs correction and clarification: either 

    * assigning distinct error codes for each scenario where the attestation process cannot be completed. 

or 

    * listing the different cases and consolidating them under a general error type that indicates failure to complete attestation. 

An open issue for this change can be tracked in [3]. 

> [Section 5.2.1.1.3]

> As to the definition of the measurements-format array, suggested changes:

> OLD:
> measurements-format = [
> content-type: coap-content-format,
> content-format: bytes .cbor measurements-body-cbor
> ]

> NEW:
> measurements-format = [
> content-format: uint,
> content: bytes .cbor measurements-body-cbor
> ]

> This still requires the defition of measurements-body-cbor ...

The current definition is based on draft-ietf-rats-eat[1], but as we discussed, the definition remains ambiguous. Since the measurements-body-cbor is simply a byte string without specific constraints, I will modify it to: 
NEW: 
measurements-format = [ 
content-format: uint, 
content: bytes .cbor 
] 
Tracked in open issue [2] 

> [Section 5.2.1.1.4]

> It says:

>> The receiver MUST reply with an EAD item corresponding to the background-check
> > model.

> Isn't such an EAD item exactly "Attestation_proposal" from Section 5.2.1.1.1?

The EAD item could be either "Attestation_proposal" (default) or "Evidence" (the simplified version that was just updated in the latest version). I will clarify it in the next version. Tracked in open issue [2]. 

> [Section 5.2.1.1.4]

> The intended and right way is to have ead_value not present.

This will be changed : 
OLD: The ead_value can be empty, as the ead_label serves as the trigger. 
NEW: The ead_value MUST not be present, as the ead_label serves as the trigger. 
Tracked in open issue [2]. 

> [Section 5.2.2.1.2]

> It says:

>> Relying Party generates a nonce to ensure the freshness of the attestation
> > result from the Verifier.

> Where is this nonce included? It is not shown in the Request_structure defined
> below or in the example in Figure 3.

The freshness guarantee in the passport model is still under discussion. We currently have two possible approaches: which is either a nonce or a timestamp with exipiry time indicated. This decision will be finalized in a future version. 

> [Section 5.2.2.1.4]

> It says:

> > The receiver MUST reply with an EAD item corresponding to the passport model.

> Isn't such an EAD item exactly "Result_proposal" from Section 5.2.2.1.1?

The EAD item could either be "Result_proposal" or "Result", I will clarify in the next version, can be tracked in [2] 

> -- [Section 5.2.2.1.4]
> The intended and right way is to have ead_value not present.

Noted in [2]. 

> [Section 6]

> It says:

> > Although there are 8 cases (IoT/Net, BG/PP, Fwd/Rev), ...

> I think you are also silently implying that:

> * Forward Message Flow means that the IoT device is the EDHOC
>       Initiator, while it should just mean that the EDHOC Initiator is a
>       CoAP client.

> * Reverse Message Flow means that the IoT device is the EDHOC
>       Responder, while it should just mean that the EDHOC Initiator is a
>       CoAP server.

> If you actually mean that, it's good to make it explicit.
>       Otherwise, the cases are more, and the tuple needs to also
>       indicate whether the Attester is the Initiator or the Responder.

A discussion of the cases has happened in this thread [5], and we will make the cases explicit in the next version. 

> [Section 6.1]

> The EDHOC connection identifier C_R appears for the first time
>       here in Figure 1, but it is never mentioned in the text here in
>       Section 6.1 or earlier in Section 5.2.1.

> I guess that the intent is to allow the Verifier to correlate an
>       Attestation Proposal with a later corresponding Evidence. If so:

> * Is that correlation actually required? After all, Evidence comes
>       back as including the Nonce that the Verifier offered together
>       with the EvidenceType(s).

> * A Verifier might be contacted by multiple Network Services
>       acting as Relying Party, which might accidentally be using the
>       same EDHOC Connection Identifier C_R in their respective EDHOC
>       sessions with different IoT devices, thus creating ambiguity at
>       the Verifier.

You are right. We also discussed during the Hackathon side meeting, that sending C_R to the Verifier is not a good idea. Nonce could be used for this correlation, we will remove this C_R in the next version. 

> [Section 10.1]

> It says:

> > The ead_label = TBD1 corresponds to the ead_value
>       Attestation_proposal in Section 5.2.1.1.1, Attestation_request in
>       Section 5.2.1.1.2 and Evidence in Section 5.2.1.1.3.

> When receiving an EDHOC message with the EAD item with label
>       -TBD1, how does the recipient distinguish whether it is exactly
>       about Attestation_proposal, Attestation_request or Evidence?

> The inclusion in one EDHOC message or other might still be
>       ambiguous, so is that based on the unique (?) structure of the
>       ead_value?

> The same goes for the later definition of the ead_label TBD3.

The reason that they use the same label is because the Attestation_request is only received by the Attester, and the Attestation_proposal and the Evidence are only received by the Relying Party in message_1 and message_3 separately. And they are never sent together in the same message. However, I will add a clarification in the section 5.2.1 and 5.2.2[4]. 

BR, 
Yuxuan. 

[1] [ https://www.ietf.org/archive/id/draft-ietf-rats-eat-31.html#name-measurements-measurements-c | https://www.ietf.org/archive/id/draft-ietf-rats-eat-31.html#name-measurements-measurements-c ] 
[2] [ https://github.com/lake-wg/ra/issues/14 | https://github.com/lake-wg/ra/issues/14 ] 
[3] [ https://github.com/lake-wg/ra/issues/13 | https://github.com/lake-wg/ra/issues/13 ] 
[4] [ https://github.com/lake-wg/ra/issues/15 | https://github.com/lake-wg/ra/issues/15 ] 
[5] [ https://mailarchive.ietf.org/arch/msg/lake/g4LRNn7pzqqHjoOz4WvpIdmYq7s/ | https://mailarchive.ietf.org/arch/msg/lake/g4LRNn7pzqqHjoOz4WvpIdmYq7s/ ]