Preskoči na glavno vsebino

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

ustvari ključe

2. WSCD ali shramba ključev

Vrne javne ključe skupaj z dokazom platforme o tem, kje so bili ustvarjeni

javni ključi + dokaz

3. Ponudnik denarnice

Preveri celovitost aplikacije in dokaze o ključih, nato podpiše WIA in Key Attestation

WIA + KA

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": "..." }
  }
}
PoljeKaj pove izdajatelju
typ / x5cDa gre za atestacijo odjemalca, in veriga potrdil ponudnika denarnice za preverjanje glede na Trusted List
subVrsta denarnice, enaka za vsako namestitev, zato je ni mogoče uporabiti za sledenje uporabniku
wallet_name / wallet_versionWallet Solution, kot je naveden na Trusted List, in njegova različica
wallet_solution_certification_informationKdo je certificiral Wallet Solution; natančna vsebina še ni opredeljena
expTehnični potek, manj kot 24 ur po preverjanju celovitosti
client_statusVnos na Status List za to Wallet Instance in datum, do katerega ga ponudnik denarnice ohranja ažurnega
cnfKljuč, 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
  }
}
PoljeKaj pove izdajatelju
typ / x5cDa gre za atestacijo ključa, in veriga potrdil ponudnika denarnice za preverjanje glede na Trusted List
iat / expKdaj je bil izdan in kdaj tehnično poteče
attested_keysJavni 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_authenticationKako dobro shramba in avtentikacija uporabnika, ki odklene ključe, odolevata napadom; WSCD ima za oboje vedno iso_18045_high
certificationCertifikacija WSCD ali shrambe ključev, iz katere izdajatelj razbere, ali gre za WSCD
key_storage_statusVnos na Status List za WSCD ali shrambo ključev in datum, do katerega ga ponudnik denarnice ohranja ažurnega
noncec_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

OAuth-Client-AttestationOAuth-Client-Attestation-PoP
  • 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

proofs.jwt[].key_attestationproofs.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.

PojemKaj zajemaKdo ga prejme
WUAKrovni izraz za spodnji dve atestacijiPID Provider in Attestation Provider, samo med izdajo
WIAWallet Instance, torej aplikacijoAuthorization Server, v Pushed Authorization Request in Token Request
KAWSCD ali shrambo ključev in ključe, ki jih hraniCredential 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

  1. TS3: Wallet Unit Attestations used in issuance of PID and Attestations
  2. EUDI Wallet Architecture and Reference Framework
  3. OpenID for Verifiable Credential Issuance 1.0
  4. OpenID4VC High Assurance Interoperability Profile 1.0
  5. OAuth 2.0 Attestation-Based Client Authentication
  6. Token Status List

Ta stran je informativne narave in ne predstavlja pravnega nasveta. Za verodostojne napotke se obrnite neposredno na Evropsko komisijo in OpenID Foundation.

Pogovorite se z nami o integraciji EUDI Wallet