Ho a che fare con una situazione in cui un'opzione di cifratura, come ECDHE-ECDSA-AES128-SHA , viene scelta per stabilire una connessione TLS. In questo caso, un server, quando invia il messaggio ServerKeyExchange al client, è tenuto a firmare la chiave diffie hellman effimera (EC) utilizzando la sua chiave privata ECDSA (associata al certificato della chiave pubblica). La chiave pubblica viene prima sottoposta a hash prima che un'operazione di segno ECDSA possa essere una prestazione.
La mia domanda: come viene determinato l'algoritmo di hashing durante l'handshake?
L'RFC 4492 che descrive l'applicazione di ECC a TLS 1.2 presenta il seguente testo per indicare come viene determinato questo algoritmo:
"“All ECDSA computations MUST be performed according to ANSI X9.62 [7] or its successors. Data to be signed/verified is hashed, and the
result run directly through the ECDSA algorithm with no additional
hashing. The default hash function is SHA-1 [10], and sha_size (see Sections 5.4 and 5.8) is 20. However, an alternative hash function, such as one of the new SHA hash functions specified in FIPS 180-2 [10], may be used instead if the certificate containing the EC public key explicitly requires use of another hash function. (The mechanism for specifying the required hash function has not been standardized, but this provision anticipates such standardization and obviates the need to update this document in response. Future PKIX RFCs may choose, for example, to specify the hash function to be used with a public key in the parameters field of subjectPublicKeyInfo.)”
Tuttavia, se ci si riferisce ai requisiti NIST Suite-B per TLS 1.2 (RFC 5430), è chiaro sull'uso di SHA256 e SHA384 per il livello di sicurezza desiderato (poiché SHA1 è deprecato dal NIST).
Quindi, nell'handshake TLS, come si specifica l'uso di SHA256 nella procedura di firma sopra?
Grazie,
Hari Tadepalli