Un hardware wallet non viene utilizzato soltanto per inviare crypto. In molte applicazioni Web3 può anche firmare messaggi, ordini, autorizzazioni e richieste strutturate che non producono immediatamente una transazione on-chain. Tra gli standard più importanti per questo tipo di interazione c’è EIP-712, noto anche come typed data signing.
La firma EIP-712 può migliorare la leggibilità rispetto a una lunga sequenza esadecimale, perché organizza il contenuto in campi comprensibili. Non elimina però i rischi: un messaggio firmato può autorizzare un’operazione futura, permettere a un contratto di muovere token o vincolare l’utente a condizioni che non ha verificato.
Capire la differenza tra una transazione e una firma EIP-712, sapere che cosa viene effettivamente mostrato sul dispositivo e riconoscere i casi di blind signing è quindi essenziale per usare un hardware wallet con marketplace, protocolli DeFi e applicazioni decentralizzate.
Che cos’è una firma EIP-712
Una firma EIP-712 è una firma crittografica applicata a un messaggio strutturato. Invece di firmare una semplice stringa o dati privi di contesto, l’applicazione suddivide il contenuto in elementi con un nome e un tipo.
Un messaggio può contenere, per esempio, un dominio che identifica l’applicazione, un tipo di operazione, un indirizzo, un importo, una scadenza e un nonce. La struttura consente al wallet compatibile di presentare alcuni campi in forma leggibile prima della conferma.
Il dispositivo non invia la firma alla blockchain. La restituisce all’applicazione, che può poi trasmetterla a un server, a un relayer o a uno smart contract. In un secondo momento quella firma può essere verificata e utilizzata per eseguire un’azione, se le regole del protocollo lo consentono.
La chiave privata resta all’interno dell’hardware wallet. Questo è il principale vantaggio di sicurezza: l’applicazione può ottenere la firma, ma non dovrebbe mai poter estrarre la chiave privata o la seed phrase.
Firma EIP-712 e transazione: la differenza da non confondere
Una transazione on-chain contiene normalmente informazioni come destinatario, valore, dati della chiamata, commissione e nonce della rete. Deve essere trasmessa alla blockchain e, una volta inclusa in un blocco, può modificare lo stato di un account o di uno smart contract.
Una firma EIP-712, invece, è un’autorizzazione off-chain. Al momento della firma non viene necessariamente speso gas e non è detto che avvenga alcun trasferimento. La firma può però avere conseguenze economiche in seguito, quando un’altra parte la presenta a un contratto.
Un esempio tipico è un ordine su un marketplace: l’utente firma off-chain i dettagli dell’ordine e l’acquirente o il marketplace invia successivamente una transazione per eseguirlo. Un altro caso riguarda un’autorizzazione a spendere token, come alcune varianti di permit. Il fatto che non compaia una transazione immediata non significa quindi che il messaggio sia innocuo.
La distinzione pratica è questa: una transazione chiede direttamente alla rete di eseguire un’azione; una firma EIP-712 consegna a qualcuno una prova crittografica che potrebbe consentire di eseguire un’azione ora o più avanti.
Quali componenti bisogna controllare
Prima di firmare, è utile esaminare almeno quattro gruppi di informazioni.
- Il dominio: contiene elementi che aiutano a identificare l’applicazione, come nome, versione, chain ID e indirizzo del contratto associato. Il dominio non è una garanzia assoluta di legittimità, ma un’incoerenza è un segnale da approfondire.
- Il tipo di messaggio: descrive l’operazione richiesta. Può trattarsi di un ordine, di un’autorizzazione, di un trasferimento o di una delega.
- I valori: comprendono indirizzi, importi, token, scadenze, nonce e altri parametri. Sono i dati che determinano concretamente che cosa può essere fatto.
- La validità temporale: una deadline o una scadenza limita il periodo in cui la firma dovrebbe essere utilizzabile. Un messaggio senza scadenza, quando l’applicazione non ne ha una ragione chiara, merita particolare cautela.
Il chain ID aiuta a separare reti diverse, mentre l’indirizzo del contratto può indicare quale componente on-chain è destinata a verificare la firma. Questi dati devono essere valutati insieme: un nome noto nel campo del dominio non compensa un contratto inatteso o un destinatario errato.
Che cosa mostra davvero l’hardware wallet
La protezione dipende anche dalla qualità dell’integrazione tra applicazione e dispositivo. Un hardware wallet può ricevere i dati strutturati e mostrarne una parte in forma leggibile, ma il livello di dettaglio varia in base al modello, al firmware, alla rete, allo standard utilizzato e al software con cui viene collegato.
In alcuni casi il display mostra chiaramente il nome del campo e il relativo valore. In altri può mostrare soltanto una rappresentazione abbreviata, dati generici oppure una richiesta di firma non completamente interpretata. Quando il dispositivo non riesce a tradurre il contenuto in modo leggibile si parla comunemente di blind signing.
Blind signing non significa automaticamente che il messaggio sia malevolo. Significa però che l’utente non riesce a verificare sul dispositivo, con sufficiente chiarezza, che cosa sta approvando. La sicurezza della firma dipende allora in misura maggiore dal computer, dal browser e dall’interfaccia dell’applicazione, cioè dagli ambienti più esposti a malware e phishing.
Un’importante regola è non confondere ciò che appare nel browser con ciò che viene verificato sul dispositivo. Il computer può mostrare un testo rassicurante, mentre i dati effettivamente firmati possono contenere un indirizzo o un importo diverso. Il display del wallet è il riferimento più importante, ma solo se riesce a interpretare e presentare correttamente la richiesta.
I rischi principali delle firme typed data
Il primo rischio è firmare un’autorizzazione senza comprenderne l’effetto. Una firma può permettere a un contratto di utilizzare token, accettare un ordine o eseguire una delega. L’assenza di una commissione immediata può indurre ad abbassare la soglia di attenzione.
Il secondo rischio è il phishing tramite un sito contraffatto. Una pagina può imitare un marketplace o un protocollo conosciuto e proporre un messaggio apparentemente normale. Il dominio visualizzato nella pagina non prova che la richiesta provenga dall’applicazione autentica.
Il terzo rischio riguarda i dati non leggibili. Se l’hardware wallet mostra “blind signing”, dati esadecimali o informazioni troppo generiche, l’utente non dispone di un controllo affidabile sul contenuto. In particolare, non dovrebbe firmare alla cieca quando sono coinvolti asset di valore o autorizzazioni a lungo termine.
Esiste poi il rischio di replay o riutilizzo, che dipende dalle regole dell’applicazione e del contratto. Non tutte le firme sono utilizzabili nello stesso modo, ma una firma valida può essere presentata da un soggetto diverso da quello immaginato dall’utente se il protocollo non gestisce correttamente nonce, scadenza, destinatario e dominio.
Infine, una firma non equivale necessariamente a un trasferimento diretto. Può essere una componente di una procedura più ampia: l’operazione pericolosa potrebbe avvenire solo in un secondo momento, tramite una transazione separata o un relayer.
Procedura pratica prima di firmare
La verifica dovrebbe iniziare dall’azione avviata. Chiediti che cosa stai cercando di fare: acquistare un NFT, autorizzare un ordine, collegare un account, depositare fondi o consentire a un contratto di utilizzare token. Se il messaggio non è coerente con l’azione appena iniziata, interrompi la procedura.
Controlla quindi l’applicazione e il dominio con cui hai interagito. Non usare link ricevuti tramite messaggi urgenti, commenti o comunicazioni non verificate. Apri il servizio da un segnalibro o da una fonte affidabile e verifica che il wallet sia collegato all’account e alla rete corretti.
Confronta sul dispositivo il tipo di richiesta, gli indirizzi e gli importi. Un indirizzo abbreviato, un campo sconosciuto o una destinazione che non riconosci devono essere trattati come segnali di stop. Quando il messaggio riguarda token, verifica anche il contratto e la rete, non soltanto il simbolo visualizzato dall’interfaccia.
Controlla la scadenza e l’eventuale nonce. Una firma senza limite temporale o con una durata sproporzionata rispetto all’operazione aumenta l’esposizione. Se l’applicazione offre un modo per impostare una validità breve o revocare un’autorizzazione, valuta queste funzioni prima di procedere.
Infine, leggi qualsiasi avviso relativo al blind signing. Se l’hardware wallet non può mostrare il contenuto in modo comprensibile, non cercare di superare l’avviso solo perché la pagina lo presenta come un passaggio normale. Il blocco è un’informazione di sicurezza, non un errore da ignorare.
Cosa fare dopo una firma sospetta
Se hai firmato un messaggio che non riconosci, evita di inviare immediatamente altre transazioni dalla stessa applicazione. Prima raccogli i dettagli della firma, dell’eventuale contratto coinvolto e del dominio mostrato dal wallet.
Controlla gli approval e le autorizzazioni associate all’indirizzo utilizzando strumenti affidabili e compatibili con la rete interessata. Revocare un’autorizzazione può richiedere una transazione e una commissione, ma la revoca non annulla necessariamente un’operazione già eseguita né recupera fondi trasferiti.
Se temi che la seed phrase sia stata esposta, la situazione è diversa e più grave: una semplice revoca non basta, perché chi possiede la chiave può firmare nuove transazioni. In quel caso è necessario valutare una migrazione verso un nuovo wallet, senza inserire la seed phrase in siti, moduli o software non affidabili.
Una firma leggibile non è una garanzia assoluta
L’EIP-712 migliora la trasparenza rispetto alla firma di dati completamente opachi, ma non sostituisce la verifica del protocollo e del contratto. Un messaggio può essere perfettamente leggibile e comunque concedere un’autorizzazione eccessiva, avere una scadenza troppo lunga o indirizzare verso un contratto non desiderato.
L’hardware wallet protegge la chiave privata e offre un punto di controllo separato dal computer. Non può però stabilire se un’applicazione sia onesta, se un contratto sia sicuro o se l’utente abbia interpretato correttamente il significato economico della firma.
La procedura più prudente consiste quindi nel trattare ogni firma typed data come un’autorizzazione potenzialmente significativa: identificare l’azione, controllare dominio e rete, leggere i campi sul dispositivo, verificare importi e indirizzi, preferire richieste con scadenza e rifiutare ciò che resta incomprensibile. Una firma senza gas immediato può essere comoda, ma non è priva di conseguenze.


