Re: [core] Comments on draft-ietf-core-echo-request-tag-02

Jim Schaad <ietf@augustcellars.com> Thu, 18 October 2018 23:02 UTC

Return-Path: <ietf@augustcellars.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 2D23A130E23; Thu, 18 Oct 2018 16:02:17 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Level:
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001, 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 nzyKrpDGccKf; Thu, 18 Oct 2018 16:02:13 -0700 (PDT)
Received: from mail2.augustcellars.com (augustcellars.com [50.45.239.150]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 17C66130E26; Thu, 18 Oct 2018 16:02:13 -0700 (PDT)
Received: from Jude (192.168.1.162) by mail2.augustcellars.com (192.168.1.201) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 18 Oct 2018 15:56:47 -0700
From: Jim Schaad <ietf@augustcellars.com>
To: 'Göran Selander' <goran.selander@ericsson.com>
CC: draft-ietf-core-echo-request-tag@ietf.org, core@ietf.org
References: <00fa01d461b0$2a314f40$7e93edc0$@augustcellars.com> <20181017141813.GA4084@hephaistos.amsuess.com> <E207969D-C945-4E7A-94E7-C3F08EC46882@ericsson.com>
In-Reply-To: <E207969D-C945-4E7A-94E7-C3F08EC46882@ericsson.com>
Date: Thu, 18 Oct 2018 16:01:24 -0700
Message-ID: <005d01d46736$8025e8d0$8071ba70$@augustcellars.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 16.0
Thread-Index: AQLGqAiwYYwG1/OR40amvzbXok6eqgIEN27gASmmQTajJ6vloA==
Content-Language: en-us
X-Originating-IP: [192.168.1.162]
Archived-At: <https://mailarchive.ietf.org/arch/msg/core/B0oCFNhW6qX6og8QNnxi6RA4Qr4>
Subject: Re: [core] Comments on draft-ietf-core-echo-request-tag-02
X-BeenThere: core@ietf.org
X-Mailman-Version: 2.1.29
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: Thu, 18 Oct 2018 23:02:17 -0000


> -----Original Message-----
> From: Göran Selander <goran.selander@ericsson.com>
> Sent: Thursday, October 18, 2018 2:32 PM
> To: Jim Schaad <ietf@augustcellars.com>
> Cc: draft-ietf-core-echo-request-tag@ietf.org; core@ietf.org
> Subject: Re: Comments on draft-ietf-core-echo-request-tag-02
> 
> Hi Jim,
> 
> Thanks for comments, responses to the remaining comments below. The CoRE
> WG Github is updated.
> 
> On 2018-10-12, 00:17, "Jim Schaad" <ietf@augustcellars.com> wrote:
> 
>     I have read this document and I have the following comments:
> 
>     * Introduction - you say several enhancements, but there are only two new
>     options.  What are the other enhancements?
> 
> GS: "several" removed. A number of applications are listed, e.g. in section 2.3,
> but no need to go into that here.
> 
>     * Introduction - The sentence "This document specifies ..." this sentence
>     says you are doing two thing and then there are two sentences.  I think you
>     can tighten this up with a colon following "Request-Tag option:", delete the
>     rest of this sentence and keep the next two sentences.
> 
> GS: Done.
> 
>     * Section 1.1 para 1 - I think you should provide a couple of reasons why
>     this is not a suitable solution.  I can think of multiple different reasons:
>     a) The amount of traffic and resources required - which may not be a
> problem
>     with both sides just one. b) Going through proxies where the freshness gets
>     lost as a client renegotiation does not get to the server and a proxy
>     renegotiation says nothing about the client. c) Amount of time involved.
> 
> GS: Motivation included.
> 
>     * Section 1.3 - I am a bit lost in this section.  When doing matches between
>     a request and a response I am matching up the message id and the token if it
>     exists.  You need some additional text in here to describe why it is that
>     you are talking about something interesting to me.
> 
> GS: Text updated and example included.
> 
>     * Section 2.1 - Something seems to be odd.  I don't think the RFC editor
>     note is correct.  I think a paragraph must have disappeared
> 
> GS: Paragraph added.
> 
>     * Section 2.2 - I don't think if you reboot that you have lost time
>     synchronization, rather you have lost time continuity.  That said the
>     current term may be state of art and thus correct.  To me synchronization
>     implies a minimum of two parties.
> 
> GS:  "continuity" seems to be the right term here. Changed in 3 places.
> 
>     * Section 2.2 - I think that you need to make some arguments about what
>     happens if an Echo option value is provided to multiple entities either
>     because the server will just re-use it's current value for some period of
>     time after creation (valid for time m and used for time m/3) or because a
>     proxy provides the same answer to two different clients.   Note that this
>     seems to be not recommended in item 2 of section 2.3
> 
> GS:  Added clarification: "The server MAY include the same Echo option value
> in several different responses and to different clients."
> Also added example of this, now sub-bullet of item 1 of section 2.3.
> 
> 
>     * Section 2.3 - Item 4 - I don't understand what is going on here.  I am not
>     sure what the device is joining as (a responder?)  Is the sync done by two
>     unicast messages or a unicast followed by a multicast?
> 
> GS: Restructured section 2.3. A sub-bullet of item 2 now describes a new device
> joining a group and synchronizing state or time with a client, allowing
> synchronization either with multicast or unicast. I hope that is more clear.
> 
>     * Section 2.3 - Item 5 - I am not sure that this is a reasonable answer for
>     having a proxy sitting there.  I could easily be wrong and should probably
>     spend some time thinking about how this does/does not work.
> 
> GS: This is now item 3. There is no intention to use a proxy here, so I don't
> understand the question. Please elaborate.


