Re: [Ace] I-D Action: draft-ietf-ace-coap-est-11.txt

"Panos Kampanakis (pkampana)" <pkampana@cisco.com> Sat, 25 May 2019 04:47 UTC

Return-Path: <pkampana@cisco.com>
X-Original-To: ace@ietfa.amsl.com
Delivered-To: ace@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8C4CF120316 for <ace@ietfa.amsl.com>; Fri, 24 May 2019 21:47:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -14.501
X-Spam-Level:
X-Spam-Status: No, score=-14.501 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cisco.com header.b=FLAcPNGG; dkim=pass (1024-bit key) header.d=cisco.onmicrosoft.com header.b=DRyGkCi0
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 OHpZmODXJ6ul for <ace@ietfa.amsl.com>; Fri, 24 May 2019 21:47:43 -0700 (PDT)
Received: from rcdn-iport-7.cisco.com (rcdn-iport-7.cisco.com [173.37.86.78]) (using TLSv1.2 with cipher DHE-RSA-SEED-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 47B6F120048 for <ace@ietf.org>; Fri, 24 May 2019 21:47:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=10904; q=dns/txt; s=iport; t=1558759663; x=1559969263; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=OjBhvoJE9MTfW1DK4jJ63MsvL2WomoFdZ23ual80Gm8=; b=FLAcPNGGoddbrw6Oyepa7Xkeo36AmxBh1wmT3pBVijJOTrSxmW5wGiCf Mp1Q8Z8tvXh3IYnPAg0fVmpRprWvmuW8pijzepAV0AE9V3L2GW2S6Q0TA HdIOVnanYbRGvrBnFSXaUQYLVvuS7YaIygcD177vV4YGDqjU1kdqbaAH3 w=;
IronPort-PHdr: 9a23:2+i/2xziigaIaJXXCy+N+z0EezQntrPoPwUc9psgjfdUf7+++4j5YhWN/u1j2VnOW4iTq+lJjebbqejBYSQB+t7A1RJKa5lQT1kAgMQSkRYnBZudCkT+NPfsZgQxHd9JUxlu+HToeUU=
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-Anti-Spam-Result: A0BIAACcx+hc/5JdJa1cCRwBAQEEAQEHBAEBgVEHAQELAYE9JCwDaVUgBAsohBODRwOEUoonSoINlyuBLhSBEANUCQEBAQwBAScGAgEBhEACF4IoIzQJDgEDAQEEAQECAQRtHAyFSgEBAQMBEhEEDQwBATgEBwQCAQgRBAEBAwIZDQICAjAVCAgCBAESCBqDAYFqAw4PAQ6aFwKBOIhfcXwzgnkBAQWBMgGDTRiCDwMGgQwoAYRohmoXgUA/gRFGgU5+PoJhAQECgSwBCAoBBwIYFYJzMoImizuCUIZ5k00JAoINhjOMeoIfimWJQYxphwCOcwIEAgQFAg4BAQWBTzhmcXAVgyeCD4NwilNyCoEfiy6CQwEB
X-IronPort-AV: E=Sophos;i="5.60,509,1549929600"; d="scan'208";a="559578523"
Received: from rcdn-core-10.cisco.com ([173.37.93.146]) by rcdn-iport-7.cisco.com with ESMTP/TLS/DHE-RSA-SEED-SHA; 25 May 2019 04:47:42 +0000
Received: from XCH-RCD-020.cisco.com (xch-rcd-020.cisco.com [173.37.102.30]) by rcdn-core-10.cisco.com (8.15.2/8.15.2) with ESMTPS id x4P4lfex031987 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=FAIL); Sat, 25 May 2019 04:47:42 GMT
Received: from xhs-aln-002.cisco.com (173.37.135.119) by XCH-RCD-020.cisco.com (173.37.102.30) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Fri, 24 May 2019 23:47:40 -0500
Received: from xhs-rtp-001.cisco.com (64.101.210.228) by xhs-aln-002.cisco.com (173.37.135.119) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Fri, 24 May 2019 23:47:40 -0500
Received: from NAM02-BL2-obe.outbound.protection.outlook.com (64.101.32.56) by xhs-rtp-001.cisco.com (64.101.210.228) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Sat, 25 May 2019 00:47:39 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cisco.onmicrosoft.com; s=selector2-cisco-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OjBhvoJE9MTfW1DK4jJ63MsvL2WomoFdZ23ual80Gm8=; b=DRyGkCi0d1Uyvt5if5CzULdBU4w1rA575g7q6X762ut1NjvGPuqH7qBP0qq2Giq5BblbVMQx9r+rlrms5iDJEq1DTMmZ6rAdGIVIt8+IawBCuTHWO6RIp0nVkE/V9A7miY0QZBQvKj3ia6z7u4R/ASManUfh3ryWcVOqWANWi8w=
Received: from MWHPR11MB1838.namprd11.prod.outlook.com (10.175.53.141) by MWHPR11MB1597.namprd11.prod.outlook.com (10.172.54.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.16; Sat, 25 May 2019 04:47:38 +0000
Received: from MWHPR11MB1838.namprd11.prod.outlook.com ([fe80::4964:5495:9121:8f12]) by MWHPR11MB1838.namprd11.prod.outlook.com ([fe80::4964:5495:9121:8f12%7]) with mapi id 15.20.1922.019; Sat, 25 May 2019 04:47:38 +0000
From: "Panos Kampanakis (pkampana)" <pkampana@cisco.com>
To: Esko Dijk <esko.dijk@iotconsultancy.nl>, "ace@ietf.org" <ace@ietf.org>
Thread-Topic: [Ace] I-D Action: draft-ietf-ace-coap-est-11.txt
Thread-Index: AQHVDMWddQFmHhPwYk+M2tBX23+L/6ZvciLAgAQfnoCAAI3gkIACEHMAgAKOvbA=
Date: Sat, 25 May 2019 04:47:38 +0000
Message-ID: <MWHPR11MB1838DF1CDE7D6E4D85A9F7A3C9030@MWHPR11MB1838.namprd11.prod.outlook.com>
References: <155810704144.26327.4695280572619758639@ietfa.amsl.com> <MWHPR11MB18385D70221AC1A962C97623C90B0@MWHPR11MB1838.namprd11.prod.outlook.com> <DB6P190MB005480059C7AC6C165475F7CFD060@DB6P190MB0054.EURP190.PROD.OUTLOOK.COM> <MWHPR11MB1838CC9A9B05329DE6FF298AC9060@MWHPR11MB1838.namprd11.prod.outlook.com> <DB6P190MB00549304E499B7215D88277DFD070@DB6P190MB0054.EURP190.PROD.OUTLOOK.COM>
In-Reply-To: <DB6P190MB00549304E499B7215D88277DFD070@DB6P190MB0054.EURP190.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=pkampana@cisco.com;
x-originating-ip: [2001:420:c0c4:1007::26c]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 20eaf539-182a-487f-093e-08d6e0cc1d04
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(5600148)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020); SRVR:MWHPR11MB1597;
x-ms-traffictypediagnostic: MWHPR11MB1597:
x-ms-exchange-purlcount: 4
x-microsoft-antispam-prvs: <MWHPR11MB159704CED5E999AFC9F4165EC9030@MWHPR11MB1597.namprd11.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:10000;
x-forefront-prvs: 0048BCF4DA
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(346002)(136003)(396003)(366004)(39860400002)(199004)(189003)(13464003)(76176011)(55016002)(52536014)(8936002)(81166006)(7696005)(74316002)(478600001)(5660300002)(110136005)(76116006)(229853002)(66446008)(6306002)(14454004)(66476007)(66556008)(66946007)(53936002)(64756008)(73956011)(9686003)(33656002)(71190400001)(6436002)(966005)(476003)(2906002)(7736002)(446003)(486006)(46003)(81156014)(186003)(2501003)(86362001)(14444005)(256004)(25786009)(6246003)(316002)(71200400001)(99286004)(102836004)(6116002)(53546011)(6506007)(68736007)(8676002)(305945005)(11346002); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR11MB1597; H:MWHPR11MB1838.namprd11.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1;
received-spf: None (protection.outlook.com: cisco.com does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: TaIyf1IA/q/T9S7PIiot5cxU/4mGdUX+Lq/1s2Nxwt0ZG4vL4gyvH+k6sS8UJrz0XEGpORi8r7Y+Pqz/OYihCier5JBolD6Chzz1WKFDqRkWGy9QSan8mla893Ro8lfbBe6SjG/4lEfAOYcaTFCZEyvjpdJU+Jrogmn//6blIpqyNKC0a8H9clEl+yhV8OfqDvrF1gyVmSZt3R+79ln78ZG4Uxfew6deMkun0GBhNCwpk2qM/NocEz1qU3y0lKBOjeChtz4PQQZRtDoJInpZnMUksoCs82/lUSJM7w9ALns9cNFQW6YhwkXCvtsQQ9g3PsibkygGhI9IJ1DznKIVRSbwlNl2jWAYt6uf01BQBN7FwanrAN8GQUl/kFK+qymfGAnkhPnn/NUSjvHqscJawxDehxz57mIHXbRmCRfHmDo=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 20eaf539-182a-487f-093e-08d6e0cc1d04
X-MS-Exchange-CrossTenant-originalarrivaltime: 25 May 2019 04:47:38.3337 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 5ae1af62-9505-4097-a69a-c1553ef7840e
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: pkampana@cisco.com
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1597
X-OriginatorOrg: cisco.com
X-Outbound-SMTP-Client: 173.37.102.30, xch-rcd-020.cisco.com
X-Outbound-Node: rcdn-core-10.cisco.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/ace/3MmPQTRJ8MVGmBibCe7dB788VkE>
Subject: Re: [Ace] I-D Action: draft-ietf-ace-coap-est-11.txt
X-BeenThere: ace@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "Authentication and Authorization for Constrained Environments \(ace\)" <ace.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ace>, <mailto:ace-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ace/>
List-Post: <mailto:ace@ietf.org>
List-Help: <mailto:ace-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ace>, <mailto:ace-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 25 May 2019 04:47:47 -0000

Hi Esko,

Thank you again. Again a very elaborate review and found some good nits in the Delayed responses section. To make it easier I logged the issues and fixes here https://github.com/SanKumar2015/EST-coaps/issues/145 

The updated doc is here https://github.com/SanKumar2015/EST-coaps/blob/master/draft-ietf-ace-coap-est.txt and the diffs are here https://github.com/SanKumar2015/EST-coaps/commit/4ad5210faf624c67e1998da75ea051de616e91b1#diff-3a712edb43f6eace7fb1667328d65307  

Rgs
Panos

-----Original Message-----
From: Esko Dijk <esko.dijk@iotconsultancy.nl> 
Sent: Tuesday, May 21, 2019 6:31 PM
To: Panos Kampanakis (pkampana) <pkampana@cisco.com>; ace@ietf.org
Cc: draft-ietf-ace-coap-est@ietf.org
Subject: RE: [Ace] I-D Action: draft-ietf-ace-coap-est-11.txt

Hello Panos,

For the draft text I have a couple of more review remarks:

* page 8 first bullet: a previously issues client certificate could also expire, in some cases even without the client knowing. If the client then performs simple re-enrollment -- using its previous operational cert as authentication, what would happen?  I would expect the server MAY also want to use this certificate to authenticate the client. Because the purpose of the client connecting again to the EST server is to do simple re-enrollment, to get a new certificate.   Suppose a case where the handshake to the EST server fails because the EST server rejects the expired operational cert:  what would the client do now? It could be a certificate_expired message.  RFC 7030 provides no guidance in this matter; would EST-coaps need to define this? E.g. client SHOULD retry using the bullet #2 certificate (e.g. IDevID)?

* page 8 middle: "CoAP and DTLS can provide proof-of-identity for EST-coaps clients and servers with simple PKI messages as described in Section 3.1 of [RFC5272] "
Looking up this section it says: "The Simple PKI Request MUST NOT be used if a proof-of-identity needs to be included."   This seems to say the opposite of the above text?  This requires at least some more explanation.

* page 8 middle: "Moreover, channel-binding information for linking proof-of-identity with connection-based proof-of-possession is OPTIONAL for EST-coaps"  -> is it OPTIONAL for client, server, or both? I would assume it is OPTIONAL for both. If the (light-weight) client does not implement it and if the server does mandate it, the client can not connect to that server if its policy is set to "linking POP/identity required".

* page 14 top bullet: "The CoAP Options used are .... " 
  -> the item Block could be expanded to "Block1, Block2" to capture the actual Option names.
  -> Location-Path is never used in any of the CoAP interactions defined; should be removed.

* Page 14 first 5.5 paragraph: "Similarly, 2.01, 2.02 or 2.04 MUST be used in response to EST POST requests"
  -> 2.01 Created is like HTTP 201, which is not used in EST - so can be removed here.
  -> 2.02 Deleted has no HTTP equivalent, so is not used in EST. It should be removed here.
  -> that leaves only 2.04 responses. However the text should say this is for successful (HTTP 200 or 202 in EST) responses , so suggestion is to change above sentence to: "Similarly, 2.04 MUST be used in a response to a successful EST POST request"

* page 14 bottom: "EST makes use of HTTP 204 and 404 responses when a resource is not  available for the client.  The equivalent CoAP codes to use in an EST-coaps responses are 2.04 and 4.04.  "
  -> CoAP 2.04 can only be used in responses to POST or PUT requests, not for GET responses.
  -> so in CoAP the server could either return 2.05 with empty payload (equivalent to HTTP 204), or return 4.04 (equivalent to HTTP 404)

* page 15 bottom: "The EST-coaps client and server MUST support Block2.  Block1 MUST be supported for EST-coaps enrollment requests that exceed the Path MTU."
  -> could be clarified better, I expect a EST-coaps server MUST support Block1 because that server doesn't know in advance how big the client's request payload is going to be and whether that client will use Block1.
  -> e.g. "The EST-coaps client and server MUST support Block2.  The EST-coaps server MUST support Block1. The EST-coaps client MUST support Block1 if it sends EST-coaps requests with an IP packet size that exceeds the Path MTU."

* page 16 example: the payloads are not indicating that each "{CSR req}" payload is different. I.e., a different block. It would be more clear if that is shown e.g. "{CSR 1}", "{CSR 2}", ... up to "{CSR N1+1}". The "req" string is not needed since the R in CSR already stands for request.

* page 17 example: see above payloads remark; and the following:
  --> what I find strange here is that a blockwise POST request ends with a 5.03 response, and then the same request after that gives a 2.01 response. In CoAP AFAIK, one request can never give 2 responses in sequence.
  --> once a response is delivered back to the client piggybacked on an ACK, the server closes the transaction normally and no further state for the transaction is kept.
  --> normally if a server sends 5.03 with Max-Age the client needs to send a new request i.e. retry with a new request after this waiting time.   That implies the client would need to resend the entire request: all blocks of it!
  --> I do realize that resending all blocks is very inefficient ; but at the same time the example also seems incompatible with CoAP specs.
  --> another question is why does the server use Block2 option in the 5.03 response that has no payload. In RFC 7959 Section 2.1, "the Block2 Option pertains to the response payload" and "payload-bearing responses". So it should be just left out in the response without payload I think.
  --> I understand this sequence of messages was tested using interops/code; was a specific CoAP library used that exhibits this behavior? I would be interested to understand better why this works.

Hope these comments can still be used for improvement of the spec. I will send further review comments in a next email: still need to write these down.

Best regards
Esko



-----Original Message-----
From: Panos Kampanakis (pkampana) <pkampana@cisco.com> 
Sent: Monday, May 20, 2019 17:31
To: Esko Dijk <esko.dijk@iotconsultancy.nl>; ace@ietf.org
Subject: RE: [Ace] I-D Action: draft-ietf-ace-coap-est-11.txt

Thanks Esko. 

Addressed in https://github.com/SanKumar2015/EST-coaps/blob/84ce0c1d5e768d40e97184214bae404da21bd050/draft-ietf-ace-coap-est.xml Two comments: 

> page 11 bottom requirement: " The client SHOULD use resource discovery when he is unaware of the available  EST-coaps resources." - when an EST server is known, this requirement does not really apply since the server always supports .well-known EST resources.  So I read it as doing an RD discovery or multicast CoAP discovery if the client doesn't known the EST server address.  Hope this is clear enough in the text and intended?

There are optional resources like /att, /skg and /skc that the server does not have to support, so that is what this sentence was referring to. 

> page 11 bottom: " It is up to the implementation to choose its resource paths” -> seems not really the case, because the root resource structure is forced by the specification. It could have been designed as free choice (because it can be discovered anyway) but it is not.

The text says that the server MUST support the default /.well-known/est root resource and it SHOULD support resource discovery for non-default URIs (like /est or /est/ArbitraryLabel) or ports. In the latter case it is up to the server to decide the paths he makes its resources available at. That is what this sentence was referring to. But you are right; I realized that this sentence is redundant so I only kept "Throughout this document the example root resource of /est is used."

Will reupload the next iteration in a few days. 

Rgs,
Panos