¿Cuál es la estructura de la firma en el mensaje de intercambio de claves del servidor TLS?

1

Estoy escribiendo un servidor TLS. Al manejar el conjunto de cifrado ECDHE-RSA, se necesita el intercambio de claves del servidor. Según Conjuntos de cifrado de cifrado de curva elíptica (ECC) para seguridad de la capa de transporte (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.

Así que revisé TLS 1.0 & 1.1, en 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;

Por lo que yo entiendo, debo usar:

digitally-signed struct {
    opaque md5_hash[16];
    opaque sha_hash[20];
};

¿Y qué es esta estructura firmada digitalmente? También vi algunos ejemplos usando sha512, ¿es md5 realmente necesario?

Gracias.

    
pregunta Wise Simpson 29.06.2015 - 03:11
fuente

1 respuesta

1

Estructura firmada digitalmente para la firma RSA

  

¿Y qué es esta estructura firmada digitalmente?

Se define en la Sección 4.7 de TLS 1.1. Atributos criptográficos :

  

En la firma RSA, se firma una estructura de 36 bytes de dos hashes (una SHA y una MD5) (cifrada con la clave privada). Está codificado con PKCS # 1 bloque tipo 1, como se describe en [PKCS1A].

hash MD5 en una estructura firmada digitalmente

  

También vi algunos ejemplos con sha512, ¿es realmente necesario md5?

Sí, está configurado para ser esta combinación MD5 / SHA-1 en TLS 1.1. Esto es algo que solo se cambió en TLS 1.2. Allí la suite de cifrado consigue elegir el hash.

De la de la TLS 1.2. Principales diferencias de TLS 1.1 :

  
  • La combinación MD5 / SHA-1 en el elemento firmado digitalmente ha sido     Reemplazado con un solo hash. Los elementos firmados ahora incluyen un campo     que especifica explícitamente el algoritmo hash utilizado.
  •   
    
respondido por el StackzOfZtuff 29.06.2015 - 06:44
fuente

Lea otras preguntas en las etiquetas