[TLS]Re: Consensus call for RFC8773bis Formal Analysis Requirement

2024-08-23 Thread Ben Smyth
On Fri, 23 Aug 2024, 19:30 Joseph Salowey,  wrote:

> Please respond to the list with a brief reason why you think the document
> requires formal analysis or not. This call will end on September 16, 2024.
>

What's the goal?

Security guarantees: Do the work.
___
TLS mailing list -- tls@ietf.org
To unsubscribe send an email to tls-le...@ietf.org


[TLS]Re: Kicking off the TLS 1.3 formal analysis triage panel

2024-06-02 Thread Ben Smyth
On Sun, 2 Jun 2024, 19:17 Russ Housley,  wrote:

> EKR:
>
> I agree with most of your points about the process, but I want to respond
> to this paragraph in particular.
>
> Similarly here, if the WG feels that a change is sufficiently large to
> require formal analysis then the WG -- and more specifically those who
> want the work to move forward -- need to figure out how to get that
> analysis done, though of course the triage panel or the broader
> community might help facilitate if there is enough demand or interest
> in the work.
>
>
> There was no consensus call by the WG Chairs.  During WG Last Call, a few
> people asked for formal analysis, but others felt that the informal
> analysis in the document was good enough.
>
> I realize that we are quite purposefully embracing formal analysis.  It is
> a good thing.  The number of people that have experience with the tools is
> very small.  If this is going to be successful enough to expand to other
> protocols, then we need to find ways to expand the size of this group.
>

The group is probably large enough?

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


Re: [TLS] [EXT] Re: Time to first byte vs time to last byte

2024-03-13 Thread Ben Smyth
> Given that especially for the web, CDNs used much higher initcwnds,
>
> Please, let us not assume every website is behind a CDN.
>
> Isn't that assumption reasonable? At least for global websites --- without
> CDN performance sucks.
>
> *Of course* it isn’t.
>

As a reference point:

Consider reading the New York Times in Canberra,

doesn't happen without CDN

#SpeedOfLightSlow
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Time to first byte vs time to last byte

2024-03-13 Thread Ben Smyth
On Sat, 9 Mar 2024 at 10:23, Bas Westerbaan  wrote:

> Given that especially for the web, CDNs used much higher initcwnds,
>
>
> Please, let us not assume every website is behind a CDN.
>

Isn't that assumption reasonable? At least for global websites --- without
CDN performance sucks.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] errata (was Re: Late holiday gifts)

2024-01-24 Thread Ben Smyth
On Tue, 23 Jan 2024 at 20:47, Salz, Rich 
wrote:

> > The TLS WG holds the distinction for have the most reported errata (61)
> [0]. We need to start working through these at some point.
>
> This spreadsheet is probably more useful for people who want to help out,
> since only the ADs can really make conclusions as I understand it.  (Errata
> process doesn't seem to be documented; I'll post to RSWG about that)
>
> https://docs.google.com/spreadsheets/d/1nmuRTV0Fwx-p13AMSV5GMZP5QCn80K0T5Oht5d8Putw/edit#gid=133722335
>
> The green color-coding means someone updated the item, IIRC, but I don't
> remember the details.
>

Many of the TLS (RFC 8446) issues have been worked through and resolved in
https://datatracker.ietf.org/doc/draft-ietf-tls-rfc8446bis/
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (7620)

2023-09-04 Thread Ben Smyth
>
>
>>
> My point is that the relevant semantics here are application semantics,
> not TLS semantics.
>
> Regardless of what TLS says, nothing stops an application protocol from
> allowing A to decide it doesn't care what B has to say and sending
> close_notify then closing the transport connection. At this point, whatever
> the B does is irrelevant because A isn't listening.
>

Agree.

TLS 1.2 imposed full close semantics.
>

Agree.

What TLS 1.3 does is allow applications to choose *either* full close or
> half close semantics,
>

(That is unclear to me from RFC 8446.)

but doesn't have a TLS-level signal of which one the application wants. So,
> the application can either have:
>
> - Once the other side sends close_notify, just stop sending ASAP (full
> close)
> - Once the other side sends close_notify, don't expect anything else, but
> send what you want to send (half close).
>

TLS implementations with full close don't provide high-level applications
with such choice (e.g., Bouncy Castle) whilst implementations with half
close do (e.g., OpenJDK).
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (7620)

2023-09-02 Thread Ben Smyth
On Sat, 2 Sept 2023, 13:30 Ben Smyth,  wrote:

> RFC8446 leans towards half closure but doesn't mandate it.
>
> [For full closure,] it makes sense for A to just flush the outgoing data
>>
>
> Yes.
>
> [For half closure], we want A to continue sending and then eventually send
>> a close_notify when it has drained its queue.
>>
> But this suggests that we can't have a one size fits all rule in TLS and
>> rather should explain the situation and punt it to the application binding.
>>
>
> Why is this suggested?
>


