Re: [Dots] Using Early Data in DOTS (RE: AD review of draft-ietf-dots-signal-channel)

<mohamed.boucadair@orange.com> Thu, 28 February 2019 13:09 UTC

Return-Path: <mohamed.boucadair@orange.com>
X-Original-To: dots@ietfa.amsl.com
Delivered-To: dots@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 34B50129741; Thu, 28 Feb 2019 05:09:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Level:
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001, URIBL_BLOCKED=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 zS_WZ93uxB88; Thu, 28 Feb 2019 05:08:59 -0800 (PST)
Received: from orange.com (mta135.mail.business.static.orange.com [80.12.70.35]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 02A5812894E; Thu, 28 Feb 2019 05:08:59 -0800 (PST)
Received: from opfednr04.francetelecom.fr (unknown [xx.xx.xx.68]) by opfednr25.francetelecom.fr (ESMTP service) with ESMTP id 449CYP2NvkzCrP2; Thu, 28 Feb 2019 14:08:57 +0100 (CET)
Received: from Exchangemail-eme6.itn.ftgroup (unknown [xx.xx.13.76]) by opfednr04.francetelecom.fr (ESMTP service) with ESMTP id 449CYP1Bkjz1xpS; Thu, 28 Feb 2019 14:08:57 +0100 (CET)
Received: from OPEXCAUBMA2.corporate.adroot.infra.ftgroup ([fe80::e878:bd0:c89e:5b42]) by OPEXCAUBM7E.corporate.adroot.infra.ftgroup ([fe80::54f9:a664:e400:452a%21]) with mapi id 14.03.0435.000; Thu, 28 Feb 2019 14:08:57 +0100
From: mohamed.boucadair@orange.com
To: "Konda, Tirumaleswar Reddy" <TirumaleswarReddy_Konda@McAfee.com>, Benjamin Kaduk <kaduk@mit.edu>
CC: "draft-ietf-dots-signal-channel@ietf.org" <draft-ietf-dots-signal-channel@ietf.org>, "dots@ietf.org" <dots@ietf.org>
Thread-Topic: [Dots] Using Early Data in DOTS (RE: AD review of draft-ietf-dots-signal-channel)
Thread-Index: AQHUzz5BCXFDawydokCSl6Px8wMDQaX1B8jwgAAmWzA=
Date: Thu, 28 Feb 2019 13:08:57 +0000
Message-ID: <787AE7BB302AE849A7480A190F8B93302EA26AD5@OPEXCAUBMA2.corporate.adroot.infra.ftgroup>
References: <787AE7BB302AE849A7480A190F8B93302EA0EC85@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <787AE7BB302AE849A7480A190F8B93302EA20112@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <20190215150458.GV56447@kduck.mit.edu> <787AE7BB302AE849A7480A190F8B93302EA20406@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <20190218162322.GI24387@kduck.mit.edu> <787AE7BB302AE849A7480A190F8B93302EA21AC0@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <20190227155729.GL53396@kduck.mit.edu> <787AE7BB302AE849A7480A190F8B93302EA2680B@OPEXCAUBMA2.corporate.adroot.infra.ftgroup> <BYAPR16MB2790C6F98C259154C2AC200AEA750@BYAPR16MB2790.namprd16.prod.outlook.com>
In-Reply-To: <BYAPR16MB2790C6F98C259154C2AC200AEA750@BYAPR16MB2790.namprd16.prod.outlook.com>
Accept-Language: fr-FR, en-US
Content-Language: fr-FR
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [10.114.13.247]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/dots/F6r_pDf13LgN2O8PcknV7SmAX4Q>
Subject: Re: [Dots] Using Early Data in DOTS (RE: AD review of draft-ietf-dots-signal-channel)
X-BeenThere: dots@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "List for discussion of DDoS Open Threat Signaling \(DOTS\) technology and directions." <dots.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/dots>, <mailto:dots-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/dots/>
List-Post: <mailto:dots@ietf.org>
List-Help: <mailto:dots-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/dots>, <mailto:dots-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 28 Feb 2019 13:09:01 -0000

Re-,

I rearranged the text as follows: 

OLD: 
      Section 8 of [RFC8446] discusses some mechanisms to implement to
      limit the impact of replay attacks on 0-RTT data.  If the DOTS
      server accepts 0-RTT, it MUST implement one of these mechanisms.
      A DOTS server can reject 0-RTT by sending a TLS HelloRetryRequest.
      The DOTS signal channel messages sent as early data by the DOTS
      client are idempotent requests.  As a reminder, Message ID
      (Section 3 of [RFC7252]) is changed each time a new CoAP request
      is sent, and the Token (Section 5.3.1 of [RFC7252]) is randomized
      in each CoAP request.  The DOTS server(s) can use Message ID and
      Token in the DOTS signal channel message to detect replay of early
      data, and accept 0-RTT data at most once.  Furthermore, 'mid'
      value is monotonically increased by the DOTS client for each
      mitigation request, attackers replaying mitigation requests with
      lower numeric 'mid' values and overlapping scopes with mitigation
      requests having higher numeric 'mid' values will be rejected
      systematically by the DOTS server.  Likewise, 'sid' value is
      monotonically increased by the DOTS client for each configuration
      session, attackers replaying configuration requests with lower
      numeric 'sid' values will be rejected by the DOTS server if it
      maintains a higher numeric 'sid' value for this DOTS client.

NEW:
      Section 8 of [RFC8446] discusses some mechanisms to implement to
      limit the impact of replay attacks on 0-RTT data.  If the DOTS
      server accepts 0-RTT, it MUST implement one of these mechanisms to
      prevent replay at the TLS layer.  A DOTS server can reject 0-RTT
      by sending a TLS HelloRetryRequest.

      The DOTS signal channel messages sent as early data by the DOTS
      client are idempotent requests.  As a reminder, the Message ID
      (Section 3 of [RFC7252]) is changed each time a new CoAP request
      is sent, and the Token (Section 5.3.1 of [RFC7252]) is randomized
      in each CoAP request.  The DOTS server(s) MUST use the Message ID
      and the Token in the DOTS signal channel message to detect replay
      of early data at the application layer, and accept 0-RTT data at
      most once from the same DOTS client.  This anti-replay defense
      requires sharing the Message ID and the Token in the 0-RTT data
      between DOTS servers in the DOTS server domain.  DOTS servers do
      not rely on transport coordinates to identify DOTS peers.  As
      specified in Section 4.4.1, DOTS servers couple the DOTS signal
      channel sessions using the DOTS client identity and optionally the
      'cdid' parameter value.  Furthermore, 'mid' value is monotonically
      increased by the DOTS client for each mitigation request,
      attackers replaying mitigation requests with lower numeric 'mid'
      values and overlapping scopes with mitigation requests having
      higher numeric 'mid' values will be rejected systematically by the
      DOTS server.  Likewise, 'sid' value is monotonically increased by
      the DOTS client for each configuration request (Section 4.5.2),
      attackers replaying configuration requests with lower numeric
      'sid' values will be rejected by the DOTS server if it maintains a
      higher numeric 'sid' value for this DOTS client.

Cheers,
Med

> -----Message d'origine-----
> De : Konda, Tirumaleswar Reddy [mailto:TirumaleswarReddy_Konda@McAfee.com]
> Envoyé : jeudi 28 février 2019 11:50
> À : BOUCADAIR Mohamed TGI/OLN; Benjamin Kaduk
> Cc : draft-ietf-dots-signal-channel@ietf.org; dots@ietf.org
> Objet : RE: [Dots] Using Early Data in DOTS (RE: AD review of draft-ietf-
> dots-signal-channel)
> 
> > -----Original Message-----
> > From: Dots <dots-bounces@ietf.org> On Behalf Of
> > mohamed.boucadair@orange.com
> > Sent: Thursday, February 28, 2019 1:48 PM
> > To: Benjamin Kaduk <kaduk@mit.edu>
> > Cc: draft-ietf-dots-signal-channel@ietf.org; Konda, Tirumaleswar Reddy
> > <TirumaleswarReddy_Konda@McAfee.com>; dots@ietf.org
> > Subject: Re: [Dots] Using Early Data in DOTS (RE: AD review of draft-ietf-
> dots-
> > signal-channel)
> >
> > This email originated from outside of the organization. Do not click links
> or
> > open attachments unless you recognize the sender and know the content is
> safe.
> >
> > Hi Ben,
> >
> > Please see inline.
> >
> > Cheers,
> > Med
> >
> > > -----Message d'origine-----
> > > De : Benjamin Kaduk [mailto:kaduk@mit.edu] Envoyé : mercredi 27
> > > février 2019 16:58 À : BOUCADAIR Mohamed TGI/OLN Cc : Konda,
> > > Tirumaleswar Reddy; draft-ietf-dots-signal-channel@ietf.org;
> > > dots@ietf.org
> > > Objet : Re: Using Early Data in DOTS (RE: [Dots] AD review of
> > > draft-ietf-
> > > dots-signal-channel)
> > >
> > > On Tue, Feb 19, 2019 at 07:59:29AM +0000,
> > mohamed.boucadair@orange.com wrote:
> > > > Hi Ben,
> > > >
> > > > Please see inline.
> > >
> > > Okay.  BTW, it is looking like this is the last topic to resolve
> > > before starting IETF LC.  It's probably worth s/the exponent is 2/the
> > > base of the exponent is 2/ in the next rev, though, just as a minor nit-
> fix.
> > >
> >
> > [Med] Fixed.
> >
> > > >
> > > > > -----Message d'origine-----
> > > > > De : Benjamin Kaduk [mailto:kaduk@mit.edu] Envoyé : lundi 18
> > > > > février 2019 17:23 À : BOUCADAIR Mohamed TGI/OLN Cc : Konda,
> > > > > Tirumaleswar Reddy; draft-ietf-dots-signal-channel@ietf..org;
> > > > > dots@ietf.org
> > > > > Objet : Re: Using Early Data in DOTS (RE: [Dots] AD review of
> > > > > draft-ietf-
> > > > > dots-signal-channel)
> > > > >
> > > > > On Fri, Feb 15, 2019 at 03:36:05PM +0000,
> > > > > mohamed.boucadair@orange.com
> > > wrote:
> > > > > > Re-,
> > > > > >
> > > > > > Looking forward to discuss this further.
> > > > > >
> > > > > > I wonder whether you can consider putting the document in the
> > > > > > IETF LC
> > > for
> > > > > now. If it happen that we need to modify the 0-RTT text, we will
> > > > > handle
> > > it as
> > > > > other IETF LC comments.
> > > > >
> > > > > I would normally be pretty amenable to starting IETF LC and
> > > > > continuing discussion; it's just for this issue in particular that
> > > > > I seem to be the main person on the IESG that enforces the
> > > > > "application profile for 0-RTT data" requirement, so it would feel
> > > > > rather odd to go forward in this
> > > case.
> > > >
> > > > [Med] Fair enough.
> > > >
> > > > > Luckily, I spent some time this weekend reading RFC 7252 and have
> > > > > some substantive comments.
> > > > >
> > > > > The key oberservation here seems to be that the Message ID is
> > > > > scoped per endpoint, and replays can come from arbitrary addresses.
> > > > >
> > > > > Specifically, we recall that:
> > > > >
> > > > >    The DOTS signal channel is layered on existing standards (Figure
> 3).
> > > > >
> > > > >                           +---------------------+
> > > > >                           | DOTS Signal Channel |
> > > > >                           +---------------------+
> > > > >                           |         CoAP        |
> > > > >                           +----------+----------+
> > > > >                           |   TLS    |   DTLS   |
> > > > >                           +----------+----------+
> > > > >                           |   TCP    |   UDP    |
> > > > >                           +----------+----------+
> > > > >                           |          IP         |
> > > > >                           +---------------------+
> > > > >
> > > > > We note that CoAP is using the IP address or "DTLS session"
> > > > > (arguably a poorly chosen term) to identify a CoAP association and
> > > > > that Message IDs
> > > are
> > > > > only used within the scope of such an association, it seems pretty
> > > > > clear that an attacker able to replay TLS 1.3 0-RTT data will
> > > > > slice off the top three lines of this figure and swap out the
> > > > > TCP/UDP/IP layers.  In the absence of DTLS connection IDs, my
> > > > > understanding is that the "DTLS
> > > session"
> > > > > is identified solely by the transport connection, just as for
> > > > > coap-not-s, so by spoofing the source address, the attacker causes
> > > > > the replayed 0-RTT data (and thus, CoAP request) to be interpreted
> > > > > as a new incoming coaps connection.
> > > > >
> > > > > Given that Message ID is only 16 bits and the servers accepting
> > > > > 0-RTT
> > > data
> > > > > have potential to be quite busy, it does not seem workable to
> > > > > attempt to use the incoming Message IDs as globally unique replay
> > > > > defense, as the
> > > risk
> > > > > of collision would be pretty large.
> > > >
> > > > [Med] The replay detection relies on both Message ID and Token.
> > >
> > > In stock CoAP, the Message ID and Token are used only with the context
> > > of a specific transport association.
> >
> > [Med] Hmm...RFC7252 defines an endpoint as follows:
> >
> >    The specific definition of an endpoint depends on the transport being
> >    used for CoAP.  For the transports defined in this specification, the
> >    endpoint is identified depending on the security mode used (see
> >    Section 9): With no security, the endpoint is solely identified by an
> >    IP address and a UDP port number.  With other security modes, the
> >    endpoint is identified as defined by the security mode.
> >
> > DOTS adheres to that definition: it assumes that an endpoint is not
> identified by
> > its transport coordinates but with its identity.
> >
> > Furthermore, the correlation between sessions is clearly mentioned in the
> text:
> >
> >    The DOTS server couples the DOTS signal channel sessions using the
> >    DOTS client identity and optionally the 'cdid' parameter value, and
> >    the DOTS server uses 'mid' and 'cuid' Uri-Path parameter values to
> >    detect duplicate mitigation requests.
> >
> >
> >  In order to use them for (D)TLS 1.3 replay
> > > defense, we need to expand that context to a broader scope, and direct
> > > the server to check the Message ID/Token globally (or at least within
> > > the scope of a given 'cuid'/'cdid').  Since this would reflect a
> > > divergence from normal CoAP, if we are going to rely on this sort of
> > > behavior, we must call it out very loudly as specific to DOTS.
> > >
> >
> > [Med] We can make this change if it helps:
> >
> > OLD:
> >       The DOTS server(s) can use Message ID and
> >       Token in the DOTS signal channel message to detect replay of early
> >       data, and accept 0-RTT data at most once.
> >
> > NEW:
> >       The DOTS server(s) can use Message ID and
> >       Token in the DOTS signal channel message to detect replay of early
> >       data, and accept 0-RTT data at most once from the same DOTS client.
> >       DOTS servers do not rely on transport coordinates to
> >       identify its peers. As a reminder, DOTS servers couples the DOTS
> signal
> > channel sessions
> >       using the DOTS client identity and optionally the 'cdid' parameter
> value.
> 
> I propose to update the text as follows:
> 
>       The DOTS server(s) can use the Message ID and
>       Token in the DOTS signal channel message to detect replay of early
>       data, and accept 0-RTT data at most once from the same DOTS client.
>       This anti-replay defense requires sharing the Message ID and Token in
> the 0-RTT data
>       between DOTS servers in the DOTS server domain.
>       DOTS servers do not rely on transport coordinates to
>       identify its peers. As a reminder, DOTS servers couples the DOTS signal
> channel sessions
>       using the DOTS client identity and optionally the 'cdid' parameter
> value.
> 
> -Tiru