Ugrás a fő tartalomra

WUA röviden: hogyan igazolja magát egy tárca a kibocsátónál

A Wallet Unit Attestation, azaz WUA, az, amit egy EUDI Wallet kiállításkor felmutat egy PID Providernek vagy Attestation Providernek, hogy bizonyítsa valódiságát. Nem egy dokumentum, hanem kettő, mindkettőt a tárcaszolgáltató írja alá: egy Wallet Instance Attestation (WIA) a tárcaalkalmazásról, és egy Key Attestation (KA) azoknak a kulcsoknak a biztonságos tárolásáról, amelyekhez a hitelesítő adatot kötni fogják.

A probléma, amelyet a WUA megold

Az a kibocsátó, amely egy PID-et vagy cégbejegyzési hitelesítő adatot készül átadni egy tárcának, önmagában nem tudja megkülönböztetni a tanúsított EUDI Walletet egy módosított alkalmazástól vagy egy engedélyezési folyamatot visszajátszó szkripttől. Azt sem látja, hogy a kulcs, amelyhez a hitelesítő adatot kötni fogja, tanúsított biztonságos hardverben van-e, vagy közönséges tárolóban, ahonnan lemásolható.

A WUA mindkét hiányt pótolja. A tárcaszolgáltató a WIA-val az alkalmazásért, a Key Attestationnel pedig a kulcstárolóért áll jót. A kibocsátó kiállítás előtt mindkettőt ellenőrzi, és utána is figyeli a visszavonási állapotukat, így vissza tudja vonni, amit kiállított, ha később kiderül, hogy a tárca vagy a kulcstárolója kompromittálódott.

A WUA-t csak kiállításkor használják. Az ARF megtiltja, hogy a tárcaegység WIA-t vagy Key Attestationt mutasson be egy megbízó félnek, így a tárca adatai egyetlen bemutatásba sem kerülnek bele.

A szereplők, és hogy ki kiben bízik

Öt szereplő vesz részt, és közülük csak négy kerül kapcsolatba a WUA-val. A WSCD (Wallet Secure Cryptographic Device) vagy egy kulcstároló hozza létre és őrzi a kulcsokat, a tárcaszolgáltató jótáll az alkalmazásért és a kulcsokért, a kibocsátó pedig erre támaszkodik ahelyett, hogy maga mérné fel a tárcát.

Tárcaszolgáltató

Az alkalmazás és a kulcstároló ellenőrzése után aláírja a WIA-kat és a Key Attestationöket, és mindkettőhöz Status Listet üzemeltet

Tárcaegység

Kiállításkor elküld a kibocsátónak egy WIA-t és egy Key Attestationt, és mindegyiket csak egyetlen kiállításhoz használja

WSCD vagy kulcstároló

Létrehozza és tárolja azokat a privát kulcsokat, amelyeket a Key Attestation leír

PID Provider vagy Attestation Provider

Ellenőrzi a WIA-t és a Key Attestationt, a hitelesítő adatot egy igazolt kulcshoz köti, és a továbbiakban is figyeli mindkettő visszavonását

Megbízó fél

Soha nem kap WUA-t. Ehelyett a hitelesítő adatot, annak eszközhöz kötését és visszavonási állapotát ellenőrzi

A kibocsátók azért bíznak meg a WUA-ban, mert a tárcaszolgáltató x5c fejlécben küldött aláíró tanúsítványa a tárcaszolgáltatók Trusted Listjén szereplő bizalmi horgonyig vezet. Magát a Wallet Solutiont egy megfelelőségértékelő szervezet tanúsítja, és a WIA hordozza ezt a tanúsítási információt.

Két attesztáció egy név alatt

A TS3, a WUA-kra vonatkozó EUDI műszaki specifikáció, két részre bontja az attesztációt, mert az alkalmazás és a kulcstároló két különböző dolog, amelyeket különböző végpontokon ellenőriznek, és különböző okokból vonnak vissza.

Wallet Instance Attestation (WIA)

Mit igazol
A Wallet Instance, vagyis az alkalmazás sértetlenségét
Címzett
Az Authorization Server, a Pushed Authorization Requestben és a Token Requestben
Élettartam
Kevesebb mint 24 óra
Visszavonás
client_status: ennek a Wallet Instance-nek a visszavonási állapota
Mihez kell
Minden kiállításhoz, akár eszközhöz kötött a hitelesítő adat, akár nem

