Subject: Expanded alert codes. [Was Re: [TLS] Genart last call review of draft-ietf-tls-tls13-24]

From: Eric Rescorla <[email-masked]>
Date: Sat, 31 Mar 2018 06:42:20 -0700

Thinking through this some more, I'm skeptical that this is going to be
that useful as a debugging-only feature.

In my experience, there are four major scenarios for diagnosing this kind
of failure. Under the assumption that you control one end, the other end
can be:

1. A live endpoint.
2. A testing endpoint someone has put up.
3. An endpoint that someone is actively working on with you.
4. An endpoint you control (e.g., you're running it on your own machine).

If this is a debug-only feature, then it won't be available in case #1, and
it's not that helpful in case 4, because you can read the logs, errors,
etc. yourself. For the same reason, it's not really that helpful in case
#3, because you can just ask the person you're working with to read the
logs, so this leaves case #2, which I agree can be annoying. However, what
we've started doing with QUIC is just to have the endpoints dump their logs
so that they're available on a co-located Web site. That gives you a lot
more information than you'd probably want to fit in an alert message (e.g.,
you can print out the keying material, etc.)

I guess there might be some intermediate category 1.5 that's kind of in
production so you don't want to print out complete logs, but you'd like
more detail than you would probably want to expose in general, but my
experience is that that's not super-common.

-Ekr

On Fri, Mar 30, 2018 at 7:16 PM, Peter Gutmann <[email-masked]>
wrote:

> Kathleen Moriarty <[email-masked]> writes:
>
> >I agree with Eric’s assessment, this could be in a new draft as an
> extension.
>
> Anyone want to work on this?  I can contribute a bit by recycling the EtM
> text, which sets out how to communicate a boolean flag (for "I speak
> extended
> alerts") as an extension, apart from that you just need to define the alert
> format, which I assume just means adding a free-form text field to the
> existing alerts.
>
> Peter.
>

---

From: Peter Gutmann <[email-masked]>
Date: Sun, 1 Apr 2018 05:29:34 +0000

Eric Rescorla <[email-masked]> writes:

>In my experience, there are four major scenarios for diagnosing this kind of
>failure. Under the assumption that you control one end, the other end can be:
>
>1. A live endpoint.
>If this is a debug-only feature, then it won't be available in case #1, 

I have the feeling the people who have commented on this were talking from
real-world experience, and in the example I gave it was exactly case #1.  This
was a live, large-scale production environment by a major ecommerce
organisation (details fudged somewhat to avoid identifying anyone, but
everyone here would know the name), and the only way to get things working was
to spend several weeks randomly tweaking every conceivable option on the
client until things started working, because the only thing the server would
say was "Handshake failure".  The client-side organisation still has no idea
what made things work, they've narrowed it down by trial and error to about
half a dozen things they had to change, but that's it.

If they'd been able to get the server operators to turn on extended-alert for
even just a single handshake it would have avoided several weeks' effort and a
fix that even now is pure guesswork.

>For the same reason, it's not really that helpful in case #3, because you can
>just ask the person you're working with to read the logs, 

Except that these people are EDI companies, not TLS experts.  They have
neither the expertise nor the inclination to help debug TLS issues.  What they
will do is enable debug on the server so the client can sort things out, but
they're not going to devote any effort to sorting out the problem at their
end.

Note that temporarily enabling debug on a live endpoint isn't a big issue,
everything will continue to operate as before except for the one client that
requests debug-level alerts, and that knows what it's up for because it
explicitly asked for it.

>so this leaves case #2, 

Actually it leaves 1, 2, and 3.  4 is kinda pathological, so really the
problem is "all of the cases".

Peter.