WUA pojasnjen: kako se denarnica izkaže izdajatelju
Wallet Unit Attestation, WUA, je tisto, kar EUDI Wallet med izdajo pokaže PID Providerju ali Attestation Providerju, da dokaže svojo pristnost. Ne gre za en dokument, temveč za dva, oba podpisana s strani ponudnika denarnice: Wallet Instance Attestation (WIA) o aplikaciji denarnice in Key Attestation (KA) o varni hrambi ključev, na katere bo poverilo vezano.
Problem, ki ga rešuje WUA
Izdajatelj, ki bo denarnici izročil PID ali poverilo o registraciji podjetja, nima vgrajenega načina, da bi certificirano EUDI Wallet ločil od spremenjene aplikacije ali skripta, ki ponavlja potek avtorizacije. Prav tako ne vidi, ali je ključ, na katerega bo poverilo vezano, v certificirani varni strojni opremi ali v običajni shrambi, iz katere bi ga bilo mogoče kopirati.
WUA zapre obe vrzeli. Ponudnik denarnice z WIA jamči za aplikacijo, s Key Attestation pa za shrambo ključev. Izdajatelj pred izdajo preveri oboje in tudi pozneje spremlja njuno stanje preklica, tako da lahko izdano prekliče, če se kasneje izkaže, da je bila denarnica ali njena shramba ključev ogrožena.
WUA se uporablja samo med izdajo. ARF enoti denarnice prepoveduje, da bi WIA ali Key Attestation predložila zanašajoči se stranki, tako da podatki o denarnici ne pridejo v nobeno predstavitev.
Udeleženci in kdo komu zaupa
Vključenih je pet vlog, a le štiri kdaj pridejo v stik z WUA. WSCD (Wallet Secure Cryptographic Device) ali shramba ključev ustvarja in varuje ključe, ponudnik denarnice jamči za aplikacijo in ključe, izdajatelj pa se na to zanaša, namesto da bi denarnico ocenjeval sam.
Ponudnik denarnice
Podpisuje WIA in Key Attestation po preverjanju aplikacije in shrambe ključev ter vodi Status List za oboje
Enota denarnice
Med izdajo pošlje izdajatelju WIA in Key Attestation ter vsakega uporabi le za eno izdajo
WSCD ali shramba ključev
Ustvari in hrani zasebne ključe, ki jih opisuje Key Attestation
PID Provider ali Attestation Provider
Preveri WIA in Key Attestation, veže poverilo na potrjen ključ in pri obeh še naprej preverja preklic
Zanašajoča se stranka
Nikoli ne prejme WUA. Namesto tega preveri poverilo, njegovo vezavo na napravo in stanje preklica
Izdajatelji zaupajo WUA, ker podpisno potrdilo ponudnika denarnice, poslano v glavi x5c, v verigi vodi do sidra zaupanja na Trusted List za ponudnike denarnic. Samo Wallet Solution certificira organ za ugotavljanje skladnosti, WIA pa nosi podatke o tej certifikaciji.
Dve atestaciji pod enim imenom
TS3, tehnična specifikacija EUDI za WUA, atestacijo razdeli na dve, ker sta aplikacija in shramba ključev različni stvari, ki se preverjata na različnih končnih točkah in prekličeta iz različnih razlogov.
Wallet Instance Attestation (WIA)
- Potrjuje
- Celovitost Wallet Instance, torej aplikacije
- Prejemnik
- Authorization Server, v Pushed Authorization Request in v Token Request
- Življenjska doba
- Manj kot 24 ur
- Preklic
- client_status: stanje preklica te Wallet Instance
- Potreben za
- Vsako izdajo, ne glede na to, ali je poverilo vezano na napravo
Key Attestation (KA)
- Potrjuje
- Da je bil en ključ ali več ključev ustvarjenih v navedenem WSCD ali shrambi ključev in se tam hranijo, ter kako dobro ta shramba odolava napadom
- Prejemnik
- Credential Issuer, znotraj proofs v Credential Request
- Življenjska doba
- Določi jo ponudnik denarnice in je lahko daljša kot pri WIA
- Preklic
- key_storage_status: stanje preklica WSCD ali shrambe ključev
- Potreben za
- Samo poverila, vezana na napravo, vključno z vsakim PID
Oba sta JWT, ki ju ponudnik denarnice podpiše z ES256, ES384 ali ES512. Key Attestation se uporabi le za eno izdajo, WIA pa se nikoli ne uporabi znova pri drugem izdajatelju, zato izdajatelji ne morejo povezati zahtev iz iste denarnice.
Kako enota denarnice pridobi svoje WIA in Key Attestation
TS3 ta korak prepušča vsakemu ponudniku denarnice, saj poteka znotraj enega izdelka denarnice. ARF od ponudnika denarnice zahteva le, da pred podpisom WIA preveri celovitost aplikacije, pred podpisom Key Attestation pa, da so potrjeni zasebni ključi res v navedenem WSCD ali shrambi ključev. Tipičen potek, ki kot dokaz uporablja atestacije platforme, na primer Google Play Integrity ali Apple DeviceCheck, je videti takole.
1. Enota denarnice
Zaprosi WSCD ali shrambo ključev, naj ustvari pare ključev
2. WSCD ali shramba ključev
Vrne javne ključe skupaj z dokazom platforme o tem, kje so bili ustvarjeni
3. Ponudnik denarnice
Preveri celovitost aplikacije in dokaze o ključih, nato podpiše WIA in Key Attestation
4. Enota denarnice
Hrani zalogo svežih WIA in Key Attestation ter za vsako izdajo uporabi novega
Kaj vsebujeta WIA in Key Attestation
Nobeden ne nosi claima iss: izdajatelj ponudnika denarnice prepozna po podpisnem potrdilu v glavi x5c. Spodnji primeri so dekodirani, glava in vsebina pa sta ločeni s piko.
Wallet Instance Attestation
{
"typ": "oauth-client-attestation+jwt",
"alg": "ES256",
"x5c": ["MIIC..."]
}.{
"sub": "https://wallet.example.eu",
"wallet_name": "ExampleWallet-mobile",
"wallet_version": "2.3.0",
"wallet_link": "https://wallet.example.eu/about",
"wallet_solution_certification_information": "https://wallet.example.eu/certification/2-3-0",
"exp": 1789329600,
"client_status": {
"status": {
"status_list": { "idx": 48213, "uri": "https://wallet.example.eu/status/wia/17" }
},
"exp": 1791936000
},
"cnf": {
"jwk": { "kty": "EC", "crv": "P-256", "x": "...", "y": "..." }
}
}| Polje | Kaj pove izdajatelju |
|---|---|
| typ / x5c | Da gre za atestacijo odjemalca, in veriga potrdil ponudnika denarnice za preverjanje glede na Trusted List |
| sub | Vrsta denarnice, enaka za vsako namestitev, zato je ni mogoče uporabiti za sledenje uporabniku |
| wallet_name / wallet_version | Wallet Solution, kot je naveden na Trusted List, in njegova različica |
| wallet_solution_certification_information | Kdo je certificiral Wallet Solution; natančna vsebina še ni opredeljena |
| exp | Tehnični potek, manj kot 24 ur po preverjanju celovitosti |
| client_status | Vnos na Status List za to Wallet Instance in datum, do katerega ga ponudnik denarnice ohranja ažurnega |
| cnf | Ključ, ki podpiše dokazilo posesti, poslano skupaj z WIA |
Key Attestation
{
"typ": "key-attestation+jwt",
"alg": "ES256",
"x5c": ["MIIC..."]
}.{
"iat": 1789257600,
"exp": 1791936000,
"certification": "https://wallet.example.eu/certification/wscd/secure-element",
"key_storage": ["iso_18045_high"],
"user_authentication": ["iso_18045_high"],
"attested_keys": [
{ "kty": "EC", "crv": "P-256", "x": "...", "y": "..." },
{ "kty": "EC", "crv": "P-256", "x": "...", "y": "..." }
],
"key_storage_status": {
"status": {
"status_list": { "idx": 3, "uri": "https://wallet.example.eu/status/ka/1" }
},
"exp": 1794614400
}
}| Polje | Kaj pove izdajatelju |
|---|---|
| typ / x5c | Da gre za atestacijo ključa, in veriga potrdil ponudnika denarnice za preverjanje glede na Trusted List |
| iat / exp | Kdaj je bil izdan in kdaj tehnično poteče |
| attested_keys | Javni ključi, katerih zasebne ključe je ustvaril in jih hrani WSCD ali shramba ključev; več ključev omogoča paketno izdajo |
| key_storage / user_authentication | Kako dobro shramba in avtentikacija uporabnika, ki odklene ključe, odolevata napadom; WSCD ima za oboje vedno iso_18045_high |
| certification | Certifikacija WSCD ali shrambe ključev, iz katere izdajatelj razbere, ali gre za WSCD |
| key_storage_status | Vnos na Status List za WSCD ali shrambo ključev in datum, do katerega ga ponudnik denarnice ohranja ažurnega |
| nonce | c_nonce izdajatelja, prisoten le, kadar je Key Attestation poslan kot dokaz vrste attestation |
Kam potuje WUA med izdajo prek OpenID4VCI
Atestaciji gresta na različni mesti. WIA denarnico avtenticira kot odjemalca OAuth pri Authorization Server. Key Attestation gre k Credential Issuer skupaj z zahtevo za samo poverilo.
Authorization Server prejme WIA
- Podpis WIA v verigi vodi do Trusted List za ponudnike denarnic
- WIA ni potekel in Wallet Instance ni preklicana
- Dokazilo posesti je podpisano s ključem iz claima cnf v WIA
Credential Issuer prejme Key Attestation
- Podpis Key Attestation v verigi vodi do Trusted List za ponudnike denarnic
- Svež c_nonce izdajatelja je v dokazu jwt ali v samem Key Attestation
- WSCD ali shramba ključev ni preklicana, poverilo pa je vezano na enega od attested_keys
Pushed Authorization Request z WIA
POST /par HTTP/1.1 Host: issuer.example.eu Content-Type: application/x-www-form-urlencoded OAuth-Client-Attestation: <WIA JWT> OAuth-Client-Attestation-PoP: <PoP JWT signed with the WIA cnf key> response_type=code &client_id=https%3A%2F%2Fwallet.example.eu &scope=company_registration &code_challenge=<S256 challenge> &code_challenge_method=S256 &redirect_uri=<wallet redirect URI>
client_id se ujema s sub v WIA. Token Request nosi isti dve glavi. Ker Credential Issuer WIA nikoli ne vidi, mora Authorization Server posredovati njen client_status, na primer znotraj žetona za dostop.
Credential Request s Key Attestation
POST /credential HTTP/1.1
Host: issuer.example.eu
Authorization: DPoP <access_token>
DPoP: <DPoP proof JWT>
Content-Type: application/json
{
"credential_configuration_id": "company_registration",
"proofs": {
"jwt": ["<proof JWT: Key Attestation in its key_attestation header, signed with attested_keys[0]>"]
}
}Pri vrsti dokaza attestation zahteva namesto tega nosi "proofs": { "attestation": ["<Key Attestation JWT>"] }. Dokazila posesti takrat ni: enota denarnice c_nonce izdajatelja posreduje ponudniku denarnice, ki ga vstavi v sveže podpisan Key Attestation.
Življenjski cikel WUA
WUA je namerno kratkotrajen in za enkratno uporabo, podatki o preklicu za njim pa preživijo sam žeton. Prve tri faze so redne; četrta nastopi le, kadar gre kaj narobe.
1. Izdaja
Ponudnik denarnice podpiše WIA in Key Attestation po preverjanju celovitosti in shrambe ključev
2. Enkratna uporaba
Vsak služi eni sami izdaji, zato enota denarnice sproti pridobiva nove
3. Veriženje preklica
PID Provider vsaj vsakih 24 ur znova preveri stanje WIA in Key Attestation ter prekliče PID, če je preklican kateri koli od njiju
4. Preklic
Ponudnik denarnice prekliče Wallet Instance, na primer po izgubi ali kraji, ali WSCD oziroma shrambo ključev z varnostno ranljivostjo
Zunaj ekosistema EUDI Wallet nekateri ponudniki denarnic izdajajo atestacije denarnice z zelo kratko življenjsko dobo in brez kakršnega koli sklica na stanje, pri čemer se namesto na preklic zanašajo na potek; OpenID4VCI claim stanja določa kot neobvezen. TS3 tega za EUDI Wallet ne dovoljuje. WIA že tako živi manj kot 24 ur, vendar morata tako WIA kot Key Attestation nositi sklic na stanje, ki ga ponudnik denarnice vzdržuje vsaj 31 dni, saj ga PID Providerji uporabljajo za preklic PID še dolgo po izdaji.
WUA, WIA in KA: kateri izraz pomeni kaj
Terminologija se je spreminjala, ko so specifikacije dozorevale. TS3 je WIA do različice 1.1 imenovala Wallet App Attestation, do različice 1.5 pa je z WUA označevala tisto, kar je zdaj Key Attestation. Starejši članki in osnutki ARF zato izraze uporabljajo drugače.
| Pojem | Kaj zajema | Kdo ga prejme |
|---|---|---|
| WUA | Krovni izraz za spodnji dve atestaciji | PID Provider in Attestation Provider, samo med izdajo |
| WIA | Wallet Instance, torej aplikacijo | Authorization Server, v Pushed Authorization Request in Token Request |
| KA | WSCD ali shrambo ključev in ključe, ki jih hrani | Credential Issuer, v proofs v Credential Request |
Sorodni pojmi
Pogosta vprašanja
Ali je WUA isto kot Wallet Instance Attestation?
Ne. Od različice 1.5 TS3 je WUA krovni izraz za dve atestaciji: Wallet Instance Attestation (WIA), ki zajema aplikacijo, in Key Attestation (KA), ki zajema WSCD ali shrambo ključev, v kateri so ključi. Starejši dokumenti uporabljajo WUA za tisto, čemur zdaj pravimo Key Attestation, zato se izraza pogosto zamenjujeta.
Ali preveritelj kdaj vidi WUA?
Ne. Zahtevi ARF WUA_07 in WUA_24 enoti denarnice dovoljujeta, da WIA ali Key Attestation predloži le PID Providerju ali Attestation Providerju med izdajo, nikoli zanašajoči se stranki. Preveritelj namesto tega preveri poverilo: njegov podpis, vezavo na napravo in stanje preklica. Če je denarnica, ki stoji za PID, preklicana, PID Provider prekliče PID v svojem 24-urnem ciklu preverjanja, preveritelj pa to vidi prek stanja samega PID.
Kako dolgo je WUA veljaven?
WIA poteče manj kot 24 ur po tem, ko je ponudnik denarnice preveril celovitost aplikacije. Key Attestation je lahko veljaven dlje, po presoji ponudnika denarnice. Poleg tega vsak nosi datum vzdrževanja stanja, client_status.exp ali key_storage_status.exp, do katerega ponudnik denarnice ohranja stanje preklica ažurno. Enota denarnice mora vedno imeti na voljo takšnega, katerega datum je oddaljen vsaj 31 dni, PID pa mora poteči pred tem datumom.
Kaj se zgodi, če je enota denarnice ogrožena, preden njen WUA poteče?
Ponudnik denarnice prekliče Wallet Instance na svojem Status List za WIA, pri ranljivosti določene vrste WSCD ali shrambe ključev pa vnos na Status List za to shrambo. PID Provider vsaj enkrat na 24 ur preveri stanje WIA in Key Attestation za vsakim PID, ki ga je izdal, in PID prekliče, če je preklican kateri koli od njiju. Attestation Providerji lahko storijo enako. Denarnice iz ekosistema ne odstrani potek samega WUA, temveč preklic poveril, ki so ji bila izdana.
Ali lahko en Key Attestation zajema več kot en ključ?
Da. attested_keys lahko navaja več javnih ključev iz istega WSCD ali shrambe ključev, in tako deluje paketna izdaja: izdajatelj veže vsako poverilo v paketu na drug ključ, en podpis ponudnika denarnice pa zajema vse. Kadar Key Attestation potuje v dokazu jwt, enota denarnice ta dokaz podpiše samo s prvim ključem na seznamu.
Viri
Ta stran je informativne narave in ne predstavlja pravnega nasveta. Za verodostojne napotke se obrnite neposredno na Evropsko komisijo in OpenID Foundation.