WUA vysvětlena: jak se peněženka prokazuje vydavateli
Wallet Unit Attestation, WUA, je to, co EUDI Wallet při vydávání ukáže PID Providerovi nebo Attestation Providerovi, aby prokázala, že je pravá. Nejde o jeden dokument, ale o dva, oba podepsané poskytovatelem peněženky: Wallet Instance Attestation (WIA) o aplikaci peněženky a Key Attestation (KA) o zabezpečeném úložišti klíčů, se kterými bude osvědčení svázáno.
Problém, který WUA řeší
Vydavatel, který se chystá předat peněžence PID nebo osvědčení o registraci společnosti, nemá vestavěný způsob, jak odlišit certifikovanou EUDI Wallet od upravené aplikace nebo skriptu, který přehrává autorizační proces. Nevidí ani to, zda klíč, se kterým bude osvědčení svázáno, leží v certifikovaném zabezpečeném hardwaru, nebo v běžném úložišti, odkud by se dal zkopírovat.
WUA uzavírá obě mezery. Poskytovatel peněženky se za aplikaci zaručuje prostřednictvím WIA a za úložiště klíčů prostřednictvím Key Attestation. Vydavatel obojí zkontroluje před vydáním a jejich stav odvolání sleduje i poté, takže může vydaná osvědčení odvolat, pokud se později ukáže, že peněženka nebo její úložiště klíčů byly kompromitovány.
WUA se používá pouze při vydávání. ARF zakazuje Wallet Unit předložit WIA nebo Key Attestation spoléhající se straně, takže údaje o peněžence se do žádné prezentace nedostanou.
Zúčastněné strany a kdo komu důvěřuje
Zapojeno je pět rolí a jen čtyři z nich s WUA kdy přijdou do styku. WSCD (Wallet Secure Cryptographic Device) nebo úložiště klíčů generuje a chrání klíče, poskytovatel peněženky se zaručuje za aplikaci a klíče a vydavatel se na to spoléhá, místo aby peněženku posuzoval sám.
Poskytovatel peněženky
Podepisuje WIA a Key Attestation po kontrole aplikace a úložiště klíčů a spravuje Status List pro obě
Wallet Unit
Při vydávání posílá vydavateli WIA a Key Attestation a každou z nich použije jen pro jedno vydání
WSCD nebo úložiště klíčů
Generuje a uchovává soukromé klíče, které Key Attestation popisuje
PID Provider nebo Attestation Provider
Ověří WIA a Key Attestation, sváže osvědčení s atestovaným klíčem a u obou dál sleduje odvolání
Spoléhající se strana
WUA nikdy nedostane. Místo toho kontroluje osvědčení, jeho vazbu na zařízení a stav odvolání
Vydavatelé WUA důvěřují, protože podpisový certifikát poskytovatele peněženky, odeslaný v hlavičce x5c, vede řetězem ke kotvě důvěry na Trusted List pro poskytovatele peněženek. Samotné Wallet Solution certifikuje subjekt posuzování shody a WIA nese informace o této certifikaci.
Dvě atestace pod jedním názvem
TS3, technická specifikace EUDI pro WUA, dělí atestaci na dvě, protože aplikace a úložiště klíčů jsou různé věci, které se kontrolují na různých endpointech a odvolávají z různých důvodů.
Wallet Instance Attestation (WIA)
- Atestuje
- Integritu Wallet Instance, tedy aplikace
- Příjemce
- Authorization Server, v Pushed Authorization Request a v Token Request
- Životnost
- Méně než 24 hodin
- Odvolání
- client_status: stav odvolání této Wallet Instance
- Potřeba pro
- Každé vydání, ať je osvědčení vázané na zařízení, nebo ne
Key Attestation (KA)
- Atestuje
- Že jeden nebo více klíčů bylo vygenerováno v konkrétním WSCD nebo úložišti klíčů a je v něm uloženo, a jak dobře toto úložiště odolává útokům
- Příjemce
- Credential Issuer, v části proofs požadavku Credential Request
- Životnost
- Určuje ji poskytovatel peněženky a může být delší než u WIA
- Odvolání
- key_storage_status: stav odvolání WSCD nebo úložiště klíčů
- Potřeba pro
- Pouze osvědčení vázaná na zařízení, včetně každého PID
Obě jsou JWT podepsané poskytovatelem peněženky pomocí ES256, ES384 nebo ES512. Key Attestation se použije jen pro jedno vydání a WIA se nikdy znovu nepoužije vůči jinému vydavateli, takže vydavatelé nemohou propojit požadavky ze stejné peněženky.
Jak Wallet Unit získává své WIA a Key Attestation
TS3 tento krok ponechává na každém poskytovateli peněženky, protože probíhá uvnitř jednoho produktu peněženky. ARF pouze vyžaduje, aby poskytovatel peněženky před podpisem WIA ověřil integritu aplikace a před podpisem Key Attestation ověřil, že atestované soukromé klíče jsou skutečně uloženy v uvedeném WSCD nebo úložišti klíčů. Typický postup, který jako důkaz využívá atestace platformy, například Google Play Integrity nebo Apple DeviceCheck, vypadá takto.
1. Wallet Unit
Požádá WSCD nebo úložiště klíčů o vygenerování párů klíčů
2. WSCD nebo úložiště klíčů
Vrátí veřejné klíče spolu s důkazem platformy o tom, kde byly vygenerovány
3. Poskytovatel peněženky
Zkontroluje integritu aplikace a důkazy ke klíčům, poté podepíše WIA a Key Attestation
4. Wallet Unit
Udržuje si zásobu čerstvých WIA a Key Attestation a pro každé vydání použije novou
Co obsahuje WIA a Key Attestation
Ani jedna nenese claim iss: vydavatel pozná poskytovatele peněženky podle podpisového certifikátu v hlavičce x5c. Níže uvedené příklady jsou dekódované, hlavička a payload jsou odděleny tečkou.
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": "..." }
}
}| Pole | Co sděluje vydavateli |
|---|---|
| typ / x5c | Že jde o atestaci klienta, a řetěz certifikátů poskytovatele peněženky pro kontrolu vůči Trusted List |
| sub | Typ peněženky, stejný pro každou instalaci, takže jej nelze použít ke sledování uživatele |
| wallet_name / wallet_version | Wallet Solution tak, jak je uvedeno na Trusted List, a jeho verze |
| wallet_solution_certification_information | Kdo Wallet Solution certifikoval; přesný obsah ještě není definován |
| exp | Technické vypršení platnosti, méně než 24 hodin po kontrole integrity |
| client_status | Záznam Status List pro tuto Wallet Instance a datum, do kterého jej poskytovatel peněženky udržuje aktuální |
| cnf | Klíč, kterým je podepsán důkaz držení odesílaný spolu s 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
}
}| Pole | Co sděluje vydavateli |
|---|---|
| typ / x5c | Že jde o atestaci klíče, a řetěz certifikátů poskytovatele peněženky pro kontrolu vůči Trusted List |
| iat / exp | Kdy byla vydána a kdy technicky vyprší její platnost |
| attested_keys | Veřejné klíče, jejichž soukromé klíče WSCD nebo úložiště klíčů vygenerovalo a uchovává; více klíčů umožňuje dávkové vydávání |
| key_storage / user_authentication | Jak dobře úložiště a autentizace uživatele, která klíče odemyká, odolávají útokům; WSCD má v obou případech vždy iso_18045_high |
| certification | Certifikace WSCD nebo úložiště klíčů, podle které vydavatel pozná, zda jde o WSCD |
| key_storage_status | Záznam Status List pro WSCD nebo úložiště klíčů a datum, do kterého jej poskytovatel peněženky udržuje aktuální |
| nonce | c_nonce vydavatele, přítomný pouze tehdy, když je Key Attestation odeslána jako důkaz typu attestation |
Kudy WUA putuje při vydávání přes OpenID4VCI
Obě atestace míří na různá místa. WIA autentizuje peněženku jako OAuth klienta na Authorization Server. Key Attestation jde na Credential Issuer spolu s požadavkem na samotné osvědčení.
Authorization Server přijme WIA
- Podpis WIA vede řetězem k Trusted List pro poskytovatele peněženek
- Platnost WIA nevypršela a Wallet Instance není odvolaná
- Důkaz držení je podepsán klíčem uvedeným v claimu cnf ve WIA
Credential Issuer přijme Key Attestation
- Podpis Key Attestation vede řetězem k Trusted List pro poskytovatele peněženek
- Čerstvý c_nonce vydavatele je v důkazu jwt nebo přímo v Key Attestation
- WSCD nebo úložiště klíčů není odvoláno a osvědčení je svázáno s jedním z attested_keys
Pushed Authorization Request s 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 odpovídá hodnotě sub ve WIA. Token Request nese stejné dvě hlavičky. Protože Credential Issuer WIA nikdy nevidí, musí mu Authorization Server předat její client_status, například uvnitř přístupového tokenu.
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]>"]
}
}U typu důkazu attestation nese požadavek místo toho "proofs": { "attestation": ["<Key Attestation JWT>"] }. Důkaz držení pak chybí: Wallet Unit předá c_nonce vydavatele poskytovateli peněženky, který jej vloží do nově podepsané Key Attestation.
Životní cyklus WUA
WUA je záměrně krátkodobá a jednorázová, ale informace o odvolání, které za ní stojí, přetrvávají déle než samotný token. První tři fáze jsou běžné, čtvrtá nastává jen tehdy, když se něco pokazí.
1. Vydání
Poskytovatel peněženky podepisuje WIA a Key Attestation po kontrole integrity a úložiště klíčů
2. Jednorázové použití
Každá slouží jen pro jedno vydání, takže si Wallet Unit průběžně obstarává nové
3. Řetězení odvolání
PID Provider nejméně každých 24 hodin znovu zkontroluje stav WIA a Key Attestation a PID odvolá, pokud je kterákoli z nich odvolaná
4. Odvolání
Poskytovatel peněženky odvolá Wallet Instance, například po ztrátě nebo krádeži, nebo WSCD či úložiště klíčů s bezpečnostní zranitelností
Mimo ekosystém EUDI Wallet někteří poskytovatelé peněženek vydávají atestace peněženky s velmi krátkou životností a zcela bez odkazu na stav, takže místo odvolání spoléhají na vypršení platnosti; OpenID4VCI činí claim status volitelným. TS3 to u EUDI Wallet nepovoluje. WIA sice žije méně než 24 hodin, přesto musí WIA i Key Attestation nést odkaz na stav, který poskytovatel peněženky udržuje nejméně 31 dní, protože PID Provideři jej používají k odvolání PID dlouho po vydání.
WUA, WIA a KA: co který pojem znamená
Terminologie se měnila spolu s tím, jak specifikace dozrávaly. TS3 až do verze 1.1 označovala WIA jako Wallet App Attestation a až do verze 1.5 používala WUA pro to, co je dnes Key Attestation. Starší články a návrhy ARF proto tyto pojmy používají jinak.
| Pojem | Na co se vztahuje | Kdo ji přijímá |
|---|---|---|
| WUA | Souhrnný pojem pro dvě níže uvedené atestace | PID Provider a Attestation Provider, pouze při vydávání |
| WIA | Wallet Instance, tedy aplikaci | Authorization Server, v Pushed Authorization Request a Token Request |
| KA | WSCD nebo úložiště klíčů a klíče, které obsahuje | Credential Issuer, v části proofs požadavku Credential Request |
Související pojmy
Často kladené otázky
Je WUA totéž co Wallet Instance Attestation?
Ne. Od verze 1.5 TS3 je WUA souhrnný pojem pro dvě atestace: Wallet Instance Attestation (WIA), která se vztahuje na aplikaci, a Key Attestation (KA), která se vztahuje na WSCD nebo úložiště klíčů, v němž jsou klíče uloženy. Starší dokumenty používají WUA pro to, čemu se dnes říká Key Attestation, a proto se tyto pojmy často zaměňují.
Vidí ověřovatel někdy WUA?
Ne. Požadavky ARF WUA_07 a WUA_24 dovolují Wallet Unit předložit WIA nebo Key Attestation pouze PID Providerovi nebo Attestation Providerovi při vydávání, nikdy spoléhající se straně. Ověřovatel místo toho kontroluje osvědčení: jeho podpis, vazbu na zařízení a stav odvolání. Pokud je peněženka, ke které PID patří, odvolána, PID Provider odvolá PID v rámci svého 24hodinového kontrolního cyklu a ověřovatel to uvidí ve stavu samotného PID.
Jak dlouho je WUA platná?
Platnost WIA vyprší méně než 24 hodin poté, co poskytovatel peněženky zkontroloval integritu aplikace. Key Attestation může platit déle, podle uvážení poskytovatele peněženky. Nezávisle na tom nese každá z nich datum údržby stavu, client_status.exp nebo key_storage_status.exp, do kterého poskytovatel peněženky udržuje stav odvolání aktuální. Wallet Unit musí být vždy schopna předložit takovou, jejíž datum je vzdáleno nejméně 31 dní, a platnost PID musí skončit před tímto datem.
Co se stane, když je Wallet Unit kompromitována dříve, než vyprší platnost její WUA?
Poskytovatel peněženky odvolá Wallet Instance na svém Status List pro WIA, nebo v případě zranitelnosti určitého typu WSCD či úložiště klíčů odvolá záznam Status List pro toto úložiště. PID Provider nejméně jednou za 24 hodin kontroluje stav WIA a Key Attestation u každého PID, který vydal, a PID odvolá, pokud je kterákoli z nich odvolaná. Attestation Provider může postupovat stejně. Peněženku z ekosystému nevyřadí vypršení samotné WUA, ale odvolání osvědčení, která jí byla vydána.
Může jedna Key Attestation pokrývat více než jeden klíč?
Ano. attested_keys může obsahovat několik veřejných klíčů ze stejného WSCD nebo úložiště klíčů, a právě tak funguje dávkové vydávání: vydavatel sváže každé osvědčení v dávce s jiným klíčem a jeden podpis poskytovatele peněženky pokrývá všechny. Když Key Attestation putuje v důkazu jwt, Wallet Unit tento důkaz podepíše pouze prvním klíčem ze seznamu.
Zdroje
Tato stránka má informativní charakter a nepředstavuje právní poradenství. Závazné informace získáte přímo od Evropské komise a OpenID Foundation.