Re: [core] Comments on draft-ietf-core-object-security-06

Göran Selander <goran.selander@ericsson.com> Mon, 05 December 2016 07:13 UTC

Return-Path: <goran.selander@ericsson.com>
X-Original-To: core@ietfa.amsl.com
Delivered-To: core@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 78AC41296BE; Sun, 4 Dec 2016 23:13:12 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.221
X-Spam-Level:
X-Spam-Status: No, score=-4.221 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
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 8B8-o7sgcn5R; Sun, 4 Dec 2016 23:13:10 -0800 (PST)
Received: from sessmg22.ericsson.net (sessmg22.ericsson.net [193.180.251.58]) (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 99ED5129450; Sun, 4 Dec 2016 23:13:08 -0800 (PST)
X-AuditID: c1b4fb3a-d644398000007918-d7-584513828cf9
Received: from ESESSHC019.ericsson.se (Unknown_Domain [153.88.183.75]) by (Symantec Mail Security) with SMTP id DE.9F.31000.28315485; Mon, 5 Dec 2016 08:13:07 +0100 (CET)
Received: from ESESSMB303.ericsson.se ([169.254.3.128]) by ESESSHC019.ericsson.se ([153.88.183.75]) with mapi id 14.03.0319.002; Mon, 5 Dec 2016 08:13:06 +0100
From: Göran Selander <goran.selander@ericsson.com>
To: Jim Schaad <ietf@augustcellars.com>, "draft-ietf-core-object-security@ietf.org" <draft-ietf-core-object-security@ietf.org>
Thread-Topic: Comments on draft-ietf-core-object-security-06
Thread-Index: AQHSTMKRsYUSb6rTBE+1HiU83i+oUaD1cmKAgAOCIwA=
Date: Mon, 05 Dec 2016 07:13:06 +0000
Message-ID: <D46AC915.6E620%goran.selander@ericsson.com>
References: <083101d24ad0$3b071aa0$b1154fe0$@augustcellars.com> <D465F239.6E05D%goran.selander@ericsson.com> <044101d24d0e$57fbdb10$07f39130$@augustcellars.com>
In-Reply-To: <044101d24d0e$57fbdb10$07f39130$@augustcellars.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
user-agent: Microsoft-MacOutlook/14.7.0.161029
x-originating-ip: [153.88.183.148]
Content-Type: text/plain; charset="utf-8"
Content-ID: <0F07632F52C72C48A6BAAC2845941DB7@ericsson.com>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGIsWRmVeSWpSXmKPExsUyM2K7t26zsGuEwbltXBb73q5ntpj27wyL xerp39kcmD02zpnO5rFkyU+mAKYoLpuU1JzMstQifbsEroy2pllMBc+8K07M3czYwPjGs4uR k0NCwETi4e5/TF2MXBxCAusYJV613GKHcBYzSmxq62IDqWITcJF40PAIrEpEoIlR4vHcPmaQ BLOAssTx2YdZQWxhAWuJzmkgoziBimwkln45zgJhW0m8uXASrJ5FQEXi2veDYHFeAQuJg6ef sEBsW8IoseTRJbBBnAIOErvbr4A1MAqISXw/tYYJYpm4xK0n85kg7haQWLLnPDOELSrx8vE/ sF5RAT2J2VMa2CHiShKNS54AxTmAejUl1u/ShxhjLXHw4RN2CFtRYkr3Q3aIewQlTs58wjKB UXwWkm2zELpnIemehaR7FpLuBYysqxhFi1OLi3PTjYz0Uosyk4uL8/P08lJLNjECY+/glt9W OxgPPnc8xCjAwajEw1ug7xIhxJpYVlyZe4hRgoNZSYR3FZ9rhBBvSmJlVWpRfnxRaU5q8SFG aQ4WJXFes5X3w4UE0hNLUrNTUwtSi2CyTBycUg2M8s//5Ks7/nrOs0rZRT5Q9Fuy+d3n6su3 7Vp8Ivu3YffejoZrTxjloo+YZ6ZKaNcfeSGlIPLnppiXQniuSaKj6KrZJ5f4CJf/j1qqaHPt QtZtNTan1NftEU61r4RvPqgpMDgqtejw93bFgjf+ItJqHLHl7S1fZ3NZLFG/NKF6shTfkyYD 7l1KLMUZiYZazEXFiQDN1G7ouQIAAA==
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/Hk55eN8soDMwxTbkTB-C4CaaAB0>
Cc: "core@ietf.org" <core@ietf.org>
Subject: Re: [core] Comments on draft-ietf-core-object-security-06
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: "Constrained RESTful Environments \(CoRE\) Working Group list" <core.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/core>, <mailto:core-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/core/>
List-Post: <mailto:core@ietf.org>
List-Help: <mailto:core-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/core>, <mailto:core-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 05 Dec 2016 07:13:12 -0000


On 2016-12-03 03:38, "Jim Schaad" <ietf@augustcellars.com> wrote:

>
>
>> -----Original Message-----
>> From: Göran Selander [mailto:goran.selander@ericsson.com]
>> Sent: Friday, December 02, 2016 12:31 AM
>> To: Jim Schaad <ietf@augustcellars.com>; draft-ietf-core-object-
>> security@ietf.org
>> Cc: core@ietf.org
>> Subject: Re: Comments on draft-ietf-core-object-security-06
>> 
>>
>> >Appendix C - I am having a hard time with the first paragraph here.  I
>> >do not believe that you have correctly characterized the problem.  The
>> >reason that you cannot use OSCOAP for this has more to do with how you
>> >decided which records in the header to authenticate rather than the
>> >fact that this is going to be distributed to multiple recipients.
>> 
>> The intended logic is the following:
>> 
>> The security requirements draft
>> https://tools.ietf.org/html/draft-hartke-core-e2e-security-reqs
>>currently
>> describes three use cases “proxy forwarding”, “proxy caching” and
>>“publish-
>> subscribe”. The solutions to these requirements protect as much as is
>>possible,
>> while still allowing the functionality of the use case.
>> OSCOAP addresses the "proxy forwarding” use case, which is a basic CoAP
>> request-response with optional forward proxy functionality. This is a
>>use case
>> we have been requested to support, and it is an interesting case also
>>because
>> essentially all options and headers that are passed end-to-end in a
>>CoAP request
>> and response can be protected, response can be bound to a request, and
>>some
>> other security features can be supported.
>> 
>> OSCON addresses other use cases with a common solution, including the
>>two
>> remaining use cases mentioned above. In these cases less of the records
>>can be
>> protected, e.g. because a single response should be meaningful to
>>multiple
>> requests. This solution thus targets a format where multiple use cases
>>can be
>> supported rather than optimising security for a particular use case.
>> 
>> I will make an issue to clarify this.
>
>It is not the least bit clear to me that publish-subscribe case cannot be
>done with OSCOAP.  The proxy caching problem is more difficult, but is
>not solved by OSCON in a way that is not also solved in the OSCOAP case
>as far as I can tell.

In OSCOAP, the response is bound to the request by including the
transaction identifier (cid, sender ID, sequence number) of the request in
the external_aad of the response. With this the client is able to verify
that the server has received the request and that this message is a
response of that request. This construction also works for multiple
responses to a given request such as CoAP observe (RFC7641) and group
communication for CoAP (RFC7390). Different observe notifications can be
distinguished by different sequence numbers of server, and different
unicast responses to a multicast request can be distinguished by the
responding node’s (sender) ID.

However, with caching and publish-subscribe a given response is used for
multiple requests, so the response cannot be bound to a particular
request. Moreover, for caching and publish-subscribe, less CoAP options
and headers can be protected. E.g. the publisher can update a topic with a
PUT, which is provided with a GET response to the subscriber, so
the CoAP Code cannot be integrity protected between publisher and
subscriber. More details about which options and header are protected in
caching and pub-sub in the requirements draft:

https://tools.ietf.org/html/draft-hartke-core-e2e-security-reqs

Thus the set of headers and options, and how response is bound to request
as defined in OSCOAP does not apply to pub-sub. But similar constructions
are possible, or else just essentially protect the CoAP payload as with
OSCON. 

We did not write anything of the underlying construction in the draft,
maybe we should?


>
>> 
>> >
>> >Appendix C - Talking about the "unprotected" and the "protected" CoAP
>> >message is very confusing especially since COSE has protected and
>> >unprotected objects as well.  It would be better to use a different
>> >terminology such as "the original message" and "the resulting message".
>> 
>> This terminology is defined in the body of the draft. (FWIW the
>>terminology
>> probably predates COSE.) If we always qualify with
>>unprotected/unprotected
>> CoAP, protected/unprotected COSE header, I suppose there would less of
>>a risk
>> for misunderstanding?
>
>Doing the full qualification would be nice.  I will admit that I probably
>missed that since I started half way down the document.

OK, we’ll make sure of that.

>
>> 
>> >
>> >Appendix C - I do not understand what this sentence means. " OSCON
>> >shall not be used in cases which require a secure binding between
>> >request and response."  Is it intended to say that the use of a
>> >transaction identifier in the COSE wrappers for the request and
>> >response is not permitted?  There are a lot of ways to do this that do
>> >not rely on CoAP.
>> 
>> As mentioned, this format is addressing use cases which does not bind
>>response
>> to request. It is possible to define a wrapping of a message exchange
>>in COSE
>> which has different features, but that was not the intention here.
>
>This is not making it any clearer to me.

Does the text above make things more clear?

> 
>
>> 
>> 
>> >
>> >Appendix C - It is not clear if the Content-Format should be set if
>> >there was no Content-Format in the original message.
>> 
>> It should, to be clarified.
>> 
>> >
>> >Appendix C.1 - I do not understand what this section is trying to
>> >accomplish.  It appears to be doing three different things, some of
>> >which should be in Appendix C, some of which should be standalone and
>> >some of which looks like it should be
>> 
>> It is an introduction to sections C.2-C.5. We should clarify that.
>
>Making C.2-C.5 be sub sections would probably also help

OK.


Göran


>
>Jim
>
>> 
>> >
>> >Appendix C.5 - There should be a discussion related this this about the
>> >different security properties that are to be found for Encrypt+Sign(M)
>> >vs Sign(Encrypt(M)).
>> 
>> There are plans to write more about the security properties of SEAS,
>>probably in
>> a different document.
>> 
>> >
>> >Appendix B - These are really example message flows rather than
>> >examples of OSCOP messages.  This should be made clearer in the section
>> >title
>> 
>> OK, I’ll make that update in -01.
>> 
>> >
>> >Appendix B.1 - How does one securely bind the request and the response?
>> >I am not seeing anything from this example that will do so.
>> 
>> No, it is not visible from the message format. See section 6.1 "the
>>response is
>> verified to match a prior request, by including the unique transaction
>>identifier
>> of the request in the Additional Authenticated Data of the response
>>message."
>> 
>> Göran
>> 
>
>