Oh, perhaps: Because RFC8446 doesn't mandate half closure, implementations
could either transmit all data and close write, or just close inbound?

>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (7620)

2023-09-02 Thread Ben Smyth
Variant of your example: A receives a request, buffers M1,..., M5, receives
close_notify after sending M4; A's peer sent the request before closing
their write side. Half closure supports request-then-close. (Related thread
in archive:
https://mailarchive.ietf.org/arch/msg/tls/V47DfS4qdsdrF2QLHogsw_aNp9M/.)

Suppose the response is a wire transfer instruction with M4||M5 being
"Charlie||'s Angels". With full closure the attacker's goal is to delay
close_notify such that M5 is dropped.

On Thu, 31 Aug 2023, 17:48 Eric Rescorla,  wrote:

> Have I missed something?
>

I think we're on the same page.

it seems to me that this is actually a somewhat complicated question that
> is about application semantics more than about TLS itself. Specifically,
> what sementics does the application think the close_notify embodies, half
> close or full close?
>

RFC8446 leans towards half closure but doesn't mandate it.

[For full closure,] it makes sense for A to just flush the outgoing data
>

Yes.

[For half closure], we want A to continue sending and then eventually send
> a close_notify when it has drained its queue.
>
But this suggests that we can't have a one size fits all rule in TLS and
> rather should explain the situation and punt it to the application binding.
>

Why is this suggested?

>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (7620)

2023-08-30 Thread Ben Smyth
On Tue, 29 Aug 2023, 14:31 Eric Rescorla,  wrote:

> On Tue, Aug 29, 2023 at 1:56 AM Ben Smyth  wrote:
>
>>  On Mon, 28 Aug 2023, Eric Rescorla, wrote:
>>
>>> ...there are quite a few situations in which endpoints close the
>>>>> connection before receiving a close_notify, for instance, when they 
>>>>> receive
>>>>> an end of data message in the application protocol or when they time out.
>>>>> The former case is generally safe, the latter is not, but extremely
>>>>> common, in fact perhaps the dominant caseI'm not sure this is an
>>>>> erratum as I think it correctly describes the situation and it's a
>>>>> judgement call whether we ought to have a requirement here or whether it's
>>>>> a 6919 MUST (BUT WE KNOW YOU WON'T)
>>>>>
>>>>
>> TLS 1.2 dictates: Either party may initiate a close by sending a
>> close_notify alert...The other party MUST respond with a close_notify alert
>> of its own and close down the connection immediately, discarding any
>> pending writes.
>>
>> RFC 8446-bis could simply forbid that behaviour, e.g., This does not have
>> any effect on the read side of the sender's connection; a party receiving a
>> "close_notify" alert MUST NOT respond with a "close_notify" alert of its
>> own. Note that this is a change from versions of TLS prior to TLS 1.3 in
>> which receivers were required to react to a "close_notify" by discarding
>> pending writes and sending an immediate "close_notify" alert of their own.
>>
>
> I must be missing something, as I don't see how that would help. Perhaps
> you could provide an example of what it is you are concerned about?
>

Sure: As-is the specification doesn't mandate against the old behaviour; a
specification compliant implementation may be vulnerable to the TLS 1.2
truncation attack arising from closure in both directions. Whilst I
appreciate the issues raised in this thread, I believe the specification
could be stricter by mandating against the old behaviour. As-is, hints are
raised, guidance given, but there's no strict requirement. Perhaps I'm just
reading too rigorously, there's no need to formally forbid---as an IETF
outsider, that seems a little lax, I'd expect a change from two-way closure
to one-way closure to be mandated, thereby explicitly teaching away from a
known vulnerability. RFC8446-bis is an opportunity to polish the original
spec.

>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (7620)

2023-08-29 Thread Ben Smyth
 On Mon, 28 Aug 2023, Eric Rescorla, wrote:

> ...there are quite a few situations in which endpoints close the
>>> connection before receiving a close_notify, for instance, when they receive
>>> an end of data message in the application protocol or when they time out.
>>> The former case is generally safe, the latter is not, but extremely
>>> common, in fact perhaps the dominant caseI'm not sure this is an
>>> erratum as I think it correctly describes the situation and it's a
>>> judgement call whether we ought to have a requirement here or whether it's
>>> a 6919 MUST (BUT WE KNOW YOU WON'T)
>>>
>>
TLS 1.2 dictates: Either party may initiate a close by sending a
close_notify alert...The other party MUST respond with a close_notify alert
of its own and close down the connection immediately, discarding any
pending writes.

RFC 8446-bis could simply forbid that behaviour, e.g., This does not have
any effect on the read side of the sender's connection; a party receiving a
"close_notify" alert MUST NOT respond with a "close_notify" alert of its
own. Note that this is a change from versions of TLS prior to TLS 1.3 in
which receivers were required to react to a "close_notify" by discarding
pending writes and sending an immediate "close_notify" alert of their own.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (7620)

2023-08-28 Thread Ben Smyth
Yes, we agree. I anticipate necessity to reduce the strength my wording (or
to ignore). I raise this errata only to discuss specification-compliant
implementations being vulnerable to truncation attack; it'd surely be
better to have a SHOULD or SHOULD NOT.

On Mon, 28 Aug 2023, 14:43 Eric Rescorla,  wrote:

> Hi Ben,
>
> Before addressing the text, let's make sure we are on the same page about
> the situation.
>
> As you probably know, there are quite a few situations in which endpoints
> close the connection before
> receiving a close_notify, for instance, when they receive an end of data
> message in the application
> protocol or when they time out. The former case is generally safe, the
> latter is not, but extremely
> common, in fact perhaps the dominant case. Do we agree on that?
>
> -Ekr
>
>
> On Mon, Aug 28, 2023 at 4:02 AM RFC Errata System <
> rfc-edi...@rfc-editor.org> wrote:
>
>> The following errata report has been submitted for RFC8446,
>> "The Transport Layer Security (TLS) Protocol Version 1.3".
>>
>> --
>> You may review the report below and at:
>> https://www.rfc-editor.org/errata/eid7620
>>
>> --
>> Type: Technical
>> Reported by: Ben Smyth 
>>
>> Section: 6.1
>>
>> Original Text
>> -
>> Each party MUST send a "close_notify" alert before closing its write
>> side of the connection, unless it has already sent some error alert.
>> This does not have any effect on its read side of the connection.
>> Note that this is a change from versions of TLS prior to TLS 1.3 in
>> which implementations were required to react to a "close_notify" by
>> discarding pending writes and sending an immediate "close_notify"
>> alert of their own.  That previous requirement could cause truncation
>> in the read side.  Both parties need not wait to receive a
>> "close_notify" alert before closing their read side of the
>> connection, though doing so would introduce the possibility of
>> truncation.
>>
>> Corrected Text
>> --
>> Each party MUST send a "close_notify" alert before closing its write
>> side of the connection, unless it has already sent some error alert.
>> This SHOULD NOT have any effect on the read side of the sender's
>> connection;
>> parties SHOULD receive a "close_notify" alert before closing the read
>> side of their connection.
>> Note that this is a change from versions of TLS prior to TLS 1.3 in
>> which receivers were required to react to a "close_notify" by
>> discarding pending writes and sending an immediate "close_notify"
>> alert of their own.  That previous requirement could cause truncation
>> in the read side.  Both parties need not wait to receive a
>> "close_notify" alert before closing their read side of the
>> connection, though doing so would introduce the possibility of
>> truncation.
>>
>> Notes
>> -
>> As-is there's a specification-level vulnerability:
>> Specification-compliant implementations may be vulnerable to truncation
>> attacks.
>>
>> I suggest using SHOULD NOT & SHOULD for better signposting and to avoid
>> specification-level vulnerability.
>>
>> I also suggest minor tweaks for readability.
>>
>> Instructions:
>> -
>> This erratum is currently posted as "Reported". If necessary, please
>> use "Reply All" to discuss whether it should be verified or
>> rejected. When a decision is reached, the verifying party
>> can log in to change the status and edit the report, if necessary.
>>
>> --
>> RFC8446 (draft-ietf-tls-tls13-28)
>> --
>> Title   : The Transport Layer Security (TLS) Protocol Version
>> 1.3
>> Publication Date: August 2018
>> Author(s)   : E. Rescorla
>> Category: PROPOSED STANDARD
>> Source  : Transport Layer Security
>> Area: Security
>> Stream  : IETF
>> Verifying Party : IESG
>>
>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] WGLC for draft-ietf-tls-rfc8446bis and draft-ietf-tls-rfc8447bis

2023-04-11 Thread Ben Smyth
On Wed, 12 Apr 2023, 03:18 Peter Gutmann,  wrote:

> On the subject of clarification, the update also needs to explain why PSK
> is
> split across two separate extensions, psk_key_exchange_modes and
> pre_shared_key


Because pre_shared_key appears in ClientHello and ServerHello, whilst
psk_key_exchange_modes only appears in the former?

>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Profile ID in CTLSServerPlaintext

2023-01-05 Thread Ben Smyth
On Wed, Jan 4, 2023 at 7:50 AM Kristijan Sedlak 
wrote:
> ...how will an endpoint correctly distinguish between multiple,
CID-ext-based CTLSClientPlaintext requests and CTLSServerPlaintext
responses when the same socket is used for client and server communication.

On Wed, 4 Jan 2023 at 15:29, Ben Schwartz  wrote:
> cases where (1) a single 5-tuple can be used for DTLS in both directions,
(2) the parties have not already agreed who will be the client and who will
be the server, and (3) there can be multiple handshakes in flight
simultaneously.  In this case, a party who sends a ClientHello might
receive a ServerHello, HRR, or a racing ClientHello in response.  This is
not a use case I had thought about.  Is this considered a supported
configuration for DTLS (with Connection IDs)?

On Wed, 4 Jan 2023 at 17:10, Eric Rescorla  wrote:
> When would this actually happen?

Assuming this could happen, then the RFC should surely mention the
possibility, and perhaps be reworked to avoid raising an error.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] What is "completed handshake"?

2022-08-09 Thread Ben Smyth
On Tue, 9 Aug 2022 at 08:50, Martin Thomson wrote:

> On Tue, Aug 9, 2022, at 16:36, Ben Smyth wrote:
> > On Mon, 8 Aug 2022 at 15:21, Töma Gavrichenkov wrote:
> >> "Upon receiving the server's messages, the client responds with its
> Authentication messages, namely Certificate and CertificateVerify (if
> requested), and Finished. At this point, the handshake is complete"
> >
> > I stumbled with this.
>
> That seems clear enough to me.  At least from the client's perspective.
> Presumably the server has to receive the client's Finished to consider the
> handshake complete.
>

For me there was a eureka! moment, when I finally understood, suddenly
everything fell into place. It could have been an easier journey; I don't
know whether I can better explain.

There are handshake messages, there's handshaking, and there's handshake
completion. Handshaking is an exchange of handshake messages. Handshake
messages are also exchanged post handshake completion. A handshake
partially completes on sending/receiving a server's Finished message---a
server can send application data thereafter---an authenticated channel from
the server to a client is established. A handshake fully completes on
sending/receiving the client's (first) Finished message, a channel
(optionally, authenticated) from the client to the server is established.
Post-handshake authentication adds a twist, further client Finished
messages may be sent/received.

>From the above, we see two points at which the handshake completes, and a
further two points of partial completion.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] What is "completed handshake"?

