Tokengine

Dall'installazione alla prima firma

Installa e abbina Tokengine

Dieci minuti scarsi, telefono alla mano. Ti serve il computer da cui usi la piattaforma: l'abbinamento passa da un QR mostrato lì.

Requisiti

  • Android: Android 11 (API 30) o successivo, con blocco schermo attivo — senza PIN, sequenza o password l'app non può creare la chiave di firma. Un'impronta registrata, dove il telefono la supporta; se non c'è, la conferma avviene con il blocco schermo.
  • iPhone: iOS 18 o successivo, con Face ID o Touch ID configurati e attivi. Su iPhone la biometria è obbligatoria: senza, l'app rifiuta l'abbinamento — il codice di sblocco non basta e non è mai usato per firmare.
  • Fotocamera, usata solo per leggere il QR di abbinamento.
  • Connessione dati o Wi-Fi.
  1. Scarica l'app

    Tokengine non è ancora sugli store. Su Android si installa da un file APK firmato; su iPhone arriva tramite TestFlight, con un invito.

    Le build sono oggi distribuite ai tester del progetto: l'APK, o l'invito TestFlight per iPhone, te li fornisce il referente della tua community. Quando esisterà un download pubblico, il pulsante comparirà qui.

  2. Installa e rispondi all'avviso Android

    Aprendo il file, Android avverte che stai installando da una sorgente esterna al Play Store e chiede di autorizzare l'applicazione con cui lo hai aperto — di solito il browser o il gestore file. Concedi il permesso, torna indietro e conferma l'installazione. È lo stesso avviso che vedresti per qualsiasi APK: significa che il sistema non può garantirti la provenienza del file, quindi installa solo il file che ti è stato indicato da chi gestisce la tua community. Su iPhone questo passo non esiste: TestFlight installa e aggiorna da sé.

  3. Apri l'app e inquadra il QR

    Al primo avvio Tokengine chiede di registrare un account e apre lo scanner. Il QR sta nella pagina del profilo del tuo provider di identità, sul computer da cui usi la piattaforma. Inquadralo: è l'unico momento in cui serve la fotocamera.

  4. Il telefono crea la sua chiave

    Subito dopo la scansione l'app genera una coppia di chiavi dentro l'hardware del telefono e registra presso il provider di identità soltanto la parte pubblica, insieme al modello del dispositivo. La parte privata non esce e non è leggibile nemmeno dall'app.

  5. Lo smart account viene calcolato sul telefono

    Dalla tua identità e dalla configurazione della rete l'app ricava da sola l'indirizzo del tuo smart account. Nessuno glielo comunica: se il telefono e la catena non calcolassero lo stesso indirizzo, la firma non varrebbe. Non dipende dalla chiave del telefono, quindi reinstallando l'app ritrovi lo stesso account. Lo trovi in Impostazioni, con un pulsante per copiarlo: è l'indirizzo su cui ricevi ciò che è tuo.

  6. Ricevi la prima richiesta di firma

    Quando avvii un'operazione dalla piattaforma, il telefono riceve una notifica. L'app funziona anche senza: finché è aperta controlla da sola se c'è qualcosa in attesa, quindi una notifica bloccata non ti lascia fermo. Nell'elenco degli account un pallino segna quello con una richiesta; se ne arriva una mentre stai guardando un altro account, un avviso ti dice per quale e ti ci porta.

  7. Leggi cosa stai firmando

    La schermata di approvazione dice su quale rete e con quale tuo account stai firmando, per quale community, e che cosa fa l'operazione: importi con la loro valuta, date come date, e accanto a ogni indirizzo il nome che l'app conosce. Rete, account e valute li sa il telefono, non la richiesta. Una richiesta scaduta non si firma più. Se qualcosa non torna, questo è il momento di fermarsi.

  8. Conferma con l'impronta o con Face ID

    L'ultimo passo è il prompt di sistema. Su Android: impronta, oppure il blocco schermo dove la biometria non è disponibile. Su iPhone: Face ID o Touch ID, sempre — il codice non è mai un'alternativa. È il sistema a chiederlo e a verificarlo — l'app riceve solo il permesso di usare la chiave, una volta, per questa firma.

  9. Approvare o rifiutare

    Approva firma l'operazione e la lascia proseguire. Rifiuta la chiude subito, e chi l'ha avviata lo vede: nessuna firma viene prodotta, niente resta in sospeso. Una richiesta lasciata lì scade da sola, e scaduta non è più approvabile.

Dettagli tecnici

Chiave e hardware

La chiave di firma è una P-256 (secp256r1) generata nell'hardware del telefono: su Android nel Keystore, con StrongBox quando il dispositivo lo offre e altrimenti nell'ambiente di esecuzione protetto; su iPhone nel Secure Enclave. La chiave è vincolata all'autenticazione dell'utente: ogni firma richiede una verifica biometrica — su Android anche il blocco schermo, su iPhone solo Face ID o Touch ID. Su iPhone, inoltre, la chiave è legata alla biometria registrata al momento della creazione: cambiare i volti o le impronte registrate la invalida, e l'account va riabbinato. Non esiste un backup della chiave privata, e disinstallare l'app la distrugge. Dopo una reinstallazione gli account ricompaiono come «da riabbinare» — su Android se è attivo il backup Google, su iPhone tramite un elemento del portachiavi che resta solo su quel telefono, mai su iCloud: basta scansionare di nuovo il QR, e il dispositivo di prima viene revocato perché la sua chiave non c'è più.

Se scolleghi il telefono o elimini l'account

L'account non si elimina dall'app: l'app non crea account, si abbina a uno che esiste già. Si elimina dal tuo profilo, alla voce «Elimina account», e dallo stesso profilo si scollega un singolo dispositivo. In tutti e due i casi il provider di identità revoca il telefono, e l'app se ne accorge al primo contatto: l'account resta nell'elenco, sotto «Non più associati», con la spiegazione. Da lì lo riabbini scansionando di nuovo il QR, e la chiave è ancora quella; oppure lo togli dall'elenco, e la sua chiave di firma lascia il telefono.

Che cosa viene firmato

Non un messaggio generico, ma una UserOperation ERC-4337: la struttura che descrive l'operazione dello smart account prima che arrivi sulla catena. Lo smart account è un contratto che verifica firme P-256 e il cui indirizzo si ricava in modo deterministico dalla factory e dalla tua identità, non dalla chiave del telefono, così il telefono lo calcola in locale invece di fidarsi di quello che gli viene detto.

Catalogo delle chiamate fidate

L'app porta con sé un catalogo firmato delle chiamate che sa descrivere, e ne verifica la firma con una chiave pubblica inclusa nella build. Una chiamata assente dal catalogo non viene mostrata con una descrizione approssimativa: viene rifiutata. La scelta è fail-closed, e significa che una funzione nuova richiede un catalogo aggiornato prima di poter essere approvata da un telefono.

Che cosa resta sui server

Nessuna chiave privata e nessuna seed phrase: il provider di identità conserva la chiave pubblica del dispositivo e le richieste di firma. Chi gestisce la piattaforma non può firmare al posto tuo, perché la chiave che conta è dentro il tuo telefono e chiede la tua impronta a ogni utilizzo.