[core] Re: draft-ietf-core-groupcomm-bis-14 ietf last call Tsvart review
Esko Dijk <esko.dijk@iotconsultancy.nl> Tue, 09 September 2025 19:53 UTC
Return-Path: <esko.dijk@iotconsultancy.nl>
X-Original-To: core@mail2.ietf.org
Delivered-To: core@mail2.ietf.org
Received: from localhost (localhost [127.0.0.1]) by mail2.ietf.org (Postfix) with ESMTP id 743AB5FF8B81; Tue, 9 Sep 2025 12:53:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at ietf.org
X-Spam-Flag: NO
X-Spam-Score: -2.075
X-Spam-Level:
X-Spam-Status: No, score=-2.075 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_NONE=-0.0001, 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, T_KAM_HTML_FONT_INVALID=0.01, T_TVD_FUZZY_SECURITIES=0.01] autolearn=ham autolearn_force=no
Authentication-Results: mail2.ietf.org (amavisd-new); dkim=pass (2048-bit key) header.d=iotconsultancy.nl
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 9rnb681Uy2cH; Tue, 9 Sep 2025 12:53:19 -0700 (PDT)
Received: from dane.soverin.net (dane.soverin.net [185.233.34.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-256) server-digest SHA256) (No client certificate requested) by mail2.ietf.org (Postfix) with ESMTPS id 777BB5FF8AD2; Tue, 9 Sep 2025 12:53:16 -0700 (PDT)
Received: from smtp.soverin.net (unknown [10.10.4.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519) (No client certificate requested) by dane.soverin.net (Postfix) with ESMTPS id 4cLvd71Dw2zcBF; Tue, 09 Sep 2025 19:53:15 +0000 (UTC)
Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.100]) by soverin.net (Postfix) with ESMTPSA id 4cLvd64Q93zMZ; Tue, 9 Sep 2025 19:53:14 +0000 (UTC)
Authentication-Results: smtp.soverin.net; dkim=pass (2048-bit key; unprotected) header.d=iotconsultancy.nl header.i=@iotconsultancy.nl header.a=rsa-sha256 header.s=soverin1 header.b=YXec2IB1; dkim-atps=neutral
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iotconsultancy.nl; s=soverin1; t=1757447594; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=0GY0frfCeqbA6ubs57l8yHzQ3tO+t89ztkLA1HfO0yM=; b=YXec2IB1mYwvgXmD7Oqr+sUvszFe0RZLxQi8N2x6w76TyLRk8c6dLeaPF6UPLIoo8FnQxR I195kZL0mm9wKAaAkS9aDvqqZPbCpUVN377FnDRCyqazQ2JNOkAQbT18t5wFAbcU29E6mQ 37Gr13UDpQbVa6vexwjFwCmFLjKDcD69uuqCQ5tVZuiFMU/bX+N44sAaeI77DC54oVtNlz ZW+bSRX8NCSnvc2mD8eRfCHFDhhup0jZHkUkRxpTvGl2WUPpsDQT4CiS3PnZfNr2dC66Wm Xh9qXcpaEBN/45xMf/apLx0ILtYz+zGWWEgOTvwKqrcpUpKseYwXmLB2dS5rrA==
X-CM-Envelope: MS4xfHYe0YSymxE56xbJQHFmWHXMKzRurIlDX9liCqTQpC2r/Slc+rMb7LQX8Jo8GJVKxB4RqaJmef3s3gn8rSILNuYTkBhlbMs9inmwefbohIPnDGKo/3i9 5b3DcWbxPMg7mLY9snxfdNOwK4y5GX9ubzhiwy5xLM6vYYzOAVACoUUd8iEbz9EfxG2Fd+o90dD8g6UIu0qUaSZj/2g067JR0jvt2MztS5JlilH+9RbZDEEU lQGCYo4JGt5+9eYCvghcP1gJClgbCbvBLI+haOsfNfpVojdNfWWm2UMPAX9c/bfsWJYA1CELx7XP+FwsscFxYqj03yaTOgmkdPgh+jLnFEYfDokdfQPRd7iZ LcKyjHjI
Content-Type: multipart/alternative; boundary="------------8mek0QLjvgaktdiLo95WFC5K"
Message-ID: <d40c21b7-951a-4479-b61e-2e8578cad3d5@iotconsultancy.nl>
Date: Tue, 09 Sep 2025 21:53:13 +0200
MIME-Version: 1.0
To: Magnus Westerlund <magnus.westerlund@ericsson.com>
References: <175378808580.83869.7944276475047904188@dt-datatracker-5bd446d5fd-c47nq>
Content-Language: en-US
From: Esko Dijk <esko.dijk@iotconsultancy.nl>
Organization: IoTconsultancy.nl
In-Reply-To: <175378808580.83869.7944276475047904188@dt-datatracker-5bd446d5fd-c47nq>
X-Spampanel-Class: ham
Message-ID-Hash: BSG2LDCMQPP6RL5G3JUCZSCXWHWO3O2F
X-Message-ID-Hash: BSG2LDCMQPP6RL5G3JUCZSCXWHWO3O2F
X-MailFrom: esko.dijk@iotconsultancy.nl
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-core.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
CC: core@ietf.org, draft-ietf-core-groupcomm-bis.all@ietf.org, last-call@ietf.org, tsv-art@ietf.org
X-Mailman-Version: 3.3.9rc6
Precedence: list
Subject: [core] Re: draft-ietf-core-groupcomm-bis-14 ietf last call Tsvart review
List-Id: "Constrained RESTful Environments (CoRE) Working Group list" <core.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/TrRHRrhlj67twA4vChfC-sx9fs8>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Owner: <mailto:core-owner@ietf.org>
List-Post: <mailto:core@ietf.org>
List-Subscribe: <mailto:core-join@ietf.org>
List-Unsubscribe: <mailto:core-leave@ietf.org>
Hello Magnus, (cc: tsv-art, core) Thanks for your review of the groupcomm-bis draft! We're currently working on text updates based on the reviews so far. Before we make changes based on your comments, we wanted to check if you agree with the proposed resolutions: see the author's comments inline below, marked with "[A]". On 29-7-2025 13:21, Magnus Westerlund via Datatracker wrote: > Document: draft-ietf-core-groupcomm-bis > Title: Group Communication for the Constrained Application Protocol (CoAP) > Reviewer: Magnus Westerlund > Review result: Ready with Issues > > This document has been reviewed as part of the transport area review team's > ongoing effort to review key IETF documents. These comments were written > primarily for the transport area directors, but are copied to the document's > authors and WG to allow them to address any issues raised and also to the IETF > discussion list for information. > > When done at the time of IETF Last Call, the authors should consider this > review as part of the last-call comments they receive. Please always CC > tsv-art@ietf.org if you reply to or forward this review. > > First of all I will note that this publication is moving a specification from > Experimental to Proposed Standard thus a higher bar for robustness in > congestion control and security issue mitigation is to me reasonable and to be > expected. > > General: > So what multicast models are really supported by this specification? To my > reading it appears focused on Any Source Multicast, and Source Specific > Multicast (RFC4607) does not work as the unicast responses are sent to the > source address of the multicast packet containing the COAP request. I think it > would be good to be clearer on these limitations. To me it is unclear if a > forward proxy would work as an interface and the specific source for a SSM > group. Some clarification on this would be good. [A] The intended scope and focus is indeed Any Source Multicast (ASM), while Source Specific Multicast (SSM) is not really considered for constrained/IoT applications. In RFC 7390, this was said explicitly in Section 1.2. This explicit scope statement was probably removed again during editing because we didn't (and still don't) see any fundamental problem using SSM with CoAP multicast. There are, however, some practical issues like the CoAP server being required to know the IP address of the CoAP client (source). So this would require some text on how sources are discovered in constrained/IoT applications. And for the proxy case, the source address of the proxy would be required to know instead of the original client's address. But we don’t want the document to go into such details, since we don’t currently anticipate constrained/IoT use cases making use of SSM. To make that clear, an explicit scope statement would be good. We propose the following update in Section 1.1: OLD This document defines UDP/IP multicast as the default transport protocol for CoAP group requests, as in [RFC7252]. Other transport protocols … NEW (emphasis mine) This document defines UDP/IP multicast as the default transport protocol for CoAP group requests, as in [RFC7252]. Only the Any Source Multicast (ASM) mode [RFC5110] of IP multicast operation is in scope. Other transport protocols … The reference to RFC 5110 is normative, like it is in RFC 7390. > I think there are several areas where this document is taking way to much an > toolbox approach rather than being descriptive on what is normative to > implement and use for particular use cases and deployments. This especially in > relation to security mitigations. There are a lot of things mentioned in the > security conisderations that I think should be normatively required to be > supported and implemented to ensure secure deployment of groupcomm. Examples of > this includes mitigation of amplification attacks. Also the use of NoSec mode > should be stated early on the draft basically as an application statement for > this mode. To my understanding NoSec is extremely limited and that should be > made clear up front. [A] The mentioned “toolbox approach” is mostly intended: CoAP has diverse applications with different requirements. For example when used in satellites vs a home door sensor on a wireless mesh network. Specifically about the example on mitigation of amplification attacks, Section 6.3 “Risk of Amplification” in the security considerations does include normative requirements to mitigate such attacks. Are particular mitigations missing, or do we need to make more clear that there are normative requirements in 6.3 by providing a forward pointer from earlier sections? About the NoSec mode: as we understand from your comment, the following could be highlighted earlier in the text: * The “NoSec” mode provides no secure communication and message protection at all. * The “NoSec” mode is discouraged and is deemed acceptable/unavoidable only in a few, very specific cases. Hence, its use is generally NOT RECOMMENDED. Only after serious considerations and understanding, is its use “opt-in” in particular circumstances, as enabled through a specific application statement. Currently, the first two occurrences of the term “NoSec” are: 1. In Section 1.3 “Changes to Other Documents” 2. in Section 2.1.3 “Security Group” We can make the following update in section 1 “Introduction”, by extending the third from last paragraph: OLD Both unsecured and secured CoAP group communication are specified in this document. … NEW (*emphasis *mine) Both unsecured and secured CoAP group communication are specified in this document. *Unsecured group communication relies on the NoSec mode, whose use is strongly discouraged and is limited to specific cases (see Section 4).* We consider adding some text also in Section 2.1.3 “Security Group”, within the fifth paragraph already mentioning the “NoSec” mode: > If the NoSec mode is used (see Section 4), … However, this paragraph already explains that there’s no security in this mode and provides the forward pointer to Section 4, which in turn provides the specific cases/limitations of NoSec. Section 4 also provides forward references to Sections 6.1 and 6.3 for the details, e.g. explanations of why NoSec can be used in the initial-discovery use case. So it seems that this could be already sufficiently clear in Section 2.1.3, without adding further text. Would the above work for you? > Section 3.1.3 > Request repetition is proposed of two different types but it is unclear how a > client should be able to determine that the loss happened on the client to > server, vs server to client path. Shouldn't at least one of the methods be the > recommended one, like using the same token value and message ID that can be > suppressed on server side? [A] So there is the loss on the “client to server path”, which is the multicast request CoAP message, and the “server to client path”, which is the unicast CoAP response message. For completeness: in case the server decides to (i.e., it is programmed/configured to) send a Confirmable (CON) CoAP response back to the client, there’s also the CoAP Ack message on the “client to server path” which may be lost. In most cases, the client is not able to understand what exactly has happened, i.e., whether the group request hasn’t reached some servers or whether only the responses sent by those servers (if any) have been lost. In general, the client may not even know how many responses to expect and/or whether those servers are suppressing their responses. About recommending one of the two methods, we have had some discussion: our conclusion was that it is up to the client, i.e. the client’s implementer, to select a method that fits the particular use case, if the client wishes to make such a selection. The selection can be even deployment-specific, or differ per-resource. In case the client “doesn’t care” or the developer of the client is not aware of this possibility of having a choice in the first place, then the client would fall back (automatically) to a default method. The default method is what the base CoAP RFC specifies by default for this case, and what a CoAP stack implementation would do by default, which is to send a Non-Confirmable (NON) message only once and not repeat the message with the same Message ID (MID) multiple times. See Section 4.3 of RFC 7252: A sender MAY choose to transmit multiple copies of a Non-confirmable message within MAX_TRANSMIT_SPAN … This repeating of the same NON message with the same Message ID is not something that a CoAP stack implementation would likely do by default: it would have to be explicitly configured or requested. Some CoAP stacks may not even offer the option of repeatedly sending the same message: it’s optional, after all, and we have no intention to change that. We assume that the most common method of repeating a NON request (e.g., invoked if no answer comes within a certain time) would be for the higher layer application to resend the same request again via the CoAP stack API. In this case, the request message would get sent with a different MID value because it’s treated as a new request, causing a new message from the CoAP stack point of view. So the second method would be the “default” one, we think. Do you think that this is a good direction? > Section 3.6: > I guess the general principle described is the simplest that gives some > back-off. However, I think more guidance are needed on both the variables used > in computing the lb_leisure value as well as the default values PROBING_RATE > and DEFAULT_LEISUIRE. > > It is a bit unfortunate that the protocol setup results in it being difficult > for any endpoint to judge the server group size. Thus it needs to be > configured. Response size (S) could be estimated based on sent responses. The > data transfer rate given to groupcomm responses (R) appear to be needs > configuration. Also which level of load factor is deemed acceptable in relation > to link speeds? Some one configuring a whole system needs to take into account > all the different application groups here. > > I think there are also potential to discuss the issue of client request rates. > I assume that there exist both deployments when the client is not also a server > and thus (I guess) is not part of the multicast group, as well as where it is a > member. If the client is a multicast member it could actually attempt to judge > the current request rate and based on that determine if it can send the > request. Unfortunately an individual client struggles to determine if the > multicast group or unicast response somewhere leads to overload. [A] We agree that more and clearer guidance around the CoAP variables and lb_Leisure computation can be given. For what it’s worth, Section 3.6 is silently and largely inheriting the body of recommendations defined for CoAP group communication in Section 8.2 of RFC 7252, which we didn’t want to re-explain. A few considerations and suggestions on how to improve Section 3.6 of this document: * We can recap the existence and meaning of the parameters NSTART, PROBING_RATE, and DEFAULT_LEISURE; and the expression/formula lb_Leisure from Section 8.2 of RFC 7252. * On computing lb_Leisure, the only difference compared to RFC 7252 seems the estimated response size S. With the recommended use of Group OSCORE, protected responses are larger in size than their plain versions, due to the CoAP OSCORE Option and the larger protected CoAP payload. In turn, this is greatly affected by: i) a response being protected with the group mode or the pairwise mode of Group OSCORE; ii) specific actions that the server originating the response takes when protecting a response with Group OSCORE (e.g., including the “Partial IV” field or the “kid context” field in the OSCORE option). About a server computing the lb_Leisure value for itself, the server cannot know how exactly other servers are going to protect their responses. However, the guidelines below can apply. When the group mode is used, it’s safe to assume a/minimum/overhead due to Group OSCORE equal to 76 bytes (3 bytes of CoAP OSCORE Option including its own 1-byte header, the flag byte, and a 1-byte “kid” field; CoAP payload enlarged by 1+8+64 bytes, i.e., encrypted REST code, the smallest integrity tag, and the counter signature). This can easily go up to 90 or 100 bytes, e.g., if an encryption algorithm with a 16-byte integrity tag is used, and the OSCORE option also includes the “Partial IV” field, the “kid context” field, and a larger “kid” field. When the pairwise mode is used, it’s safe to assume a/minimum/overhead due to Group OSCORE equal to 10 bytes (1 byte of empty CoAP OSCORE Option thus including only its own 1-byte header; CoAP payload enlarged by 1+8 bytes, i.e., encrypted REST code and smallest integrity tag). This can easily go up to 30 bytes, e.g., if an encryption algorithm with a 16-byte integrity tag is used, and the OSCORE option also includes the “Partial IV” field, the “kid context” field, and a larger “kid” field. Given that RFC 7252 conservatively considers S equal to 100 bytes, we can say that, when Group OSCORE is used as recommended, S is conservatively considered to be 200 bytes if the OSCORE group is set to (also) use the group mode, and to 130 bytes otherwise (i.e., if it is set to use only the pairwise mode). In either case, a more accurate setting of S depends on the exact setting and use of Group OSCORE in the group. Using these values of S in the formula to compute the lower bound of lb_Leisure in Section 8.2 of RFC 7252, and using the same example values for G and R, the worst case is modeled by a lower bound of: o 20 seconds, if the OSCORE group is set to (also) use the group mode. o 13 seconds, it the OSCORE group is set to use only the pairwise mode. * Following-up on the previous point and building on the same “halving-rationale” in Section 8.2 of RFC 7252, the suggested DEFAULT_LEISURE can be: o 10 seconds, if the OSCORE group is set to (also) use the group mode. o 6.5 seconds, it the OSCORE group is set to use only the pairwise mode. * As to PROBING_RATE, we think that we can still keep 1 byte/second as defined in Section 4.8 of RFC 7252. We can explicitly state that the same default value applies here. * As to NSTART, we can clarify/correct RFC 7252 on the below text in Section 4.7 of 7252. This text defines NSTART in terms of one given CoAP server, however for the purpose of CoAP group communication a group request sent to a group of multiple servers would still count as 1 for the NSTART limit. I.e. it’s about the number of simultaneous outstanding interactions to a given IP multicast address, not a given server as written in 7252: In order not to cause congestion, clients (including proxies) MUST strictly limit the number of simultaneous outstanding interactions that they maintain to a given server (including proxies) to NSTART. * Like in Section 4.8.1 of RFC 7252, we can also explicitly state that, also for CoAP group communication: … DEFAULT_LEISURE (…) and PROBING_RATE may be configured to values specific to the application environment (including dynamically adjusted values); however, the configuration method is out of scope of this document. * Yes, appropriately configuring these parameters is not simple, might require their re-configuration over time, and has to take into account all the application groups and CoAP groups that are set up. * Yes, a client might be client-only, hence not a member of a CoAP group to which it sends group requests over multicast. But even if the client is also a server, hence a member of a CoAP group, that client cannot really “attempt to judge the current request rate and based on that determine if it can send the request”. In general, there is a high chance that such a judgment is in fact based on wild guesses, due to the unpredictable behavior of other endpoints sending messages. That is, even by considering the recently monitored network activities, a client is hardly in the position to reliably determine a possible upcoming traffic overload. For example, there may be significant activity on the network due to other protocols than CoAP group communication, or to/from members of other CoAP groups that the server is not aware of. Instead, it is better to rely on explicitly configured values (if possible) or otherwise default values for the already existing parameters from RFC 7252 to be used for enforcing congestion control when group communication is used. Our proposal is to add a new Section 3.6.1 that focuses on Leisure (as part of Section 3.6 “Congestion Control”). This new section can include an example for an IEEE 802.15.4 / 6LoWPAN based network; and present the new lb_Leisure / DEFAULT_LEISURE values as calculated above. Would the above work for you? > Section 3.7: > Rate limiting observation notificatitons. So per RFC 7641 there are some > recommendations for congestion control of the Obersvation notification. What I > can determine from reviewing RFC 7641 Section 4.5.1 and RFC 7252 Section 4.7 > the number of outstanding or non-confirmable notifications is NSTAT and for > the later NSTAT will be 1. The issue I see with this is that with the groupcomm > a client can request notifications from all servers in the application group. > If the resource that is observed is something that will be synchronized across > a large group of server a feedback implosion can be generated. Thus my question > is if the sending of observation notification when the request has been > received over groupcomm should default to use a random backoff time to attempt > to smear out the notifications over time. [A] Currently, Observe notifications sent in response to a request received over GroupComm are already governed by the leisure period as discussed above and defined in Section 8.2 of RFC 7252. Highlighting the relevant part *with emphasis*: The server SHOULD then pick a random point of time within the chosen leisure period to send back the unicast response to the multicast request.*If further responses need to be sent based on the same multicast address membership, a new leisure period starts at the earliest after the previous one finishes.* In the draft, we could clarify that an Observe notification (e.g., the second or third one sent by a server, etc.) is a specific example of a “further response” as defined in this quote. So each notification always gets its own leisure period and all leisure intervals related to a particular multicast group address need to be non-overlapping, as specified in the highlighted sentence. So, the leisure random delay is applied 10 times in sequence, when for example 10 different clients have to be notified, if these 10 clients were subscribed via a request using the same IP multicast group address. Such a statement/clarification could be made in Section 3.6 or in a new Section 3.6.1 “Leisure” that we proposed also earlier in this mail. Note that the above applies to all types (NON/CON) of notifications. Most often, observe notifications are Non-Confirmable. As per Section 4.5 of RFC 7641, a server has to intersperse those with notifications sent as a Confirmable message. For the Confirmable notifications, there’s a random backoff time based on the CoAP retransmission algorithm - applied only to retransmissions of the original CON response. In this case the retransmissions are different messages but are the same response, so the Leisure interval will not be applied again for each retransmission - only the CoAP retransmission random backoff time will be applied in this case. Would the above work for you? And should the explanation of the previous paragraph be clarified in the draft, or would that be obvious to a reader? (Section 3.7) > I believe that there is an overload attack possible using this mechanism. An > attacker sends an Oberserve requet for a resource that exists on a large number > of servers in the application group. This request has a spoofed address of the > target of the attack. When wanting to overload said target the attacker send a > request that will change the resource being observed using groupcomm to all > targets. Thus triggering a notification storm towards target from all of the > servers. I think to protect from this attack there are two levels of defense. > The first is to require authorization to request observation. That prevents > security group external resources from triggering the attack. But, unless there > is hard binding between the IP+port and the security credentials of the > endpoint this will not prevent an insider from setting up this attack. For the > later I think one would need either the strict address binding, source address > validation or a return routability check would be needed to prevent this. Most > of this attack is discussed in Security Consideration. The insider attacker > appears to be mostly ignored. Secondly, I think the risk of triggering > notifications on many servers was not really discussed, but maybe I missed the > text. > > So why isn't this section discussing the ECHO Option, that is first discussed > in Section 6.2.3. and why are the requirements first stated in Section 6.3 > rather than earlier as part of section 3? [A] Answering on the different points: * Triggering notifications on many servers is not a “risk”. It is a deliberate feature defined in Section 3.7 as a point of update to RFC 7641 (see the last bullet point of Section 1.3 of that document). The intention is exactly to have a client registering its interest to observe the same resource at multiple servers, by sending a single Observe registration request targeting all servers at once. * This Section 3.7 is meant to describe how to make an Observe registration request intended for multiple servers at once. This feature can certainly be abused to boost the impact of an amplification attack, but it is not a pre-requirement to perform the attack. That is, an amplification attack can leverage group communication without necessarily considering Observe too. Instead, the amplification attack in its different variants and the use of the Echo option to mitigate it are strictly security related, and it feels natural and appropriate to discuss those in the security considerations of Section 6.2.3. (Note that Section 6.2.3 does not list “requirements”, but rather “guarantees” and “properties” of Group OSCORE) Perhaps it helps to make the following updates: * In Section 3.7, add one more paragraph at the end, with a heads-up about amplification attacks and a forward pointer to the further discussion in Sections 6.2.3 and 6.3. * In Section 6.2.3, extend the description of the Echo Option as mitigation against amplification attacks, clarifying that it is effective against an external attacker and against an internal (group member) and not-on-path attacker. And clarify it is not effective against an internal (group-member) and on-path attacker, although such an attacker would be exposed and accountable by its use of its own authentication credential, thus facilitating its identification and its eviction from the group through a group rekeying. Does the above resolution work for you? > Section 5.3: > > I think this section and the discussion on proxies in this document should be > clearer on that yes proxies do exist, but this document will not answer the > details needed to actually use them. That will require the > draft-ietf-core-groupcomm-proxy document to be able to implement it especially > in combination with security. Especially as this document have a MUST support > OSCORE groupcomm I think there is an imbalance here when it comes to be able to > implement it. I think you either make groupcomm-proxy normative and MUST be > implemented, or you scope the support for proxies differently in this document > so that it is possbile to later use groupcomm-proxies as the specification to > follow as soon as proxies and groupcomm are relevant. [A] Indeed, this document does not answer the details needed to actually use proxies. Note that draft-ietf-core-groupcomm-proxy is not*required*. It only describes a*possible*way to implement proxy functionalities for group communication, consistent with the high-level baseline and requirements defined in this document, and addressing the issues introduced by proxies that are raised in this document. Your suggested scope on using proxies with group communication is what we want. It’s probably not clear enough in the text. We plan to extend Section 3.5 “Proxy Operation” as follows: * State upfront that the deployment and use of proxies is optional. * Clarify the intended scope of this document about proxies. We can use a reworked version of our answer to the AD review archived at [AD-REVIEW], where a related point was raised due to the informative reference to draft-ietf-core-groupcomm-proxy. In the archived answer, that is discussed in the response starting with “Building on RFC 7252 and on the …” [AD-REVIEW]https://mailarchive.ietf.org/arch/msg/core/zXvisnhjBVAuh12W7tNT5tZwbUg/ Would the above work for you? > Section 6.3: > [I-D.irtf-t2trg-amplification-attacks], is likely not an informative reference, > but an normative as it becomes crucial to understand the attacks discussed here. [A] We believe that it is appropriate to have draft-irtf-t2trg-amplification-attacks as an informative reference. The present document is just saying that those attacks are possible, and that they can be mitigated by suppressing error responses to multicast requests and by using the Echo option for doing routability checks (RFC 9175 is a normative reference). Even without reading the additional information and details from draft-irtf-t2trg-amplification-attacks, one is still perfectly able to implement the present document and its mitigations against amplification attacks. In Section 6.3, we can revisit the paragraph that includes the reference to draft-irtf-t2trg-amplification-attacks. In particular: * We can provide a short description of the amplification attack, both with group communication alone and with group communication combined with Observe. That’s what the referred draft describes in its Section 2.3. * We can rephrase the current text to say that the referred document provides additional discussion and examples on amplification attacks. Does the above resolution work for you? > > "Thus, consistent with Section 7 of [RFC7641], a server in a CoAP group MUST > strictly limit the number of notifications it sends between receiving > acknowledgements that confirm the actual interest of the client in continuing > the observation." So what is this limitation that one should implement? [A] The limit to implement is not fully specified in the present document, but rather in RFC 7641. Quoting the text from Section 7 of RFC 7641: Without client authentication, a server therefore MUST strictly limit the number of notifications that it sends between receiving acknowledgements that confirm the actual interest of the client in the data; i.e., any notifications sent in non-confirmable messages MUST be interspersed with confirmable messages. Note that an attacker may still spoof the acknowledgements if the confirmable messages are sufficiently predictable. So there is no strict requirement of a number of how many notifications can be sent as NON, before a CON needs to be sent. Or, how long (time period) notifications can be sent without getting any proof of client’s interest. The intended limit is defined there by the “i.e.” part - any notifications sent in non-confirmable messages MUST be interspersed with confirmable messages. We don’t aim to change this aspect of RFC 7641, which would require adding, e.g., more actionable/concrete numbers. If we do such a thing, it would need to go into a “bis” document for RFC 7641 and is not limited only to the scope of CoAP group communication, we believe. What we can do is slightly clarify the intention for this “limit” mechanism by this text in Section 6.3: OLD Thus, consistent with Section 7 of [RFC7641], a server in a CoAP group MUST strictly limit the number of notifications it sends between receiving acknowledgements that confirm the actual interest of the client in continuing the observation. NEW When CoAP group communication is combined with resource observation [RFC7641], a server in a CoAP group MUST strictly limit the number of notifications it sends between receiving acknowledgements that confirm the actual interest of the client in continuing the observation (see Section 7 of [RFC7641]). That is, any notifications sent in non-confirmable messages MUST be interspersed with confirmable messages. Note that an attacker may still spoof the acknowledgements if the confirmable messages are sufficiently predictable. (Just as background info: having the occasional CON message enables the cleanup of stale clients due to the mechanism in Section 4.5 of RFC 7641 (5th paragraph). If the CON notification times out, the client is removed from the observers list.) Would this clarification work for you? > To conclude I think a lot of aspects have been considered but the actually > recommendations and default or limit values should be more clearly specified. > [A] As proposed in the above points, we can certainly add some more details to parameter choices, default mechanisms, limit values, and other elements! Just let us know if these proposals are in the right direction. Thanks again for your detailed review! best regards, Esko Dijk / Marco Tiloca
- [core] draft-ietf-core-groupcomm-bis-14 ietf last… Magnus Westerlund via Datatracker
- [core] Re: draft-ietf-core-groupcomm-bis-14 ietf … Esko Dijk
- [core] Re: draft-ietf-core-groupcomm-bis-14 ietf … Magnus Westerlund