2026-07-14

Crittografia per Sviluppatori Web

Crittografia per Sviluppatori Web

La crittografia è la spina dorsale della sicurezza web. Comprendere i concetti fondamentali aiuta a fare scelte implementative corrette ed evitare insidie comuni.

Crittografia Simmetrica

Stessa chiave cifra e decifra. Veloce, adatta per grandi volumi dati. AES-GCM (Galois/Counter Mode) è lo standard moderno: crittografia autenticata (confidenzialità + integrità). Dimensioni chiave: 128, 192, 256 bit. ChaCha20-Poly1305: Alternativa, più veloce su mobile/ARM, niente accelerazione hardware necessaria. Non usare mai modalità ECB. Usa sempre crittografia autenticata (AEAD).

Crittografia Asimmetrica (Chiave Pubblica)

Coppia chiavi: chiave pubblica (cifra/verifica), chiave privata (decifra/firma). Più lenta, usata per scambio chiavi e firme. RSA: Legacy, minimo 2048-bit, 4096-bit consigliato. In fase di dismissione. ECC (Elliptic Curve Cryptography): Chiavi più piccole, più veloce, standard moderno. Curve: P-256 (NIST), Curve25519 (X25519 per scambio chiavi, Ed25519 per firme). Preferita per nuovi sistemi.

Hashing

Funzione a senso unico, deterministica, output fisso. SHA-256 (famiglia SHA-2): Standard per integrità, blockchain. SHA-3 (Keccak): Più recente, struttura interna diversa. BLAKE2/BLAKE3: Più veloce di SHA-2, ugualmente sicuro. Per password: MAI usare hash veloci. Usa Argon2id (vincitore PHC), bcrypt, scrypt, o PBKDF2 con alto conteggio iterazioni. Salt deve essere univoco per password.

Firme Digitali

Provano autenticità e integrità. Firma con chiave privata, verifica con chiave pubblica. RSA-PSS (Probabilistic Signature Scheme): Migliore di PKCS#1 v1.5. ECDSA: Elliptic curve DSA, usato in JWT (ES256), Bitcoin. EdDSA (Ed25519): Deterministico, più veloce, resistente a side-channel, scelta moderna.

Derivazione Chiavi

HKDF (HMAC-based Key Derivation Function): Deriva chiavi multiple da chiave master. PBKDF2: Password-based, iterazioni configurabili. Argon2: Memory-hard, resistente ad attacchi GPU/ASIC. Usa per password hashing e key stretching.

TLS/SSL in Pratica

TLS 1.3: Solo cipher AEAD (AES-GCM, ChaCha20-Poly1305). Scambio chiavi: solo (EC)DHE (forward secrecy). 0-RTT per resumption (rischio replay). Certificato: X.509, ECDSA P-256 o RSA-2048+. OCSP Stapling, Certificate Transparency.

JWT (JSON Web Tokens)

Header (alg, typ), Payload (claims), Firma. Algoritmi: RS256 (RSA), ES256 (ECDSA), EdDSA. Mai usare 'none' o HS256 per client pubblici. Valida: exp, nbf, iss, aud. Scadenza breve, refresh token. Memorizza in cookie HttpOnly Secure SameSite, non localStorage.

Web Crypto API

Crypto nativo browser: window.crypto.subtle. Supporta: AES-GCM, RSA-OAEP, ECDSA, Ed25519, HKDF, PBKDF2, SHA-256/384/512. Chiavi non-estraibili per storage hardware-backed. Usa invece di crypto-js o librerie simili.

Insidie Comuni

Farsi la propria crypto. Usare modalità ECB. Riutilizzare IV/nonce. Hardcodare chiavi. Memorizzare segreti in codice client-side. Non validare certificati. Usare algoritmi deboli (MD5, SHA-1, DES, RC4). Attacchi timing su confronto stringhe (usa confronto constant-time).

Lavoriamo insieme

Hai bisogno di maggiori informazioni, aiuto con il tuo progetto o di sviluppare un'idea?

Che si tratti di una domanda semplice, un dubbio rapido o una chat di 5 minuti, mandami un messaggio—non costa nulla e sono sempre pronto ad aiutare. Mi piace ascoltare per capire il problema, essere creativo nelle soluzioni e puntare a idee semplici, affidabili e non complicate da realizzare rapidamente.

Contattami

Cambia Argomento

Scegli un argomento specializzato da esplorare: