> On Tue, Jan 21, 2020 at 01:17:59PM -0800, Eric Rescorla wrote:
>
> > I would make several points here:
> >
> > 1. RFC 8446 explicitly discourages ticket reuse
> >    (https://tools.ietf.org/rfcmarkup?doc=8446#appendix-C.4). so we
> >    should not be designing an extension to enable reuse. While it's
> >    potentially true that some applications do not benefit from
> >    non-reuse, creating a set of mechanisms around reuse risks those
> >    mechanisms being used in settings where reuse would be
> >    bad. Moreover. just because at present sending MTAs have weak
> >    privacy properties does not mean that we should bake in this
> >    situation permanently.
>
> Indeed I agree that ticket reuse is often undesirable, and expect that
> it will be avoided in many cases.  So I am somewhat sympathetic to the
> above as a starting point for the analysis.
>
> That said, I don't see that making reuse easier to negotiate is likely
> to create significant opportunities for misuse.

I'm actually making several points here:

1. TLS 1.3 takes the position that reuse is bad and that position
   is for good reasons, so we shouldn't undercut it in a new
   extension.

2. Creating a mechanism which encourages reuse increases the risk
   of reuse.

You are responding to number (2), and I'll respond to that below,
but I think the controlling point is actually (1). We shouldn't
encourage reuse, period.


>     - Both the client *and* the server would need to opt-in to reuse.
>
>       * Even if the client asks for reuse, the server can invalidate
>         the old ticket (something it would need to be able to do
>         already to ensure non-reuse) and send a fresh one anyway.
>
>         The client would have to replace the old with the new, since
>         it has to assume that the old is now likely invalid.
>
>       * Even if the server is willing to reuse, if the client asks
>         for a new ticket, the server has to assume the client has
>         a single-use cache, and should vend a new ticket.
>
>       so it takes bilateral coordination to arrive at reuse, and
>       so accidental reuse in applications where it is inappropriate
>       requires errors on both ends.

The issue is less accidental reuse than joint misconfiguration (e.g.,
bad defaults or bad advice in some Stack Overflow document).



> > 2. The additional cost of multiple tickets seems extraordinarily
> >    small, so I am not at all persuaded that there is enough value in
> >    this use case to justify adding new protocol machinery, even
> >    ignoring point (1) above.
>
> Postfix has a shared cache (indexed by destination domain+mx host) for
> multiple independent processes racing to use the cache to make remote
> SMTP connections.
>
> Frequent writes to that cache create measurable overhead and still don't
> prevent reuse.

I'm sorry to say that I'm not that sympathetic to this position. I
appreciate that it's inconvenient for Postfix to have frequent writes
to the ticket cache, but what you propose to do is hoist this
implementation idiosyncracy into the specification, and I don't think
that that's a good tradeoff, both for complexity and because the


> Transmission of unnecessary tickets is also wasteful of
> network and other server resources.

Well, my position here is that these tickets aren't unnecessary,
because you should be using them, rather than violating the
SHOULD in the 8446.


> Erasing tickets on first use would be unwise, most existing servers will
> not presently return a fresh ticket on resumption.

This seems like a defect in those servers. However it can be handled
by not erasing tickets until a new ticket is provided.


>
> > 3. If there *is* such value, then you can register your own extension
> >    which allows you to say the orthogonal thing, namely "don't send me
> >    any tickets at all if you are resuming". This would be more
> >    flexible in that you could then say "I would like 10 tickets, but
> >    only if you don't resume". Note that
> >    https://datatracker.ietf.org/doc/draft-ietf-tls-tlsflags/ would
> >    allow you to do this efficiently.
>
> This is an interesting idea, but how would the two extensions interact?

I would imagine the logic would be:

If !reuse || !present(reuse extension) {
  send min(max-local-tickets,
           tickets-requested-extension-present ?
           tickets-requested-extension-value :
           1)
}

> And wouldn't that interaction add more complexity?

Perhaps. At least in NSS, I imagine it would be pretty comparable, assuming
we opted to implement the non-reuse one at all.


> By hypothesis
> clients that are willing to reuse tickets don't really need more than
> one at a time. Is there a clear use case for multiple concurrent
> reusable tickets.

Yes, I see your point here. I don't have a clear case for this, but
I'm also not sure that there isn't one: concurrent usage and serial
usage are not necessarily the same.


> > Thus, I would prefer to advance this document as-is.
>
> Thanks for the substantive response.  Much appreciated.  I hope you're
> willing to address the above reaction, I am trying to find common
> ground that addresses your concerns and mine.

And thank you for your substantive response. I am not sure if we will be
able to
find common ground however.


-Ekr
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to