KINDLE HOME

Security Key: Come Funzionano le Chiavi Hardware

FIDO2, YubiKey, Secure Element e Self-Sovereign Identity — guida tecnica per dev

Il problema: chi sei, digitalmente?

Ogni volta che fai login da qualche parte, stai rispondendo a una domanda fondamentale: "sei davvero tu?" La risposta, storicamente, è stata una password — una stringa di caratteri che solo tu dovresti conoscere. Il problema è che le password fanno schifo. Le persone le riusano, le dimenticano, le scrivono su post-it. I database vengono bucati e milioni di password finiscono in chiaro su forum russi. L'autenticazione basata su "qualcosa che sai" è strutturalmente fragile.

Le security key hardware — YubiKey, Thetis, SoloKeys, Google Titan — ribaltano il paradigma. Non ti chiedono di ricordare niente. Ti chiedono di avere qualcosa: un oggetto fisico, piccolo come una chiavetta USB, che dimostra la tua identità attraverso crittografia a chiave pubblica. Nessun segreto viene trasmesso in rete, nessun database contiene la tua "password", e un attaccante dall'altra parte del mondo non può fare nulla senza avere fisicamente il tuo device in mano.

FIDO2: lo standard che ha cambiato tutto

FIDO2 è uno standard aperto, sviluppato dalla FIDO Alliance (di cui fanno parte Google, Microsoft, Apple, Yubico e altri). Non è un prodotto, è un protocollo — come HTTP o SMTP. Si compone di due pezzi: WebAuthn (l'API web che il browser espone ai siti) e CTAP2 (il protocollo di comunicazione tra il browser e la chiave hardware). Insieme, permettono l'autenticazione senza password su qualsiasi sito che supporti lo standard.

Come funziona in pratica? Quando registri una security key su un sito, succede questo:

La chiave genera internamente una coppia di chiavi crittografiche (pubblica + privata) specifica per quel sito. La chiave pubblica viene inviata al sito e memorizzata. La chiave privata non lascia mai il dispositivo — è intrappolata nel chip sicuro della key, inaccessibile anche al proprietario. Quando fai login, il sito manda una "sfida" (challenge) — un numero casuale. La chiave firma questa sfida con la chiave privata e restituisce la firma. Il sito verifica la firma usando la chiave pubblica che ha memorizzato. Se corrisponde, sei dentro.

La bellezza di questo sistema è che anche se qualcuno buca il database del sito, trova solo chiavi pubbliche — che sono, per definizione, pubbliche. Non servono a niente per impersonarti. E la chiave privata non è mai uscita dal chip, quindi non può essere intercettata durante la trasmissione.

U2F: il predecessore che ancora funziona

Prima di FIDO2 c'era U2F (Universal 2nd Factor), il protocollo di prima generazione. U2F funziona solo come secondo fattore — cioè dopo che hai inserito la password. FIDO2 invece supporta anche l'autenticazione passwordless: la chiave hardware è sufficiente da sola (opzionalmente protetta da un PIN o biometria sul dispositivo).

Tutte le chiavi FIDO2 sono retrocompatibili con U2F, quindi se un sito supporta solo il vecchio protocollo, la tua YubiKey 5 funziona comunque. La differenza è concettuale: U2F dice "conferma che sei tu, oltre alla password". FIDO2 dice "dimostra che sei tu, punto".

Dentro la chiave: il Secure Element

Il cuore di una security key è il Secure Element — un microchip progettato specificamente per custodire segreti crittografici. È lo stesso tipo di tecnologia che trovi nelle carte di credito contactless e nei passaporti biometrici. Il Secure Element ha proprietà particolari: è resistente al tampering fisico (se provi ad aprirlo o analizzarlo con un microscopio elettronico, si autodistrugge o diventa illeggibile), e le operazioni crittografiche avvengono dentro il chip — la chiave privata non viene mai esportata nella memoria del computer.

Questo è fondamentalmente diverso da tenere una chiave GPG su disco. Un file su disco può essere copiato, un keylogger può intercettare la passphrase che lo decripta, un malware può estrarlo dalla memoria. Il Secure Element è un fortino hardware: le chiavi entrano ma non escono. Puoi solo chiedere al chip di eseguire operazioni con quelle chiavi — firmare qualcosa, decriptare qualcosa — ma non puoi mai leggere le chiavi stesse.

YubiKey 5 vs il resto del mondo

Non tutte le security key sono uguali. La YubiKey 5 NFC di Yubico è considerata il gold standard per un motivo: supporta praticamente tutti i protocolli esistenti. FIDO2 e U2F per l'autenticazione web. OpenPGP per firmare e criptare email e file (fino a 3 chiavi RSA 4096 o ECC). PIV (Personal Identity Verification) per certificati X.509, usato in ambito enterprise e governo. OATH-TOTP/HOTP per i codici temporanei tipo Google Authenticator, ma generati dal chip anziché dal telefono. E challenge-response con HMAC-SHA1 per sistemi offline.

Le chiavi più economiche come la Thetis Pro-A o la SoloKey supportano solo FIDO2/U2F. Vanno bene come secondo fattore per i login, ma non possono fare operazioni crittografiche avanzate. Se il tuo obiettivo è solo proteggere Gmail e GitHub con 2FA, una Thetis da 25 euro basta e avanza. Se vuoi usare la chiave come custode di identità crittografica — firmare commit Git, criptare file, custodire chiavi GPG — ti serve una YubiKey 5.

OpenPGP sulla YubiKey: la chiave che non perdi più

Ecco dove la cosa diventa interessante per chi ha il problema cronico di "non so mai dove ho messo la mia chiave GPG". Con una YubiKey 5, puoi spostare le tue chiavi GPG private dentro il Secure Element. Una volta dentro, non escono più — neanche tu puoi estrarle. Quando devi firmare o decriptare qualcosa, GPG chiede alla YubiKey di farlo internamente.

Il flusso è: generi le chiavi GPG sul computer (in un ambiente sicuro, possibilmente offline). Fai un backup delle chiavi su carta o disco criptato — questo è il tuo disaster recovery. Poi trasferisci le chiavi sulla YubiKey con il comando keytocard. Da quel momento, il computer non ha più le chiavi private: ha solo uno "stub" che dice "chiedi alla YubiKey". Se perdi la YubiKey, hai il backup. Se ti rubano il computer, le chiavi non ci sono.

Per il vault criptato con age, il flusso è simile ma diverso. age non supporta direttamente le smart card, ma supporta le chiavi SSH — e la YubiKey può custodire chiavi SSH via il protocollo FIDO2. In alternativa, puoi usare age con una passphrase (che tieni in testa) e la YubiKey come secondo fattore per accedere al sistema dove il vault risiede. I due livelli si complementano.

NFC: tocca e autentica

Le chiavi con NFC (Near Field Communication) funzionano anche senza USB. Appoggi la chiave sul retro del telefono e l'autenticazione avviene via radio a cortissimo raggio (meno di 4 centimetri). Funziona su Android nativamente e su iPhone dal 2023. L'NFC sulla security key usa lo stesso Secure Element dell'USB — cambia solo il canale di comunicazione, non la sicurezza.

Questo è anche il principio dei chip NFC impiantabili: un piccolo transponder passivo sotto la pelle che risponde quando un lettore NFC si avvicina. La differenza cruciale è che un impianto NFC come quelli di Dangerous Things è un tag passivo — contiene dati statici (un ID, un URL, una piccola quantità di testo) ma non ha un Secure Element. Non può eseguire operazioni crittografiche, non può generare firme digitali, non può custodire chiavi private in modo sicuro. È un post-it sotto la pelle, non un fortino.

Esistono impianti più avanzati (come l'Apex Flex di VivoKey) che contengono un vero chip Java Card con capacità crittografiche, ma il mercato è di nicchia, i form factor sono limitati, e la chirurgia — per quanto minima — è irreversibile in modo diverso da una chiavetta nel cassetto.

Challenge-Response: la sfida e la risposta

Il meccanismo challenge-response è il cuore di tutti questi protocolli. Funziona così: chi vuole verificare la tua identità ti manda un dato casuale (la "challenge"). Tu usi la tua chiave privata per trasformare quel dato in una risposta (la "response") tramite un'operazione crittografica. L'altro verifica la risposta usando la tua chiave pubblica.

Perché è più sicuro di una password? Perché la risposta è diversa ogni volta — dipende dalla challenge casuale. Se qualcuno intercetta una risposta, non può riusarla perché la prossima challenge sarà diversa. Se qualcuno cerca di replicare il sistema, non può perché non ha la chiave privata. E se qualcuno ti chiede di autenticarti per un sito diverso (phishing), la risposta è legata crittograficamente all'origine della richiesta — il protocollo FIDO2 include il dominio del sito nella challenge, quindi una key firmata per google.com non funziona su g00gle-login.com.

Questo è il motivo per cui le security key sono considerate phishing-proof: non puoi essere ingannato da un sito falso perché la crittografia stessa verifica l'identità del sito, non solo la tua.

Il modello di minaccia: da cosa ti proteggi?

Nessuna tecnologia di sicurezza ha senso senza un modello di minaccia — una risposta onesta alla domanda "da cosa mi sto proteggendo?". Per un developer freelance con una vita digitale distribuita tra dieci servizi, i rischi reali sono:

Password riusate o deboli — la security key elimina il problema alla radice. Phishing — la security key è immune per design crittografico. SIM swap (qualcuno clona il tuo numero per ricevere i codici SMS) — la security key non usa SMS. Compromissione del dispositivo — anche con un keylogger, non c'è password da intercettare. Perdita della chiave — qui il modello è "due chiavi identiche, una addosso e una in cassetta di sicurezza". Se ne perdi una, hai l'altra. Se le perdi entrambe, hai i codici di recovery che hai stampato e messo dal notaio.

Da cosa non ti protegge? Da qualcuno che ti punta una pistola e ti dice di sbloccare tutto (il cosiddetto "attacco da wrench" — una chiave inglese da 5 dollari è più efficace di qualsiasi hacking). E da te stesso, se perdi tutti i backup e le recovery. La sicurezza è un sistema, non un singolo device.

Self-Sovereign Identity: il futuro (forse)

Il concetto di Self-Sovereign Identity (SSI) porta l'idea della security key al suo estremo logico: tu sei l'unica autorità sulla tua identità digitale. Non Google, non Facebook, non lo Stato — tu. Il framework si basa su tre pilastri: DID (Decentralized Identifiers) — identificatori univoci che non dipendono da nessun registro centrale; Verifiable Credentials — attestazioni firmate digitalmente ("questa persona ha la patente", "questo developer ha contribuito a questo progetto"); e un wallet personale dove custodisci le tue credenziali.

La tecnologia esiste (W3C ha standardizzato i DID nel 2022), ma l'adozione è lenta perché richiede che le istituzioni rilascino credenziali verificabili — e le istituzioni si muovono alla velocità delle istituzioni. L'Europa ci sta provando con eIDAS 2.0 e il Digital Identity Wallet, previsto per il 2026-2027, ma la realtà è che siamo ancora in fase sperimentale.

Per un uso personale e pratico — un vault criptato, un'identità che sopravvive alla morte digitale, un sistema che non dipende da servizi terzi — non serve aspettare l'SSI. Basta una keypair ben custodita, un protocollo chiaro per gli eredi, e la disciplina di mantenere il sistema. La tecnologia c'è già tutta. Il pezzo che manca è sempre lo stesso: la decisione di sedersi e farlo.

Il piano pratico: cosa comprare e cosa fare

Se stai partendo da zero, ecco la sequenza sensata. Primo: compra due YubiKey 5 NFC. Una la usi quotidianamente, l'altra la metti in un posto sicuro (cassetta di sicurezza, busta dal notaio, casa dei genitori). Secondo: registra entrambe le chiavi su tutti i servizi critici — Google, GitHub, email, hosting. Sempre entrambe, così se ne perdi una puoi ancora accedere con l'altra. Terzo: genera una keypair GPG e spostala sulla YubiKey. Fai un backup cartaceo delle chiavi private prima del trasferimento. Quarto: scegli una passphrase mnemonica — una frase personale, lunga, che ricordi da anni. Usala per il vault criptato. Quinto: scrivi le istruzioni per i tuoi eredi. Dove sono le chiavi, come si accede al vault, chi contattare. Metti una copia dal notaio.

Non è un progetto da un pomeriggio, ma ogni singolo passo è fattibile in un'ora. E ogni passo completato è già un miglioramento rispetto a "la mia chiave GPG è da qualche parte, forse".

- FINE -
1