[TLS] Another critical problem with RI
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[TLS] Another critical problem with RI



Here is yet another reason to reject Renegotiation_Info:

The security of RI relies on implementations verifying that the data
carried in the extension is correct.  It is possible for implementors
to get this wrong.  A client or server could correctly get all of the
mechanics of sending and receiving the extension working but fail to
actually compare what they received to the old verify_data.  Looking
at the bits-on-the-wire it will not be possible to tell that a client
or server is broken in this way.  These broken implementations will
be able to perform initial connections and renegotiations.  Such a
broken client paired with a broken server would still be vulnerable
to a MitM attack.

Changing the Finished message calculation, on the other hand, is fool-
proof.  Either you add the old verify_data to the handshake messages
or you don't.  If you don't, then handshakes will fail regularly[*]
and the problem will be noticed and fixed.

Note that adding the verify_data to the ClientHello.random and
ServerHello.random suffers from this same problem.

Mike

[*] To make this even more fool-proof, I suggest making sure that the
data added to the handshake message stream is never empty (i.e. as it
would be on an initial handshake in Martin's proposal); this can be
easily done by including length byte(s) or even a single fixed byte.

Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.