[Anima] draft-vanderstok-anima-constrained-join-proxy-04: how can J know the content-format cf

Esko Dijk <esko.dijk@iotconsultancy.nl> Mon, 30 November 2020 13:01 UTC

Return-Path: <esko.dijk@iotconsultancy.nl>
X-Original-To: anima@ietfa.amsl.com
Delivered-To: anima@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id B46183A0AA1 for <anima@ietfa.amsl.com>; Mon, 30 Nov 2020 05:01:14 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.1
X-Spam-Level:
X-Spam-Status: No, score=-2.1 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_MSPIKE_H2=-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=iotconsultancy.nl
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 otccpyOr--_R for <anima@ietfa.amsl.com>; Mon, 30 Nov 2020 05:01:11 -0800 (PST)
Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2097.outbound.protection.outlook.com [40.107.20.97]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B2A53A0ABB for <anima@ietf.org>; Mon, 30 Nov 2020 05:01:10 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QMNqXOavn5NqicB62+iEgydRcQkrbPRlOOKQxEm4z6fcKgghVncD+qifooHD9KoxwuPEyL025M0BSaOy/RxSDHO4xmfSCVGduLA05Z6pC8wjH7DFNzqph8iufHYHGCO3RK9n57QsHXE9znsDR0LWPLf1wrsr1Rx+cJJZG1A/iNu91nBU7NyrDYsdFxgljYQ31+QUpjuu6yX23AXCl1kNAqSwh6maEHElOxl8MjPRuepxC3+ocYSjHs5gE/IpN53GKxJWRHWWvzfouad4DTSubZf0Y/65PDBwwsrVpJmlM5aWQuFs7gLQw4rmsSNXQ/IfugWMJzlZNKhbrZgEnpoFyA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Sp9YMKSWnK8smm9W7mDfQ2ekLfEuJkeC3nB21j9hS64=; b=UskgsQjnpIXekNkKbjkw7QHVPzFUkBVLZ++VzVJkV6PnSXd7Y0jniI8EoIvdQAATCw3CakrOV1/yj5TAFDYmBat0elGm5Wj5/buoGaGM8MPNIHrhUIAXBxgVB9BwW/3yg/oIrk4YRwkcOFuXcru8WBIEBbVvfj5b7AHQCB8SmcHwoOwNfOKNrs7T85oxzwraovSj0CkS6iAblsI8BeXe7guqeli82Ssovk6TSST1i6lcHn4w5lPAopke1Dej6c1yvr2/zRtaQFnwelwcBCd/zBQDH2u2/on5vAaqjpwu/aC5SNgp+kNbJQcFjp+l2GjSeeQZx+afZLyPWGV0HnMuKw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=iotconsultancy.nl; dmarc=pass action=none header.from=iotconsultancy.nl; dkim=pass header.d=iotconsultancy.nl; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iotconsultancy.nl; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Sp9YMKSWnK8smm9W7mDfQ2ekLfEuJkeC3nB21j9hS64=; b=LtixsiPIqGcxQ4RiR2FOZEctxN/SCrQ6irlWiSrzpU0VrWjZaCXYSsngfEz4UtDkbtaPquNjI1uTwAKv51XXJ7LzIizAcc4tcxbtjlbICSXBUs2kpKJPHG6MKuNJCQmFmIE5uZY2K0wm1NeGFj35DZliMgFR39/3qOWBPX4Q7cI=
Received: from AM8P190MB0979.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:1d3::8) by AM9P190MB1027.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:26e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3611.25; Mon, 30 Nov 2020 13:01:07 +0000
Received: from AM8P190MB0979.EURP190.PROD.OUTLOOK.COM ([fe80::b0bf:bd8a:de8f:55fa]) by AM8P190MB0979.EURP190.PROD.OUTLOOK.COM ([fe80::b0bf:bd8a:de8f:55fa%5]) with mapi id 15.20.3611.031; Mon, 30 Nov 2020 13:01:07 +0000
From: Esko Dijk <esko.dijk@iotconsultancy.nl>
To: "anima@ietf.org" <anima@ietf.org>, "consultancy@vanderstok.org" <consultancy@vanderstok.org>
Thread-Topic: draft-vanderstok-anima-constrained-join-proxy-04: how can J know the content-format cf
Thread-Index: AdbHF+blpV7Qy5VlRz2xDc1vWTnV8g==
Date: Mon, 30 Nov 2020 13:01:07 +0000
Message-ID: <AM8P190MB09794715877E8203687DD1EFFDF50@AM8P190MB0979.EURP190.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: ietf.org; dkim=none (message not signed) header.d=none; ietf.org; dmarc=none action=none header.from=iotconsultancy.nl;
x-originating-ip: [2001:1c02:3103:f000:752e:6f97:4a6d:998]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 7760a236-3080-4e3b-9cfe-08d8953000ba
x-ms-traffictypediagnostic: AM9P190MB1027:
x-microsoft-antispam-prvs: <AM9P190MB102764602BE09589C829D482FDF50@AM9P190MB1027.EURP190.PROD.OUTLOOK.COM>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: fmVxCaPyq0aIEPOI/zLgk+7Rurt3BfnFBfw0x7zkLw5346JIOB0zDHdaIsFBj7RUc/wTtxZnLHYaZIA+y7b2rVOZCyLa037aW3/PjhaNftaYc5MfId1Sj8m5lqn3I/2xfjUrl+JMgbq5wdnBWLF7drYGia5Nc77Cj5CDzSPdIj1NpRPg6nMwU97CvZJAyZzge4Mn74vbYvxzRNhCB4O+DkNlk0FXvIFvW8pgwTGOcMWb1YcmTo4j160u5yIAuOXd8PYSVzWEl+CZOllrLjyVJJl77JJ4dJ/g3doasgvZJ8Ck0zxmEHbeQ/qWF5CiKTC97tYKPTN5MKynP6ukFxez7s0Kd+ar3WE6IORol2VmD7QTQspTv7EsTNOTDIY52cMQz0MH05ddvyu9QcBSuRfZcw==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM8P190MB0979.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(39830400003)(366004)(136003)(376002)(346002)(396003)(9686003)(966005)(71200400001)(52536014)(55016002)(186003)(86362001)(478600001)(6506007)(44832011)(53546011)(76116006)(166002)(33656002)(110136005)(5660300002)(7696005)(66446008)(8676002)(66946007)(2906002)(316002)(83380400001)(8936002)(66476007)(66556008)(64756008); DIR:OUT; SFP:1102;
x-ms-exchange-antispam-messagedata: =?utf-8?B?N1JGZGd3ZmpGRHp0elpiRldoVHFlL3R5TlB5eldtcm1XaXc3OFE5YWpxN3Y2?= =?utf-8?B?bVd3SkY4MjN2MEpETHQrUjByVXFoRW4rK0t6WFQxN3hVVklQYkpBYUUyVGZO?= =?utf-8?B?M3JTd2Zwb1IwS2dCNzBoeUdrd2U2UXlSZ1ZBbFhGV3Q5QWpyWFMrdzFaT3Uv?= =?utf-8?B?czhzREE1Tk12WHc3TnJqT0ZVb3cxWkE4VGtXR3Y1Ykd5UjJob09rMXA1WDZ5?= =?utf-8?B?NFl5eTl2MmtybUM3ajhlcjVwRU02Tmtid2dmL0p0bDk5QWdpMmFVOW1SRklv?= =?utf-8?B?RTAxYWhIZ1NiTU9KSExOaERjSHArNGVtNC9nd2x6NHErY3puR05IQ3U0dTN3?= =?utf-8?B?cjBzZzl1TkkrRzRHOEdtaUNybXhEdnlXb1IrZnRpWC9WeTEwY2JJckkrSnFE?= =?utf-8?B?bXlscnEvZGpQSERrRnNjZWQ2TUhza003bC9DbDJWdGxKK2hwUXpWb2RyWnoy?= =?utf-8?B?TEQ1dy9PbmxveWkyZlQ5RFJrOUJXQWR0TjFuQjJtMUl5eTdPc2grd21tRTdP?= =?utf-8?B?T0VZVlU4THRGYjc2QSsvVGtkMmdwYWVwTFJvUzgxQlFMM3hZL0toUkxVM21S?= =?utf-8?B?OWNtdVZrelBvQUJLZFJ6USs4QzUzWjF1bWxJL293M3ZSVWF4cUdEVHBVMnRF?= =?utf-8?B?ZlJmbWU1OU9lUjZUTDZkay9NenlkOHg3cFU2bjBiVzNwbCtUSHRwenc4TXR3?= =?utf-8?B?YUlqcUdvc09QQ2hENUp4VktYM1lsVDA0S2p6WG5yd0Via0hkRC9WMzhkakc0?= =?utf-8?B?Z2ZYSmRlMmFUWmpFYzFsdmtOUUpWTUR5bDExWStRRkc1RERJN3puZGVxMUNy?= =?utf-8?B?WnlFWE5FUFhDVE1nQVkxQ21GYUFRek1ONFhtRUNTZVZPdHd4K285Wmxjbkpv?= =?utf-8?B?b3IvT29qKytEWTB4SnZ6eU5ya1NaaEdQVWwvUWlkM0ZFSVBHSnZ3N0ViejJT?= =?utf-8?B?NC9LaVd0QmYyTktrZ1FBZFJ1SndWQ2pzSjB3UzFrNVlWRzY0cXpHM3B4SVZX?= =?utf-8?B?UFh0eGtXU2t4eXRGOXRtR1dkeGFEMFl4eDZxVmt5RFFHTUs1cVZjSE9qWHRu?= =?utf-8?B?dHZaRGlvVEpub1M0MnZ6RVN3SUJvOXRVQ2t2RTZ6QVg4bCtKYnVqNHNoL1RY?= =?utf-8?B?eTltcTZNQlljSmVGWXpZOXBHN0dSU3hNWWFCRzhtWlFMd1NEVmk2aHljS1pX?= =?utf-8?B?MTlXTFhUbXVlSENTSndBdXhqeFB2RFlkQTlMNzhzQ21MK1pMZkhCWGdUUjNJ?= =?utf-8?B?bkg0S0dHN0RQNFY0cmJidTNxbVNDVnE4aWx2NWxsdmFrZGJQSXhuSVJxL0VE?= =?utf-8?B?MlpvWm9wZHgyU2swdFMzWEtsWTIwYk5ZSlp1dDFJU3FhNElsMEZBV3FMbFFZ?= =?utf-8?Q?rSLStqBZMkx/980MVzJSyq1uWZAp7fFQ=3D?=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_AM8P190MB09794715877E8203687DD1EFFDF50AM8P190MB0979EURP_"
MIME-Version: 1.0
X-OriginatorOrg: iotconsultancy.nl
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: AM8P190MB0979.EURP190.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-Network-Message-Id: 7760a236-3080-4e3b-9cfe-08d8953000ba
X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Nov 2020 13:01:07.5566 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 58bbf628-15d2-46bc-820b-863b6774d44b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: X+EBpZjhzCJWeBH6QPuXTNyBPA7prHvjXHr9kWgcuum+QNZ7IqFW4VIKwldCoSnJpmA6LgnjNw14Z4+Il5ZbYxa/aJLQkC9h3CjPt4wW3KM=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9P190MB1027
Archived-At: <https://mailarchive.ietf.org/arch/msg/anima/tTMwtRD7THBhL7txJOrj6gzOb8Q>
Subject: [Anima] draft-vanderstok-anima-constrained-join-proxy-04: how can J know the content-format cf
X-BeenThere: anima@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Autonomic Networking Integrated Model and Approach <anima.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/anima>, <mailto:anima-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/anima/>
List-Post: <mailto:anima@ietf.org>
List-Help: <mailto:anima-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/anima>, <mailto:anima-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 30 Nov 2020 13:01:15 -0000

