Passa al contenuto principale

10. Considerazioni di sicurezza

Le considerazioni di sicurezza sono trattate nelle varie parti di questo documento.

Aspetti principali della sicurezza

Lunghezza delle chiavi

La sicurezza delle chiavi RSA dipende in larga misura dalla dimensione del modulo. Le lunghezze minime raccomandate sono:

  • 2048 bit: minimo attualmente raccomandato;
  • 3072 bit: raccomandato per applicazioni ad alta sicurezza;
  • 4096 bit: per chiavi di lunga durata o requisiti di sicurezza molto elevati.

Scelta dello schema

  • RSAES-OAEP: DEVE essere supportato come schema di cifratura per le nuove applicazioni;
  • RSASSA-PSS: schema di firma RACCOMANDATO per le nuove applicazioni;
  • PKCS1-v1_5: mantenuto solo per compatibilità e presenta debolezze note.

Note di implementazione

  1. Generazione casuale: deve essere usato un generatore di numeri casuali crittograficamente sicuro.
  2. Attacchi laterali: l'implementazione dovrebbe prevenire attacchi temporali e analisi del consumo energetico.
  3. Gestione degli errori: i messaggi di errore per decrittazione e verifica dovrebbero essere uniformi, per evitare fughe di informazioni.
  4. Attacchi di padding oracle: RSAES-PKCS1-v1_5 è vulnerabile agli attacchi di Bleichenbacher e richiede particolare attenzione.

Funzioni hash

  • Evitare: MD5 e SHA-1, che sono stati compromessi;
  • Raccomandate: SHA-256, SHA-384 e SHA-512.

Uso delle chiavi

  • Uso singolo: una coppia di chiavi RSA dovrebbe essere usata per un solo schema, cifratura oppure firma, e non per entrambi;
  • Rotazione delle chiavi: sostituire le chiavi periodicamente;
  • Protezione della chiave privata: memorizzare la chiave privata cifrata; l'uso di un Hardware Security Module (HSM) è una buona pratica.

Attacchi noti e difese

  • Attacchi a testo cifrato scelto: RSAES-OAEP fornisce protezione;
  • Attacchi a messaggio scelto: RSASSA-PSS fornisce protezione;
  • Attacchi di Bleichenbacher: interessano RSAES-PKCS1-v1_5;
  • Attacchi temporali: prestare attenzione quando si usano algoritmi a tempo costante e l'accelerazione CRT.

Si veda la sezione 6 per la discussione sull'evitare l'uso della stessa coppia di chiavi in più schemi.