10.1.4.2.2. Emissione della Wallet Attestation¶
Questa sezione descrive come il Fornitore di Wallet emette una Wallet Attestation.
Fig. 10.4 Diagramma di Sequenza per l'acquisizione della Wallet Attestation.¶
Passo 1: L'Utente avvia una nuova operazione che richiede l'acquisizione di una Wallet Attestation.
Passi 2-3: L'Istanza del Wallet DEVE:
Verificare l'esistenza delle Cryptographic Hardware Keys. Se non esistono, è necessaria la reinizializzazione dell'Istanza del Wallet (WP_140a).
Generare una coppia di chiavi asimmetriche effimere per la Wallet Attestation (
ephemeral_key_pub,ephemeral_key_priv), collegando la chiave pubblica all'attestato (WP_026).Verificare l'appartenenza del Fornitore di Wallet alla federazione e recuperare i suoi metadati (WP_023).
Passi 4-6 (Recupero del Nonce): L'Istanza del Wallet richiede un nonce all'endpoint Endpoint Nonce della Soluzione Wallet del Backend del Fornitore del Walletn (WP_140b). Questo nonce deve essere imprevedibile e serve come principale difesa contro gli attacchi di replay.
Il nonce DEVE essere prodotto in modo da garantire il suo utilizzo singolo entro un periodo di tempo predeterminato.
In caso di richiesta riuscita, il Fornitore di Wallet genera e restituisce il valore del nonce all'Istanza del Wallet.
Passo 7: L'Istanza del Wallet esegue le seguenti azioni (WP_140c):
Crea
client_data, un oggetto JSON che include ilnoncee l'impronta digitale della JWKephemeral_key_pub.Calcola
client_data_hashapplicando l'algoritmoSHA256alclient_data.
Di seguito è riportato un esempio non normativo dell'oggetto JSON client_data.
{
"nonce": "i4ThI2Jhbu81i8mqyWEuDG5t",
"jwk_thumbprint": "vbeXJksM45xphtANnCiG6mCyuU4jfGNzopGuKvogg9c"
}
Passi 8-10: L'Istanza del Wallet:
produce un valore
hardware_signaturefirmando ilclient_data_hashcon la chiave privata dell'Hardware del Wallet, servendo come prova di possesso delle Cryptographic Hardware Keys (WP_140d).richiede al Servizio di Integrità del Dispositivo di creare un valore
integrity_assertioncollegato alclient_data_hash.riceve un valore firmato
integrity_assertiondal Servizio di Integrità del Dispositivo, autenticato dall'OEM (WP_140e).
Nota
integrity_assertion è un payload personalizzato generato dal Servizio di Integrità del Dispositivo, firmato dall'OEM del dispositivo e codificato in base64 per avere uniformità tra diversi dispositivi.
Passi 11-12 (Richiesta di Emissione della Wallet Attestation): L'Istanza del Wallet:
Costruisce la Richiesta di Wallet Attestation sotto forma di JWT. Questo JWT include
integrity_assertion,hardware_signature,nonce,hardware_key_tag,cnfe altri parametri relativi alla configurazione (vedi Tabella del Corpo della Richiesta di Wallet Attestation) ed è firmato utilizzando la chiave privata della coppia di chiavi effimere generata inizialmente (WP_140–141).Invia la Richiesta di Wallet Attestation all'endpoint Endpoint di Emissione della Wallet Attestation del Backend del Fornitore del Wallet.
L'Istanza del Wallet DEVE inviare il JWT firmato della Richiesta di Wallet Attestation come parametro assertion nel corpo di una richiesta HTTP all'endpoint Endpoint di Emissione della Wallet Attestation del Fornitore di Wallet (WP_142).
Passi 13-17: Il Backend del Fornitore del Wallet valuta la Richiesta di Wallet Attestation e DEVE eseguire i seguenti controlli (WP_143):
La richiesta DEVE includere tutti i parametri dell'intestazione HTTP richiesti come definito in Richiesta di Emissione della Wallet Attestation (WP_143a).
La firma della Richiesta di Wallet Attestation DEVE essere valida e verificabile utilizzando la
jwkfornita (WP_143b).Il valore
nonceDEVE essere stato generato dal Fornitore di Wallet e non essere stato utilizzato in precedenza (WP_143c).DEVE esistere un'Istanza del Wallet valida e attualmente registrata associata a quella fornita (WP_143d).
Il
client_dataDEVE essere ricostruito utilizzando ilnoncee la chiave pubblicajwk. Il valore del parametrohardware_signatureviene quindi convalidato utilizzando la chiave pubblica della Cryptographic Hardware Key registrata associata all'Istanza del Wallet (WP_143e).L'
integrity_assertionDEVE essere convalidato secondo le linee guida del produttore del dispositivo. I controlli specifici eseguiti dal Fornitore di Wallet sono dettagliati nella documentazione del produttore del sistema operativo (WP_143f).Il dispositivo in uso DEVE essere privo di difetti di sicurezza noti e soddisfare i requisiti minimi di sicurezza definiti dal Fornitore di Wallet.
L'URL nel parametro
issDEVE corrispondere all'identificatore URL del Fornitore di Wallet (WP_143g).
Dopo il completamento con successo di tutti i controlli, il Fornitore di Wallet emette una Wallet Attestation valido per un massimo di 24 ore (WP_144).
Passo 18 (Risposta di Emissione della Wallet Attestation): Al completamento con successo, il Fornitore di Wallet DEVE restituire una risposta di conferma utilizzando il codice di stato 200 e Content-Type application/json, contenente gli Attestati di Wallet firmati dal Fornitore di Wallet. Il Fornitore di Wallet DEVE restituire la Wallet Attestation in almeno tre formati: JWT, SD-JWT e mdoc. L'Istanza del Wallet eseguirà quindi la verifica di sicurezza e integrità degli Attestati di Wallet ricevuti oltre alla verifica di fiducia del suo Fornitore di Credenziali (WP_030–031).
Di seguito è riportato un esempio non normativo della risposta.
HTTP/1.1 200 OK
Content-Type: application/json
{
"wallet_attestations": [
{
"format": "jwt",
"wallet_attestation": "ey..."
},
{
"format": "dc+sd-jwt",
"wallet_attestation": "ey..."
},
{
"format": "mso_mdoc",
"wallet_attestation": "omppc3N1ZXJBdXRohEOhASahG...ArQwggKwMIICVqADAgEC"
}
]
}