Sto scrivendo un server TLS. Durante la gestione della suite di crittografia ECDHE-RSA, è necessario lo scambio di chiavi del server. In base alle Suite di crittografia a curva ellittica a curva (ECC) per Transport Layer Security (TLS)
select (KeyExchangeAlgorithm) {
case ec_diffie_hellman:
ServerECDHParams params;
Signature signed_params;
} ServerKeyExchange;
NOTE: SignatureAlgorithm is "rsa" for the ECDHE_RSA key exchange
algorithm and "anonymous" for ECDH_anon. These cases are defined in
TLS [2][3].
[2] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0",
RFC 2246, January 1999.
[3] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS)
Protocol Version 1.1", RFC 4346, April 2006.
Quindi ho controllato TLS 1.0 & 1.1, in TLS 1.1
struct {
select (KeyExchangeAlgorithm) {
case diffie_hellman:
ServerDHParams params;
Signature signed_params;
case rsa:
ServerRSAParams params;
Signature signed_params;
};
} ServerKeyExchange;
struct {
select (SignatureAlgorithm) {
case anonymous: struct { };
case rsa:
digitally-signed struct {
opaque md5_hash[16];
opaque sha_hash[20];
};
case dsa:
digitally-signed struct {
opaque sha_hash[20];
};
};
};
} Signature;
Per quanto ho capito, dovrei usare:
digitally-signed struct {
opaque md5_hash[16];
opaque sha_hash[20];
};
E qual è la struttura con firma digitale? Ho anche visto alcuni esempi usando sha512, è veramente necessario md5?
Grazie.