As a secondary issue related to this. My client is currently implementing the handshake protocol a little too faithfully to the 1.2 DTLS specification. Since the client side reliability loop does not have any discussion on deciding that the server has gone dark or is just never going to respond there is an infinite loop that is created. The client will always do a back off resend of the last set of handshake messages.
Jim From: TLS <tls-boun...@ietf.org> On Behalf Of Simon Bernard Sent: Thursday, April 26, 2018 2:32 AM To: Eric Rescorla <e...@rtfm.com> Cc: tls@ietf.org Subject: Re: [TLS] [DTLS]: how to handle unknown identity and bad psk ? Eric, thx a lot for your answer. We are discussing a lot about that with our community and there is still no consensus ... So I come back to you to have clearer information to help us to make the good decision. Using DTLS with PSK over UDP, without re-negotiation allowed : - Is there known security issue about sending the same alert for both "unknown identity" and "bad_psk"(invalid record for handshake message) ? "Discarding records aims to preserve current association", if we are able to preserve current association using : - no renegotiation allowed, - send alert for invalid record only for handshake record and if we have an ongoing handshake, - In cases where a server believes it has an existing association on a given host/port quartet and it receives an epoch=0 ClientHello, destroy the existing association only if the client has demonstrated reachability by completing a cookie exchange. Should it be OK ? Thx again for your time. Simon Le 06/04/2018 à 19:26, Eric Rescorla a écrit : On Fri, Apr 6, 2018 at 10:16 AM, Simon Bernard <cont...@simonbernard.eu <mailto:cont...@simonbernard.eu> > wrote: Hi, We are implementing DTLS with PSK over UDP and I would like to know how "unknown identity" and "bad psk" should be handled Pre-Shared Key Ciphersuites for Transport Layer Security (TLS) says : (https://tools.ietf.org/html/rfc4279#section-2) > If the server does not recognize the PSK identity, it MAY respond > with an "unknown_psk_identity" alert message. Alternatively, if the > server wishes to hide the fact that the PSK identity was not known, > it MAY continue the protocol as if the PSK identity existed but the > key was incorrect: that is, respond with a "decrypt_error" alert. In TLS the safer way seems to send a "decrypt_error" alert for both. But in DTLS : https://tools.ietf.org/html/rfc6347#section-4.1.2.7 > In general, invalid records > SHOULD be silently discarded, thus preserving the association; > however, an error MAY be logged for diagnostic purposes. > Implementations which choose to generate an alert instead, MUST > generate fatal level alerts to avoid attacks where the attacker > repeatedly probes the implementation to see how it responds to > various types of error. Note that if DTLS is run over UDP, then any > implementation which does this will be extremely susceptible to > denial-of-service (DoS) attacks because UDP forgery is so easy. > Thus, this practice is NOT RECOMMENDED for such transports. Is this record layer recommendation for all type of record ? even HANDSHAKE(22) record (and so FINISHED message) or is it mainly for APPLICATION_DATA(23) record ? Is it acceptable to send fatal alert "decrypt_error" in DTLS or should we just ignore bad credentials silently ? Hi Simon, The advice in 4279 is basically "make an unknown identity look like a bad key". So the idea would be to just randomize the key and then get the TLS or DTLS-type behavior. I.e., with TLS you would send decrypt_error and in DTLS the handshake would just stall because you would drop packets. -Ekr -- Simon _______________________________________________ TLS mailing list TLS@ietf.org <mailto:TLS@ietf.org> https://www.ietf.org/mailman/listinfo/tls
_______________________________________________ TLS mailing list TLS@ietf.org https://www.ietf.org/mailman/listinfo/tls