Hi authors / Peter,

In addition to all comments in my previous email here is another comment / questions for Section 5.3:
Since the Join Proxy J creates the message JPY which contains a CoAP content-format number ‘cf’  - how does J even know the content-format of the data carried?
Since the data it receives from Pledge P is DTLS-encrypted without any indicator of content-format.  The CoAP message itself including payload and its content-format indicator is inside the DTLS-encrypted record.  The proxy J cannot look inside.
Besides, for DTLS handshake messages there is not even a CoAP message nor CoAP content-format involved.

So the only sane thing the proxy J could do is just forward the DTLS record to the Registrar, whatever is inside. It doesn’t need to indicate a ‘cf’ because it doesn’t know that. The right information is all inside the DTLS encrypted record and Registrar can see this information anyway.

So a more optimal CBOR payload would be simply a CBOR array of two elements without using core-multipart :

[ <CBOR-header-structure> ,  <CBOR-byte-string with the DTLS record bytes> ]

And the header structure could be what’s currently defined: [IP_p, p_P, ident]
The overall structure can be extended in the future if needed by adding more elements.

Best regards
Esko


From: Anima <anima-bounces@ietf.org> On Behalf Of Esko Dijk
Sent: Monday, November 30, 2020 13:51
To: Sheng Jiang <jiangsheng@huawei.com>om>; anima@ietf.org; consultancy@vanderstok.org
Cc: anima-chairs@ietf.org; Toerless Eckert <tte@cs.fau.de>
Subject: Re: [Anima] Result//RE: Adoption call for draft-vanderstok-anima-constrained-join-proxy-04, ends November 15th 2020

