Cipher suite: scegliere quelli sicuri

Cos'è una cipher suite

Una cipher suite è una combinazione di algoritmi che TLS usa per negoziare una sessione cifrata. Ciascuna suite definisce quattro componenti: l'algoritmo di key exchange (come client e server si accordano sulla chiave), l'algoritmo di autenticazione (come si verifica il certificato), il cifrario simmetrico (per cifrare i dati) e la funzione di hash (per integrità e PRF).

Anatomia del nome

Un'esempio tipico in TLS 1.2:

ECDHE-RSA-AES256-GCM-SHA384

  • ECDHE: Elliptic Curve Diffie-Hellman Ephemeral (key exchange con Forward Secrecy)
  • RSA: l'autenticazione usa firma RSA
  • AES256-GCM: cifrario simmetrico AES a 256 bit in modalità Galois Counter Mode
  • SHA384: funzione hash SHA-2 a 384 bit

In TLS 1.3 i nomi sono diversi e più corti, perché il key exchange è negoziato separatamente: TLS_AES_256_GCM_SHA384.

Cipher da preferire

Una cipher è considerata sicura nel 2026 se rispetta tutti questi criteri:

  • Key exchange con Forward Secrecy: ECDHE o DHE
  • Autenticazione: RSA o ECDSA
  • Cifrario: AES-GCM, AES-CCM o ChaCha20-Poly1305 (modalità AEAD)
  • Hash: SHA-256, SHA-384, SHA-512 (mai SHA-1, mai MD5)
  • Lunghezza chiave: AES a 128 o 256 bit, ChaCha20 a 256

Cipher da evitare

Disabilita immediatamente queste famiglie:

  • NULL: nessuna cifratura (debug only)
  • EXPORT: chiavi corte legacy USA
  • RC4: rotto da bias statistici noti
  • DES, 3DES: troppo deboli, vulnerabile a Sweet32
  • MD5: collisioni dimostrate
  • CBC mode in TLS 1.0/1.1: padding oracle (BEAST, Lucky13)
  • Static RSA key exchange: niente Forward Secrecy
  • Anonymous DH (ADH, AECDH): no autenticazione

Lista raccomandata Mozilla

Il Mozilla SSL Configuration Generator propone tre profili: Modern (TLS 1.3 only), Intermediate (TLS 1.2+1.3), Old (legacy compatibility). Il profilo Intermediate è lo standard 2026:

ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES256-GCM-SHA384
ECDHE-RSA-AES256-GCM-SHA384
ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-RSA-CHACHA20-POLY1305
DHE-RSA-AES128-GCM-SHA256
DHE-RSA-AES256-GCM-SHA384

Ordine e priorità

L'ordine in cui si dichiarano le cipher conta: i client TLS 1.2 normalmente propongono la loro lista in ordine di preferenza e il server sceglie. Se imposti ssl_prefer_server_ciphers on, il server impone la sua preferenza. In TLS 1.3 la negoziazione è semplificata e la direttiva non ha effetto.

Best practice: metti per primo ChaCha20-Poly1305 per i client mobile (più efficiente su CPU senza AES-NI), poi AES-GCM 128 per i client desktop con hardware acceleration.

Configurazione Nginx

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Test di verifica

Strumenti utili:

  • SSL Labs Server Test: voto e dettaglio cipher
  • testssl.sh: script bash open source che scansiona ogni cipher
  • sslscan: tool CLI rapido
  • nmap --script ssl-enum-ciphers: enumerazione cipher

Mantenimento nel tempo

Le cipher considerate sicure cambiano col tempo. Imposta un calendario di revisione annuale, e tieni d'occhio gli avvisi del NIST e di Mozilla. Cipher considerate ottime oggi (es. AES-128-GCM) potrebbero essere indebolite da future scoperte.

Hai bisogno di aiuto?

Se vuoi gestione SSL dal team di G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?