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.