Hello all,

Sorry for the late notice – I also support adoption of a join proxy solution, which is a necessary component for constrained usage of BRSKI.  I do believe the present document needs some work and maybe even reconsideration of solutions.
Let me first provide a few high-level comments for discussion before doing a complete review of the document.

1. Stateful solution
The proposed solution looks good; although I would do some minor reformulation of the text. Current text says that the Pledge P sends a link-local IPv6 packet to the Join Proxy J, where J then modifies the IPv6 packet and sends it onwards. This should be described more as follows to comply with IPv6 architecture:  the Join Proxy creates a new IPv6 packet containing the exact DTLS message of the received link-local packet and sends the new IPv6 packet to the Registrar.
This avoids tampering with IPv6 addresses; just describe it as a new packet.  The Join Proxy then itself uses its own IPv6 address as source (typically an address that is non-link-local, selected to match the scope/prefix of the Registrar destination IPv6 address.)

2. Stateless solution
The proposed stateless solution is also good to have – to lower the risk of certain resource exhaustion / buffer overflow attacks on the Join Proxy J. However, I see an issue in how it is currently defined:
J creates a CBOR-formatted payload that is definitely not a DTLS record and then sends it to port 5684 (CoAP + DTLS) and expects the Registrar to parse it.  This goes against RFC 7252 defined usage of the coaps port; you can’t send anything to there that’s not a DTLS message! Also in a typical Registrar implementation the DTLS stack that’s receiving the UDP messages on port 5684 would get really confused – and clearly dismiss the packet as an error.  Surely we don’t want to meddle with the DTLS server stack of a Registrar to enable these join-proxied messages to be received?  (There are some further reasons why we don’t want this – I can discuss more if needed)