2022-08-08 Thread Ben Smyth
On Mon, Aug 8, 2022 at 4:19 PM Dmitry Belyavsky wrote:
> RFC 8446 refers to "completed handshake" as a prerequisite for some
messages. But looking for the word "completed", I don't see any definition.

On Mon, 8 Aug 2022 at 15:21, Töma Gavrichenkov wrote:
> "Upon receiving the server's messages, the client responds with its
Authentication messages, namely Certificate and CertificateVerify (if
requested), and Finished. At this point, the handshake is complete"

I stumbled with this.

OpenJDK reports handshake completion twice [1,2]. Anthony Scarpino
explains: "SSLEngine with post handshake messages returns
HandshakeStatus.FINISHED [more than once]...Before TLS 1.3 and
PostHandshake messages, the usage for FINISHED was clearly only during the
handshake process and more tied to the [TLS] Finished message [Since TLS
1.3,] KeyUpdate and NewSessionTicket call finishPostHandshake() which sets
the handshake status" [3].

The specification would benefit from some extra clarification.

[1] https://mail.openjdk.org/pipermail/security-dev/2022-May/030784.html
[2] https://mail.openjdk.org/pipermail/security-dev/2022-June/031019.html
[3] https://mail.openjdk.org/pipermail/security-dev/2022-June/031044.html
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] KeyUpdate.update_requested when outbound is closed