Key Attestation (KA)

Mit igazol
Hogy egy vagy több kulcsot egy megnevezett WSCD-ben vagy kulcstárolóban hoztak létre és ott tárolnak, és hogy ez a tároló mennyire ellenálló a támadásokkal szemben
Címzett
A Credential Issuer, a Credential Request proofs részében
Élettartam
A tárcaszolgáltató határozza meg, és hosszabb lehet, mint egy WIA-é
Visszavonás
key_storage_status: a WSCD vagy a kulcstároló visszavonási állapota
Mihez kell
Csak eszközhöz kötött hitelesítő adatokhoz, beleértve minden PID-et

Mindkettő a tárcaszolgáltató által ES256, ES384 vagy ES512 algoritmussal aláírt JWT. Egy Key Attestation csak egyetlen kiállításhoz használható, egy WIA-t pedig soha nem használnak fel újra egy másik kibocsátónál, így a kibocsátók nem tudják összekapcsolni az ugyanabból a tárcából érkező kéréseket.

Hogyan szerzi be a tárcaegység a WIA-kat és a Key Attestationöket

A TS3 ezt a lépést az egyes tárcaszolgáltatókra bízza, mivel egyetlen tárcatermék belsejében zajlik. Az ARF csak azt követeli meg, hogy a tárcaszolgáltató egy WIA aláírása előtt ellenőrizze az alkalmazás sértetlenségét, egy Key Attestation aláírása előtt pedig azt, hogy az igazolt privát kulcsok valóban a megnevezett WSCD-ben vagy kulcstárolóban vannak. Egy tipikus folyamat, amely bizonyítékként platform-attesztációkat, például Google Play Integrityt vagy Apple DeviceChecket használ, így néz ki.

1. Tárcaegység

Megkéri a WSCD-t vagy a kulcstárolót, hogy hozzon létre kulcspárokat

kulcsok létrehozása

2. WSCD vagy kulcstároló

Visszaadja a nyilvános kulcsokat, a platform bizonyítékával együtt arról, hol jöttek létre

nyilvános kulcsok + bizonyíték

3. Tárcaszolgáltató

Ellenőrzi az alkalmazás sértetlenségét és a kulcsokra vonatkozó bizonyítékot, majd aláírja a WIA-kat és a Key Attestationöket

WIA + KA

4. Tárcaegység

Friss WIA-kból és Key Attestationökből tartalékot tart, és minden kiállításhoz újat használ

Mit tartalmaz egy WIA és egy Key Attestation

Egyik sem tartalmaz iss claimet: a kibocsátó az x5c fejlécben lévő aláíró tanúsítványból azonosítja a tárcaszolgáltatót. Az alábbi példák dekódoltak, a fejlécet és a payloadot pont választja el.

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": "..." }
  }
}
MezőMit árul el a kibocsátónak
typ / x5cHogy ez egy kliens-attesztáció, valamint a tárcaszolgáltató tanúsítványlánca a Trusted List szerinti ellenőrzéshez
subA tárca típusa, amely minden telepítésnél azonos, így nem használható a felhasználó követésére
wallet_name / wallet_versionA Wallet Solution a Trusted Listen szereplő néven, és annak verziója
wallet_solution_certification_informationKi tanúsította a Wallet Solutiont; a pontos tartalom még nincs meghatározva
expTechnikai lejárat, kevesebb mint 24 órával a sértetlenségi ellenőrzés után
client_statusEgy Status List bejegyzés ehhez a Wallet Instance-hez, és a dátum, ameddig a tárcaszolgáltató naprakészen tartja
cnfA kulcs, amely a WIA-val együtt küldött birtoklásbizonyítékot aláírja

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
  }
}
MezőMit árul el a kibocsátónak
typ / x5cHogy ez egy kulcsattesztáció, valamint a tárcaszolgáltató tanúsítványlánca a Trusted List szerinti ellenőrzéshez
iat / expMikor állították ki, és mikor jár le technikailag
attested_keysNyilvános kulcsok, amelyek privát kulcsait a WSCD vagy a kulcstároló hozta létre és tárolja; több kulcs kötegelt kiállítást tesz lehetővé
key_storage / user_authenticationMennyire ellenálló a támadásokkal szemben a tároló és a kulcsokat feloldó felhasználói hitelesítés; egy WSCD mindkettőnél mindig iso_18045_high
certificationA WSCD vagy a kulcstároló tanúsítása, amelyből a kibocsátó megállapíthatja, hogy WSCD-ről van-e szó
key_storage_statusEgy Status List bejegyzés a WSCD-hez vagy kulcstárolóhoz, és a dátum, ameddig a tárcaszolgáltató naprakészen tartja
nonceA kibocsátó c_nonce értéke, csak akkor szerepel, ha a Key Attestationt attestation típusú bizonyítékként küldik

Merre halad a WUA az OpenID4VCI kiállítás során

A két attesztáció különböző helyekre kerül. A WIA OAuth kliensként hitelesíti a tárcát az Authorization Servernél. A Key Attestation a Credential Issuerhez megy, magára a hitelesítő adatra vonatkozó kéréssel együtt.

Az Authorization Server megkapja a WIA-t

OAuth-Client-AttestationOAuth-Client-Attestation-PoP
  • A WIA aláírása a tárcaszolgáltatók Trusted Listjéig vezet
  • A WIA nem járt le, és a Wallet Instance nincs visszavonva
  • A birtoklásbizonyítékot a WIA cnf claimjében szereplő kulccsal írták alá

A Credential Issuer megkapja a Key Attestationt

proofs.jwt[].key_attestationproofs.attestation
  • A Key Attestation aláírása a tárcaszolgáltatók Trusted Listjéig vezet
  • A kibocsátó friss c_nonce értéke a jwt bizonyítékban vagy magában a Key Attestationben szerepel
  • A WSCD vagy a kulcstároló nincs visszavonva, és a hitelesítő adat az egyik attested_keys kulcshoz van kötve

Pushed Authorization Request a WIA-val

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>

A client_id megegyezik a WIA sub értékével. A Token Request ugyanezt a két fejlécet tartalmazza. Mivel a Credential Issuer soha nem látja a WIA-t, az Authorization Servernek kell továbbadnia a client_status értékét, például a hozzáférési tokenben.

Credential Request a Key Attestationnel

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]>"]
  }
}

Az attestation bizonyítéktípusnál a kérés ehelyett ezt tartalmazza: "proofs": { "attestation": ["<Key Attestation JWT>"] }. Ilyenkor nincs birtoklásbizonyíték: a tárcaegység a kibocsátó c_nonce értékét átadja a tárcaszolgáltatónak, amely azt egy frissen aláírt Key Attestationbe teszi.

A WUA életciklusa

A WUA szándékosan rövid életű és egyszer használatos, de a mögötte álló visszavonási információ túléli magát a tokent. Az első három szakasz rutinszerű, a negyedik csak akkor következik be, ha valami elromlik.

1. Kiállítás

A tárcaszolgáltató a sértetlenségi és kulcstároló-ellenőrzések után írja alá a WIA-kat és a Key Attestationöket

2. Egyszeri használat

Mindegyik egyetlen kiállítást szolgál, ezért a tárcaegység folyamatosan újakat szerez be

3. Láncolt visszavonás

A PID Provider legalább 24 óránként újraellenőrzi a WIA és a Key Attestation állapotát, és visszavonja a PID-et, ha bármelyiket visszavonták

4. Visszavonás

A tárcaszolgáltató visszavon egy Wallet Instance-t, például elvesztés vagy lopás után, vagy egy biztonsági sérülékenységgel érintett WSCD-t vagy kulcstárolót

Az EUDI Wallet ökoszisztémán kívül egyes tárcaszolgáltatók nagyon rövid élettartamú, állapothivatkozás nélküli tárca-attesztációkat állítanak ki, és visszavonás helyett a lejáratra hagyatkoznak; az OpenID4VCI szerint a status claim opcionális. A TS3 ezt EUDI Walletek esetén nem engedi meg. A WIA eleve kevesebb mint 24 óráig él, mégis a WIA-nak és a Key Attestationnek is olyan állapothivatkozást kell hordoznia, amelyet a tárcaszolgáltató legalább 31 napig fenntart, mert a PID Providerek ezzel vonják vissza a PID-eket jóval a kiállítás után is.

WUA, WIA és KA: melyik fogalom mit jelent

