15.4.1.3. Matrice di Test per la Soluzione Wallet

Questa sezione fornisce l'insieme di casi di test per verificare la conformità di un'implementazione di Soluzione Wallet alle regole tecniche definite nell'ecosistema IT-Wallet. Il piano di test è basato sui requisiti obbligatori (dichiarazioni MUST) estratti dai seguenti documenti:

  • Wallet Solution

  • Wallet Instance Revocation

  • Wallet Attestation Issuance

  • Backup and Restore

Test Case ID

Purpose

Description

Expected Result

WS-001

Wallet Initialization

Il Wallet Solution DEVE assicurare che ogni Wallet Instance sia generata secondo le specifiche e includa un identificatore univoco e chiavi crittografiche legate a un elemento sicuro.

Una Wallet Instance conforme viene generata con identificatori corretti e legami sicuri.

WS-002

User Interaction

Il Wallet Solution DEVE richiedere e ottenere il consenso esplicito dell'Utente durante l'inizializzazione delIl Wallet Instance.

Il Wallet Instance viene attivata solo dopo aver ottenuto il consenso verificabile dell'Utente.

WS-003

Security

Il Wallet Solution DEVE memorizzare le chiavi private all'interno di un Secure Hardware Element o storage sicuro equivalente.

Tutti i materiali delle chiavi private sono inaccessibili dal sistema operativo o da qualsiasi applicazione esterna alIl Wallet Solution.

WS-004

Attestation

Il Wallet DEVE essere in grado di generare e presentare una Wallet Attestation quando richiesto dalle Relying Party o dagli Issuer.

Attestation valide e verificabili vengono generate includendo prove di integrità e origine.

WS-005

Attestation

Il Wallet DEVE supportare l'elaborazione delle Wallet Attestation Request e la generazione di risposte appropriate in conformità con eIDAS.

Il Wallet interpreta e soddisfa correttamente le richieste di attestation includendo i dati del soggetto e le firme crittografiche.

WS-006

Remote Credential Presentation

Il Wallet Solution DEVE implementare sia il flusso di presentazione di prossimità che remoto, assicurando la selezione delle Verifiable Credential, l'integrità e l'interazione dell'Utente.

La presentazione delle Verifiable Credential ha successo, è corretta e sotto il controllo dell'Utente.

WS-007

Credential Issuance

Il Wallet DEVE supportare il flusso Issuer per ricevere e memorizzare Verifiable Credentials.

Le Credential vengono memorizzate in modo sicuro e analizzate correttamente secondo la struttura definita.

WS-008

Revocation

Il Wallet DEVE permettere all'Utente di attivare una Wallet Instance Revocation in qualsiasi momento.

La revoca viene eseguita e i materiali crittografici vengono eliminati in modo sicuro o resi inutilizzabili.

WS-009

Revocation

AlIl Wallet Instance Revocation, Il Wallet Solution DEVE notificare i sistemi backend rilevanti per propagare la revoca.

Lo stato di revoca si riflette in tutti i componenti dell'ecosistema (es. Issuer, Verifier).

WS-010

Backup & Restore

Il Wallet DEVE supportare operazioni di Backup e Restore crittografate in conformità con i requisiti di privacy e integrità.

Il Backup è crittografato e legato all'Utente; l'operazione di Restore verifica l'integrità e l'autenticità dell'Utente prima del recupero.

WS-011

Backup & Restore

Il Wallet DEVE gestire le chiavi di crittografia del backup in modo sicuro e derivarle da segreti controllati dall'Utente o credenziali.

Nessuna entità non autorizzata può decrittografare i backup; i backup diventano inutili se manomessi.

WS-012

Backup & Restore

Il Wallet DEVE autenticare l'Utente prima di permettere il Restore.

Il Restore ha successo solo dopo l'autenticazione verificata dell'Utente utilizzando metodi approvati (es. biometrici, PIN, challenge crittografico).

WS-013