2022-08-06 Thread Ben Smyth
Message KeyUpdate may include update_requested after a receiver has sent a
close_notify alert. Maybe the sender never received the alert. Maybe the
sender anyhow requested. The receiver is mandated to send a KeyUpdate of
its own, but obviously won't. Is any special care needed in this situation?
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] Authentication weaker in PSK-mode?

2022-07-20 Thread Ben Smyth
Authentication feels weaker in PSK-mode:

* A server proves possession of a (short-term) shared key,

whereas, with certificate-based authentication,

* A server proves possession of a (long-term) private key;

should we consider PSK-mode authentication weaker than certificate-based
authentication?

PSK-mode cannot be bolstered with certificate-based authentication: "In TLS
1.3...either a PSK or a certificate is always used, but not both. Future
documents may define how to use them together." Have any such documents
emerged?
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] TLS1.3 clarification request

2021-03-17 Thread Ben Smyth
On Wed, 17 Mar 2021, 15:31 Jeremy Harris,  wrote:

> On 17/03/2021 07:15, Ben Smyth wrote:
> > Perhaps one scenario where that
> > behaviour is useful: An endpoint is about to be comprimised and raises an
> > alert to avoid secrets being leaked.
>
> I'd have tout that a section 6.2 Error Alert would be more
> appropriate in such a situation, than the (implicitly
> non-error) section 6.1 Closure Alert I'm discussing.
>
> Do you at least agree that Google is in violation of the 6.1
> wording requiring that it sends a Close Alert before sending
> a TCP FIN?
>

