[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Dennis Jackson

On 22/07/2024 16:06, Salz, Rich wrote:

I agree adding a new API for T.E. which applications could opt in to 
would be fine. But could T.E. ever be enabled by default without 
breaking the existing API and requiring application changes?


Yes it could. For example, you’d have to add meta-data identifying the 
‘directory of certs’ that are typically used so that it could become a 
named trust store. Assume that’s a fixed filename, like 
“trust-store-id.txt” or something. Then when you specify that 
directory (e.g., via [1]) it could look for the fixed filename and 
send that identifying information.


I agree that having a library like OpenSSL auto-discover the necessary 
metadata in the system root store is definitely possible. My concern is 
about breakage with the other parts of the API exposed to applications 
which will prevent T.E. from being able to be offered by default - 
meaning applications will have to opt-in via a new API.


The Trust Expression's extension is trying to convey accurate 
information about which certificates are acceptable (which is controlled 
by the application) and may change the certificate which is received 
(which is visible to the application). So I don't see how Trust 
Expression's could be enabled by default without breaking applications 
or the semantics of the Trust Expression's extension. Some examples:


 * Some applications will set their own certificate verification
   callback (SSL_CTX_set_cert_verify_callback). A Trust Expression's
   label cannot be sent with these connections because OpenSSL doesn't
   know what the policy is going to be that the application applies.
   Sending the T.E. label is informing the serve 'I will accept any
   certificate suitable for this root store'.
 * Some applications will use the default certificate verifier in
   OpenSSL, but then access the certificate chain via
   SSL_get_peer_cert_chain or similar functions for getting specific
   metadata. The application might then do further checks which OpenSSL
   is unaware of. If so, the Trust Expression's label from the system
   store cannot be used without making the label inaccurate.
 * Some applications will do use the default checks on the certificate,
   but access the certificate chain to consume / log / display the
   information elsewhere. It's likely these functions are going to
   expect a 'normal' X.509 cert chain but one of the use cases of Trust
   Expressions is to enable non-X509 certificate payloads or shorter
   chains.

I think the second and third cases are particularly critical. OpenSSL 
cannot know during the handshake whether the application is going to 
later call SSL_get_peer_cert_chain / SSL_get_peer_certificate and then 
make a decision about whether to tear down the connection. For example, 
the application may do its own pinning and check whether the issuer is 
acceptable.


In this case, if OpenSSL sent the Trust Expression extension with the 
label by default, it would be actively harmful, since the Trust 
Expression extension is telling the server "I will accept any cert valid 
in this root store" but in actuality the application is performing 
pinning. This would make the extension useless for the proposed use 
cases around handling pinning gracefully and giving server's confidence 
to migrate CAs.


So my conclusion is that TLS libraries are never going to be able to 
offer T.E. by default. Instead applications would have to opt in, which 
seems like a major barrier to adoption outside of browsers.


Happy to be corrected if there are some wrinkles here, but Hyrum's law 
seems pretty harsh for the existing TLS library APIs.


Best,
Dennis




___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]I-D Action: draft-ietf-tls-svcb-ech-03.txt

2024-07-23 Thread internet-drafts
Internet-Draft draft-ietf-tls-svcb-ech-03.txt is now available. It is a work
item of the Transport Layer Security (TLS) WG of the IETF.

   Title:   Bootstrapping TLS Encrypted ClientHello with DNS Service Bindings
   Authors: Ben Schwartz
Mike Bishop
Erik Nygren
   Name:draft-ietf-tls-svcb-ech-03.txt
   Pages:   6
   Dates:   2024-07-23

Abstract:

   To use TLS Encrypted ClientHello (ECH) the client needs to learn the
   ECH configuration for a server before it attempts a connection to the
   server.  This specification provides a mechanism for conveying the
   ECH configuration information via DNS, using a SVCB or HTTPS record.

The IETF datatracker status page for this Internet-Draft is:
https://datatracker.ietf.org/doc/draft-ietf-tls-svcb-ech/

There is also an HTML version available at:
https://www.ietf.org/archive/id/draft-ietf-tls-svcb-ech-03.html

A diff from the previous version is available at:
https://author-tools.ietf.org/iddiff?url2=draft-ietf-tls-svcb-ech-03

Internet-Drafts are also available by rsync at:
rsync.ietf.org::internet-drafts


___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Expressions Update

2024-07-23 Thread Dennis Jackson

On 21/07/2024 18:09, Kyle Nekritz wrote:


Do you see differences with trust negotiation, or in the specific negotiation 
mechanisms that are being proposed? Or would you have similar concerns if, say, 
we didn't already have named group negotiation, and were discussing adding that 
right now?


My concerns are about deploying a mechanism for negotiating which 
certificate the server sends that can scale to the divergent 
requirements of many different parties.


