WUA vysvetlené: ako sa peňaženka preukazuje vydavateľovi
Wallet Unit Attestation (WUA) je to, čo EUDI peňaženka počas vydávania ukáže PID Provider alebo Attestation Provider, aby dokázala, že je pravá. Nejde o jeden dokument, ale o dva, oba podpísané Poskytovateľom peňaženky: Wallet Instance Attestation (WIA) o aplikácii peňaženky a Key Attestation (KA) o bezpečnom úložisku kľúčov, na ktoré bude osvedčenie naviazané.
Aký problém WUA rieši
Vydavateľ, ktorý sa chystá odovzdať peňaženke PID alebo osvedčenie o registrácii spoločnosti, nemá zabudovaný spôsob, ako rozlíšiť certifikovanú EUDI peňaženku od upravenej aplikácie alebo skriptu, ktorý prehráva autorizačný tok. Nevidí ani to, či je kľúč, na ktorý bude osvedčenie naviazané, v certifikovanom bezpečnom hardvéri, alebo v bežnom úložisku, z ktorého sa dá skopírovať.
WUA uzatvára obe medzery. Poskytovateľ peňaženky ručí za aplikáciu prostredníctvom WIA a za úložisko kľúčov prostredníctvom Key Attestation. Vydavateľ obe overí pred vydaním a aj potom sleduje stav ich odvolania, takže môže odvolať to, čo vydal, ak sa neskôr zistí, že peňaženka alebo jej úložisko kľúčov boli kompromitované.
WUA sa používa len počas vydávania. ARF zakazuje jednotke peňaženky predložiť WIA alebo Key Attestation Relying Party, vďaka čomu sa údaje o peňaženke nedostanú do žiadnej prezentácie.
Aktéri a kto komu dôveruje
Zapojených je päť rolí a iba štyri z nich niekedy pracujú s WUA. WSCD (Wallet Secure Cryptographic Device) alebo úložisko kľúčov generuje a chráni kľúče, Poskytovateľ peňaženky ručí za aplikáciu a kľúče a vydavateľ sa na to spolieha namiesto toho, aby peňaženku posudzoval sám.
Poskytovateľ peňaženky
Po kontrole aplikácie a úložiska kľúčov podpisuje WIA a Key Attestation a spravuje Status List pre obe
Jednotka peňaženky
Počas vydávania posiela vydavateľovi WIA a Key Attestation a každú z nich použije len na jedno vydanie
WSCD alebo úložisko kľúčov
Generuje a uchováva súkromné kľúče, ktoré Key Attestation opisuje
PID Provider alebo Attestation Provider
Overí WIA a Key Attestation, naviaže osvedčenie na atestovaný kľúč a naďalej kontroluje, či niektorá z nich nebola odvolaná
Relying Party
Nikdy nedostane WUA. Namiesto toho kontroluje osvedčenie, jeho naviazanie na zariadenie a stav jeho odvolania
Vydavatelia dôverujú WUA, pretože podpisový certifikát Poskytovateľa peňaženky, odoslaný v hlavičke x5c, vedie reťazou k dôveryhodnej kotve na Trusted List pre poskytovateľov peňaženiek. Samotné Wallet Solution certifikuje orgán posudzovania zhody a WIA obsahuje informácie o tejto certifikácii.
Dve atestácie pod jedným názvom
TS3, technická špecifikácia EUDI pre WUA, rozdeľuje atestáciu na dve, pretože aplikácia a úložisko kľúčov sú rozdielne veci, kontrolujú sa na rôznych koncových bodoch a odvolávajú sa z rôznych dôvodov.
Wallet Instance Attestation (WIA)
- Osvedčuje
- Integritu Wallet Instance, teda aplikácie
- Posiela sa
- Na Authorization Server, v Pushed Authorization Request a Token Request
- Platnosť
- Menej ako 24 hodín
- Odvolanie
- client_status: stav odvolania tejto Wallet Instance
- Potrebná pre
- Každé vydanie, bez ohľadu na to, či je osvedčenie naviazané na zariadenie
Key Attestation (KA)
- Osvedčuje
- Že jeden alebo viac kľúčov bolo vygenerovaných v uvedenom WSCD alebo úložisku kľúčov a sú v ňom uchovávané, a ako dobre toto úložisko odoláva útokom
- Posiela sa
- Na Credential Issuer, v proofs v Credential Request
- Platnosť
- Určuje ju Poskytovateľ peňaženky a môže byť dlhšia ako pri WIA
- Odvolanie
- key_storage_status: stav odvolania WSCD alebo úložiska kľúčov
- Potrebná pre
- Len osvedčenia naviazané na zariadenie, vrátane každého PID
Obe sú JWT podpísané Poskytovateľom peňaženky pomocou ES256, ES384 alebo ES512. Key Attestation sa používa len na jedno vydanie a WIA sa nikdy znovu nepoužije voči inému vydavateľovi, takže vydavatelia nemôžu prepojiť požiadavky z tej istej peňaženky.
Ako jednotka peňaženky získava svoje WIA a Key Attestation
TS3 tento krok ponecháva na každého Poskytovateľa peňaženky, pretože prebieha vo vnútri jedného produktu peňaženky. ARF iba vyžaduje, aby Poskytovateľ peňaženky pred podpísaním WIA overil integritu aplikácie a pred podpísaním Key Attestation overil, že atestované súkromné kľúče sa naozaj nachádzajú v uvedenom WSCD alebo úložisku kľúčov. Typický tok, ktorý ako dôkaz využíva atestácie platformy, napríklad Google Play Integrity alebo Apple DeviceCheck, vyzerá takto.
1. Jednotka peňaženky
Požiada WSCD alebo úložisko kľúčov o vygenerovanie párov kľúčov
2. WSCD alebo úložisko kľúčov
Vráti verejné kľúče spolu s dôkazom platformy o tom, kde boli vygenerované
3. Poskytovateľ peňaženky
Skontroluje integritu aplikácie a dôkaz o kľúčoch, potom podpíše WIA a Key Attestation
4. Jednotka peňaženky
Udržiava si zásobu čerstvých WIA a Key Attestation a na každé vydanie použije novú
Čo obsahuje WIA a Key Attestation
Ani jedna neobsahuje nárok iss: vydavateľ identifikuje Poskytovateľa peňaženky podľa podpisového certifikátu v hlavičke x5c. Nasledujúce príklady sú dekódované, hlavička a payload sú oddelené bodkou.
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 | Čo hovorí vydavateľovi |
|---|---|
| typ / x5c | Že ide o atestáciu klienta, a reťazec certifikátov Poskytovateľa peňaženky na overenie voči Trusted List |
| sub | Typ peňaženky, rovnaký pre každú inštaláciu, takže sa nedá použiť na sledovanie používateľa |
| wallet_name / wallet_version | Wallet Solution tak, ako je uvedené na Trusted List, a jeho verzia |
| wallet_solution_certification_information | Kto certifikoval Wallet Solution; presný obsah ešte nie je definovaný |
| exp | Technické uplynutie platnosti, menej ako 24 hodín po kontrole integrity |
| client_status | Záznam v Status List pre túto Wallet Instance a dátum, do ktorého ho Poskytovateľ peňaženky udržiava aktuálny |
| cnf | Kľúč, ktorým sa podpisuje dôkaz o vlastníctve odoslaný 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 | Čo hovorí vydavateľovi |
|---|---|
| typ / x5c | Že ide o atestáciu kľúča, a reťazec certifikátov Poskytovateľa peňaženky na overenie voči Trusted List |
| iat / exp | Kedy bola vydaná a kedy technicky uplynie jej platnosť |
| attested_keys | Verejné kľúče, ku ktorým WSCD alebo úložisko kľúčov vygenerovalo a uchováva súkromné kľúče; viac kľúčov umožňuje dávkové vydávanie |
| key_storage / user_authentication | Ako dobre úložisko a autentifikácia používateľa, ktorá kľúče odomyká, odolávajú útokom; WSCD má v oboch prípadoch vždy iso_18045_high |
| certification | Certifikácia WSCD alebo úložiska kľúčov, podľa ktorej vydavateľ zistí, či ide o WSCD |
| key_storage_status | Záznam v Status List pre WSCD alebo úložisko kľúčov a dátum, do ktorého ho Poskytovateľ peňaženky udržiava aktuálny |
| nonce | c_nonce vydavateľa, prítomný len vtedy, keď sa Key Attestation posiela ako dôkaz typu attestation |
Kam putuje WUA počas vydávania cez OpenID4VCI
Tieto dve atestácie smerujú na rôzne miesta. WIA autentifikuje peňaženku ako OAuth klienta na Authorization Server. Key Attestation ide na Credential Issuer spolu s požiadavkou na samotné osvedčenie.
Authorization Server prijíma WIA
- Podpis WIA vedie reťazou k Trusted List pre poskytovateľov peňaženiek
- Platnosť WIA neuplynula a Wallet Instance nie je odvolaná
- Dôkaz o vlastníctve je podpísaný kľúčom z nároku cnf vo WIA
Credential Issuer prijíma Key Attestation
- Podpis Key Attestation vedie reťazou k Trusted List pre poskytovateľov peňaženiek
- Čerstvý c_nonce vydavateľa je v jwt dôkaze alebo priamo v Key Attestation
- WSCD ani úložisko kľúčov nie je odvolané a osvedčenie je naviazané na jeden 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 zodpovedá sub vo WIA. Token Request obsahuje tie isté dve hlavičky. Keďže Credential Issuer WIA nikdy nevidí, Authorization Server mu musí odovzdať jej client_status, napríklad v prístupovom tokene.
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 type dôkazu attestation požiadavka namiesto toho obsahuje "proofs": { "attestation": ["<Key Attestation JWT>"] }. Dôkaz o vlastníctve vtedy nie je: jednotka peňaženky odovzdá c_nonce vydavateľa Poskytovateľovi peňaženky, ktorý ho vloží do novo podpísanej Key Attestation.
Životný cyklus WUA
WUA je zámerne krátkodobé a jednorazové, no informácie o odvolaní za ním pretrvajú dlhšie ako samotný token. Prvé tri fázy sú rutinné; štvrtá nastane len vtedy, keď sa niečo pokazí.
1. Vydanie
Poskytovateľ peňaženky podpisuje WIA a Key Attestation po kontrolách integrity a úložiska kľúčov
2. Jednorazové použitie
Každá slúži na jedno vydanie, preto si jednotka peňaženky priebežne zaobstaráva nové
3. Reťazené odvolanie
PID Provider aspoň každých 24 hodín znovu overuje stav WIA a Key Attestation a odvolá PID, ak je niektorá z nich odvolaná
4. Zrušenie
Poskytovateľ peňaženky odvolá Wallet Instance, napríklad po strate alebo krádeži, alebo WSCD či úložisko kľúčov s bezpečnostnou zraniteľnosťou
Mimo ekosystému EUDI Wallet niektorí poskytovatelia peňaženiek vydávajú atestácie peňaženky s veľmi krátkou platnosťou a bez akéhokoľvek odkazu na stav, pričom sa namiesto odvolania spoliehajú na uplynutie platnosti; OpenID4VCI ponecháva nárok na stav voliteľný. TS3 to pri EUDI peňaženkách nedovoľuje. WIA síce platí menej ako 24 hodín, no WIA aj Key Attestation musia obsahovať odkaz na stav, ktorý Poskytovateľ peňaženky udržiava aspoň 31 dní, pretože PID Provider ho používa na odvolanie PID dlho po vydaní.
WUA, WIA a KA: čo ktorý pojem znamená
Terminológia sa menila s tým, ako špecifikácie dozrievali. TS3 do verzie 1.1 nazývala WIA Wallet App Attestation a do verzie 1.5 používala WUA pre to, čo je dnes Key Attestation. Staršie články a návrhy ARF preto používajú pojmy inak.
| Pojem | Čo pokrýva | Kto ju prijíma |
|---|---|---|
| WUA | Zastrešujúci pojem pre dve atestácie nižšie | PID Provider a Attestation Provider, len počas vydávania |
| WIA | Wallet Instance, teda aplikáciu | Authorization Server, v Pushed Authorization Request a Token Request |
| KA | WSCD alebo úložisko kľúčov a kľúče, ktoré uchováva | Credential Issuer, v proofs v Credential Request |
Súvisiace pojmy
Často kladené otázky
Je WUA to isté ako Wallet Instance Attestation?
Nie. Od verzie 1.5 špecifikácie TS3 je WUA zastrešujúci pojem pre dve atestácie: Wallet Instance Attestation (WIA), ktorá pokrýva aplikáciu, a Key Attestation (KA), ktorá pokrýva WSCD alebo úložisko kľúčov, v ktorom sú kľúče uložené. Staršie dokumenty používajú WUA pre to, čo sa dnes nazýva Key Attestation, preto sa tieto pojmy často zamieňajú.
Vidí overovateľ niekedy WUA?
Nie. Požiadavky ARF WUA_07 a WUA_24 dovoľujú jednotke peňaženky predložiť WIA alebo Key Attestation len PID Provider alebo Attestation Provider počas vydávania, nikdy Relying Party. Overovateľ namiesto toho kontroluje osvedčenie: jeho podpis, naviazanie na zariadenie a stav odvolania. Ak je peňaženka, ktorej bol PID vydaný, odvolaná, PID Provider odvolá PID v rámci svojho 24-hodinového cyklu kontroly a overovateľ to uvidí v stave samotného PID.
Ako dlho je WUA platné?
Platnosť WIA uplynie menej ako 24 hodín po tom, čo Poskytovateľ peňaženky skontroloval integritu aplikácie. Key Attestation môže byť podľa uváženia Poskytovateľa peňaženky platná dlhšie. Okrem toho každá nesie dátum udržiavania stavu, client_status.exp alebo key_storage_status.exp, do ktorého Poskytovateľ peňaženky udržiava stav odvolania aktuálny. Jednotka peňaženky musí byť vždy schopná predložiť takú, ktorej dátum je vzdialený aspoň 31 dní, a platnosť PID musí uplynúť pred týmto dátumom.
Čo sa stane, ak je jednotka peňaženky kompromitovaná pred uplynutím platnosti jej WUA?
Poskytovateľ peňaženky odvolá Wallet Instance vo svojom WIA Status List, alebo pri zraniteľnosti určitého typu WSCD či úložiska kľúčov odvolá záznam v Status List pre toto úložisko. PID Provider aspoň raz za 24 hodín kontroluje stav WIA a Key Attestation za každým PID, ktorý vydal, a odvolá PID, ak je niektorá z nich odvolaná. Attestation Provider môže postupovať rovnako. Peňaženku z ekosystému neodstráni uplynutie platnosti samotného WUA, ale odvolanie osvedčení, ktoré jej boli vydané.
Môže jedna Key Attestation pokrývať viac ako jeden kľúč?
Áno. attested_keys môže obsahovať viacero verejných kľúčov z toho istého WSCD alebo úložiska kľúčov, a presne tak funguje dávkové vydávanie: vydavateľ naviaže každé osvedčenie v dávke na iný kľúč a jeden podpis Poskytovateľa peňaženky pokrýva všetky. Keď sa Key Attestation posiela v jwt dôkaze, jednotka peňaženky podpíše tento dôkaz len prvým kľúčom zo zoznamu.
Zdroje
Táto stránka má informatívny charakter a nepredstavuje právne poradenstvo. Pre záväzné usmernenie sa obráťte priamo na Európsku komisiu a OpenID Foundation.