Which aspect of Section 6.1 do you think Google doesn't comply with?
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] TLS1.3 clarification request

2021-03-17 Thread Ben Smyth
On Tue, 16 Mar 2021, 20:03 Jeremy Harris,  wrote:

> On 16/03/2021 07:53, Ben Smyth wrote:
> > Further, is it reasonable for the above first end to
> >> expect the above second end to continue processing and
> >> sending data that would have been sent in the absence of
> >> such a first Close Alert?
> >>
> >
> > The endpoint should expect their interlocutor to ignore any data received
> > after the alert: Any data received after a closure alert has been
> received
> > MUST be ignored.
> >
> > The endpoint should expect any data sent before raising alert
> close_notify
> > to be delivered: It is assumed that closing the write side of a
> connection
> > reliably delivers pending data before destroying the transport.
> >
> > Whether an interlocutor processes data sent before alert close_notify is
> > seemingly not governed by the specification, which seems reasonable.
>
> So, that doesn't directly answer that portion of my question - but
> does appear to make a half-close useless, by requiring an end
> to hold off sending a Close alert until after if has received all
> data that the far end is expected to send.
>
> Do I understand that right?  And if so, what is the point of the
> language in the RFC that appears to permit a half-close?


Specifications don't define systems, they guide design. The specification
does not "requir[e] an end to hold off sending a Close alert until after if
has received all data that the far end is expected to send," the
specification merely allows such behaviour. Perhaps one scenario where that
behaviour is useful: An endpoint is about to be comprimised and raises an
alert to avoid secrets being leaked.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] TLS1.3 clarification request

2021-03-16 Thread Ben Smyth
On Mon, 15 Mar 2021 at 11:52, Jeremy Harris  wrote:

> Could people please confirm a detail of TLS 1.3 session
> close behaviour?  Specifically, are half-closes supported
> in similar fashion to TCP half-closes - in that it is
> legitimate for one end to issue a Close Notify alert
> and for the other end to receive that alert but continue
> to transmit data after such reception and before sending
> its own Close Notify?
>

This seems like expected behaviour: An endpoint has finished using an
outbound connection and raises alert close_notify (Section 6.1):

This alert notifies the recipient that the sender will not send any
more messages on this connection. Any data received after a closure alert
has been received MUST be ignored.

The text goes one:

This [close_notify alert] does not have any effect on its read side of
the connection.

The endpoint may continue receiving on an inbound connection.

Further, is it reasonable for the above first end to
> expect the above second end to continue processing and
> sending data that would have been sent in the absence of
> such a first Close Alert?
>

The endpoint should expect their interlocutor to ignore any data received
after the alert: Any data received after a closure alert has been received
MUST be ignored.

The endpoint should expect any data sent before raising alert close_notify
to be delivered: It is assumed that closing the write side of a connection
reliably delivers pending data before destroying the transport.

Whether an interlocutor processes data sent before alert close_notify is
seemingly not governed by the specification, which seems reasonable.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] draft-ietf-tls-rfc8446bis - Security propterites - Protection of endpoint identities

2021-02-10 Thread Ben Smyth
On Wed, 10 Feb 2021 at 12:09, Ben Smyth  wrote:

> On Wed, 10 Feb 2021, 10:19 John Mattsson,  40ericsson@dmarc.ietf.org> wrote:
>
>> I think RFC8446bis needs to state that this property only holds for
>> cipher suites with confidentiality.
>>
>
> All cipher suites defined by RFC8446bis (Appendix B.4) provide
> confidentiality. The property always holds.
>

Given that Appendix C.5 discusses unauthenticated cipher suites, perhaps
Appendix B.4 could be extended as follows:

Previous versions of TLS explicitly offered a null cipher (wherein
encryption consists of the identity operation, i.e., the data is not
encrypted). These modes have been deprecated in TLS 1.3.

(At least, that's my understanding.)
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] draft-ietf-tls-rfc8446bis - Security propterites - Protection of endpoint identities

2021-02-10 Thread Ben Smyth
On Wed, 10 Feb 2021, 10:19 John Mattsson,  wrote:

> I think RFC8446bis needs to state that this property only holds for cipher
> suites with confidentiality.
>

All cipher suites defined by RFC8446bis (Appendix B.4) provide
confidentiality. The property always holds.