Attestation

Il Wallet DEVE rilevare le Attestation scadute e supportare i flussi di refresh.

Le Attestation scadute non vengono utilizzate; il refresh viene attivato automaticamente o tramite prompt dell'Utente.

WS-014

Compliance

Tutte le operazioni inclusi Issuance, Presentation, Attestation e Revocation DEVONO conformarsi agli standard europei.

Una traccia verificabile delle operazioni conformi viene mantenuta; non si osserva alcuna deviazione dal comportamento eIDAS 2.0.

WS-015

User Interaction

Il Wallet DEVE operare sotto il principio del controllo dell'Utente e della minimizzazione dei dati.

Solo i dati esplicitamente consenziti e richiesti vengono utilizzati e trasmessi; tutte le operazioni richiedono azioni esplicite dell'Utente.

WS-016

Credential Presentation

Il Wallet DEVE supportare la presentazione offline delle Verifiable Credential quando consentito.

Le Credential vengono presentate in modo sicuro anche in modalità offline, mantenendo integrità e autenticità.

WS-017

Security

Il Wallet DEVE assicurare protezioni anti-replay durante la presentazione delle credenziali.

Ogni presentazione è crittograficamente unica e legata alla richiesta del Verifier.

WS-018

Revocation

Il Wallet DEVE registrare e rendere verificabile il processo di revoca delle Wallet Instance.

Log completi e resistenti alla manomissione sono disponibili per l'ispezione su richiesta.

WS-019

Security

Il Wallet DEVE stabilire canali mutuamente autenticati e crittografati durante tutte le interazioni.

Tutti i messaggi sono protetti contro intercettazione, modifica o impersonificazione.

WS-020

Security

Il Wallet DEVE bloccarsi e/o revocare Il Wallet Instance al rilevamento di manomissioni.

Il Wallet diventa inoperabile e la revoca viene attivata se la manomissione è confermata.

WS-021

Security

Il Wallet DEVE eseguire Device Attestation utilizzando meccanismi specifici della piattaforma come Play Integrity (Android) o DC App Attest (iOS) durante la creazione delIl Wallet Instance.

La Device Attestation ha successo e i risultati sono inclusi nel payload delIl Wallet Attestation.

WS-022

Attestation

Il Wallet Attestation DEVE includere una firma utilizzando Il Wallet Binding Key, e la catena di certificati DEVE essere verificabile fino a una root attendibile.

La firma è presente, valida e verificabile utilizzando la catena di certificati fornita.

WS-023

Attestation

Il Wallet DEVE includere un risultato di Device Attestation nella struttura delIl Wallet Attestation.

Un oggetto Device Attestation valido (risultato Play Integrity o DC App Attest) è incorporato nell'Attestation.

WS-024

Backup & Restore

Durante il Restore, Il Wallet DEVE validare l'integrità del file di backup crittografato utilizzando un meccanismo di controllo dell'integrità.

Il Wallet rifiuta di ripristinare un file di backup manomesso o corrotto.

WS-025

Revocation

In caso di Wallet Instance Revocation, Il Wallet DEVE eliminare tutte le Verifiable Credential memorizzate localmente.

Nessun dato di credenziale rimane accessibile dopo che la revoca è stata attivata.

WS-026

Revocation

Il Wallet DEVE notificare il Wallet Backend con una Revocation Request che contiene un parametro 'status' impostato a 'REVOKED'.

La Revocation Request viene accettata e lo stato di revoca viene aggiornato nel backend.

WS-027

Security

Il Wallet DEVE prevenire il riutilizzo di Wallet Binding Key revocate o credenziali in future Wallet Instance.

Qualsiasi tentativo di riutilizzo viene rilevato e bloccato.

WS-028

Attestation

Il Wallet DEVE supportare il refresh dell'Attestation tramite l'API definita esposta dal Wallet Backend.

L'Attestation viene rinnovata e la nuova versione viene accettata dai Verifier e dagli Issuer.