Right now, servers are pretty much forced into choosing between being 
available on the WebPKI or being available on some other PKI. There are 
limited mechanisms which do allow servers to select alternative 
certificates (e.g. based on the client's IP or which interface it is 
accessing in corporate environments), but these mechanisms cannot be 
used at scale without causing massive incidental breakage without some 
signal from the client as to which server certs it trusts.


Trust Expression's 'fixes' that restriction and allows servers to 
participate in multiple PKIs simultaneously. Importantly, Trust Labels 
are not limited to some fixed set like signature_algorithms registered 
with IANA. Trust Expression's design requires that TLS libraries accept 
any trust_label conveyed by the CA via the provisioned certificate chains.


Trust labels are basically opaque user-agent strings which can negotiate 
arbitrary things about the contents of the certificate message in TLS. 
This makes it easy for good actors like Chrome to deploy a new 
experiment or new security policies via a new trust label, but also 
empower actors trying to establish their own PKIs with less noble 
intentions (explained further in [1]).


Does that clarify the technical difference between introducing something 
like Trust Expressions and other more limited negotiation mechanisms?


Best, Dennis

[1] 
https://github.com/dennisjackson/trust-negotiation-comments/blob/main/concerns-and-risks.md#root-programs-and-mass-surveillance
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Salz, Rich
I agree that I didn’t provide a comprehensive answer, only that it was 
possible, perhaps one API at a time.  So maybe that addresses many legacy apps.

But you are totally right that the surface area is MUCH bigger than that.
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Dennis Jackson
I don't think its possible to go one API / method at a time. If we want 
to turn on a feature by default, it has to either be non-backwards 
compatible or not break any existing API.


This is a problem for Trust Expressions because exposing the TLS 
certificate to the application is a major part of pretty much all 
existing library APIs and the library doesn't know what the application 
is going to enforce (or expect) about those certificates. This makes it 
hard (impossible?) for Trust Expressions to accurately convey the 
application's policy or to be used to experiment with the certificate 
format.


Best,
Dennis

On 23/07/2024 09:41, Salz, Rich wrote:


I agree that I didn’t provide a comprehensive answer, only that it was 
possible, perhaps one API at a time.  So maybe that addresses many 
legacy apps.


But you are totally right that the surface area is MUCH bigger than that.
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Salz, Rich
I don't think its possible to go one API / method at a time. If we want to turn 
on a feature by default, it has to either be non-backwards compatible or not 
break any existing API.

I think I agree with you, or at least as far as saying that we really need to 
hear from implementors as to the feasibility of doing this in a 
backward-compatible and generic (not just browser/WebPKI) way.
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Watson Ladd
On Tue, Jul 23, 2024, 11:04 AM Salz, Rich 
wrote:

> I don't think its possible to go one API / method at a time. If we want to
> turn on a feature by default, it has to either be non-backwards compatible
> or not break any existing API.
>
> I think I agree with you, or at least as far as saying that we really need
> to hear from implementors as to the feasibility of doing this in a
> backward-compatible and generic (not just browser/WebPKI) way.
>

Applications that don't support aren't worse off because other applications
can use a newer PKI with fewer problems.

> ___
> TLS mailing list -- tls@ietf.org
> To unsubscribe send an email to tls-le...@ietf.org
>
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Salz, Rich

Applications that don't support aren't worse off because other applications can 
use a newer PKI with fewer problems.

I think the point is that it is unlikely this “better PKI changes” come for 
free without detailed understanding on the part of app developers
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread Dennis Jackson

On 23/07/2024 11:08, Watson Ladd wrote:

Applications that don't support aren't worse off because other 
applications can use a newer PKI with fewer problems.


The sub-thread Mike started has been specifically on whether we can 
bring Trust Expressions to non-browser applications by default. I don't 
think we can but definitely appreciate hearing from other implementers.


If the claim is: "This thing has value even if only browsers do it", 
that simplifies the discussion a lot and helps us talk through the 
use-cases.


For example: I want non-browser clients to be able to do fully PQ TLS by 
default. I think that's a reasonable expectation.


If applications have to opt-in to use Trust Expressions through new APIs 
and Trust Expressions is necessary for PQ TLS, I feel we're landing in a 
pretty bad place on the PQ adoption story...


Best,
Dennis

___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Trust Anchor Negotiation Surveillance Concerns and Risks

2024-07-23 Thread David Benjamin
On Tue, Jul 23, 2024 at 11:10 AM Watson Ladd  wrote:

> On Tue, Jul 23, 2024, 11:04 AM Salz, Rich  40akamai@dmarc.ietf.org> wrote:
>
>> I don't think its possible to go one API / method at a time. If we want
>> to turn on a feature by default, it has to either be non-backwards
>> compatible or not break any existing API.
>>
>> I think I agree with you, or at least as far as saying that we really
>> need to hear from implementors as to the feasibility of doing this in a
>> backward-compatible and generic (not just browser/WebPKI) way.
>>
>
> Applications that don't support aren't worse off because other
> applications can use a newer PKI with fewer problems.
>

Right, incremental deployment is still valuable. Every client that is
removed from the fallback case is one less client that constrains the
fallback's intersection, and one more client that can evolve unburdened.
We've tried to be clear on this from the beginning, and haven't ever
claimed to be targeting 100% automatic client deployment. Very few things
done by this WG depend on or target that.

Of course, making things easier to deploy is always welcome. As with any
other work we do in this WG, that's often very dependent on the very
specific implementation details and what layer of the stack one works at.
ECH, at the level of most TLS libraries, required quite a few caller
changes. At the level of HTTPS libraries, however, it can plausibly be done
automatically. There's also a wide range of deployment ease, ranging from
your TLS library doing it automatically, to needing to opt-in to avoid a
couple API interactions specific to one implementation, to callers needing
to make a couple simple decisions, to callers needing to make some very
complex decisions.

Indeed part of why we've presented the second draft is that they represent
very different deployment tradeoffs. And even within a broad solution
direction, there are a lot of decisions that impact this. For example,
client ease of use for draft-beck-tls-trust-anchor-ids will change
dramatically depending on whether we use a separate connection (a la ECH)
or a retry in the handshake (a la HRR, though we might not want it to be
*exactly* HRR, we'll see). We wrote up the former just because it was a
simpler representative of the overall idea.

This all sounds like an excellent topic to continue discussing through
post-adoption. As with other IETF work at this stage, our goal here isn't
to present a complete solution, but to present a problem to solve, and some
starting points for the WG to build on.

David
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Discussions on Trust Anchor Negotiation at IETF 120

2024-07-23 Thread Dennis Jackson
There has been a lot of discussion over the past few days, both in 
person and on the mailing list. I want to share some thoughts on those 
discussions before the meeting tomorrow.


My impression is that there is little consensus on which problems we 
want to solve as a WG. Resolving this is critical for making progress. 
It is almost impossible to have sensible conversations about new drafts 
without agreeing on and understanding the problems we want to solve.


The vast majority of folks I've spoken with have said they're interested 
in solving the challenges around deploying fully PQ TLS, but don't feel 
that we are currently close to a shared understanding of those 
challenges or the tradeoffs around the drafts on the table today.


A smaller number of folks are interested in tackling other problems 
around root store management. I fear this aspect of the problem space is 
even less clearly understood and I heard very little agreement on what 
the key challenges are or how they might be addressed.


I hope tomorrow we can focus our discussion on figuring out as a WG the 
problem(s) that we want to tackle and where we differ in our 
understanding of those problems. I am sure that 20 minutes will not be 
enough time to resolve these complex issues, but I hope we can find a 
way to continue the conversation constructively.


Ahead of the meeting tomorrow, I want to highlight some of the questions 
which I think we need to find and agree on answers for:


- What are the problems that we solving?

- Who are we solving these problems for? Browsers or everyone?

- Are we proposing a hard requirement on this negotiation mechanism for 
anyone wanting to do fully PQ TLS?


- Can the proposed mechanism be enabled by default in TLS Libraries 
without requiring application changes?


- Can the proposed mechanism support use in a private PKI? How about in 
a private PKI that runs over the public Internet (in the now-classic 
zero-trust networking model)?


- What is the long-term vision for TLS and the WebPKI? Are we moving 
forward together or fragmenting?


- How do the proposed mechanisms affect TLS Client Hello fingerprinting 
or other tracking vectors?


- How would the proposed system work in practice? What happens when 
actors follow their own interests rather than the requirements of RFCs?


- Are less popular clients incentivized to lie in their Trust 
Expressions about which root stores they have? The history of browser 
HTTP User Agent spoofing [1] highlights how minority clients are forced 
to spoof the signals of other browsers to maximize site compatibility 
(even though it violates protocol requirements).


- How would versioning root programs work in practice when security 
requirements change? If the same root CAs are in version N and version 
N+1 of a root store and version N+1 adopts a stricter security policy - 
can these root CAs still issue certificates for version N?


- What are the consequences of making it easier to establish new root 
programs? For governments that have previously tried to build domestic 
root programs, would solve some of the problems they faced and encourage 
them to try again?


Ultimately, these are two complex drafts which propose substantial 
changes to TLS and the WebPKI. Besides evaluating the technical details 
in the draft themselves, we also have to tackle the nitty gritty 
operational questions about how a new system would work in practice—in 
particular, considering the incentives of the stakeholders to adopt the 
system and or to deliberately deviate from the intended protocol for 
self-benefit.


Finally, in any proposal which alters the power dynamics of a system, 
there will be difficult questions of a political nature, especially when 
the system in question is depended upon by billions of people.


Naturally, good people will often disagree on the nuances of these 
complex topics. However, we owe it to each other to communicate 
constructively, arrive at a shared understanding and find a path 
forwards that as much of the community as possible can support.


Best,

Dennis


[1] https://en.wikipedia.org/wiki/User-Agent_header#User_agent_spoofing


___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org