>
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] TLS 1.3 Authentication and Integrity only Cipher Suites

2021-02-04 Thread Ben Smyth
Internet-Draft "TLS 1.3 Authentication and Integrity only Cipher Suites" (
https://tools.ietf.org/html/draft-camwinget-tls-ts13-macciphersuites-08)
highlights TLS use cases with authentication and integrity needs, without
any need for confidentiality. The draft promotes mutual authentication, but
this seems unnecessary, as I'll discuss. I'm also unclear why
certificate-based authentication is mandated, as I'll also discuss. Let me
first summarise application scenarios.

The need to couple authentication and integrity seems clear: Neither makes
sense without the other. (There's little sense in authenticating an
interlocutor, without knowing whether they are communicating thereafter.)
Equally, the case for dropping confidentiality seems clear: Some
applications, including use cases given, simply do not require
confidentiality. (It's worth noting that traffic analysis can anyhow defeat
confidentiality, albeit, I'm unsure of the specifics.)

The need for mutual authentication is unclear to me and seemingly
unsubstantiated
by use cases. For example, in the weather reporting use case, only the
weather reporter need authenticate, a node seeking the report need not.
Although some use cases may require mutual authentication, others seemingly
do not. Given that unilateral authentication reduces computational and
communication burden, whilst eradicating a class of private keys, can the
draft be generalised to permit unilateral or mutual authentication?

Actually, as it stands, the draft does not appear to provide mutual
authentication, since TLS only provides unilateral authentication of a
server by default. To ensure mutual authentication, the draft must mandate
a server sending a CertificateRequest message, and a client responding with
Certificate and CertificateVerify messages (rather than merely a
Certificate message that does not contain a certificate). (For PSK-based
key exchange, a client must include extension post_handshake_auth in their
ClientHello message and a server must send a CertificateRequest after the
handshake completes, but this mode isn't currently supported by the draft.)

The draft mandates that "PSK data MUST NOT be sent in the handshake [due to
the lack of confidentiality]," yet a standard ClientHello message sends PSK
data (listing pre-shared key identifiers and key exchange modes for each)
in the clear, as does a standard ServerHello message (a server-selected
identifier is included). It's only a standard EncryptedExtensions message
that protects handshake data, yet I can't find any PSK data that would be
protected. Is PSK-based authentication viable?

(I suspect a server could even securely issue a NewSessionTicket message,
since such messages don't contain any particularly sensitive information,
perhaps with the exception of the ticket_nonce, but even that shouldn't be
sensitive, given that it merely ensures distinct pre-shared keys. That
said, I haven't thought through the details.)

I appreciate the work by Nancy and Jack on this draft, which covers useful
application scenarios beyond the scope of the TLS 1.3 specification.


Best regards,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] WGLC for "Guidance for External PSK Usage in TLS"

2021-01-19 Thread Ben Smyth
Dear Joe,

On Sat, 16 Jan 2021 at 21:29, Joseph Salowey  wrote:

> We've only had one review in response to the last call so far,  I'd like
> to see a few more reviews of this document before moving it forward.  Are
> there any volunteers who can commit to a review in the near future?
>

I've reviewed and have only a handful of minor comments.

Section 1, opening: Password and key comparison seems rather weak, unless
low-entropy PSKs are used. If low-entropy PSKs are a focus, then perhaps
make this clearer, which will simultaneously strengthen the comparison.

Section 4, "These keys do not provide protection of endpoint identities
(see Section 5), nor do they provide non-repudiation (one endpoint in a
connection can deny the conversation)": Perhaps relate to other modes of
TLS which do provide such protection.

Section 4, "If this assumption is violated": The assumption has two
aspects, namely, "each PSK is known to exactly one client and one server"
and "these never switch roles." The following paragraph explains what
happens if each PSK is known to more than one client, server, or both. But
what if roles are switched? Whilst maintaining the former aspect of the
assumption.

Section 4, "then the security properties of TLS are severely weakened":
Perhaps add "as explained below" or similar.


Best regards,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] RFC 8879 on TLS Certificate Compression

2020-12-02 Thread Ben Smyth
On Wed, 2 Dec 2020 at 08:32,  wrote:

> In TLS handshakes, certificate chains often take up the majority of
> the bytes transmitted.
>
> This document describes how certificate chains can be compressed to
> reduce the amount of data transmitted and avoid some round trips.
>

Round trips are only mentioned in the abstract. It's perhaps worth
mentioning when round trips are saved: When a certificate chain would
exceed a client's receive window or a server's congestion window. Servers
have no control over receive windows, so round trips can only be avoided by
reducing certfication chain length.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] TLS Manual: Call for contributions

2020-12-01 Thread Ben Smyth
On Tue, 1 Dec 2020 at 12:09, Ben Smyth  wrote:

