I am learning TLS handshake and find client/serve will negotiate a cihpersuite during client/server hello.
Usually, the last part of a ciphersuite is a hash algorithm, like SHA256
in ECDHE-ECDSA-AES128-SHA256
. The second part of a ciphersuite is public key algorithm of server certificate like ECDSA
. As we know, public key is usually capable of signing a message.
I also noticed in the client Hello, there is an extension called signature_algorithms
to set the preferred hash/signature algorithm pairs. The chosen hash/signature is usually used to sign the Server Key Exchange.
My question is: since the ciphersuite already indicates both hash and signature algorithms, why we still needs the signature_algorithms
extension?