PRINCIPIO
La crittografia a chiave pubblica che utilizza certificati X.509 permette di proteggere gli scambi di dati senza necessitare di un segreto condiviso in anticipo. Il mittente utilizza la chiave pubblica del destinatario (disponibile nel suo certificato X.509) per crittografare un segreto temporaneo, che sarà poi utilizzato per crittografare il contenuto con un algoritmo simmetrico performante.
DETTAGLI TECNICI
La crittografia con certificato X.509 combina due tipi di crittografia:
- Crittografia asimmetrica (o a chiave pubblica): utilizzata per lo scambio sicuro della chiave di sessione
- Crittografia simmetrica: utilizzata per la crittografia efficiente dei dati
L'applicazione offre due algoritmi di crittografia simmetrica tra cui scegliere:
- AES-GCM (Advanced Encryption Standard in modalità Galois/Counter con AAD - Additional Authenticated Data)
- ChaCha20-Poly1305 (Combinazione della cifratura a flusso ChaCha20 con l'autenticatore Poly1305)
PROCESSO DI CRITTOGRAFIA
- Il mittente recupera il certificato X.509 del destinatario contenente la sua chiave pubblica
- Viene generata una chiave simmetrica casuale (chiave di sessione)
- Questa chiave di sessione viene crittografata con la chiave pubblica del certificato X.509 del destinatario
- La chiave di sessione viene utilizzata con l'algoritmo scelto (AES-GCM o ChaCha20-Poly1305) per crittografare i dati
- Il messaggio finale contiene:
- La chiave di sessione crittografata
- I dati crittografati
- Le informazioni sull'algoritmo utilizzato
- I metadati di autenticazione
CARATTERISTICHE DEGLI ALGORITMI SIMMETRICI
AES-GCM
- Utilizza l'algoritmo AES con una dimensione di chiave di 256 bit
- Modalità GCM (Galois/Counter Mode) con AAD che assicura sia la riservatezza che l'autenticità
- Richiede un vettore di inizializzazione (IV) unico per ogni messaggio
- Standard ampiamente adottato e verificato
- Prestazioni eccellenti sui processori dotati di istruzioni AES-NI
ChaCha20-Poly1305
- Combina la cifratura a flusso ChaCha20 (256 bit) con l'autenticatore Poly1305
- Richiede un nonce unico per ogni messaggio
- Prestazioni eccellenti su dispositivi mobili e processori senza istruzioni AES-NI
- Adottato in protocolli moderni come TLS 1.3
INDIPENDENZA CRITTOGRAFICA
I due algoritmi (AES-GCM e ChaCha20-Poly1305) si basano su principi crittografici differenti:
- AES-GCM utilizza la crittografia a blocchi
- ChaCha20-Poly1305 utilizza la crittografia a flusso
Questa indipendenza presenta un importante vantaggio di sicurezza: se venisse scoperta una vulnerabilità in uno degli algoritmi, l'altro normalmente non sarebbe interessato dalla stessa vulnerabilità. Ciò offre una sicurezza aggiuntiva all'applicazione, che può passare da un algoritmo all'altro se necessario.