A terminológia a specifikációk érésével változott. A TS3 az 1.1-es verzióig Wallet App Attestationnek nevezte a WIA-t, és az 1.5-ös verzióig WUA-nak hívta azt, ami ma Key Attestation. A régebbi cikkek és ARF-tervezetek ezért másként használják a fogalmakat.

FogalomMire vonatkozikKi kapja meg
WUAGyűjtőfogalom az alábbi két attesztációraPID Providerek és Attestation Providerek, kizárólag kiállításkor
WIAA Wallet Instance, vagyis az alkalmazásAz Authorization Server, a Pushed Authorization Requestben és a Token Requestben
KAEgy WSCD vagy kulcstároló és az abban tárolt kulcsokA Credential Issuer, a Credential Request proofs részében

Kapcsolódó fogalmak

Gyakran ismételt kérdések

Ugyanaz a WUA, mint a Wallet Instance Attestation?

Nem. A TS3 1.5-ös verziója óta a WUA két attesztáció gyűjtőfogalma: a Wallet Instance Attestation (WIA) az alkalmazásra, a Key Attestation (KA) pedig a kulcsokat tároló WSCD-re vagy kulcstárolóra vonatkozik. A régebbi dokumentumok WUA-nak nevezik azt, amit ma Key Attestationnek hívnak, ezért keverik össze gyakran a fogalmakat.

Látja valaha az ellenőrző a WUA-t?

Nem. Az ARF WUA_07 és WUA_24 követelménye szerint a tárcaegység WIA-t vagy Key Attestationt csak PID Providernek vagy Attestation Providernek mutathat be kiállításkor, megbízó félnek soha. Az ellenőrző ehelyett a hitelesítő adatot ellenőrzi: az aláírását, az eszközhöz kötését és a visszavonási állapotát. Ha egy PID mögötti tárcát visszavonnak, a PID Provider a 24 órás ellenőrzési ciklusán belül visszavonja a PID-et, és az ellenőrző ezt a PID saját állapotán keresztül látja.

Mennyi ideig érvényes egy WUA?

Egy WIA kevesebb mint 24 órával azután jár le, hogy a tárcaszolgáltató ellenőrizte az alkalmazás sértetlenségét. Egy Key Attestation a tárcaszolgáltató döntése szerint hosszabb ideig is érvényes lehet. Ettől függetlenül mindkettő hordoz egy állapotfenntartási dátumot, a client_status.exp vagy a key_storage_status.exp értéket, ameddig a tárcaszolgáltató naprakészen tartja a visszavonási állapotot. A tárcaegységnek mindig képesnek kell lennie olyat bemutatni, amelynek ez a dátuma legalább 31 nap múlva van, és a PID-nek e dátum előtt le kell járnia.

Mi történik, ha egy tárcaegység a WUA lejárta előtt kompromittálódik?

A tárcaszolgáltató a WIA Status Listjén visszavonja a Wallet Instance-t, vagy ha egy WSCD- vagy kulcstárolótípus sérülékeny, az adott tárolóhoz tartozó Status List bejegyzést. A PID Provider az általa kiállított minden PID mögötti WIA és Key Attestation állapotát legalább 24 óránként egyszer ellenőrzi, és visszavonja a PID-et, ha bármelyiket visszavonták. Az Attestation Providerek ugyanígy járhatnak el. Nem magának a WUA-nak a lejárata távolítja el a tárcát, hanem a neki kiállított hitelesítő adatok visszavonása.

Vonatkozhat egy Key Attestation egynél több kulcsra?

Igen. Az attested_keys ugyanabból a WSCD-ből vagy kulcstárolóból több nyilvános kulcsot is felsorolhat, és így működik a kötegelt kiállítás: a kibocsátó a köteg minden hitelesítő adatát más kulcshoz köti, és egyetlen tárcaszolgáltatói aláírás mindegyikre kiterjed. Ha a Key Attestation jwt bizonyítékban utazik, a tárcaegység ezt a bizonyítékot csak a lista első kulcsával írja alá.

Források

  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

Ez az oldal tájékoztató jellegű, és nem minősül jogi tanácsadásnak. Hiteles útmutatásért forduljon közvetlenül az Európai Bizottsághoz és az OpenID Foundationhöz.

Beszéljünk az EUDI Wallet integrációról