Re: [Ohai] DoubleCheck and CONNECT-UDP

Ben Schwartz <bemasc@google.com> Wed, 27 July 2022 23:00 UTC

Return-Path: <bemasc@google.com>
X-Original-To: ohai@ietfa.amsl.com
Delivered-To: ohai@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AC111C13CCDF for <ohai@ietfa.amsl.com>; Wed, 27 Jul 2022 16:00:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.61
X-Spam-Level:
X-Spam-Status: No, score=-17.61 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uwx8v0n9IVpz for <ohai@ietfa.amsl.com>; Wed, 27 Jul 2022 16:00:30 -0700 (PDT)
Received: from mail-il1-x12d.google.com (mail-il1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2850FC13C505 for <ohai@ietf.org>; Wed, 27 Jul 2022 16:00:30 -0700 (PDT)
Received: by mail-il1-x12d.google.com with SMTP id v16so182848ilm.3 for <ohai@ietf.org>; Wed, 27 Jul 2022 16:00:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=pq6CFKDQedD3CYBNlKfF4aPh/d2GW1FAfjN8PtKj6HY=; b=C5VsciNRijElkjhl2qntldZWgolhQ7h09XwcKJx9duPCusE6yoIUtRbdBq+ve4wOuw vRbpyiNwgVzJpmAlawxu0FGYbjPbYMSzePtjEUdzPZhvPCsirn9z1aQs9yWLSg+Yj3Fs 4jDUXN4zA5a5gXrMjRaLFwArs7V1fCXplWSV/qzCg6y+LUnWm5HQyq22yKOIvEhbTjfU au/qPk3chp/34USoFOWgXFO2e0O9GSb/wtN/eOvNZOJZhJZAlQu+FLT+Jr+HNwsffnQj 8THZlAx5jzejrOM+737e4M8GuogEcUq2TwccQyIxwe09XhsBE4zQV3kMXzm8RAkhBcL8 o6IQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pq6CFKDQedD3CYBNlKfF4aPh/d2GW1FAfjN8PtKj6HY=; b=Tz932HRgWKSxqzfry4nE3mfOKCyK/h3p8oZP/jtDdlP/Uli3o6p8iy+9yErdf2SpiC Fr+5QmHfPDNp+59lvUkA1Z8McISTFa1nyFQ+kzB4vsrslhntkqbkEpaiU5QlskoCY2xh wZw//1OVhXqfFLvkG9e9YpmWxfoeFY1HY6lcOGoON/vWSNqed8yagPCCRamV8Vp5Sog7 /xC9V3lPTcCSk/ZJoH4Xrvxi1nfZeMQULrFpng1LZnt7LplFz4wHUkQy3Rk7XLDayxWW ffG9IJQQ/yi3NzaNgGJeIfouqiDdmIrR8RHOfEJwbPMs+qJFi/b8QaMpphYCQFTdLaSp ZMMw==
X-Gm-Message-State: AJIora+flCFvKYlOv4p4SaWgsHJVXOFzOPuNHNhSEqRHh5dgTCXJcka+ /LDG83n7NcSp9zXvexFJ4JXr43oc8AXCC8A6EFO9WMpKM1jtKQ==
X-Google-Smtp-Source: AGRyM1t49g9zran8buLJ0/ZahSgOO6sKhvRE06tR0YLcFJhhj1LFr/pN6q36RgNC6ZhQ2OWEpVAYqJ7iDBwsWCRDh4E=
X-Received: by 2002:a92:6f0a:0:b0:2d9:24b5:9401 with SMTP id k10-20020a926f0a000000b002d924b59401mr9111996ilc.89.1658962828719; Wed, 27 Jul 2022 16:00:28 -0700 (PDT)
MIME-Version: 1.0
References: <CAHbrMsATSEU0iqybh6vqH-Mv0egJiEhpxA8vEmJNehdE0i3adQ@mail.gmail.com> <D4A56610-9E62-4F5F-BD89-47C78E47EC34@apple.com> <CAHbrMsDVDWHsq4FZz5i+VesJ+1xRO1=uCHQt63N3bGUedt6aNA@mail.gmail.com> <6887563B-7F36-42AA-8FE0-97C5C96687B9@apple.com>
In-Reply-To: <6887563B-7F36-42AA-8FE0-97C5C96687B9@apple.com>
From: Ben Schwartz <bemasc@google.com>
Date: Wed, 27 Jul 2022 19:00:16 -0400
Message-ID: <CAHbrMsAM-PRYW0_r_cfdLDBbfWtF1_TJYFnbBV2550K-aqq3Ow@mail.gmail.com>
To: Tommy Pauly <tpauly=40apple.com@dmarc.ietf.org>
Cc: ohai@ietf.org
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg="sha-256"; boundary="00000000000020d56405e4d1623d"
Archived-At: <https://mailarchive.ietf.org/arch/msg/ohai/_izO4URGtZLdlhEMwKdpBiCTGww>
Subject: Re: [Ohai] DoubleCheck and CONNECT-UDP
X-BeenThere: ohai@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Oblivious HTTP Application Intermediation <ohai.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ohai>, <mailto:ohai-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ohai/>
List-Post: <mailto:ohai@ietf.org>
List-Help: <mailto:ohai-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ohai>, <mailto:ohai-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 27 Jul 2022 23:00:34 -0000

On Wed, Jul 27, 2022 at 5:43 PM Tommy Pauly <tpauly=
40apple.com@dmarc.ietf.org> wrote:

>
>
> On Jul 27, 2022, at 3:07 PM, Ben Schwartz <bemasc=
> 40google.com@dmarc.ietf.org> wrote:
>
>
>
> On Wed, Jul 27, 2022 at 2:25 PM Tommy Pauly <tpauly=
> 40apple.com@dmarc.ietf.org> wrote:
>
>> Trying to lock people into using CONNECT-UDP to an HTTP/3 server in order
>> for key consistency to work seems to be a “not good” state to end in. Maybe
>> better than locking in CONNECT, but locking in any particular protocol or
>> version seems quite limiting.
>>
>
> As a formal matter, I think this is essentially unavoidable in any
> situation where proxies are in use.  For example, in OHAI, the Relay and
> Gateway must both support a common HTTP version.  In practice, this likely
> means that (general-purpose, open) Relays and Gateways will have to support
> HTTP/1.1 as a de facto baseline.
>
>
> There needs to be at least one HTTP version that the relay can use to
> speak to the gateway, yes. However, I certainly don’t see any reason why
> these would need to use HTTP/1.1.
>

This is my prediction of how the ecosystem would evolve absent any
recommendation in the spec.  Neither Gateway nor Relay operators would feel
confident that they could disable HTTP/1.1 without breaking some
counterparts, since nothing prohibits a compliant Gateway or Relay from
being HTTP/1.1-only.  (This outcome is probably fine, since supporting
HTTP/1.1 is mostly harmless.)


> Relays can be picky about what gateways they allow
>

My focus here is on Relays that allow (authorized) users to reach any
Gateway on the internet (and similarly, Gateways that are reachable from
any Relay).  I think such "universal relays" are very natural, as a
companion service to privacy proxies that similarly allow access to
arbitrary destinations.

Limited-purpose Gateways and Relays, which only support a fixed set of
approved counterparts, are in a very different position.  If the client has
to know which Gateways are usable with the Relay, the service that provides
this information to the client might also be trusted to provide authentic,
consistent KeyConfigs.


> — and I’d certainly advocate that any sensible implementation SHOULD NOT
> allow talking to any gateway that doesn’t at least support HTTP/2.
>

We can certainly put that in draft-ietf-ohai-ohttp, but it isn't there yet!

> I don’t think that it follows that if we don’t have CONNECT-UDP, the
>> clients would directly fetch the key config from your proposed SDH resource.
>>
>> To perform double checking, I think it just matters that we have one
>> check that uses a TLS-authenticated connection to the authority for the key
>> config, and one other check that uses a cached version on a
>> TLS-authenticated connection to another entity that is not the authority
>> for the key config; AND that these checks are done in such a way that the
>> TLS-authenticated connection to the config authority does not get to track
>> or identify the user.
>>
>
> I think that's an accurate description of the requirements, but I don't
> think documenting the requirements is sufficient.  If we don't standardize
> the proxy/relay protocols and their configuration, that essentially leaves
> the users locked into a single relay service implementation.  I don't
> believe that users should have to use the relay service operated by, say,
> their handset manufacturer or browser vendor.
>
>
> I agree that users don’t need to be limited to the relay service provided
> by a specific manufacturer. But they do need to use protocols that their
> client implementation is willing to support.
>

If we don't standardize what those protocols are, an independent Relay
operator can't be sure that they are compatible with DoubleCheck clients.

However, given the feedback so far, I think the most likely outcome is that
the draft will mention CONNECT and CONNECT-UDP, without mandating either,
and almost everyone will end up implementing both.  That seems like a
suboptimal outcome, but it's tolerable.

If the requirement is that a client needs to access the resource that is
> authoritative for the OHTTP key configuration, it should be free to access
> that using any secure proxy protocol over which it can run a TLS connection
> to the key configuration resource, and it can use normal ALPN selection to
> know which HTTP version to use to the key configuration resource.
>

ALPN doesn't cover TCP vs. UDP selection.

In practice, if we don't offer any recommendations regarding HTTP versions,
the ecosystem will converge on something that works.  It just might not be
the most efficient outcome.

> What method you use to proxy a connection is entirely up to the client’s
>> favorite proxying method, I think. Let’s not try to drag specific
>> transports into this.
>>
>
> We can let the market decide the HTTP version, but I do think we should
> specify how the transport proxy is configured.  Otherwise it becomes very
> difficult for there to be multiple interoperable implementations of the
> relay service.
>
>
> For the reasons above, I strongly disagree. We have ALPN and other ways to
> know what version is supported. There’s a reason we use HTTP and TLS here —
> we can run secure HTTP connections and let the version evolve.
>

I'm not talking about the HTTP version; I'm talking about an Access Service
Description (or an equivalent standardized configuration) for the Relay.  A
standardized Relay configuration system is necessary if independent
operators are going to reasonably be able to provide clients with an
affiliated Relay/cache, transport proxy(s), and DoH server.  This standard
can potentially support multiple transport proxy protocols (e.g. CONNECT
and CONNECT-UDP), at the risk of partitioning the anonymity set due to
varying client transport support.