Subject: [TLS] Lost last DTLS Flight

From: Robin Seggelmann <[email-masked]>
Date: Mon, 27 Oct 2008 12:07:59 +0100

We're still working on DTLS for SCTP and stumbled over a problem with  
the last flights specified in RFC 4347. The server receives flight 5  
(Certificate, ..., ChangeCipherSpec, Finished) from the client,  
changes its state to FINISHED and sends its ChangeCipherSpec and  
Finished (Flight 6). What happens if this flight gets lost? The  
server already is in the FINISHED state and as there also is no  
acknowledgement, so it won't be retransmitted. Hence, the client  
keeps waiting for the flight to arrive and the connection is most  
likely to fail.

Regards,
Robin
_______________________________________________
TLS mailing list
[email-masked]
https://www.ietf.org/mailman/listinfo/tls

---

From: Eric Rescorla <[email-masked]>
Date: Mon, 27 Oct 2008 08:24:19 -0700

At Mon, 27 Oct 2008 12:07:59 +0100,
> keeps waiting for the flight to arrive and the connection is most  

You're right, this is a bug in the state machine. Nice catch.

ISTM that the way this actually needs to work is that the server needs
to stay in WAITING until 2MSL has expired, in case it receives a
retransmitted Flight 5, in which case it retransmits Flight 6.

That sound right?

-Ekr

---

From: Michael Tüxen <[email-masked]>
Date: Mon, 27 Oct 2008 18:00:34 +0100

> retransmitted Flight 5, in which case it retransmits Flight 6.
This means that the server will be in WAITING for approximately 30  
seconds.
What happens when the receives application data during that time?
What happens if he want to transmit application during that time?
for example after the renegotiation?

Best regards
Michael

---

From: Eric Rescorla <[email-masked]>
Date: Mon, 27 Oct 2008 10:40:50 -0700

At Mon, 27 Oct 2008 18:00:34 +0100,
> for example after the renegotiation?

There's no reason why it can't transmit or receive during this period,
though I agree we need to be sure the text says this.

-Ekr

---

From: Michael Tüxen <[email-masked]>
Date: Mon, 27 Oct 2008 19:05:31 +0100

> though I agree we need to be sure the text says this.
Currently the text does not say anything about receiving application
data during the handshake. The OpenSSL library just discards them, as
far as I know...
So could we please add text about this?

The other point is:
Assume flight 6 is lost and the server sends data. What will the
client do with it, because it will use the new encryption data?
Normally it would use it only after it has received the messages from
flight 6 (ChangeCipherSpec and Finished. Should they be stored?

This might be a cornercase for UDP but it is *very* important for SCTP/ 
DTLS
since the application data is not in sequence with the TLS messages
and therefore application data might be received before the flight 6
messages although the flight 6 messages are sent before the  
application data.
And DTLS/SCTP can not discard messages.