WS-029

Backup & Restore

La crittografia del Backup DEVE utilizzare algoritmi di crittografia forti e conformi agli standard (es. AES-GCM).

Il file di backup crittografato è resistente ad attacchi brute-force e crittografici noti.

WS-030

User Interaction

Il Wallet DEVE richiedere all'Utente di confermare l'intento prima di qualsiasi operazione distruttiva come Revocation o Credential Deletion.

Le azioni distruttive vengono eseguite solo dopo la conferma esplicita dell'Utente.

WS-031

Attestation

Il Wallet DEVE generare una Wallet Attestation contenente informazioni sullo stato di integrità del dispositivo, utilizzando Play Integrity API su Android.

Il Wallet Attestation include un payload Play Integrity valido con il campo 'MEETS_DEVICE_INTEGRITY' impostato.

WS-032

Attestation

Il Wallet DEVE generare una Wallet Attestation utilizzando DeviceCheck App Attest su iOS e includere il risultato dell'attestation nelIl Wallet Attestation.

Il Wallet Attestation include una risposta JWT DC App Attest valida firmata da Apple.

WS-033

Security

Il Wallet DEVE verificare che la firma del token Play Integrity sia valida e emessa da Google.

Il Wallet rifiuta token Play Integrity non validi o contraffatti.

WS-034

Security

Il Wallet DEVE validare che il valore 'nonce' utilizzato in Play Integrity sia crittograficamente legato alIl Wallet Instance.

Qualsiasi manomissione del nonce viene rilevata e porta al rifiuto dell'Attestation.

WS-035

Attestation

Il Wallet DEVE inviare Il Wallet Attestation al Wallet Backend durante la registrazione.

Il Wallet Backend riceve l'attestation e ne verifica la validità.

WS-036

Backup & Restore

Il Wallet DEVE crittografare i backup utilizzando una chiave simmetrica derivata dai segreti dell'Utente.

Il backup non può essere decrittografato senza i materiali di autenticazione originali dell'Utente.

WS-037

Backup & Restore

Il Wallet DEVE includere metadata nel backup che identificano la versione e il timestamp di creazione.

Il processo di Restore legge e verifica i metadata del backup prima di procedere.

WS-038

Revocation

Il Wallet DEVE inviare una Revocation Request all’endpoint del Backend, includendo l’ID delIl Wallet come parametro nel path dell’URL.

Il backend elabora la revoca e aggiorna lo stato delIl Wallet a revocata.

WS-039

Revocation

Il Wallet DEVE non permettere ulteriori Credential Issuance o Presentation dopo la revoca.

Tutte le operazioni vengono bloccate una volta che Il Wallet è revocata.

WS-040

Credential Issuance

Il Wallet DEVE validare la struttura della Credential Offer ricevuta dall'Issuer.

Il Wallet accetta solo Credential Offer che corrispondono al formato e alla firma previsti.

WS-041

Credential Issuance

Il Wallet DEVE assicurare che l'Utente acconsenta a ricevere una nuova Credential.

Nessuna Credential viene memorizzata senza l'approvazione esplicita dell'Utente.

WS-042

Credential Presentation

Il Wallet DEVE verificare la Presentation Request del Verifier prima di rispondere.

Richieste non valide o malformate vengono rifiutate.

WS-043

Security

Il Wallet DEVE firmare le Verifiable Presentations con la chiave privata corretta legata alIl Wallet Instance.

I Verifier sono in grado di validare la firma e fidarsi della presentazione.

WS-044

User Interaction

Il Wallet DEVE richiedere all'Utente prima di inviare una Verifiable Credential a un Verifier.

Nessuna credenziale viene condivisa senza la conferma esplicita dell'Utente.

WS-045

Backup & Restore

Il Wallet DEVE permettere all'Utente di eliminare tutti i dati di backup memorizzati.

Tutti i materiali di backup vengono eliminati in modo sicuro e non possono essere recuperati.

