f in x
Crittografia e Sicurezza Dati: La Guida Pillar Definitiva per Sviluppatori e Professionisti IT
> cd .. / HUB_EDITORIALE > Visualizza in Inglese
Sicurezza Informatica

Crittografia e Sicurezza Dati: La Guida Pillar Definitiva per Sviluppatori e Professionisti IT

[2026-06-15] Author: Ing. Calogero Bono

Se i dati che gestisci non sono cifrati, non puoi dire di avere una strategia di sicurezza. Non è un'opinione: è il punto di partenza. Ogni giorno vediamo aziende che conservano password in chiaro, usano TLS vecchio o ignorano la firma digitale. Noi, di Meteora Web, lavoriamo su questi temi dal 2017 e abbiamo visto cosa succede quando la crittografia viene trattata come un accessorio invece che come un fondamento. Qui trovi tutto quello che devi sapere per progettare sistemi che proteggono i dati davvero.

Fondamenti di Crittografia: Simmetrica, Asimmetrica e Hash

La crittografia non è magia, è matematica applicata. Tre famiglie coprono il 99% dei casi d'uso:

Crittografia simmetrica

Stessa chiave per cifrare e decifrare. Veloce, efficiente, ma richiede un canale sicuro per scambiare la chiave. AES è lo standard. Lo usiamo per cifrare file, dischi, sessioni TLS.

Crittografia asimmetrica

Due chiavi correlate: una pubblica per cifrare, una privata per decifrare. RSA ed ECC sono i pilastri. Perfetta per scambio di chiavi e firma digitale. Il costo computazionale è più alto, ma risolve il problema della distribuzione delle chiavi.

Funzioni hash

Non cifrano, ma producono un'impronta digitale univoca. SHA-256 è il minimo sindacale. Usate per integrità, password storage, verifiche. MD5 e SHA-1 sono morti: non usarli mai.

Errore comune: pensare che hash = crittografia. L'hash è una strada a senso unico: non puoi tornare indietro. La crittografia è reversibile (con la chiave giusta).

AES, RSA, ECC: Algoritmi Moderni a Confronto

AES (Advanced Encryption Standard)

AES-256 è lo standard per la crittografia simmetrica. Usato da governi, banche, cloud. Supporta modalità come GCM (autenticazione integrata) e CBC. Noi consigliamo AES-256-GCM per dati in transito e a riposo. Esempio pratico in Python:

Sponsored Protocol

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
import os

key = os.urandom(32)  # AES-256
iv = os.urandom(12)   # GCM usa 96 bit
cipher = Cipher(algorithms.AES(key), modes.GCM(iv))
encryptor = cipher.encryptor()
plaintext = b"Dati sensibili del cliente"
ciphertext = encryptor.update(plaintext) + encryptor.finalize()
# encryptor.tag contiene il tag di autenticazione

RSA

Asimmetrico, basato sulla fattorizzazione. Chiavi da 2048 o 4096 bit. Lento, ma ancora usato per scambio di chiavi e firme. Problema: con l'avvento del quantum, RSA è a rischio. Per ora, 4096 bit è ancora sicuro.

ECC (Elliptic Curve Cryptography)

La stessa sicurezza di RSA con chiavi molto più corte (256 bit ECC ≈ 3072 bit RSA). Più veloce, meno banda. Usato in TLS 1.3, Signal, Bitcoin. Curva consigliata: Curve25519 (X25519 per scambio chiavi, Ed25519 per firme).

Noi, di Meteora Web, abbiamo standardizzato su ECC per i nuovi progetti. Il risparmio in termini di performance e spazio è netto.

TLS e HTTPS: Handshake, Certificati e Versioni Sicure

TLS protegge la comunicazione tra client e server. Oggi dovresti usare solo TLS 1.2 o 1.3. TLS 1.0 e 1.1 sono deprecati. L'handshake stabilisce una chiave simmetrica temporanea usando asimmetrica (tipicamente ECDHE). Il certificato X.509 firmato da una CA garantisce l'identità del server.

Sponsored Protocol

