5.1.5. Backup e Ripristino¶
La funzionalità di Backup e Ripristino diventa rilevante quando l'Utente desidera cambiare dispositivo e/o Soluzione Wallet per accedere nuovamente alle Credenziali Elettroniche precedentemente emesse.
Il dispositivo mobile è stato perso, rubato, danneggiato o compromesso (ad esempio, a causa di accesso non autorizzato).
L'Utente sostituisce un'Istanza del Wallet esistente con una nuova istanza della stessa Soluzione Wallet.
L'Utente ha cambiato il proprio dispositivo mobile e deve configurare la Soluzione Wallet sul nuovo dispositivo.
L'Utente esegue un ripristino delle impostazioni di fabbrica sul telefono attuale e deve configurare nuovamente la Soluzione Wallet.
Nota
Per le Soluzioni Wallet basate sulle Specifiche Tecniche dell'IT Wallet, la migrazione verso una Soluzione Wallet diversa (nota come portabilità dei dati) può essere supportata seguendo la funzionalità di backup e ripristino descritta in questa sezione.
5.1.5.1. Flusso di Backup¶
Fig. 5.7 Flusso di backup¶
Di seguito, la descrizione dei passaggi di Fig. 5.7:
Passaggio 1: L'Utente seleziona l'opzione per eseguire il backup delle Credenziali memorizzate nell'Istanza del Wallet.
Passaggi 2-3: L'Istanza del Wallet, utilizzando le API di backup, seleziona casualmente 10 frasi chiave da un elenco di parole pre-generato e le mostra all'Utente. L'Utente DEVE conservare in modo sicuro la frase chiave scelta tra quelle proposte dal sistema (ad esempio, in un'app di gestione password) poiché sono fondamentali per il ripristino del backup.
Nota
Come evidenziato nell'ARF, la crittografia è necessaria perché il file di backup è considerato sensibile. Anche se un attaccante conosce solo gli identificatori del Fornitore di Credenziali, può dedurre i diversi tipi di Credenziali Elettroniche, il che costituisce una violazione della privacy dell'Utente.
Nota
Per estrarre la chiave dall'elenco delle parole selezionate DEVE essere applicata una funzione di derivazione della chiave. Password-Based-Key-Derivation Function 2 (PBKDF2) è tra le più utilizzate basate su RFC 2898 ed è raccomandata dal NIST 800-132. Esistono anche altre tecniche rilevanti disponibili e ampiamente utilizzate, come Bcrypt, Scrypt e Argon2. Maggiori dettagli su questo approccio possono essere trovati qui.
Nota
Il livello di complessità per PBKDF2 è implementato attraverso un conteggio di iterazioni, che dovrebbe essere impostato diversamente in base all'algoritmo di hashing interno utilizzato. Il valore consigliato per l'algoritmo di hashing SHA-256
è di 600000 iterazioni come indicato nell’OWASP Password Storage Cheatsheet.
Passaggio 4: L'Istanza del Wallet esegue le seguenti operazioni per creare il file JWT di backup.
Per ciascuna delle Credenziali con chiave vincolata all'hardware, aggiunge l'identificatore del Fornitore di Credenziali e il
credential_configuration_id
come voce nel JWT di backup.Firma il JWT di backup utilizzando la chiave privata la cui chiave pubblica è attestata nella Wallet Unit Attestation. La relativa chiave pubblica attestata dal Fornitore di Wallet è fornita nella Wallet Unit Attestation (claim
cnf
). L'Istanza del Wallet DEVE verificare la validità della Wallet Unit Attestation prima di firmare il JWT di backup.Aggiunge il JWT di backup firmato come voce al file di backup.
Cripta il file di backup utilizzando la frase chiave fornita.
Nota
Il JWT di Backup PUÒ contenere la cronologia delle transazioni per ogni voce di Credenziale all'interno del claim credentials_backup
.
Passaggio 5: All'Utente verrà richiesto di scegliere un'opzione di archiviazione per conservare in modo sicuro il file di backup. Le opzioni possono includere l'archiviazione nativa o soluzioni di archiviazione esterne, come l'archiviazione cloud, dispositivi USB, consegna via e-mail o altro.
Passaggio 6: Nel caso in cui l'Utente preferisca l'archiviazione nativa, il file di backup viene memorizzato sul dispositivo dell'Utente.
Un esempio non normativo dell'intestazione e del payload del JWT di backup è il seguente:
{
"alg": "ES256",
"typ": "wallet-unit-credentials-backup+jwt"
}
{
"timestamp":"2024-12-13T16:35:06+01:00",
"wallet_provider_id":"https://wallet-provider.example.org/",
"wallet_instance_version":"v1.0",
"wallet_attestation":"eyJhbGciOiJFUzI1NiIsImVVfQz.eyJpc3MiOiAiaH...LCAibmJ",
"credentials_backup": {
"https://issuer.example.org/v1.0/mdl": ["org.iso.18013-5.1.mDL"],
"https://eaa-provider.example.org/": ["dc_sd_jwt_EuropeanDisabilityCard"]
}
}
L'intestazione JOSE del JWT di backup DEVE contenere i seguenti parametri OBBLIGATORI:
Intestazione JOSE |
Descrizione |
Riferimento |
---|---|---|
alg |
Un identificatore di algoritmo di firma digitale come da registro IANA "JSON Web Signature and Encryption Algorithms". DEVE essere uno degli algoritmi supportati elencati nella Sezione Algoritmi Crittografici e NON DEVE essere impostato su |
|
typ |
DEVE essere impostato su |
N/A |
Il corpo del JWT di backup contiene i seguenti claim OBBLIGATORI:
Claim |
Descrizione |
---|---|
timestamp |
Timestamp UNIX con l'ora di creazione del file di backup. Questo valore viene aggiornato ogni volta che una nuova voce di Credenziale viene aggiunta al file di backup. |
wallet_provider_id |
DEVE essere impostato sull'identificatore univoco del Fornitore di Wallet. |
wallet_instance_version |
DEVE essere impostato sulla versione della Soluzione Wallet di cui è stato eseguito il backup. |
wallet_attestation |
DEVE essere impostato su un valore contenente il JWT della Wallet Unit Attestation. |
credentials_backup |
Oggetto che descrive le specifiche delle Credenziali di cui è stato eseguito il backup. Questo oggetto contiene un elenco di coppie nome/valore, dove ogni nome è un identificatore univoco del Fornitore di Credenziali. Questo identificatore viene utilizzato per avviare la fase di emissione. Il valore è un array di stringhe univoche. Ogni stringa corrisponde al |
5.1.5.2. Flusso di ripristino per Credenziale con associazione hardware¶
Fig. 5.8 Flusso di Ripristino¶
Considerando che l'Utente ha inizializzato la nuova Istanza del Wallet e questa è in stato attivo avendo ottenuto un nuovo Attestato Elettronico di Dati di Identificazione Personale, questa specifica allenta il requisito dell'ARF riguardante l'aggiunta dell'Attestato Elettronico di Dati di Identificazione Personale nel file di backup. Di seguito, la descrizione dei passaggi di Fig. 5.8:
Passaggi 1-6: L'Utente desidera ripristinare le Credenziali Elettroniche utilizzando il backup precedentemente creato con la propria Istanza del Wallet.
L'Utente seleziona ripristina backup delle Credenziali Elettroniche nell'app dell'Istanza del Wallet e viene fornito all'Utente un prompt con la funzione di importazione. Il file di backup da importare può essere fornito utilizzando un archivio locale o una posizione remota utilizzando anche un archivio cloud, e quindi inviare le frasi chiave di recupero.
Per verificare l'autenticità del file, l'Istanza del Wallet DEVE verificare la firma del JWT di backup per garantirne l'autenticità. Per fare ciò, estrae prima il JWT della Wallet Unit Attestation dal claim wallet_attestation
e ottiene la relativa chiave pubblica utilizzando la Wallet Unit Attestation (claim cnf
).
Passaggi 7-8: L'Istanza del Wallet per ogni voce di Credenziale con associazione hardware nel payload del JWT di backup esegue i seguenti passaggi:
Estrae l'identificatore del Fornitore di Credenziali e il
credential_configuration_id
dalla voce. Il primo viene utilizzato per identificare il Fornitore di Credenziali e ottenere i suoi metadati, mentre il secondo verrà utilizzato per segnalare il tipo di Credenziale al Fornitore di Credenziali.Utilizzando l'identificatore del Fornitore di Credenziali, l'Istanza del Wallet ottiene i metadati del Fornitore di Credenziali e effettua una richiesta di riemissione al Fornitore di Credenziali fornendo la nuova Associazione Crittografica con l'Utente.
Nota
L'Istanza del Wallet NON DEVE verificare la scadenza della Wallet Unit Attestation poiché il suo scopo principale è consentire all'Istanza del Wallet di verificare l'autenticità del file di backup assicurandosi che sia stato creato e firmato da un'Istanza del Wallet di uno specifico Fornitore di Wallet.