WS-046

Revocation

Se Il Wallet viene ripristinata su un nuovo dispositivo, DEVE controllare se Il Wallet Instance originale era stata revocata.

Le Wallet Instance revocate non possono essere ripristinate.

WS-047

Security

Il Wallet DEVE verificare la validità temporale delle Credential ricevute (es. issuanceDate, expirationDate).

Le credenziali scadute sono marcate come non valide e non vengono utilizzate.

WS-048

Attestation

Il Wallet DEVE includere la chiave pubblica delIl Wallet Binding Key nelIl Wallet Attestation.

I Verifier e gli Issuer possono validare le firme effettuate con la corrispondente chiave privata.

WS-049

Credential Presentation

Il Wallet DEVE supportare la Selective Disclosure degli attributi delle Credential.

Solo i campi selezionati sono inclusi nella presentazione inviata al Verifier.

WS-050

Credential Presentation

Il Wallet DEVE permettere all'Utente di visualizzare in anteprima quali attributi delle Credential saranno divulgati prima della conferma.

All'Utente viene mostrato l'esatto dato da condividere e lo approva esplicitamente.

WS-051

Proximity Flow

Il Wallet DEVE avviare il flusso di prossimità solo dopo il consenso esplicito dell'Utente di interagire con una Mobile Relying Party Instance.

Il flusso di presentazione di prossimità delIl Wallet viene bloccato a meno che l'Utente non abbia approvato la richiesta.

WS-052

Proximity Flow

Il Wallet DEVE validare l'Access Certificate presentato da una Mobile Relying Party Instance prima di procedere.

Se l'Access Certificate è mancante, non valido o scaduto, Il Wallet DEVE rifiutare la richiesta.

WS-053

Proximity Flow

Il Wallet DEVE visualizzare una disclaimer quando l'Access Certificate è scaduto ma ancora all'interno del periodo di grazia consentito.

La disclaimer viene mostrata chiaramente all'Utente e la presentazione procede solo dopo il consenso.

WS-054

Relying Party Instance

Il Wallet DEVE applicare il controllo che lo stato della Relying Party Instance sia 'Verified' prima di permettere la presentazione delle credenziali.

Il Wallet nega il flusso se la Relying Party Instance è in qualsiasi stato diverso da 'Verified'.

WS-055

Security

Il Wallet DEVE registrare qualsiasi tentativo di presentazione fallito a causa di stato non valido della Relying Party Instance o Access Certificate scaduto.

Un log di eventi di sicurezza viene generato e memorizzato in modo sicuro.

WS-056

Interoperability

Il Wallet DEVE supportare la comunicazione con le Relying Party Instance utilizzando QR code standardizzati per la negoziazione di sessione come definito nella specifica.

Il Wallet legge e analizza con successo i QR code e avvia la sessione secondo il protocollo.

WS-057

Proximity Flow

Il Wallet DEVE stabilire una sessione sicura e autenticata con la Mobile Relying Party Instance utilizzando chiavi effimere prima della presentazione.

Le chiavi di sessione vengono negoziate e verificate, e tutta la comunicazione è crittografata.

WS-058

Credential Presentation

Il Wallet DEVE permettere all'Utente di scegliere quale Credential presentare a una Relying Party Instance anche nel flusso di prossimità.

L'interfaccia di selezione delle Credential viene mostrata all'Utente durante il flusso di prossimità.

WS-059

Security

Il Wallet DEVE interrompere la sessione se la Relying Party Instance non riesce a dimostrare il possesso della chiave privata associata all'Access Certificate.

La sessione viene terminata e nessun dato di Credential viene divulgato.

WS-060

User Interaction

Il Wallet DEVE indicare chiaramente all'Utente quando una richiesta di presentazione proviene da una Mobile Relying Party Instance utilizzando un canale di prossimità.

La fonte della richiesta viene mostrata prima di permettere alla presentazione di procedere.