There are some solutions to this issue:


  1.  J sends the CBOR structure over UDP to a new UDP port <TBD>, which is IANA-registered as a port for a new protocol defined here (“constrained join proxy protocol” or so).  This new protocol defines the CBOR data format to use.  The expert reviewers may complain that this uses up valuable UDP port space; in which case option B below can be considered.
  2.  J sends a new Non-Confirmable CoAP request which is unprotected coap:// (just like the current CBOR defined payload is unprotected, too ) to port 5683 (the default port for unprotected coap:// ) , where the CoAP message payload carries the same CBOR structure.
Internally, the Registrar then receives this CoAP request on port 5683 address to a defined well-known resource, unpacks the DTLS record from the CBOR payload, and sends that DTLS record to its DTLS server internally where it is processed as usual. For any DTLS message back to J again a new CoAP request to J can be used, using as destination UDP port the same port from which the first CoAP request was received.  This has the advantage over A) that no new port needs to be IANA-registered – the existing CoAP port 5683 is re-used and only a new well-known resource needs to be defined as the “join-proxy relay resource”.  Disadvantage is that the Join Proxy also has to act as CoAP server to be able to receive the DTLS records coming back from Registrar.

  1.  J sends the CBOR structure over UDP to a dynamic UDP port <dyn> whose value J needs to know in advance, for example by configuration (of mesh-network wide data) or by discovery (e.g. coap discovery, DNS-SD, etc.). The value <dyn> is different than 5684. The service at port <dyn> then internally forwards the DTLS record to port 5684 where it is processed as usual.