> I previously announced a TLS manual, intended to ease readers into the
> most recent specification...I'm far from perfect and I'm sure the
> manuscript houses numerous deficiencies.
>

Speaking of imperfections, I neglected to share a URL for a pre-compiled
PDF:

   https://bensmyth.com/files/Smyth19-TLS-tutorial.pdf

(Thanks to Chris for pointing that out.)
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] TLS Manual: Call for contributions

2020-12-01 Thread Ben Smyth
I previously announced a TLS manual, intended to ease readers into the most
recent specification. (At the very least, it helped me get to grips with
the spec!) I've now made the manual available on GitHub:

  https://github.com/BenSmyth/tls-tutorial/

I'm far from perfect and I'm sure the manuscript houses numerous
deficiencies.

Interesting aspects are omitted, because I didn't have the time, knowledge,
or expertise to add them. For instance, the specification hasn't been
entirely covered, as is documented; discussion of security guarantees are
notably lacking; and an introduction to the underlying cryptography is
absent. (E.g., some details on DHKE, AEAD, etc. would be grand.) Directions
for further exploration are missing, hands-on teaching opportunities
foregone. For instance, a Davies-style exploration of TLS on-the-wire, with
notes on Wireshark and SSLKEYLOGFILE---perhaps as dirty as readers can get,
without bursting-out soldering irons. Mistakes and issues are no doubt
numerous.

I encourage you to improve this manuscript. Fix a typo. Patch grammar.
Revise awkward, overcomplicated, or otherwise poorly-written passages.
Contribute an entire section. Help evolve the manual. (Perhaps get in touch
prior to writing an entire section! We should probably reach consensus on
what to add.) Contributions will be recognised through acknowledgements or
co-authorship.


Best regards,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Last-Call] Last Call: (Deprecating TLSv1.0 and TLSv1.1) to Best Current Practice

2020-11-30 Thread Ben Smyth
I haven't followed all the nuances of this discussion, but it seems to boil
down to use of "MUST NOT" when certain "EXCEPTIONS MAY" exist for private
enterprise running legacy kit, which makes decision makers anxious, since
they don't want responsibility for something they "MUST NOT" do: A solution
might be to introduce "MUST NOT...EXCEPTIONS MAY" language, thereby
allowing sectors to define their standards/principles/expectations.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] TLS 1.3 Problem?

2020-09-29 Thread Ben Smyth
Dear Michael,

On Tue, 29 Sep 2020 at 17:14, Michael D'Errico  wrote:
> OK, so it sounds like you put something similar to a
> NewSessionTicket (TLS 1.2) in the cookie with enough
> information to recreate the server state.

Whilst getting to grips with TLS 1.3, I wrote a tutorial
(https://arxiv.org/abs/1904.02148), I think you might find it useful.
For instance, I explain the cookie on page 19.


Best regards,

Ben

___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] TLS 1.3 Problem?

2020-09-27 Thread Ben Smyth
The client will reject the server's ServerHello in your example.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] Adoption call for draft-rescorla-tls-rfc8446-bis

2020-09-02 Thread Ben Smyth
I support adoption and I am willing to help work on this. (Eric has already
incorporated many of my suggestions, many thanks for that.)
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [OPSEC] Call For Adoption: draft-wang-opsec-tls-proxy-bp

2020-07-31 Thread Ben Smyth
On Tue, 28 Jul 2020 at 10:35, Arnaud.Taddei.IETF
 wrote:
> I strongly support this work as it represents capabilities that are being 
> developed, deployed and used in practice. It has good intentions and provides 
> a good approach in the context of defense in depth approaches. No security 
> cannot be just on both ends of the communication. One can dream about it but 
> that is not how reality is.

I appreciate that capabilities are being developed, deployed, and
used. However, shouldn't a secure solution be sought? Surely secure
solutions are just waiting to be discovered?

___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] Traffic secrets: What's in handshake transcripts?

2020-05-06 Thread Ben Smyth
As far as I can tell, secret [sender]_handshake_traffic_secret is computed
over transcript CH || SH or CH || HRR || CH || SH. (A server can compute
their secret once they've computed SH, whereas a client must wait until
they've received SH before computing their secret.) Secret
server_application_traffic_0 is computed over an extended transcript which
additionally includes EE, (optionally) CR, (optionally) CT & CV, and FIN,
and secret client_application_traffic_0 further extends that transcript to
include (optionally) EndOfEarlyData, (optionally) CT, (optionally) CV, and
FIN. Is that right?


Best regards,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Editorial Errata Reported] RFC8446 (6125)

2020-05-01 Thread Ben Smyth
Dear Peter,

On Fri, 1 May 2020 at 12:30, Peter Wu  wrote:

