I parametri RSA saranno inviati in un messaggio di scambio chiave del server in TLS 1.1?

3

TLS 1.1 (RFC 4346), la sezione per Server Key Exchange Message (7.4.3) dice

  It is not legal to send the server key exchange message for the
  following key exchange methods:

       RSA
       DH_DSS
       DH_RSA

Ma, sotto nella stessa sezione per la struttura del messaggio, fornisce la struttura come segue:

  struct {
      select (KeyExchangeAlgorithm) {
          case diffie_hellman:
              ServerDHParams params;
              Signature signed_params;
          case rsa:
              ServerRSAParams params;
              Signature signed_params;
      };
  } ServerKeyExchange;

In quale condizione verranno inviati i ServerRSAParam? Perché è necessario? Nella specifica TLS 1.2 (RFC 5246), trovo che la struttura ServerKeyExchange non indica alcun parametro da inviare per RSA. Snippet da RFC 5246 in basso:

  struct {
      select (KeyExchangeAlgorithm) {
          case dh_anon:
              ServerDHParams params;
          case dhe_dss:
          case dhe_rsa:
              ServerDHParams params;
              digitally-signed struct {
                  opaque client_random[32];
                  opaque server_random[32];
                  ServerDHParams params;
              } signed_params;
          case rsa:
          case dh_dss:
          case dh_rsa:
              struct {} ;
             /* message is omitted for rsa, dh_dss, and dh_rsa */
          /* may be extended, e.g., for ECDH -- see [TLSECC] */
      };
  } ServerKeyExchange;
    
posta Jay 07.12.2012 - 05:46
fonte

1 risposta

6

Come dice TLS 1.2 :

The ServerKeyExchange message is sent by the server only when the server Certificate message (if sent) does not contain enough data to allow the client to exchange a premaster secret.

Quindi un messaggio ServerKeyExchange contenente una chiave pubblica RSA verrebbe utilizzato quando la chiave pubblica del server non è adatta per lo scambio di chiavi (ad esempio è in un certificato che è contrassegnato solo come firma) ma client e server desiderano comunque utilizzare RSA per lo scambio di chiavi.

L'invio di una chiave RSA come questa è una funzione che non è più in uso, ma è stata utilizzata in TLS 1.0 con le suite di crittografia RSA_EXPORT . A quel tempo, negli Stati Uniti esistevano normative piuttosto severe, che limitavano le dimensioni delle chiavi crittografiche utilizzate per la crittografia in sistemi che venivano esportati al di fuori degli Stati Uniti (questi regolamenti sono stati revocati nel 2000); in particolare, la crittografia di RSA era limitata a 512 bit (e 40 bit per la crittografia simmetrica). Le suite di crittografia RSA_EXPORT hanno rispettato queste normative sull'esportazione. Quando il server ha una chiave pubblica RSA, il client e il server accettano di utilizzare una delle suite RSA_EXPORT , e la chiave pubblica del server è maggiore di 512 bit, quindi il server deve inviare una ServerKeyExchange messaggio con una chiave RSA di massimo 512 bit e usa la sua chiave RSA permanente (quella del suo certificato) per firmare il messaggio ServerKeyExchange .

La generazione di chiavi dinamiche RSA è un po 'macchinosa e costosa; un determinato server SSL può riutilizzare tale chiave con diversi client, ma è ancora più pesante di DHE. Il caso d'uso principale era quello di supportare clienti deboli che possono fare solo RSA; tuttavia, anche se le operazioni della chiave pubblica RSA sono molto veloci, ECDHE (Diffie-Hellman con curve ellittiche) è competitivo e molto più semplice per il server. I client TLS 1.1 sono autorizzati a pubblicizzare il supporto per le suite RSA_EXPORT , ma solo per la compatibilità con SSL 3.0 e TLS 1.0 (sezione A.5 di TLS 1.1 ):

TLS 1.1 implementations MUST NOT negotiate these cipher suites in TLS 1.1 mode. However, for backward compatibility they may be offered in the ClientHello for use with TLS 1.0 or SSLv3-only servers. TLS 1.1 clients MUST check that the server did not choose one of these cipher suites during the handshake. These ciphersuites are listed below for informational purposes and to reserve the numbers.

La struttura ServerRSAParams in TLS 1.1 è quindi una sopravvissuta da TLS 1.0 che in qualche modo elusa la collera degli editor RFC 4346, ma è stata finalmente rimossa quando è stato prodotto RFC 5246.

    
risposta data 07.12.2012 - 11:30
fonte

Leggi altre domande sui tag