Note that both above solutions have 2 additional / potential advantages from the current one in the draft:

  1.  the Registrar’s interface towards Join Proxies can be separated out as a separate component, so the existing Registrar code needs no modification. It just keeps listening to DTLS on port 5684 as usual; as if the Pledges are connecting directly.
  2.  the Registrar’s interface towards Join Proxies can be separated out to a different node altogether, which is useful in cases where say the Registrar is under control of another 3rd party and isn’t able to process join-proxy protocol traffic. Then the Registrar Interface component can be placed at another node e.g. at the customer’s domain, and any node J discovering for a Registrar will find the IP address of the Registrar Interface (RI). The latter then forwards the traffic as normal DTLS packets to Registrar.

With the option B) above I have some implementation experience and I can say that it works :)
A) and C) should work as well; note that these are most similar to the current draft’s solution.  In case C) instead of discovering the address of a Registrar, the node J now needs to discover both address and port of the Registrar (Interface). All known discovery methods can also discover port so that should be fine.

Best regards
Esko


IoTconsultancy.nl  |  Email/Teams: esko.dijk@iotconsultancy.nl<mailto:esko.dijk@iotconsultancy.nl>


From: Anima <anima-bounces@ietf.org<mailto:anima-bounces@ietf.org>> On Behalf Of Sheng Jiang
Sent: Friday, November 27, 2020 04:20
To: Sheng Jiang <jiangsheng@huawei.com<mailto:jiangsheng@huawei.com>>; anima@ietf.org<mailto:anima@ietf.org>
Cc: anima-chairs@ietf.org<mailto:anima-chairs@ietf.org>; Toerless Eckert <tte@cs.fau.de<mailto:tte@cs.fau.de>>
Subject: [Anima] Result//RE: Adoption call for draft-vanderstok-anima-constrained-join-proxy-04, ends November 15th 2020

Hi, ANIMAer,

We have received supports for this adoption and has no objection. Consequently, the chairs consider the documents pass the adoption call. The authors shall resubmit this document with draft-ietf-anima-*, and the chairs shall approve it. However, The chairs do worry a little bit there is little discussion in the mail list to help the quality of this document. The authors please continue to refine the document and invoke WG discussion.

Thanks and regards,

Sheng

From: Anima [mailto:anima-bounces@ietf.org] On Behalf Of Sheng Jiang
Sent: Monday, November 2, 2020 3:05 PM
To: anima@ietf.org<mailto:anima@ietf.org>
Cc: anima-chairs@ietf.org<mailto:anima-chairs@ietf.org>; Toerless Eckert <tte@cs.fau.de<mailto:tte@cs.fau.de>>
Subject: [Anima] Adoption call for draft-vanderstok-anima-constrained-join-proxy-04, ends November 15th 2020


Hi, dear ANIMAer,



This message starts a two-week adoption call, it ends on November 15th, 2020.



draft-vanderstok-anima-constrained-join-proxy-04 has been presented to the WG for a long while and the WG showed good interest and had discussions. It was presented several times and had no opposition. The draft is clearly in scope of ANIMA charter and milestones. Giving the dependent BRSKI has passed the IESG evaluation, the chairs feel that it may be the right time to call the adoption.



We therefore are asking the ANIMA working group for adoption of the following work:



Title:    Constrained Join Proxy for Bootstrapping Protocols

Name:     draft-vanderstok-anima-constrained-join-proxy-04

Authors:  M. Richardson, P. van der Stok and P. Kampanakis

URL:      https://datatracker.ietf.org/doc/draft-vanderstok-anima-constrained-join-proxy/



This document is intended to become a standards track ANIMA WG document.



Please express your support or rejection. If you think this document should _not_ be adopted, please also explicitly indicate the reasons.



Regards,



Sheng