Consider the following setup

C1 -----------|
                 Proxy  ----------- Server
C2 -----------|

C1 sends a request to server via the proxy
Server responds w/ request w/ echo
C1 responds w/ request + echo
C2 sends request to server

Since the server thinks the proxy is just fine - it got a response w/ its echo.  Then the server will think that C2 is also ok so will not do any of the amplification mitigation work of asking for a repeat w/ echo value.

> 
> ---
> 
>     * Section 5 - I have not seen a justification for this anyplace.
> 
> GS: Included reference to section 1.3. (Also reference to section 1.1 in section
> 2, and to section 1.2 in section 3)
> 
>     * Section 7 - para 1 - What is the problem w/ using an encrypted wall clock
>     time for a timestamp?  These text appears to say that this is a bad idea but
>     the issues seem to be with using unencrypted items not with the wall clock.
>     The next sentence makes more sense about why not to use one.
> 
> GS: With encrypted wall clock we typically need to store or transport the IV, in
> which case the random value method is not worse in message size and server
> state.

Yes, but the same issue exist w/ a time since reboot clock.  If you use this value unencrypted you are heavily leaking information.

Jim


> 
>     * Appendix A - I would think that if you send a 32-bit timestamp in the
>     clear w/ an integrity value that one can start making guesses about some of
>     the same privacy problems as the use of a wall clock.  Knowing when a
> server
>     was last reset could tell you the same things.
> 
> GS: Added reference to the new privacy considerations section.
> 
> 
> Any further comments are much welcome.
> 
> Göran
> 
> 
> 
> 
> On 2018-10-17, 16:18, "Christian M. Amsüss" <christian@amsuess.com> wrote:
> 
>     Hello Jim,
> 
>     thanks for your review; we're working it into an updated document for
>     WGLC.
> 
>     Responding to the comments related to Request-Tag:
> 
>     On Thu, Oct 11, 2018 at 03:17:12PM -0700, Jim Schaad wrote:
>     > * Section 3.1 - The note to the RFC editor has me confused.  Firstly, I am
>     > not sure why it should be moved rather than just staying here.
> 
>     Updated. I hope that the process of submission will be clear enough
>     beforehand that we can remove the paragraph or move the text ourselves
>     -- if (as I expect) OSCORE enters AUTH48 before we submit ERT to the RFC
>     editor, that text will be gone by then.
> 
>     > * Section 3.1 - I think that the value of Request-Tag is potentially going
>     > to be different depending on if it is in the inside rather than the outside.
>     > You may be doing two different block transfers and each needs its own
> value.
> 
>     Updated to explicitly state that those values are independent because
>     they relate to an inner or outer blockwise transfer.
> 
>     > * Section 3.2 - the first paragraph does not scan.  I am not sure what it
>     > says as it seems to be contradictory.
> 
>     That paragraph assumed a very particular implementation method for
>     servers (that unknown options are processed in bulk before known
>     options); does this re-wording read better to you?:
> 
>       The Request-Tag option does not require any particular processing on
>       the server side outside of the processing already necessary for any
>       unknown elective proxy-safe cache-key option: The option varies the
>       properties that distinguish blockwise operations (which includes all
>       options except elective NoCacheKey and except Block1/2), and thus the
>       server can not treat messages with a different list of Request-Tag
>       options as belonging to the same operation.
> 
>     > * Section 3.2 - para 2 - The example sentence looks odd.  Do you mean it
> can
>     > have a cached response not a free response?
> 
>     That was worded confusingly and is now changed.
> 
>     > * Section 3.2 - para "especially" - I find the first sentence very hard to
>     > understand.
> 
>     That paragraph has become obsolete with the presence of core-stateless
>     anyway and was replaced with a reference there later in the proxy
>     application.
> 
>     > * Section 3.3 - last para - how do you recycle something that is absent?  I
>     > think the last clause needs examining.
> 
>     Added a sentence on absent Request-Tag options being a value of its
>     own, explaining why that can be recycled just as well.
> 
>     > * Section 3.4.1 - Item 2 - how is a client supposed to be able to know this
>     > if the proxy in the middle just passes it through w/o changing it?  Two
>     > different clients could end up with the same Request-Tag.  One would hope
>     > that they would have different tokens because of the proxy however.
> 
>     The whole 3.4.1 is, as per item 1, only applicable to blockwise
>     operations split into end-to-end protected individual exchanges.
> 
>     (Ie. DTLS w/o proxies, or inner blockwise in OSCORE).
> 
>     If that does not answer the question, I don't fully understand it,
>     please help me find where we diverge.
> 
>     > * Section 3.4.1 - This seems backwards.  I thought that OSCORE was tightly
>     > bound to the end point, but this paragraph says it is not.
> 
>     That was my idea of OSCORE inner-blockwise being allowed to jump
>     transports (which it could easily do but is not specified that way);
>     I've replaced the paragraph with a weaker and more hypothetical one.
> 
>     (By "bound to the end point" I meant that whereas a running DTLS session
>     will only stay alive while IP/port/interface quintuple stays the same,
>     an OSCORE context can be used even after those endpoint identifiers have
>     changed.)
> 
>     > * Section 3.4.3 - You have a "Section TBA" here
>     >
>     > * Section 3.4.3 - Please keep the section for justification of Request-Tag
>     > being repeatable.
> 
>     Given that we now do groundwork for Stateless which is more directly
>     applicable, that document is now referenced instead, and left in.
> 
> 
>     Thanks again
>     Christian
> 
>     --
>     To use raw power is to make yourself infinitely vulnerable to greater powers.
>       -- Bene Gesserit axiom
>