Hi,

I have a few comments while reading 4.8.1 Digital Signature of
draft-tls-tls13.Hope it helps.

BR,
Daniel

Comment a)
"In previous versions of TLS, the ServerKeyExchange format meant that
attackers can obtain a signature of a message with a chosen, 32-byte prefix.
"

My understanding is that the ServeKeyExchange format defines the bits
exchanged between the TLS Client and the TLS Server. I think the attack
vector is more coming from how the signatures are computed. I would rather
propose something like:

"In previous version of TLS, the signature of the ECDH or EDH public key is
performed by concatenating the client random, the server random to the
public keys. The concatenation is hash and then signed. As the client
random is chosen by the TLS CLient, such design allows an attacker to
obtain a signature of a message with a chosen 32-byte prefix."

Comment b)

"Because TLS 1.3 servers are likely to also implement prior versions, the
contents of the element always start with 64 bytes of octet 32 in order to
clear that chosen-prefix.

I think some additional steps need to be explicitly specified. I am not
completely sure of what is being signed.
    a) padding + context + H(client.random + server + random + ECDHE/DHE
Params)
OR
    b) padding + context + client.random + server + random + ECDHE/DHE
Params
OR
    c) padding + context + ECDHE/DHE Params
OR
   d) something else

I assume that is a) in which case, the reason for choosing this format is
to constraint changes between TLS versions at the signing module. In
addition, if the correct scheme is a) maybe some additional text or
reference could explain why the padding and context solves this problem. By
prepending a fixed padding and some context, to the output of the hash
function, the TLS Client does not control the input that is signed as
cryptographic hash function are expected to be non-invertible.


Comment c)

"A single 0 byte is appended to the context to act as a separator."

When describing how the input to be signed is built, it may be clearer to
emphasize that string ends with 0, whihc leads to a "00" separator. I would
propose to add something like: "As the string ends with a "0" byte, the
binary representation will results in two zero bytes."


Comment d)


It would help the reader to add that “Example” is represented in hexa
by 4578616d706c650
with the end of string character.
_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to