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
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
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
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 / x5c | Hogy ez egy kliens-attesztáció, valamint a tárcaszolgáltató tanúsítványlánca a Trusted List szerinti ellenőrzéshez |
| sub | A 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_version | A Wallet Solution a Trusted Listen szereplő néven, és annak verziója |
| wallet_solution_certification_information | Ki tanúsította a Wallet Solutiont; a pontos tartalom még nincs meghatározva |
| exp | Technikai lejárat, kevesebb mint 24 órával a sértetlenségi ellenőrzés után |
| client_status | Egy Status List bejegyzés ehhez a Wallet Instance-hez, és a dátum, ameddig a tárcaszolgáltató naprakészen tartja |
| cnf | A 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 / x5c | Hogy ez egy kulcsattesztáció, valamint a tárcaszolgáltató tanúsítványlánca a Trusted List szerinti ellenőrzéshez |
| iat / exp | Mikor állították ki, és mikor jár le technikailag |
| attested_keys | Nyilvá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_authentication | Mennyire 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 |
| certification | A 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_status | Egy Status List bejegyzés a WSCD-hez vagy kulcstárolóhoz, és a dátum, ameddig a tárcaszolgáltató naprakészen tartja |
| nonce | A 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
- 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
- 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.
| Fogalom | Mire vonatkozik | Ki kapja meg |
|---|---|---|
| WUA | Gyűjtőfogalom az alábbi két attesztációra | PID Providerek és Attestation Providerek, kizárólag kiállításkor |
| WIA | A Wallet Instance, vagyis az alkalmazás | Az Authorization Server, a Pushed Authorization Requestben és a Token Requestben |
| KA | Egy WSCD vagy kulcstároló és az abban tárolt kulcsok | A 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
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.