Best practice

  • Disabilita TLS 1.0/1.1 e SSL 3.0
  • Usa certificati con chiavi ECDSA (Curve P-256 o P-384)
  • Abilita HSTS e Certificate Transparency
  • Rinnova automaticamente con Let's Encrypt

Noi abbiamo automatizzato i rinnovi SSL per decine di clienti. Su un server, il rinnovo manuale si era rotto: il sito andava in errore. Da allora ogni nostra configurazione ha un cron job per Certbot con notifica su Slack.

JWT Sicuro: Signing, Verification e Vulnerabilità

JSON Web Token è ovunque: autenticazione, sessioni API, OAuth. Ma se usato male diventa una falla. I punti critici:

Algoritmi e signature

Usa solo algoritmi asimmetrici (RS256, ES256). HMAC (HS256) con chiave condivisa è accettabile solo se la chiave è segreta e ruotata. Mai accettare 'none' come algoritmo. Vulnerabilità classica: man-in-the-middle che cambia l'header alg a 'none'.

Claims e validazione

  • Verifica sempre `iss`, `aud`, `exp`, `nbf`
  • Non inserire dati sensibili nel payload (non è cifrato)
  • Usa refresh token brevi e rotazione
import jwt
private_key = open('private.pem').read()
payload = {
    "sub": "user123",
    "role": "admin",
    "exp": 1690000000
}
token = jwt.encode(payload, private_key, algorithm="RS256")
# Verifica
try:
    decoded = jwt.decode(token, public_key, algorithms=["RS256"])
except jwt.ExpiredSignatureError:
    print("Token scaduto")

GPG e Firma Digitale: Cifrare e Firmare File ed Email

GnuPG (GPG) implementa OpenPGP. Perfetto per cifrare file, email, e verificare l'autenticità. Noi lo usiamo per scambiare documenti sensibili con i clienti.

Operazioni base

gpg --gen-key  # genera coppia di chiavi
chmod 700 ~/.gnupg
gpg --encrypt --recipient "email@cliente.it" report.pdf
gpg --decrypt report.pdf.gpg
gpg --sign report.pdf  # firma
gpg --verify report.pdf.sig report.pdf

Attenzione: la chiave pubblica va distribuita in modo sicuro (keyserver, sito HTTPS, scambio di persona). La chiave privata mai condivisa, mai su cloud.

Sponsored Protocol

Password Hashing: bcrypt, Argon2 e Perché MD5 è Morto

Le password non vanno mai memorizzate in chiaro e nemmeno con hash veloci come MD5 o SHA-256. Servono algoritmi lenti e con sale: bcrypt, scrypt, Argon2. Argon2id è il vincitore del concorso PHC e il più raccomandato oggi.

from argon2 import PasswordHasher
ph = PasswordHasher()
hash = ph.hash("miaPasswordSicura")
print(hash)
# $argon2id$v=19$m=65536,t=3,p=4$...

# Verifica
try:
    ph.verify(hash, "passwordSbagliata")
except:
    print("Fallita")

Noi vediamo ancora aziende che usano MD5 per le password. Un database leak e tutte le password sono compromesse in pochi secondi. Argon2id con sale unico per ogni utente è l'unica strada.

Crittografia End-to-End: Signal Protocol e Applicazioni

L'E2EE garantisce che solo il mittente e il destinatario possano leggere il messaggio. Il Signal Protocol combina curve di Diffie-Hellman, ratchet e firme. È lo standard per WhatsApp, Signal, Messenger (opzionale).

I principi chiave:

  • Forward secrecy: se una chiave viene compromessa, i messaggi passati restano segreti.
  • Future secrecy: anche la chiave futura è protetta.
  • Doppio ratchet: rinnova continuamente le chiavi.

Noi abbiamo integrato E2EE in una piattaforma proprietaria di messaggistica per un cliente sanitario. I dati devono restare privati anche dal nostro server. Abbiamo usato la libreria Olm (Matrix).

Sponsored Protocol

Quantum Computing e Crittografia: Verso gli Algoritmi Post-Quantum

