Torna al blog
SicurezzaCrittografiaMatematica

Crittografia applicata: dalle basi a TLS

MUSTNODE SRL12 min di lettura

Proteggere i dati in transito e a riposo

Ogni sistema che scambia dati sensibili, dai gestionali ai dispositivi IoT, ha bisogno di crittografia. Capirne i fondamenti aiuta a usarla correttamente, evitando errori che vanificano la protezione.

Crittografia simmetrica

Nella crittografia simmetrica la stessa chiave kk cifra e decifra:

c=Ek(m),m=Dk(c)c = E_k(m), \qquad m = D_k(c)

E veloce ed efficiente (algoritmi come AES), ideale per grandi volumi di dati. Il problema e lo scambio della chiave: come fanno due parti a condividere kk in modo sicuro su un canale non sicuro?

Crittografia asimmetrica

La crittografia asimmetrica risolve il problema con una coppia di chiavi: una pubblica kpubk_{pub} e una privata kprivk_{priv}. Cio che viene cifrato con una si decifra solo con l'altra.

c=Ekpub(m),m=Dkpriv(c)c = E_{k_{pub}}(m), \qquad m = D_{k_{priv}}(c)

La sicurezza si basa su problemi matematici difficili, come la fattorizzazione di grandi numeri (RSA) o il logaritmo discreto su curve ellittiche (ECC). E piu lenta della simmetrica, quindi si usa principalmente per scambiare chiavi e firmare.

Funzioni di hash

Una funzione di hash crittografica HH trasforma un input di lunghezza arbitraria in un output di lunghezza fissa, con proprieta fondamentali:

  • deterministica: stesso input, stesso output;
  • resistente alle collisioni: difficile trovare m1m2m_1 \neq m_2 con H(m1)=H(m2)H(m_1) = H(m_2);
  • a senso unico: da H(m)H(m) non si risale a mm.

Gli hash (es. SHA-256) servono per verificare l'integrita e per le firme digitali.

Firme digitali

Una firma digitale combina hash e crittografia asimmetrica. Il firmatario cifra l'hash del messaggio con la propria chiave privata:

firma=Ekpriv(H(m))\text{firma} = E_{k_{priv}}\big(H(m)\big)

Chiunque puo verificarla con la chiave pubblica, ottenendo garanzie di autenticita (chi ha firmato) e integrita (il messaggio non e stato alterato).

TLS: tutto insieme

Il protocollo TLS, che protegge HTTPS, orchestra questi elementi:

  1. il client e il server negoziano gli algoritmi (handshake);
  2. usano la crittografia asimmetrica per autenticare il server (certificati) e scambiare in sicurezza una chiave di sessione;
  3. usano poi la crittografia simmetrica con quella chiave per cifrare velocemente tutto il traffico.
Client                          Server
  | ---- ClientHello --------->  |
  | <--- ServerHello + cert ---  |
  | --- scambio chiavi ------->  |  (asimmetrica)
  | <== canale cifrato AES ==>   |  (simmetrica)

Errori comuni da evitare

  • Non implementare crittografia propria: usare librerie consolidate e testate.
  • Gestire male le chiavi: la sicurezza dipende dalla protezione delle chiavi private.
  • Usare algoritmi obsoleti (MD5, SHA-1, TLS vecchi): vanno dismessi.
  • Dimenticare i dati a riposo: cifrare anche storage e backup.

Conclusione

La crittografia e un pilastro della sicurezza, ma solo se applicata correttamente. In MUSTNODE adottiamo TLS end-to-end, cifratura dei dati a riposo e una gestione rigorosa delle chiavi, in coerenza con un approccio security by design e con la compliance NIS2.

Articoli correlati

Altri approfondimenti dalla categoria Sicurezza.