Qual è la struttura delle firme nel messaggio di scambio chiavi del server TLS?

1

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.

    
posta Wise Simpson 29.06.2015 - 03:11
fonte

1 risposta

1

Struttura con firma digitale per la firma RSA

And what's this digitally-signed structure?

È definito in Sezione 4.7 di TLS 1.1. Attributi crittografici :

In RSA signing, a 36-byte structure of two hashes (one SHA and one MD5) is signed (encrypted with the private key). It is encoded with PKCS #1 block type 1, as described in [PKCS1A].

hash MD5 in struct con firma digitale

I also saw some examples using sha512, is md5 really necessary?

Sì, è impostato per essere questa combinazione MD5 / SHA-1 in TLS 1.1. Questo è qualcosa che è stato modificato solo in TLS 1.2. Lì la suite di cifrari arriva a scegliere l'hash.

Da Sezione 1.2 di TLS 1.2. Differenze principali da TLS 1.1 :

  • The MD5/SHA-1 combination in the digitally-signed element has been replaced with a single hash. Signed elements now include a field that explicitly specifies the hash algorithm used.
    
risposta data 29.06.2015 - 06:44
fonte

Leggi altre domande sui tag