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
    <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
    <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
    <https://www.ietf.org/mailman/listinfo/tls>



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

Reply via email to