> Do you have a specific sentence that caused confusion for you? Both
> "out-of-band" and "external" can be used interchangeably.
>

Getting to grips with TLS 1.3 has been challenging for me! The use of
synonyms made it more difficult. I hope that the reports I have submitted
will aid others in understanding the specification. Longer-term they may
even aid the development for future documents. Many of the reports are
minor, others are preventing me from fully understanding the specification,
and several may highlight minor technical issues. They all came about
whilst writing a manual for TLS (
https://bensmyth.com/publications/2019-TLS-tutorial/), which I'm currently
extending. Since the reports are based on my private notes, I thought
sharing them (via reports) would be useful.


Best regards,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] RFC 8446 Early data, server response: deprotect vs. type checking

2020-04-30 Thread Ben Smyth
>
> Section 4.2.10 requires a server receiving early data to behave in ways
>> including (p53):
>>
>> * Ignore the extension and return a regular 1-RTT response.  The server
>> then skips past early data by attempting to deprotect received records
>> using the handshake traffic key, discarding records which fail
>> deprotection...
>>
>> * Request that the client send another ClientHello by responding with a
>> HelloRetryRequest... The server then ignores early data by skipping all
>> records with an external content type of "application_data"...
>>
>> What are the use cases for each behaviour?
>>
>
I expect that the first response will be the ordinary one. However, in some
> cases you will be forced to employ the second one because it is not
> possible to send a SH. For instance, consider the case where the server has
> been reconfigured and no longer accepts the DH group that the client
> employs in the CH. In that case, it will have to send HRR.
>

SH and HRR are simply used in their usual ways: Thanks for the
clarification.


> And why does the former rely on deprotecting, when checking record content
>> types is surely more efficient?
>>
>
> Unfortunately, the record types are encrypted, and this will not work.
>

(I meant the external content type. But, that doesn't work anyhow.)

I have now understood:

When not consuming early data, respond with SH or HRR. For the former,
given that all messages will be encrypted, the server must decrypt messages
with the handshake traffic key, discard messages when decryption fails, and
treat the first successfully decrypted message as the client's next
handshake message, thereafter proceeding as if no early data were sent. For
the latter, the second CH message will be unencrypted and the server can
discard all encrypted messages (identified by record type 0x23, rather than
0x22), before proceeding as if no early data were sent when the second CH
is identified.


Thanks for your support,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] RFC 8446: Correlating connections with ticket ages

2020-04-30 Thread Ben Smyth
Section 4.2.11.1 explains that:

PskIdentity contains an obfuscated version of the ticket age formed by
taking the age in milliseconds and adding the "ticket_age_add"... This
addition prevents passive observers from correlating connections unless
tickets are reused.

So: Correlations are possible when tickets are reused. But, what connection
correlations are prevented when tickets aren't reused?


Best regards,

Ben
-- 
TLS 1.3 tutorial: https://bensmyth.com/publications/2019-TLS-tutorial/
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


Re: [TLS] [Technical Errata Reported] RFC8446 (6145)

2020-04-30 Thread Ben Smyth
> Original Text
> -
> When a PSK is used and early data is allowed for that PSK
>
> Notes
> -
> I couldn't find restrictions that forbid early data for a PSK. Explaining
> where such restrictions
> could exist would be useful. E.g., PSKs might be associated with data that
> forbids early data.
>

That's an oversight on my part:

   The sole extension currently defined for NewSessionTicket is
   "early_data", indicating that the ticket may be used to send 0-RTT
   data

The client may only send early data when permitted:

   When a PSK is used and early data is allowed for that PSK, the client
   can send Application Data in its first flight of messages.

Servers don't appear to be forbidden from consuming early data when keys
don't permit them to. Perhaps I've missed that too. Or perhaps it doesn't
matter: If a client does something they aren't supposed to, then they're
only compromising their own security.
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls


[TLS] RFC 8446 Early data, server response: deprotect vs. type checking

2020-04-29 Thread Ben Smyth
Section 4.2.10 requires a server receiving early data to behave in ways
including (p53):

* Ignore the extension and return a regular 1-RTT response.  The server
then skips past early data by attempting to deprotect received records
using the handshake traffic key, discarding records which fail
deprotection...

* Request that the client send another ClientHello by responding with a
HelloRetryRequest... The server then ignores early data by skipping all
records with an external content type of "application_data"...

What are the use cases for each behaviour? And why does the former rely on
deprotecting, when checking record content types is surely more efficient?

(I'm extending my TLS 1.3 tutorial --
https://bensmyth.com/publications/2019-TLS-tutorial/ -- to include
discussion of early data and I'm struggling to understand the rationale
behind these two behaviours.)


Best regards,

Ben
___
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls