Re: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.txt

Daniel Migault <daniel.migault@ericsson.com> Thu, 28 January 2021 16:44 UTC

Return-Path: <daniel.migault@ericsson.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 EAEEC3A0AAF for <ace@ietfa.amsl.com>; Thu, 28 Jan 2021 08:44:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.24
X-Spam-Level:
X-Spam-Status: No, score=-2.24 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.25, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, HTTPS_HTTP_MISMATCH=0.1, RCVD_IN_MSPIKE_H2=-0.001, SPF_PASS=-0.001, T_MIME_MALF=0.01, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=ericsson.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 quZ7NMuDVdvO for <ace@ietfa.amsl.com>; Thu, 28 Jan 2021 08:44:02 -0800 (PST)
Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2066.outbound.protection.outlook.com [40.107.94.66]) (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 05E473A0A93 for <ace@ietf.org>; Thu, 28 Jan 2021 08:44:01 -0800 (PST)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M/bTF5b7Kn+K78wFVGNC49Dh/Sr8MLM55l9KZ3/rfx+yY1cXpN0SKQR499zrWCg3Dps0Tqahd2YkVPCZxsnEu8KC3I1ppzPIMwRStCFyjLBMg/4kVUmqOHfICcNjs047lZOeYCD9+p/pW4TJA5ST/LUXLepdx6zxgq6qfjXPeL2FxvlF+IaxArwsti6pLjn56qBM3hVuieBWPqHg+52dMFlkmIrgZfFP1j1INXt7oAQ63zeaEedzq5JR2PqQUi2hlNXERDQpRHaaRYHG54Tow1vSFaBH3U2i4tnl3bJT4trP1/nOhOapUB9nv5Or/vjpzwHyPHT5cVIIiySlzGc4WQ==
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=u7QgPkHKXleo9z1IsV28r8bCieHYRqykJ6KvY9Myu/s=; b=OVzIizBKTtrVtZdpfuN55wl6kmL/epqUxc3kOUtW9mDdk/SVnu4WybDF7HrZDNYD66mSCfaFxELqrB2cNQfHp8x7iEKUzBvOEPZcKATvrKdR+4I3QFjM0GsbTzbhbnNXgSEicJtuK0GiRh8fxuU/Zf4UYzwHM32CZAU5640ziJMyDVcyWswVl2yrjzcLVsHRotmn3+pwSLqoubIQogP2vWQkBXHtkmOd7tGodNFMYO4c67xfLpOZ1m34OMpjfaW1CO7a/phBG5MmmkNt4q8/Yy8WNQLs6HDDiNcHS3MlS0XaIzskrGhJchka38QRZ/DS/M6WA5OzuMCHzT7vJCfdvQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=ericsson.com; dmarc=pass action=none header.from=ericsson.com; dkim=pass header.d=ericsson.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ericsson.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=u7QgPkHKXleo9z1IsV28r8bCieHYRqykJ6KvY9Myu/s=; b=Q4/By2ivQcU8VU+6b6ZOATOZdjW5XKB/OTfHyRqtrLmbZRlCdvpGB9JndaEEn+7mlPJvKgHP05wRb8j89XsDviHNdhYJhURfc9lCN6CLSd66+NlsWULc7ftpXa2aIE1neTRrr8pQk8jzosmYus+9KQh72mck/U7xw+34otrwK0Y=
Received: from DM6PR15MB2379.namprd15.prod.outlook.com (2603:10b6:5:8a::16) by DM6PR15MB2587.namprd15.prod.outlook.com (2603:10b6:5:1a7::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.16; Thu, 28 Jan 2021 16:43:56 +0000
Received: from DM6PR15MB2379.namprd15.prod.outlook.com ([fe80::a9f9:326f:8cfb:157b]) by DM6PR15MB2379.namprd15.prod.outlook.com ([fe80::a9f9:326f:8cfb:157b%7]) with mapi id 15.20.3784.019; Thu, 28 Jan 2021 16:43:56 +0000
From: Daniel Migault <daniel.migault@ericsson.com>
To: Francesca Palombini <francesca.palombini=40ericsson.com@dmarc.ietf.org>, Daniel Migault <mglt.ietf@gmail.com>, Benjamin Kaduk <kaduk@mit.edu>
CC: "ace@ietf.org" <ace@ietf.org>
Thread-Topic: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.txt
Thread-Index: AQHW0fX/AvRzF//YF0euZ/TfnYN0DKn2W2KAgABdXoCAAAPZgIAlvc+AgArdfACAAI7JgIASXGyAgAGFsACAAbnOgIAAAQj+
Date: Thu, 28 Jan 2021 16:43:55 +0000
Message-ID: <DM6PR15MB2379B7C8CBF8D58FCCF9CD33E3BA9@DM6PR15MB2379.namprd15.prod.outlook.com>
References: <160793569464.18419.15019250928855569100@ietfa.amsl.com> <1752F003-99AA-47F6-9B1A-9B493F07DC7D@ericsson.com> <20201214153231.GE64351@kduck.mit.edu> <07C849A7-2821-4FAE-A5F5-817195C5B03F@ericsson.com> <CADZyTk=0AL2TGOggbZpLYTRz_QOpHiHC00-bgkbdqu=1eDQ5_Q@mail.gmail.com> <B5E992D4-8BD6-4869-8070-321C8672DD26@ericsson.com> <CADZyTknSWFuuq_3ra+aLkmtnRzUViDCKuwzjcFaZxGc2r5JOmQ@mail.gmail.com> <3F5BAB9C-2FE7-468B-BADF-A84BF78D5E23@ericsson.com> <CADZyTkkrAaJefqboN+LCV8qbn085hY6TJ6JHM8GpLSKitnwtVg@mail.gmail.com>, <DCC48120-2AEC-44A9-90FC-D3D19C6945DE@ericsson.com>
In-Reply-To: <DCC48120-2AEC-44A9-90FC-D3D19C6945DE@ericsson.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dmarc.ietf.org; dkim=none (message not signed) header.d=none;dmarc.ietf.org; dmarc=none action=none header.from=ericsson.com;
x-originating-ip: [96.22.11.129]
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: d45744c2-e0ed-44a3-bb08-08d8c3abe74e
x-ms-traffictypediagnostic: DM6PR15MB2587:
x-microsoft-antispam-prvs: <DM6PR15MB25872026356E17E2956B733EE3BA9@DM6PR15MB2587.namprd15.prod.outlook.com>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: FumSzMkkdd5VmbMwLdpJ5jP15InNXg4GTiYMfr+Jqj5sxmq3FfNdO1km75ARKAF0gh20ZWaiQ6+z3lJB0xppuF/ifqZJRS32xkv6HcVpyB89GhvH+jEYtHd1RqlHLdHJl5KbdQ5IMVUdlJFgcmQYw82E7orJMqnPMzy85EkUqZaJOp32vEEueK73j0iIOvj0JYdT+4JRpeRIqUx1asCcHFJ9GjbDrJzYwu6mBszK5kWJVfx3SARbrNGFotGQoMI7p3crXlcbQnL3iJ+tFXrAGt3LPTSKGN2L/RoWi+47C1G4yuK+Lztn8J79NlRAFG6pEYEWwfNC9LT86msHpTGNcKQuHWEVo0ZQlOdlsDCRpcSRlmZq7g7VZ+qnA3rld49Z/fBH9QYf8O7EZ1/wvkDe9+UendbvKQDO97I6Npx0Z+azUJhJyKQHrJRVuO5gSLtV2O6nRK+F1ig9GE0rFd7uKQ7oNndUOodpu3Z8nJ7W+f6TfVxOyYVeI6Vu0kdSUGiBG11kHe+3P6rrZ43hUuWrG5mgkeInWK/FbFsOp0+6+EFpfo8DOuK/rALHACYxpZAu+hFhHggUI31V5D7Hv3blGA6S2Qj3nyiKsS0S0Eec9UQ=
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM6PR15MB2379.namprd15.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(376002)(396003)(136003)(346002)(366004)(30864003)(19627235002)(478600001)(966005)(52536014)(110136005)(19627405001)(166002)(8676002)(26005)(86362001)(4326008)(5660300002)(4001150100001)(66446008)(71200400001)(2906002)(33656002)(76116006)(83380400001)(66946007)(6506007)(66574015)(66476007)(8936002)(316002)(7696005)(55016002)(53546011)(44832011)(64756008)(186003)(66556008)(91956017)(9686003)(579004)(559001); DIR:OUT; SFP:1101;
x-ms-exchange-antispam-messagedata: RQMDjJQPdKmqhzumrSw5CVZlfBK5y2XrbfADgnvVMMKzX+MhM+7og/J15OJ/FrUnOmdhLVuvm92ZQGX/hIEE+PtRQr9PM8heN+qR8ACnDqVPb9dc6pq12qrbOrEC/Wf28sNLoT6ZllKq0RebdGUpDj+SrjAFq+DvW2hw0EhzwRBAbjtI//Ps3wwq7EOKPmJTJMf8ehVVQHOAD77TKxgwOAGDgipWlPjEIVMv6TlvdVLDoq+jPg7X5yglk0BNp7AzAfmyFGtZnx2VY7hBbwToYPypOlvFeQsGlK0mNWBlykczO/KZmwsuqyLsy/J+udTRrsv4uqm8MqYWJYCAP+BruVJJlhW2q/zt93Vu/TUXmNeo/FrD5tJD8W8l5uK+KxjHCUk+ieyb01XUidzX5g/DKzgHlM6GP2ZyEO8E2A1iI5mQkp9SCQ5g8liG81SQU5oo43i20UZdLpTHq3IzB8Rm1xdsMjalHjTLigYfEbuB8Kp9sSRVTEepIbcaoMy6z8qoSRUHeTdh9ETmzFUPbvW9U7z9jx3VwWEY6P6a27WKQfxaS2M51RAuxTvu4Cl6aABAXEb6o1NEUmxQLPRKJOUYpGn/YXAmgxB9c5WAmzzVZwfTI2ef9ZqU6MQR0bUCl92W1tpDF2QENUknpufptSUE2znJY9TqieFd24kVCe8EFqwgutJjBNZPpruonZRPvpsjUqwBVUUJBe050BrRiyiaH1tZRt2P50crff93MBIE6F2oHaFjkMz6M3kTTZ748zW0Eum7aVct1aqJOMB/hOYeED+pSgDjgYKudHljQ2MMbnfvF5QiBh1cUsQPDv5zamhZhUsfAcLRi1f+vWHUgVsgv5Xp+LeXm80maFhcFQhdMDJviA6DGVt7GH/BRXyjhuBIBZgv1zf/f0RgPPtaQA8wQkmS57iZtmg/gUQgc4hUDgz6nnkbvpCA7EJeWsf4hLsdAltzouuvZDG0UX8n57NmBmlVxhHcD7Ww45Ho5ZkR0sBm6MJKAR9CAZLPylGeRSDKPQetnKFD3jHPPzvLfUYF23NfOjUjLYbuzbxb6BrrFWg=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_DM6PR15MB2379B7C8CBF8D58FCCF9CD33E3BA9DM6PR15MB2379namp_"
MIME-Version: 1.0
X-OriginatorOrg: ericsson.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: DM6PR15MB2379.namprd15.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: d45744c2-e0ed-44a3-bb08-08d8c3abe74e
X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jan 2021 16:43:55.9816 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 92e84ceb-fbfd-47ab-be52-080c6b87953f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: vMzg6MLsRiFAJXRhIx6zc4hQ6notfzEc/SbPqYHU0s7jvJQcDvI1FBKBI6DeQxqu63IFr0g3UfSFDHLVjLv2g8Gww3P+cwebcWCdBE0r6sk=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR15MB2587
Archived-At: <https://mailarchive.ietf.org/arch/msg/ace/MQgYnmru6_JL3GRisH1V0J16WrM>
Subject: Re: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.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: Thu, 28 Jan 2021 16:44:13 -0000

I am fine with the proposed text and bring the discussion to the WG.

Yours,
Daniel
________________________________
From: Ace <ace-bounces@ietf.org> on behalf of Francesca Palombini <francesca.palombini=40ericsson.com@dmarc.ietf.org>
Sent: Thursday, January 28, 2021 11:33 AM
To: Daniel Migault <mglt.ietf@gmail.com>; Benjamin Kaduk <kaduk@mit.edu>
Cc: ace@ietf.org <ace@ietf.org>
Subject: Re: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.txt


Hi Daniel, Ben,



I believe RECOMMENDing OSCORE between C and AS and allowing for alternatives (while clarifying that any protocol used must still fulfil the ACE framework requirements) is a better solution than mandating OSCORE between C and AS: we want to keep some level of flexibility, as the client and AS are not going to be constrained and could use something else instead.



I went ahead and did the following clarification: https://github.com/ace-wg/ace-oscore-profile/commit/b806de9c5ad48049994dc8dbfe9ee908d8492515<https://protect2.fireeye.com/v1/url?k=8eb136bb-d12a0f96-8eb17620-8692dc8284cb-7ab1296a8bec3d96&q=1&e=137511cf-e65b-4e1c-8a58-222ad5ade409&u=https%3A%2F%2Fgithub.com%2Face-wg%2Face-oscore-profile%2Fcommit%2Fb806de9c5ad48049994dc8dbfe9ee908d8492515> and I think the draft is much better for it. I am going to upload a new version.



At the same time I want to note that I don’t believe this change (RECOMMEND • REQUIRED) on the DTLS profile was necessary nor an improvement: I don’t think that defining one additional profile for each different security protocol used between client and AS is a good idea. Nor I think this has been discussed in the working group (I for one completely missed this update, so thank you for bringing this up Daniel). Just want to make sure Ben is aware.



Francesca



From: Daniel Migault <mglt.ietf@gmail.com>
Date: Wednesday, 27 January 2021 at 15:12
To: Francesca Palombini <francesca.palombini@ericsson.com>
Cc: Benjamin Kaduk <kaduk@mit.edu>, Ace Wg <ace@ietf.org>
Subject: Re: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.txt



Hi Francesca,



Thanks for the update, I believe that all concerns I raised have been addressed.   Given the latest update of draft-ietf-ace-dtls-authorize due to a comment raised by the secdir, I am tempted to think that we may sync a bit the wording between the two drafts. This is to me the only point we need to resolve. Before sending this back to Ben.



I provide the remaining concern below. I has been extracted from my more complete comments/responses to your comments.



Thanks for the update!



Yours,
Daniel



I believe that the RECOMMMENDation comes to

fill the section 5.8.1

draft-ietf-ace-oauth-authz.  I believe the

text should mention that such recommendation

is one attribute that needs to be completed

by the profile. This is mostly to avoid the

recommendation to be considered as anecdotal

or a comment.

It seems that SHOULD would make it more

normative than a RECOMMEND. But that is only

a personal though.



FP: The recommendation does not fill in 5.8.1, the MUST just before does. Its goal is to give one preferred choice to implementers on how the previous MUST can be fullfilled. The use of normative text makes it so that this text cannot be taken as a comment. Appendix A - Profile Requirements summarizes the requirements that this profile defines based on the framework.

<mglt>

I understand that it will be clarified that MUST fulfills oauth-authz section 5.8.1.  I do see SHOULD as a bit stronger than RECOMMEND - but that may not be true. However, I would suggest to emphasize that OSCORE should be use unless there is a good reason to not use it.

If we would like clients to use OSCORE and not implement other means, we may need to emphasize that AS supporting this profile are expected to support OSCORE.



FP: that is not necessary. I did not add a ref to the section as it is referenced in the sentence just before.

</mglt>

<mglt>

ok, fine for the reference. Given the comment from Russ  and the current wording draft-ietf-ace-dtls-authorize, I believe we should harmonize the wording.



This is how has just been updated.

 The use of CoAP

   and DTLS for this communication is RECOMMENDED REQUIRED in this profile, other profile.  Other

   protocols (such as HTTP and TLS, or CoAP and OSCORE [RFC8613]) MAY be

   used instead. will

   require specification of additional profile(s).



</mglt>





On Tue, Jan 26, 2021 at 9:57 AM Francesca Palombini <francesca.palombini@ericsson.com<mailto:francesca.palombini@ericsson.com>> wrote:

Hi Daniel,



Thank you. I have now submitted v-15 including changes to answer your review comments.

Detailed comments below. Please let me know if I missed anything.



Thanks,

Francesca



From: Daniel Migault <mglt.ietf@gmail.com<mailto:mglt.ietf@gmail.com>>

Date: Thursday, 14 January 2021 at 23:33

To: Francesca Palombini <francesca.palombini@ericsson.com<mailto:francesca.palombini@ericsson.com>>

Cc: Benjamin Kaduk <kaduk@mit.edu<mailto:kaduk@mit.edu>>, Ace Wg <ace@ietf.org<mailto:ace@ietf.org>>

Subject: Re: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.txt



Hi,



As mentioned during the interim meeting this morning, please find my comments below.



Yours,

Daniel



On Thu, Jan 14, 2021 at 9:02 AM Francesca Palombini <francesca.palombini@ericsson.com<mailto:francesca.palombini@ericsson.com>> wrote:

Hi Daniel!

Thank you for the review. I have answered your comments inline, and if you agree with them I believe I can implement the changes by next week and submit the final version. I am happy to see these are clarification comments.

Thanks,

Francesca

From: Daniel Migault <mglt.ietf@gmail.com<mailto:mglt.ietf@gmail.com>>

Date: Thursday, 7 January 2021 at 17:07

To: Francesca Palombini <francesca.palombini@ericsson.com<mailto:francesca.palombini@ericsson.com>>

Cc: Benjamin Kaduk <kaduk@mit.edu<mailto:kaduk@mit.edu>>, Ace Wg <ace@ietf.org<mailto:ace@ietf.org>>

Subject: Re: [Ace] I-D Action: draft-ietf-ace-oscore-profile-14.txt

Hi,



I apology for taking too long to review the document. Overall I think it is in good shape but I do have some minor comments on the current version. I have not been through the IANA section, I assumed it has already been validated by IANA.  Please find my comments below.



Once fixed, I do not expect any action from my p[art on the datatracker and expect the draft to move forward almost by itself.



Yours,

Daniel

OSCORE Profile of the Authentication and Authorization for Constrained

                         Environments Framework

                    draft-ietf-ace-oscore-profile-14

[...]

2.  Protocol Overview

   This section gives an overview of how to use the ACE Framework

   [I-D.ietf-ace-oauth-authz] to secure the communication between a

   client and a resource server using OSCORE [RFC8613].  The parameters

   needed by the client to negotiate the use of this profile with the

   authorization server, as well as the OSCORE setup process, are

   described in detail in the following sections.

   The RS maintains a collection of OSCORE Security Contexts with

   associated authorization information for all the clients that it is

   communicating with.  The authorization information is maintained as

   policy that is used as input to processing requests from those

   clients.

   This profile requires a client to retrieve an access token from the

   AS for the resource it wants to access on an RS, by sending an access

   token request to the token endpoint, as specified in section 5.6 of

   [I-D.ietf-ace-oauth-authz].  The access token request and response

   MUST be confidentiality-protected and ensure authenticity.  This

   profile RECOMMENDS the use of OSCORE between client and AS, but other

   protocols (such as TLS or DTLS) can be used as well.

<mglt>

I usually expect a recommendation to be

motivated.  In this case, the recommendation

seems to be motivated by not having two

different libraries - OSCORE and TLSvXs as

opposed to taking of some properties that

OSCORE have as opposed to DTLS. I believe the

motivation should be explicitly stated.



FP: Yes, the first reason we recommend OSCORE between C and AS is to make use of only one library on the client. However, that is absolutely dependent on the application, and the client is typically not a constrained device, so something else could be used depending on the use case scenario. Without details on the use case, I don't think we have enough information to motivate a recommendation.

<mglt>

Fine, I understand this will be specified.



FP: Done now.

</mglt>

<mglt>

ok, it seems fine. thanks.

</mglt>



I believe that the RECOMMMENDation comes to

fill the section 5.8.1

draft-ietf-ace-oauth-authz.  I believe the

text should mention that such recommendation

is one attribute that needs to be completed

by the profile. This is mostly to avoid the

recommendation to be considered as anecdotal

or a comment.

It seems that SHOULD would make it more

normative than a RECOMMEND. But that is only

a personal though.



FP: The recommendation does not fill in 5.8.1, the MUST just before does. Its goal is to give one preferred choice to implementers on how the previous MUST can be fullfilled. The use of normative text makes it so that this text cannot be taken as a comment. Appendix A - Profile Requirements summarizes the requirements that this profile defines based on the framework.

<mglt>

I understand that it will be clarified that MUST fulfills oauth-authz section 5.8.1.  I do see SHOULD as a bit stronger than RECOMMEND - but that may not be true. However, I would suggest to emphasize that OSCORE should be use unless there is a good reason to not use it.

If we would like clients to use OSCORE and not implement other means, we may need to emphasize that AS supporting this profile are expected to support OSCORE.



FP: that is not necessary. I did not add a ref to the section as it is referenced in the sentence just before.

</mglt>

<mglt>

ok, fine for the reference. Given the comment from Russ  and the current wording draft-ietf-ace-dtls-authorize, I believe we should harmonize the wording.



This is how has just been updated.

 The use of CoAP

   and DTLS for this communication is RECOMMENDED REQUIRED in this profile, other profile.  Other

   protocols (such as HTTP and TLS, or CoAP and OSCORE [RFC8613]) MAY be

   used instead. will

   require specification of additional profile(s).



</mglt>



</mglt>

   Once the client has retrieved the access token, it generates a nonce

   N1.  The client also generates its OSCORE Recipient ID (see

   Section 3.1 of [RFC8613]), ID1,



<mglt>

I believe that ID1 is the Recipient ID. I am

wondering if the text "OSCORE Recipient ID

ID1 (see Section 3.1... )" would not be

clearer. Though this might be clarified by

the RFC editor.



FP: Ok, will change.

<mglt>

Ok



FP: Ok done now.

</mglt>

<mglt>

ok, thank you.

</mglt>



I believe "its" should be clarified

especially in the overview section to expose

that the Recipient ID is being used by the

client to associate the received messages. In

other words, the RS will use this ID ( as

Sender ID) when sending responses to the

client.



FP: That's correct. I will change: s/its/its own. I think the next half sentence "for use with the keying material associated to the RS." is supposed to say exactly what you say above. I would rather not go into details of how exactly the Recipient ID works, as that is OSCORE details.

<mglt>

It seems crucial to me that reading the overview section the reader has a good sense of what information is being sent to who and what for. Currently this is expressed using the OSCORE terminology which requires a relatively deep understanding of OSCORE. It seems to me beneficial to adopt a more common language that does not require this expertise. This is well explained in the detailed section, but - at least when I was reading the document - the overview section was more confusing than helping me. This is why I suggest being a bit more explicit.



FP: I don't agree here, simply because I would expect someone implementing the OSCORE profile of Ace to be familiar with the OSCORE terminology. Understanding OSCORE terminology is a requirement for understanding and implementing the draft, and I have now added a sentence about that in the Terminology section.



<mglt>

I think that is appropriate and probably the right choice between writing less and writing too much. Thanks.

</mglt>

</mglt>

The reason is more that I believe the

overview section should provide a description

that is understandable for people that may

not be fully aware of the details of OSCORE

or that have not yet read the document. In my

case - belonging to these two categories - I

found the detailed section clearer than the

overview. This is just to clarify my

intention.



FP: Absolutely, which is why I am trying to keep it high level at this point. If the sentence "Recipient ID for use with the keying material associated to the RS" is not clear enough, could you point me to what is missing? (keeping in mind I'd rather not go into messaging level)

<mglt>

"""

The client also generates its OSCORE Recipient ID (see

   Section 3.1 of [RFC8613]), ID1, for use with the keying material

   associated to the RS.  The client posts the token, N1 and its

   Recipient ID to the RS [...]

"""

When the client and the RS are communicating, it could legitimately being inferred that the recipient of a message sent by the client is the RS. In fact Recipient ID does not designate the recipient from a client perspective, but the recipient from the RS - that is to say the recipient's perspective. In this case, the sender ID of the recipient is expected to be set with the Recipient ID.

So, I believe the term recipient can be misleading, if not being clarified.



FP: I understand your point, but really I see this as a note to the OSCORE terminology, which we are not going to change here. I hope that by adding the note in the terminology about OSCORE this becomes less of an issue for this document.

<mglt>

ok.

</mglt>

</mglt>



I have the impression that N1 is specific to

this profile. In other words, it is not

generated for the oauth-authz  (Client-Nonce)

nor for OSCORE.  One difficulty of these

profiles is that they have to put the glue

between the protocol OSCORE and the ACE

framework oauth-auth.  It would maybe ease

the reading to specify what is in the profile

and what is being defined outside.  I have

the impression that the implicit convention

you are using in the protocol overview

section is that by default what is being

mentioned is defined by the profile and what

is being defined outside the profile is being

explicitly referenced.  It might worth

stating that rule - at least in the overview

section.



FP: It is hard to draw a very strict line as some requirements spill over from the framework and OSCORE, even just to give the context of the more detailed requirements. I don't think I could correctly state that, but what I tried to do, as you noted, is a direct reference everytime (or almost) that I can easily point to.

<mglt>

If I recall correctly, mentioning that Nonce are profile specific would probably be clarifying - and maybe sufficient.



FP: Ok, done now.

</mglt>

This is at least clarified in the detailed

sections.



</mglt>

<mglt>

I think what you propose is clear. Thanks.

</mglt>

for use with the keying material

   associated to the RS.  The client posts the token, N1 and its

   Recipient ID to the RS using the authz-info endpoint and mechanisms

   specified in section 5.8 of [I-D.ietf-ace-oauth-authz] and Content-

   Format = application/ace+cbor.  When using this profile, the

   communication with the authz-info endpoint is not protected, except

   for update of access rights.

   If the access token is valid, the RS replies to this request with a

   2.01 (Created) response with Content-Format = application/ace+cbor,

   which contains a nonce N2 and its newly generated OSCORE Recipient

   ID, ID2, for use with the keying material associated to the client.

   Moreover, the server concatenates the input salt received in the

   token, N1, and N2 to obtain the Master Salt of the OSCORE Security

   Context (see section 3 of [RFC8613]).  The RS then derives the

   complete Security Context associated with the received token from the

   Master Salt, the OSCORE Recipient ID generated by the client (set as





Palombini, et al.         Expires June 17, 2021                 [Page 4]

Internet-Draft            OSCORE Profile of ACE            December 2020



   its OSCORE Sender ID), its own OSCORE Recipient ID, plus the

   parameters received in the access token from the AS, following

   section 3.2 of [RFC8613].

   In a similar way, after receiving the nonce N2, the client

   concatenates the input salt, N1 and N2 to obtain the Master Salt of

   the OSCORE Security Context.  The client then derives the complete

   Security Context from the Master Salt, the OSCORE Recipient ID

   generated by the RS (set as its OSCORE Sender ID), its own OSCORE

   Recipient ID, plus the parameters received from the AS.

   Finally, the client sends a request protected with OSCORE to the RS.

<mglt>

It is unclear it that request is the

communication between the client and the RS

or something in the ace framework or oscore.



FP: This is any request, so what you call "communication between the client and RS". If it was something defined elsewhere there would have been a reference to the relevant section.

<mglt>

I believe this should be clarified.



FP: Ok, done now.

</mglt>

</mglt>

<mglt>

Thanks.

</mglt>

   If the request is successfully verified, the server stores the

   complete Security Context state that is ready for use in protecting

   messages, and uses it in the response, and in further communications

   with the client, until token deletion, due to e.g. expiration.  This

   Security Context is discarded when a token (whether the same or a

   different one) is used to successfully derive a new Security Context

   for that client.

   The use of random nonces during the exchange prevents the reuse of an

   Authenticated Encryption with Associated Data (AEAD) nonces/key pair

   for two different messages.  Two-time pad might otherwise occur when

<mglt>

I am wondering if two time pad is correct as

opposed to a collision. I might be wrong but

two time pad seems to be correlated to OTP. I

see this closer to IV collision than OTP.

Unless you are very sure to be correct, I

would suggest to use collision instead.



FP: I believe two-time pad is the correct term.

<mglt>

So far what I found is that two time pad is really related to two key stream re-use, but I will defer to Ben to check if the use here is appropriated.



FP: I checked with John (who was the one to bring this issue up in the first place) and he mentioned two-time pad is the correct for confidentiality, but does not consider the integrity part. Now rephrased according to his suggestion.

</mglt>

</mglt>

<mglt>

Fine. Thanks to you for updating and thanks to John for the feed back.

</mglt>



   client and RS derive a new Security Context from an existing (non-

   expired) access token, as might occur when either party has just

   rebooted.  Instead, by using random nonces as part of the Master

   Salt, the request to the authz-info endpoint posting the same token

   results in a different Security Context, by OSCORE construction,

   since even though the Master Secret, Sender ID and Recipient ID are

   the same, the Master Salt is different (see Section 3.2.1 of

   [RFC8613]).  Therefore, the main requirement for the nonces is that

  they have a good amount of randomness.  If random nonces were not

   used, a node re-using a non-expired old token would be susceptible to

   on-path attackers provoking the creation of OSCORE messages using old

   AEAD keys and nonces.

<mglt>

I might be missing something, but my

understanding of the text above is that

nonces MUST NOT repeat and I do not see the

necessity for nonce to be non predictable.

Typically would we have an issue using an

incrementing nonce that is persistent to

reboot.

FP: the randomness requirement for the nonces comes from the combination of the possibility of reboot (or loss of state/nonces) and using the same access token (hence OSCORE input material). We do not assume that the nodes have the capability to do persistent storage of nonces, since that would be very taxing, but if that was the case, then yes I would think counters would be fine (see section 7).

I think the cryptographic properties should

be clearly mentioned and maybe separated from

the implementation recommendation.



FP: this is just the overview, more detailed considerations are in fact separate and can be found in section 7.

<mglt>

The text of section 7 is clear to me, the text mentioned here seems wrong to me - there is no randomness requirements. I suggest the text "Therefore... nonce" be replaced by some text from section 7 or by a reference to section 7.



FP: I see. I have now rephrased to not talk about randomness in this section, and only talk about reuse.

</mglt>



</mglt>



<mglt>

I believe that is fine thanks.

</mglt>

   After the whole message exchange has taken place, the client can

   contact the AS to request an update of its access rights, sending a

   similar request to the token endpoint that also includes an

   identifier so that the AS can find the correct OSCORE security input

   material it has previously shared with the client.  This specific

   identifier, encoded as a byte string, is assigned by the AS to be

   unique in the sets of its OSCORE security input materials, and is not

   used as input material to derive the full OSCORE Security Context.

   An overview of the profile flow for the OSCORE profile is given in

   Figure 1.  The names of messages coincide with those of

   [I-D.ietf-ace-oauth-authz] when applicable.





Palombini, et al.         Expires June 17, 2021                 [Page 5]

Internet-Draft            OSCORE Profile of ACE            December 2020



      C                            RS                   AS

      |                            |                     |

      | ----- POST /token  ----------------------------> |

      |                            |                     |

      | <---------------------------- Access Token ----- |

      |                           + Access Information   |

      | ---- POST /authz-info ---> |                     |

      |   (access_token, N1, ID1)  |                     |

      |                            |                     |

      | <- 2.01 Created (N2, ID2)- |                     |

      |                            |                     |

    /Sec Context             /Sec Context                |

      derivation/              derivation/               |

      |                            |                     |

      | ---- OSCORE Request -----> |                     |

      |                            |                     |

      |                    /proof-of-possession          |

      |                    Sec Context storage/          |

      |                            |                     |

      | <--- OSCORE Response ----- |                     |

      |                            |                     |

   /proof-of-possession            |                     |

   Sec Context storage/            |                     |

      |                            |                     |

      | ---- OSCORE Request -----> |                     |

      |                            |                     |

      | <--- OSCORE Response ----- |                     |

      |                            |                     |

   /mutual        ...              |                     |

   authentication/



                        Figure 1: Protocol Overview

<mglt>

The figure is very clarifying, and though

this might be a very personal nit I would

have found it clearer to have the figure

before the explanatory text.



FP: I will leave this as is for now, willing to see what's best with the RFCEditor.

</mglt>

<mglt>

sure

</mglt>

<mglt>

just to re-iterate, I do not see this a a real matter.

</mglt>



3.1.  C-to-AS: POST to token endpoint

[...]

       Header: POST (Code=0.02)

       Uri-Host: "as.example.com<http://as.example.com>"

       Uri-Path: "token"

       Content-Format: "application/ace+cbor"

       Payload:

       {

         "req_aud" : "tempSensor4711",

         "scope" : "write",

         "req_cnf" : {

           "kid" : h'01'

        }

<mglt>

For my comprehension, the kid seems to me an

id to the security context.  Though this is

an example, I am a bit surprised the value is

01, which look small.  So I am just willing

to check my understanding.

FP: That is correct, and the value is just an example.

<mglt>

thanks for the response

</mglt>

</mglt>

   Figure 3: Example C-to-AS POST /token request for updating rights to

                 an access token bound to a symmetric key.

3.2.  AS-to-C: Access Token

   After verifying the POST request to the token endpoint and that the

   client is authorized to obtain an access token corresponding to its

   access token request, the AS responds as defined in section 5.6.2 of

   [I-D.ietf-ace-oauth-authz].  If the client request was invalid, or

   not authorized, the AS returns an error response as described in

   section 5.6.3 of [I-D.ietf-ace-oauth-authz].

   The AS can signal that the use of OSCORE is REQUIRED for a specific

   access token by including the "profile" parameter with the value

   "coap_oscore" in the access token response.  This means that the

   client MUST use OSCORE towards all resource servers for which this

   access token is valid, and follow Section 4.3 to derive the security

   context to run OSCORE.  Usually it is assumed that constrained

   devices will be pre-configured with the necessary profile, so that

   this kind of profile signaling can be omitted.

<mglt>

The AS may indicate the type of communication

between the client and the RS.  However, it

seems to me the client does not provides the

AS the capabilities (i.e.  supported

profiles), which makes for example impossible

to the AS to pick one that fits the client.

I also have the impression the AS cannot

provide multiple available profiles and let

the client pick one that is implemented.  As

a result, the coap_oscore seems to be here to

indicate a "limitation" associated to the RS

- in this case OSCORE is mandatory.



While I agree that in pre-configuration

environment may things can be pre-agreed, I

am reading the text above as making the

specification of the profile as almost

useless.  I am wondering if we could not

instead mention that an AS willing to

indicate the use of OSCORE SHOULD set the

profile parameter to "coap_oscore".  A client

receiving such value and supporting this

profile SHOULD use this profile.  The

motivation for setting the profile may be

that OSCORE is only supported or that there

is a preference to use OSCORE.



FP: I believe negotiation of profiles is a point that has been brought up (possibly even by me if I remember correctly) and discussed within the ace framework,  and is much more general than for the OSCORE profile. I think if we want to take on this discussion again, we should do it with the Ace framework authors because they have strong views about this. The OSCORE profile only adapts what the ace framework specifies.

<mglt>

ok, it seems very unidirectional, but we may leave it as it is.

</mglt>

</mglt>

ok

   Moreover, the AS MUST send the following data:

   o  a master secret

   o  an identifier of the OSCORE Input Material

   Additionally, the AS MAY send the following data, in the same

   response.

   o  a context identifier

   o  an AEAD algorithm

   o  an HMAC-based key derivation function (HKDF) algorithm





Palombini, et al.         Expires June 17, 2021                 [Page 8]

Internet-Draft            OSCORE Profile of ACE            December 2020



   o  a salt

   o  the OSCORE version number

   This data is transported in the OSCORE_Input_Material.  The

   OSCORE_Input_Material is a CBOR map object, defined in Section 3.2.1.

   This object is transported in the 'cnf' parameter of the access token

   response as defined in Section 3.2 of [I-D.ietf-ace-oauth-params], as

   the value of a field named 'osc', registered in Section 9.5 and

   Section 9.6.

   The AS MAY assign an identifier to the context (context identifier).

   This identifier is used as ID Context in the OSCORE context as

   described in section 3.1 of [RFC8613].  If assigned, this parameters

   MUST be communicated as the 'contextId' field in the

   OSCORE_Input_Material.  The applications needs to consider that this

   identifier is sent in the clear and may reveal information about the

   endpoints, as mentioned in section 12.8 of [RFC8613].

<mglt>

It is unclear to me why such contextId is

needed. I suspect - but I am not sure - this

could be used as a reference for the AS of a

Context established between the client and

the RS. In such case I assume the context ID

(kid) is only shared by the client and the RS

so it could not be used for example when a

token needs to be updated /renewed.

I am wondering if that is correct and I

believe motivation for such id should be

clarified.



FP: Motivation of existence of ID Context is in OSCORE, and we have a reference to the correct OSCORE section here (didn't want to repeat myself). No, the Context ID is not used as reference for the Sec Ctx by itself.

<mglt>

Sorry, I think I messed up with and rather had 'id' in mind. So I understand that id identifies OSCORE_Input_Material and contextId identifies the OSCORE ID Context. My initial question was why would we need a id, and I suspected that the reason was to enable some reference between the client and the AS, as the contextId may be changed between the RS and client. Is that correct ?



FP: We need an id for the client to identify the same OSCORE input material on the AS in case of updatet of access right. Yes the contextId might change. Also id is unique for the AS, while contextId isn't necessarily - contextId (together with the Sender ID which is negotiated later on) identifies the security context once established.



If I remember correctly, id and contextId could not be of the same value, but I currently do not remember why.Could you just briefly remember me. In any case, the reason I am asking is that if we were able to have one id or contextId, we would avoid the collision.  Typically, if contextId would be sufficient to derive the id, we could avoid such collision issue. So basically,  what I wanted to clarify - maybe for only myself - is id cannot be derived from contextId and that there is a need to have the separate id.



FP: No, they don't have to be distinct values. So there is really no collision issue. As I said above, they identify different material.



</mglt>



<mglt>

I think I am starting to understand that simply means it has been updated and that having different values is not a goal in itself. Sorry for the multiple iterations.



"""

In that case, the ID Context in the OSCORE Security

   Context will not match the "contextId" parameter of the corresponding

   OSCORE_Input_Material.

""

</mglt>



</mglt>

   The master secret and the identifier of the OSCORE_Input_Material

   MUST be communicated as the 'ms' and 'id' field in the 'osc' field in

   the 'cnf' parameeter of the access token response.  If included, the

   AEAD algorithm is sent in the 'alg' parameter in the

   OSCORE_Input_Material; the HKDF algorithm in the 'hkdf' parameter of

   the OSCORE_Input_Material; a salt in the 'salt' parameter of the

   OSCORE_Input_Material; and the OSCORE version in the 'version'

   parameter of the OSCORE_Input_Material.

   The same parameters MUST be included in the claims associated with

   the access token.  This profile RECOMMENDS the use of CBOR web token

   (CWT) as specified in [RFC8392].  If the token is a CWT, the same

   OSCORE_Input_Material structure defined above MUST be placed in the

   'osc' field of the 'cnf' claim of this token.

   The AS MUST send different OSCORE_Input_Material (and therefore

   different access tokens) to different authorized clients, in order

   for the RS to differentiate between clients.

   Figure 4 shows an example of an AS response, with payload in CBOR

  diagnostic notation without the tag and value abbreviations.  The

   access token has been truncated for readability.



















Palombini, et al.         Expires June 17, 2021                 [Page 9]

Internet-Draft            OSCORE Profile of ACE            December 2020



       Header: Created (Code=2.01)

       Content-Type: "application/ace+cbor"

       Payload:

       {

         "access_token" : h'8343a1010aa2044c53 ...

          (remainder of access token (CWT) omitted for brevity)',

         "profile" : "coap_oscore",

         "expires_in" : "3600",

         "cnf" : {

           "osc" : {

             "id" : h'01',

             "ms" : h'f9af838368e353e78888e1426bd94e6f'

           }

         }

       }



   Figure 4: Example AS-to-C Access Token response with OSCORE profile.

   Figure 5 shows an example CWT Claims Set, including the relevant

   OSCORE parameters in the 'cnf' claim, in CBOR diagnostic notation

   without tag and value abbreviations.

   {

     "aud" : "tempSensorInLivingRoom",

     "iat" : "1360189224",

     "exp" : "1360289224",

     "scope" :  "temperature_g firmware_p",

     "cnf" : {

       "osc" : {

         "ms" : h'f9af838368e353e78888e1426bd94e6f',

         "id" : h'01'

       }

     }

   }



         Figure 5: Example CWT Claims Set with OSCORE parameters.

   The same CWT Claims Set as in Figure 5, using the value abbreviations

   defined in [I-D.ietf-ace-oauth-authz] and [RFC8747] and encoded in

   CBOR is shown in Figure 6.  The bytes in hexadecimal are reported in

   the first column, while their corresponding CBOR meaning is reported

   after the '#' sign on the second column, for easiness of readability.

<mglt>

Just for my understanding. Figure 5 shows an

"access_token". I am wondering if that is

possible that some parameters may be in the

CWT but not mentioned in clear (to the

client) in the AS-to-C Access Token response.

In my mind, I see the CWT as being encrypted

so the client is not expected to interpret

it. Is that correct ?



FP: actually, figure 5 shows the "clamis set" of the access token. These claims are input to the encryption to create the actual CWT, so yes you are correct, and also the terminology used in the draft is correct.

<mglt>

thanks for the response. NOte that I was not questioning the terminology here.

</mglt>

</mglt>

[...]

3.2.1.  The OSCORE_Input_Material

   id:  This parameter identifies the OSCORE_Input_Material and is

      encoded as a byte string.  In JSON, the "id" value is a Base64

      encoded byte string.  In CBOR, the "id" type is byte string, and

      has label 8.

   version:  This parameter identifies the OSCORE Version number, which

      is an unsigned integer.  For more information about this field,





Palombini, et al.         Expires June 17, 2021                [Page 13]

Internet-Draft            OSCORE Profile of ACE            December 2020



      see section 5.4 of [RFC8613].  In JSON, the "version" value is an

      integer.  In CBOR, the "version" type is integer, and has label 0.

   ms:  This parameter identifies the OSCORE Master Secret value, which

      is a byte string.  For more information about this field, see

      section 3.1 of [RFC8613].  In JSON, the "ms" value is a Base64

      encoded byte string.  In CBOR, the "ms" type is byte string, and

      has label 1.

   hkdf:  This parameter identifies the OSCORE HKDF Algorithm.  For more

      information about this field, see section 3.1 of [RFC8613].  The

      values used MUST be registered in the IANA "COSE Algorithms"

      registry (see [COSE.Algorithms]) and MUST be HMAC-based HKDF

      algorithms.  The value can either be the integer or the text

      string value of the HMAC-based HKDF algorithm in the "COSE

      Algorithms" registry.  In JSON, the "hkdf" value is a case-

      sensitive ASCII string or an integer.  In CBOR, the "hkdf" type is

      text string or integer, and has label 4.

   alg:  This parameter identifies the OSCORE AEAD Algorithm.  For more

      information about this field, see section 3.1 of [RFC8613] The

      values used MUST be registered in the IANA "COSE Algorithms"

      registry (see [COSE.Algorithms]) and MUST be AEAD algorithms.  The

      value can either be the integer or the text string value of the

      HMAC-based HKDF algorithm in the "COSE Algorithms" registry.  In

      JSON, the "alg" value is a case-sensitive ASCII string or an

      integer.  In CBOR, the "alg" type is text string or integer, and

      has label 5.

   salt:  This parameter identifies an input to the OSCORE Master Salt

      value, which is a byte string.  For more information about this

      field, see section 3.1 of [RFC8613].  In JSON, the "salt" value is

      a Base64 encoded byte string.  In CBOR, the "salt" type is byte

      string, and has label 6.

   contextId:  This parameter identifies the security context as a byte

      string.  This identifier is used as OSCORE ID Context.  For more

      information about this field, see section 3.1 of [RFC8613].  In

      JSON, the "contextID" value is a Base64 encoded byte string.  In

      CBOR, the "contextID" type is byte string, and has label 7.

<mglt>

I am wondering if there is any kind of

overlap between the id and contextId.  They

do represent different objects, but if Input

generate a single  Security Context, it seems

to me that both designates the same OSCORE

communication. I am thus wondering why do we

need these two ids.



FP: As mentioned above, no they do not designate the same data. In particular, the couple (sender ID, Context ID) identifies one particular OSCORE Security Context, while the id identifies not the Security Context but only some (incomplete) input material to derive the security context.

<mglt>

This concern can be grouped with the above comments/questions.

</mglt>

</mglt>

[...]

4.  Client-RS Communication

   The following subsections describe the details of the POST request

   and response to the authz-info endpoint between client and RS.  The

   client generates a nonce N1 and an identifier ID1 unique in the sets

   of its own Recipient IDs, and posts them together with the token that

   includes the materials (e.g., OSCORE parameters) received from the AS

   to the RS.  The RS then generates a nonce N2 and an identifier ID2

   unique in the sets of its own Recipient IDs, and uses Section 3.2 of

   [RFC8613] to derive a security context based on a shared master

   secret, the two nonces and the two identifiers, established between

   client and server.  The nonces and identifiers are encoded as CBOR

   byte string if CBOR is used, and as Base64 string if JSON is used.

   This security context is used to protect all future communication

   between client and RS using OSCORE, as long as the access token is

   valid.

<mglt>

all communication sounds strange to me. I am

wondering if that is not all communicationS

instead - though not being native English.



Similarly I think that the communication is

between a specific client and a specific RS -

at least once established. Thus I am

wondering if that should not be 'between THE

client and THE RS instead.



FP: Thanks, I will keep these points in mind when talking to the RFCEditor. Not a native English speaking either so can't really make a choice :)

<mglt>

sure

</mglt.

</mglt>

   Note that the RS and client authenticates each other by generating

   the shared OSCORE Security Context using the pop-key as master

   secret.  An attacker posting a valid token to the RS will not be able

   to generate a valid OSCORE Security Context and thus not be able to

   prove possession of the pop-key.  Additionally, the mutual

   authentication is only achieved after the client has successfully

   verified a response from the RS protectd with the generated OSCORE

   Security Context.

<mglt>

I think that is RS protected.

FP: Thanks, will fix.

It is unclear - at this stage of reading if

the exchange that performs the mutual

authentication is a specific exchange or the

communication between the client and the RS.



FP: Hopefully this can be clarified by clarifying the previous comment that talked about communication between RS and C.

<mglt>

sure.

</mglt>



</mglt



 <mglt>

yes this is clearer at least to me. Thanks.

</mglt>



Palombini, et al.         Expires June 17, 2021                [Page 15]

Internet-Draft            OSCORE Profile of ACE            December 2020



4.1.  C-to-RS: POST to authz-info endpoint

   The client MUST generate a nonce value very unlikely to have been

   previously used with the same input keying material.  This profile

   RECOMMENDS to use a 64-bit long random number as nonce's value.  The

   client MUST store the nonce N1 as long as the response from the RS is

   not received and the access token related to it is still valid (to

   the best of the client's knowledge).

<mglt>

Same comment as in the overview section

regarding the nonce randomly generated. It

seems that random generation does not require

storing any context resilient to reboot.



FP: That's correct. And as mentioned, I think the Sec Cons cover this.

<mglt>

I believe the assumptions of the client are outside the scope of the protocol, so it seems to me there is no need for a MUST. As detailled previously I woudl either refer to eth security consideration section or provide the requirement for not repeating without considering how this could be implemented.

</mglt>



FP: I believe assumptions on the client, as well as implementation recommendations, are in scope of this document.



 <mglt>

The text works fine for me. Thanks.

</mglt>



</mglt>

   The client generates its own Recipient ID, ID1, for the OSCORE

   Security Context that it is establishing with the RS.  By generating

   its own Recipient ID, the client makes sure that it does not collide

   with any of its Recipient IDs, nor with any other identifier ID1 if

   the client is executing this exchange with a different RS at the same

   time.

<mglt>

This paragraph is really clarifying - and to

me necessary.

FP: Good! Thanks for the feedback.

</mglt>

   The client MUST use CoAP and the Authorization Information resource

   as described in section 5.8.1 of [I-D.ietf-ace-oauth-authz] to

   transport the token, N1 and ID1 to the RS.

   Note that the use of the payload and the Content-Format is different

   from what is described in section 5.8.1 of

   [I-D.ietf-ace-oauth-authz], which only transports the token without

   any CBOR wrapping.  In this profile, the client MUST wrap the token,

   N1 and ID1 in a CBOR map.  The client MUST use the Content-Format

   "application/ace+cbor" defined in section 8.14 of

   [I-D.ietf-ace-oauth-authz].  The client MUST include the access token

   using the 'access_token' parameter, N1 using the 'nonce1' parameter

   defined in Section 4.1.1, and ID1 using the 'ace_client_recipientid'

   parameter defined in Section 4.1.2.

<mglt>

The paragraph above is also really

clarifying.

FP: Good to hear. I understand at this point that what might be confusing at the overview section gets clarified here for the reader. At the same time, I don't want to go into so much detail in the overview, and don't want to do too many forward references... you see my dilemma?

<mglt>

I got the dilemma. I think that currently either the overview provides a bit more details to clarify or removes details. Currently the overview seems to me raising question more than indicating a direction. I am fine either way, but I suspect that clarifying is more straight forward.



FP: I gave a shot at clarifying the points above.



</mglt>



<mglt>

I like the way it is.

</mglt>

</mglt>

[...]



4.2.  RS-to-C: 2.01 (Created)

[...]

<mglt>

It seems to me that the text is using

OSCORE_Input_Material, so I would say we

should remain coherent through the document.

I personnaly do not believe '_' are needed

and would probably favor the designation used

here.



FP: The idea behind the different names: the difference between with and without '_' is that the name of the actual CBOR object includes the underscore, while the more general concept of the data included in that object (i.e. the data without any format specification) doesn't.

<mglt>

Sure. I believe that either we use always the same one or explain the difference. I have the impression for OSCORE we were using non CBOR object terminology. At least we could limit to a single notation in the document.



FP: I have attempted to keep it consistent, and changed a couple of places where it wasn't. Most of the time in the doc we talk about OSCORE_Input_Material because we refer to the CBOR object, but in my opinion it's still useful to be able to distinguish between the theoretical and the CBOR object.

</mglt>



<mglt>

The inconsistency - if any - was viable to me. With your further look at it, I consider you made the right choice.

</mglt>



</mglt>

   the context used to protect the message.  If that is the case, the RS

   MUST overwrite the old token and associate the new token to the

   Security Context identified by the "kid" value in the 'cnf' claim.

   The RS MUST respond with a 2.01 (Created) response protected with the

   same Security Context, with no payload.  If any verification fails,

   the RS MUST respond with a 4.01 (Unauthorized) error response.

   As specified in section 5.8.1 of [I-D.ietf-ace-oauth-authz], when

   receiving an updated access token with updated authorization

   information from the client (see Section 3.1), it is recommended that

   the RS overwrites the previous token, that is only the latest

   authorization information in the token received by the RS is valid.

   This simplifies the process needed by the RS to keep track of

   authorization information for a given client.

[...]

4.3.  OSCORE Setup

   Once receiving the 2.01 (Created) response from the RS, following the

   POST request to authz-info endpoint, the client MUST extract the bstr

   nonce N2 from the 'nonce2' parameter in the CBOR map in the payload

   of the response.  Then, the client MUST set the Master Salt of the

   Security Context created to communicate with the RS to the

  concatenation of salt, N1, and N2, in this order: Master Salt =

   salt | N1 | N2, where | denotes byte string concatenation, where salt

   is the CBOR byte string received from the AS in Section 3.2, and

   where N1 and N2 are the two nonces encoded as CBOR byte strings.  An

   example of Master Salt construction using CBOR encoding is given in

   Figure 12.

N1, N2 and input salt expressed in CBOR diagnostic notation:

      nonce1 = h'018a278f7faab55a'

      nonce2 = h'25a8991cd700ac01'

      input salt = h'f9af838368e353e78888e1426bd94e6f'

N1, N2 and input salt as CBOR encoded byte strings:

      nonce1 = 0x48018a278f7faab55a

      nonce2 = 0x4825a8991cd700ac01

      input salt = 0x50f9af838368e353e78888e1426bd94e6f

Master Salt = 0x50 f9af838368e353e78888e1426bd94e6f 48 018a278f7faab55a 48 25a8991cd700ac01



    Figure 12: Example of Master Salt construction using CBOR encoding

   If JSON is used instead of CBOR, the Master Salt of the Security

   Context is the Base64 encoding of the concatenation of the same

   parameters, each of them prefixed by their size, encoded in 1 byte.

   When using JSON, the nonces and input salt have a maximum size of 255

   bytes.  An example of Master Salt construction using Base64 encoding

   is given in Figure 13.













Palombini, et al.         Expires June 17, 2021                [Page 20]

Internet-Draft            OSCORE Profile of ACE            December 2020



N1, N2 and input salt values:

      nonce1 = 0x018a278f7faab55a (8 bytes)

      nonce2 = 0x25a8991cd700ac01 (8 bytes)

      input salt = 0xf9af838368e353e78888e1426bd94e6f (16 bytes)

Input to Base64 encoding: 0x10 f9af838368e353e78888e1426bd94e6f 08 018a278f7faab55a 08 25a8991cd700ac01

Master Salt = b64'EPmvg4No41PniIjhQmvZTm8IAYonj3+qtVoIJaiZHNcArAE='



   Figure 13: Example of Master Salt construction using Base64 encoding

   The client MUST set the Sender ID to the ace_server_recipientid

   received in Section 4.2, and the Recipient ID to the

   ace_client_recipientid sent in Section 4.1.

<mglt>

It seems to me that the terminology used here

might be a bit misleading. If

ace_server_recipientid is being used as the

SID, it seems that ace_server_receipientid

and ace_client_recipientid could be

designated as ace_server_id and

ace_client_id.  What matters then is that the

IDs in a message can be interpreted by the

receiving side and that the receiving side

can see its ID.  In OSCORE that ID is called

the Sender ID (SID) which in this example

should be set to ace_server_id.  It seems to

me that these Sender and Recipient are only

here to indicate a direction and that Sender

ID is a bit misleading - but that is what we

have with OSCORE.  I am wondering if my

understanding is correct or if I am missing

something.



FP: Yes, your understanding is correct. The reason for not going with server id and client id (which we actually had in a previous version of the document) is that the roles of client and server can change in the communication, after the ace exchange has happened, i.e. the CoAP client can also act as a server and viceversa. The reasoning for going with "recipientid" instead of "senderid" (since those are mirrored - the server's recipient id is the same as the client's sender id) is that the node actually choses its own recipient id, i.e. the other node's sender id. So in this case the client sets its own Sender ID (OSCORE terminology) from the parameter generated from the server and sent in the "ace_server_recipientid" parameter.

<mglt>

As a note this seems to me to be a rather common situation - TLS / IPsec/HIP. TLS uses client/ server IPsec uses initiator responder and that is only valid for the handshake exchanges, so that could be seen as reasonable. That said I am fine with whatever is clearer to everyone.

</mglt>

</mglt>

The client MUST set the

   Master Secret from the parameter received from the AS in Section 3.2.

   The client MUST set the AEAD Algorithm, ID Context, HKDF, and OSCORE

   Version from the parameters received from the AS in Section 3.2, if

   present.  In case an optional parameter is omitted, the default value

   SHALL be used as described in sections 3.2 and 5.4 of [RFC8613].

   After that, the client MUST derive the complete Security Context

   following section 3.2.1 of [RFC8613].  >From this point on, the client

   MUST use this Security Context to communicate with the RS when

   accessing the resources as specified by the authorization

   information.

   If any of the expected parameters is missing (e.g., any of the

   mandatory parameters from the AS or the RS), or if

   ace_client_recipientid equals ace_server_recipientid, then the client

   MUST stop the exchange, and MUST NOT derive the Security Context.

   The client MAY restart the exchange, to get the correct security

   material.

<mglt>

ace_client_id and ace_server_id may collide.

It is unclear to me what problem it causes.

Contexts are being indexed with the ID being

used as a recipient and the binding between

an RID and a context seems only be necessary

for a receiving party. When a node is sending

some data, it might needs the Sending Context

but it is not crucial to index it with an ID,

nor to have all Sending and Receiving Context

mixed together. As a result, I have the

impression that this case of equality is an

implementation issue. Of course I might be

missing something.



I suggest motivation is provided, and unless

we have some the corner case is removed and

let to implementations.



FP: The problem if they collide is that there would be collision of keys for client and server (Sender Key and Recipient Key). We will add a reference to the motivation in OSCORE, section 3.3 of OSCORE https://tools.ietf.org/html/rfc8613#section-3.3

<mglt>

ok, yes that would help.



FP: Ok, done.

</mglt

 <mglt>

 thanks.

</mglt>

</mglt>

   The client then uses this Security Context to send requests to the RS

   using OSCORE.

   After sending the 2.01 (Created) response, the RS MUST set the Master

   Salt of the Security Context created to communicate with the client

   to the concatenation of salt, N1, and N2, in the same way described

   above.  An example of Master Salt construction using CBOR encoding is

   given in Figure 12 and using Base64 encoding is given in Figure 13.

   The RS MUST set the Sender ID from the ace_client_recipientid

   received in Section 4.1, and the Recipient ID from the

   ace_server_recipientid sent in Section 4.2.  The RS MUST set the

   Master Secret from the parameter received from the AS and forwarded

   by the client in the access token in Section 4.1 after validation of

   the token as specified in Section 4.2.  The RS MUST set the AEAD

   Algorithm, ID Context, HKDF, and OSCORE Version from the parameters





Palombini, et al.         Expires June 17, 2021                [Page 21]

Internet-Draft            OSCORE Profile of ACE            December 2020



   received from the AS and forwarded by the client in the access token

   in Section 4.1 after validation of the token as specified in

   Section 4.2, if present.  In case an optional parameter is omitted,

   the default value SHALL be used as described in sections 3.2 and 5.4

   of [RFC8613].  After that, the RS MUST derive the complete Security

   Context following section 3.2.1 of [RFC8613], and MUST associate this

   Security Context with the authorization information from the access

   token.

   The RS then uses this Security Context to verify requests and send

   responses to the client using OSCORE.  If OSCORE verification fails,

  error responses are used, as specified in section 8 of [RFC8613].

   Additionally, if OSCORE verification succeeds, the verification of

   access rights is performed as described in section Section 4.4.  The

   RS MUST NOT use the Security Context after the related token has

   expired, and MUST respond with a unprotected 4.01 (Unauthorized)

   error message to requests received that correspond to a Security

   Context with an expired token.

   Note that the ID Context can be assigned by the AS, communicated and

   set in both the RS and client after the exchange specified in this

   profile is executed.  Subsequently, client and RS can update their ID

   Context by running a mechanism such as the one defined in

   Appendix B.2 of [RFC8613] if they both support it and are configured

   to do so.

<mglt>

I am reading the text as if that works they

will be able to update the ID, but there is

no guarantee for that. I would expect some

ways to announce the support of such

mechanism.



FP: If the server doesn't support this mechanism, it will reply with an error, and the exchange will fail. There is no need to communicate support of this mechanism.

<mglt>

This may be something related to OSCORE, but I am not so convinced it is a good thing not to have any means to communicate the support of some mechanism. I would be happy to understand more on whether this is not needed, or if that could be added to OSCORE.



FP: Right, that is really a comment on OSCORE, nothing we can do about it in this specification.

</mglt>

<mglt>

ok.

</mglt>

</mglt>

In that case, the ID Context in the OSCORE Security

   Context will not match the "contextId" parameter of the corresponding

   OSCORE_Input_Material.



<mglt>

Well, I might be missing something, but I

have the impression the mechanism has been

designed to mitigate the contextID and the id

when they are equal.

FP: Actually no, these IDs are used independently, as mentioned in a previous answer. This mechanism is designed to easily update the keying material.

<mglt>

Just for me, I understood that if there id and contextId matches, we re-key so the contextId. I assume that re-keying update the contextId, in which case, contextId is likely to be different from id. In other words, if there is a match, a re-key operation is performed.

This also means that any rekey operation that is performed could result in a collision. If that is the case, I believe could clarify and generalise this to any rekey operation.



FP: As previously mentioned, contextId and id are really different, they identify different things and it is not a problem if they collide. We do nott re-key to avoid the collision between the two. The re-key can make so that the contextId changes, while id will remain the same.

</mglt>



I suppose having these

id matching raises some issues, but it is

unclear to me what the issue is.  I am also

wondering - as mentioned earlier whether we

need to have these two ID, and if so, if that

could be possible to derive these IDs one

from another. This would prevent the defining

a mechanism.



FP: Hopefully this is clearer by the answers above. We do need both, they have different functions.

Currently here is how I see the situation:

a) the collision might be an issue, and

b) we might have a mechanism to address this

potential issue.



Note that I might emphasize the issue too

much, that is just to clarify my thoughts.



</mglt>

Running Appendix B.2 results in the keying

   material in the Security Contexts of client and RS being updated;

   this same result can also be achieved by the client reposting the

   access token to the unprotected /authz-info endpoint at the RS, as

   described in Section 4.1, but without updating the ID Context.

[...]

6.  Discarding the Security Context

On Mon, Dec 14, 2020 at 10:46 AM Francesca Palombini <francesca.palombini=40ericsson.com@dmarc.ietf.org<mailto:40ericsson.com@dmarc.ietf.org>> wrote:

Ah, of course, they are indeed out of sync, thank you for noticing! I am fixing it already in the github, but I am thinking of waiting for Daniel's go ahead before submitting one more version, see if he wanted to review one last time.

Francesca

On 14/12/2020, 16:32, "Benjamin Kaduk" <kaduk@mit.edu<mailto:kaduk@mit.edu>> wrote:

    Thanks, Francesca!

    It looks like the CBOR label values have gotten out of sync between Table 1

    and the prose.  (The IANA Considerations just refer to Table 1, so I think

    that Section 3.2.1 is the only thing that needs to be kept in sync.)

    -Ben

    On Mon, Dec 14, 2020 at 09:58:21AM +0000, Francesca Palombini wrote:

    > Hi all,

    >

    > This update answers Marco's latest review (thanks Marco!), answering all comments received as WGLC.

    >

    > Thanks,

    > Francesca

    >

    > On 14/12/2020, 09:49, "Ace on behalf of internet-drafts@ietf.org<mailto:internet-drafts@ietf.org>" <ace-bounces@ietf.org<mailto:ace-bounces@ietf.org> on behalf of internet-drafts@ietf.org<mailto:internet-drafts@ietf.org>> wrote:

    >

    >

    >     A New Internet-Draft is available from the on-line Internet-Drafts directories.

    >     This draft is a work item of the Authentication and Authorization for Constrained Environments WG of the IETF.

    >

    >             Title           : OSCORE Profile of the Authentication and Authorization for Constrained Environments Framework

    >             Authors         : Francesca Palombini

    >                               Ludwig Seitz

    >                               Göran Selander

    >                               Martin Gunnarsson

    >           Filename        : draft-ietf-ace-oscore-profile-14.txt

    >           Pages           : 33

    >           Date            : 2020-12-14

    >

    >     Abstract:

    >        This memo specifies a profile for the Authentication and

    >        Authorization for Constrained Environments (ACE) framework.  It

    >        utilizes Object Security for Constrained RESTful Environments

    >        (OSCORE) to provide communication security and proof-of-possession

    >        for a key owned by the client and bound to an OAuth 2.0 access token.

    >

    >

    >     The IETF datatracker status page for this draft is:

    >     https://datatracker.ietf.org/doc/draft-ietf-ace-oscore-profile/

    >

    >     There are also htmlized versions available at:

    >     https://tools.ietf.org/html/draft-ietf-ace-oscore-profile-14

    >     https://datatracker.ietf.org/doc/html/draft-ietf-ace-oscore-profile-14

    >

    >     A diff from the previous version is available at:

    >     https://www.ietf.org/rfcdiff?url2=draft-ietf-ace-oscore-profile-14

    >

    >

    >     Please note that it may take a couple of minutes from the time of submission

   >     until the htmlized version and diff are available at tools.ietf.org<http://tools.ietf.org>.

    >

    >     Internet-Drafts are also available by anonymous FTP at:

    >     ftp://ftp.ietf.org/internet-drafts/

    >

    >

    >     _______________________________________________

    >     Ace mailing list

    >     Ace@ietf.org<mailto:Ace@ietf.org>

    >     https://www.ietf.org/mailman/listinfo/ace

    >

    > _______________________________________________

    > Ace mailing list

    > Ace@ietf.org<mailto:Ace@ietf.org>

    > https://www.ietf.org/mailman/listinfo/ace

_______________________________________________

Ace mailing list

Ace@ietf.org<mailto:Ace@ietf.org>

https://www.ietf.org/mailman/listinfo/ace



--

Daniel Migault

Ericsson







--

Daniel Migault

Ericsson




--

Daniel Migault

Ericsson