I computer quantistici, se sufficientemente potenti, romperanno RSA, ECC e Diffie-Hellman (algoritmo di Shor). Simmetrica (AES) regge raddoppiando la chiave. La comunità sta standardizzando algoritmi post-quantum: CRYSTALS-Kyber (scambio chiavi), CRYSTALS-Dilithium (firme), FALCON, SPHINCS+.

Cosa fare ora?

  • Monitorare le raccomandazioni NIST.
  • Iniziare a supportare algoritmi ibridi (es. X25519+Kyber).
  • Non aspettare il 2030: la migrazione richiederà anni.

Noi stiamo già testando Kyber in ambienti di prova. Il consiglio è: aggiorna le librerie crittografiche e tieni d'occhio le versioni.

Key Management: Generazione, Distribuzione, Rotazione

Gestire le chiavi è più difficile della crittografia stessa. Errori comuni: hardcoding delle chiavi nel codice, rotazione inesistente, backup non protetti.

Pratiche minime

  • Genera chiavi con entropia sufficiente (urandom, /dev/random).
  • Usa un vault: HashiCorp Vault, AWS KMS, Azure Key Vault.
  • Ruota le chiavi periodicamente (ogni 90 giorni per HMAC, ogni anno per chiavi asimmetriche).
  • Non condividere mai chiavi via email, chat, o codice.
# Generare una chiave AES-256 sicura su Linux
dd if=/dev/urandom bs=32 count=1 | base64 > aes-key.txt
chmod 600 aes-key.txt

Noi abbiamo visto un cliente con la chiave di cifratura del database in un file .env su un server condiviso. Chiunque avesse accesso al server poteva decifrare tutto. Oggi usano Vault.

Crittografia in Python con cryptography Library

La libreria cryptography è il gold standard in Python. Fornisce API di alto e basso livello, sicure per default.

Sponsored Protocol

Esempio completo: cifrare un file con AES-GCM

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import serialization
import os

def encrypt_file(key, input_path, output_path):
    iv = os.urandom(12)
    cipher = Cipher(algorithms.AES(key), modes.GCM(iv))
    encryptor = cipher.encryptor()
    with open(input_path, 'rb') as f:
        plaintext = f.read()
    ciphertext = encryptor.update(plaintext) + encryptor.finalize()
    with open(output_path, 'wb') as f:
        f.write(iv)
        f.write(encryptor.tag)
        f.write(ciphertext)

# Uso
key = os.urandom(32)
encrypt_file(key, 'report.pdf', 'report.pdf.enc')

Vedi la documentazione ufficiale per dettagli.

In sintesi — Cosa fare adesso

  1. Fai un audit delle tue pratiche crittografiche. Dove usi hash deboli? TLS vecchi? Chiavi hardcoded?
  2. Standardizza su AES-256-GCM per dati simmetrici, X25519/Ed25519 per asimmetrici, Argon2id per password.
  3. Implementa un sistema di key management (Vault o KMS) e rotazione automatica.
  4. Aggiorna le librerie e tieni d'occhio le migrazioni post-quantum.
  5. Forma il tuo team: la crittografia è un investimento, non un costo. Come dicevamo, veniamo dalla contabilità: proteggere i dati è come proteggere il capitale.

Se vuoi approfondire, leggi la nostra guida su OSINT e Penetration Testing per capire come le vulnerabilità crittografiche vengono scoperte. Oppure consulta MDN Web Security per linee guida aggiornate.

Ing. Calogero Bono

> AUTHOR_EXTRACTED

Ing. Calogero Bono

Ingegnere Informatico, co-fondatore di Meteora Web. Esperto in architetture software, sicurezza informatica e sviluppo sistemi scalabili.
[ Read Full Dossier ]

> METEORA_WEB // WEB AGENCY

Costruiamo la presenza digitale che la tua azienda merita.

Siti web, social, pubblicità online, e-commerce e hosting performante: ingegnerizzati con metodo da ingegneri informatici a Sciacca, per tutta Italia.

> MW_JOURNAL

> READ_ALL()