WUA lahti seletatuna: kuidas rahakott end väljastajale tõendab
Wallet Unit Attestation ehk WUA on see, mida EUDI Wallet näitab väljastamise ajal PID Provider'ile või Attestation Provider'ile, et tõendada oma ehtsust. See ei ole üks dokument, vaid kaks, mõlemad rahakoti pakkuja allkirjastatud: Wallet Instance Attestation (WIA) rahakotirakenduse kohta ja Key Attestation (KA) nende võtmete turvalise hoiu kohta, millega tõend seotakse.
Probleem, mille WUA lahendab
Väljastajal, kes on andmas rahakotile PID-i või ettevõtte registreerimistõendit, pole sisseehitatud võimalust eristada sertifitseeritud EUDI Wallet'it muudetud rakendusest või skriptist, mis kordab volitusvoogu. Samuti ei näe ta, kas võti, millega tõend seotakse, asub sertifitseeritud turvalises riistvaras või tavalises hoidlas, kust selle saaks kopeerida.
WUA sulgeb mõlemad lüngad. Rahakoti pakkuja tagab rakenduse WIA kaudu ja võtmehoidla Key Attestation'i kaudu. Väljastaja kontrollib mõlemat enne väljastamist ja jälgib ka hiljem nende tühistamisolekut, et saaks väljastatu tühistada, kui rahakott või selle võtmehoidla osutub hiljem kompromiteerituks.
WUA-d kasutatakse ainult väljastamisel. ARF keelab rahakoti üksusel esitada WIA-d või Key Attestation'it tuginevale osapoolele, nii et rahakoti andmed ei jõua ühtegi esitlusse.
Osalised ja kes keda usaldab
Kaasatud on viis rolli ja ainult neli neist puutuvad kunagi WUA-ga kokku. WSCD (Wallet Secure Cryptographic Device) või võtmehoidla genereerib ja kaitseb võtmeid, rahakoti pakkuja tagab rakenduse ja võtmete ehtsuse ning väljastaja tugineb sellele, selle asemel et rahakotti ise hinnata.
Rahakoti pakkuja
Allkirjastab WIA-d ja Key Attestation'id pärast rakenduse ja võtmehoidla kontrollimist ning haldab mõlema Status List'e
Rahakoti üksus
Saadab väljastamise ajal väljastajale WIA ja Key Attestation'i ning kasutab kumbagi ainult üheks väljastamiseks
WSCD või võtmehoidla
Genereerib ja hoiab privaatvõtmeid, mida Key Attestation kirjeldab
PID Provider või Attestation Provider
Kontrollib WIA-d ja Key Attestation'it, seob tõendi atesteeritud võtmega ning jälgib edaspidi mõlema tühistamist
Tuginev osapool
Ei saa kunagi WUA-d. Selle asemel kontrollib ta tõendit, selle seadmega sidumist ja tühistamisolekut
Väljastajad usaldavad WUA-d, sest rahakoti pakkuja allkirjastamissertifikaat, mis saadetakse x5c päises, on ahelas usaldusankruga rahakoti pakkujate Trusted List'il. Wallet Solution'i enda sertifitseerib vastavushindamisasutus ja WIA kannab seda sertifitseerimisteavet.
Kaks atesteeringut ühe nime all
TS3, EUDI tehniline spetsifikatsioon WUA-de kohta, jagab atesteeringu kaheks, sest rakendus ja võtmehoidla on eri asjad, mida kontrollitakse eri otspunktides ja tühistatakse eri põhjustel.
Wallet Instance Attestation (WIA)
- Tõendab
- Wallet Instance'i ehk rakenduse terviklust
- Saaja
- Authorization Server, Pushed Authorization Request'is ja Token Request'is
- Eluiga
- Alla 24 tunni
- Tühistamine
- client_status: selle Wallet Instance'i tühistamisolek
- Vajalik
- Iga väljastamise jaoks, olgu tõend seadmega seotud või mitte
Key Attestation (KA)
- Tõendab
- Et üks või mitu võtit on genereeritud nimetatud WSCD-s või võtmehoidlas ja neid hoitakse seal, ning kui hästi see hoidla rünnakutele vastu peab
- Saaja
- Credential Issuer, Credential Request'i proofs osas
- Eluiga
- Määrab rahakoti pakkuja, võib olla pikem kui WIA oma
- Tühistamine
- key_storage_status: WSCD või võtmehoidla tühistamisolek
- Vajalik
- Ainult seadmega seotud tõendite jaoks, sealhulgas iga PID
Mõlemad on JWT-d, mille rahakoti pakkuja on allkirjastanud algoritmiga ES256, ES384 või ES512. Key Attestation'it kasutatakse ainult üheks väljastamiseks ja WIA-d ei kasutata kunagi uuesti teise väljastaja juures, nii et väljastajad ei saa sama rahakoti päringuid omavahel siduda.
Kuidas rahakoti üksus saab oma WIA-d ja Key Attestation'id
TS3 jätab selle sammu iga rahakoti pakkuja otsustada, sest see toimub ühe rahakotitoote sees. ARF nõuab ainult, et rahakoti pakkuja kontrolliks enne WIA allkirjastamist rakenduse terviklust ning enne Key Attestation'i allkirjastamist seda, et atesteeritud privaatvõtmed asuvad tõesti nimetatud WSCD-s või võtmehoidlas. Tüüpiline voog, mis kasutab tõendina platvormi atesteeringuid, näiteks Google Play Integrity või Apple DeviceCheck, näeb välja selline.
1. Rahakoti üksus
Palub WSCD-l või võtmehoidlal genereerida võtmepaarid
2. WSCD või võtmehoidla
Tagastab avalikud võtmed koos platvormi tõendiga selle kohta, kus need genereeriti
3. Rahakoti pakkuja
Kontrollib rakenduse terviklust ja võtmete tõendeid, seejärel allkirjastab WIA-d ja Key Attestation'id
4. Rahakoti üksus
Hoiab varu värskeid WIA-sid ja Key Attestation'eid ning kasutab iga väljastamise jaoks uut
Mida WIA ja Key Attestation sisaldavad
Kummalgi pole iss väidet: väljastaja tuvastab rahakoti pakkuja x5c päises oleva allkirjastamissertifikaadi järgi. Allolevad näited on dekodeeritud, päis ja sisu on eraldatud punktiga.
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": "..." }
}
}| Väli | Mida see väljastajale ütleb |
|---|---|
| typ / x5c | Et tegu on kliendi atesteeringuga, ning rahakoti pakkuja sertifikaadiahel, mida kontrollida Trusted List'i vastu |
| sub | Rahakoti tüüp, mis on igal paigaldusel sama, nii et selle abil ei saa kasutajat jälgida |
| wallet_name / wallet_version | Wallet Solution nii, nagu see on Trusted List'il kirjas, ja selle versioon |
| wallet_solution_certification_information | Kes Wallet Solution'i sertifitseeris; täpne sisu on veel määratlemata |
| exp | Tehniline aegumine, vähem kui 24 tundi pärast tervikluse kontrolli |
| client_status | Status List'i kanne selle Wallet Instance'i jaoks ja kuupäev, milleni rahakoti pakkuja seda ajakohasena hoiab |
| cnf | Võti, millega allkirjastatakse koos WIA-ga saadetav valdusetõend |
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
}
}| Väli | Mida see väljastajale ütleb |
|---|---|
| typ / x5c | Et tegu on võtme atesteeringuga, ning rahakoti pakkuja sertifikaadiahel, mida kontrollida Trusted List'i vastu |
| iat / exp | Millal see väljastati ja millal see tehniliselt aegub |
| attested_keys | Avalikud võtmed, mille privaatvõtmed WSCD või võtmehoidla genereeris ja mida ta hoiab; mitu võtit võimaldavad partiiväljastamist |
| key_storage / user_authentication | Kui hästi hoidla ja võtmeid avav kasutaja autentimine rünnakutele vastu peavad; WSCD on mõlemas alati iso_18045_high |
| certification | WSCD või võtmehoidla sertifitseerimine, mille põhjal väljastaja saab aru, kas tegu on WSCD-ga |
| key_storage_status | Status List'i kanne WSCD või võtmehoidla jaoks ja kuupäev, milleni rahakoti pakkuja seda ajakohasena hoiab |
| nonce | Väljastaja c_nonce, olemas ainult siis, kui Key Attestation saadetakse attestation-tüüpi tõendina |
Kuhu WUA OpenID4VCI väljastamise ajal liigub
Kaks atesteeringut lähevad eri kohtadesse. WIA autendib rahakoti OAuth kliendina Authorization Server'is. Key Attestation läheb Credential Issuer'ile koos päringuga tõendi enda saamiseks.
Authorization Server saab WIA
- WIA allkiri on ahelas rahakoti pakkujate Trusted List'iga
- WIA ei ole aegunud ja Wallet Instance ei ole tühistatud
- Valdusetõend on allkirjastatud võtmega, mis on WIA cnf väites
Credential Issuer saab Key Attestation'i
- Key Attestation'i allkiri on ahelas rahakoti pakkujate Trusted List'iga
- Väljastaja värske c_nonce on jwt tõendis või Key Attestation'is endas
- WSCD või võtmehoidla ei ole tühistatud ja tõend seotakse ühega attested_keys võtmetest
Pushed Authorization Request koos WIA-ga
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 vastab WIA sub väärtusele. Token Request kannab samu kahte päist. Kuna Credential Issuer ei näe WIA-d kunagi, peab Authorization Server selle client_status väärtuse edasi andma, näiteks pääsuloa sees.
Credential Request koos Key Attestation'iga
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]>"]
}
}Tõenditüübi attestation korral kannab päring selle asemel "proofs": { "attestation": ["<Key Attestation JWT>"] }. Sel juhul valdusetõendit ei ole: rahakoti üksus edastab väljastaja c_nonce'i rahakoti pakkujale, kes lisab selle värskelt allkirjastatud Key Attestation'isse.
WUA elutsükkel
WUA on meelega lühiealine ja ühekordne, kuid selle taga olev tühistamisteave elab tokenist endast kauem. Esimesed kolm etappi on rutiinsed; neljas toimub ainult siis, kui midagi läheb valesti.
1. Väljastamine
Rahakoti pakkuja allkirjastab WIA-d ja Key Attestation'id pärast tervikluse ja võtmehoidla kontrolli
2. Ühekordne kasutus
Igaüks teenib ühte väljastamist, nii et rahakoti üksus hangib pidevalt uusi
3. Tühistamise ahel
PID Provider kontrollib WIA ja Key Attestation'i olekut uuesti vähemalt iga 24 tunni järel ja tühistab PID-i, kui kumbki neist on tühistatud
4. Tühistamine
Rahakoti pakkuja tühistab Wallet Instance'i, näiteks kaotuse või varguse järel, või turvanõrkusega WSCD või võtmehoidla
Väljaspool EUDI Wallet ökosüsteemi väljastavad mõned rahakoti pakkujad väga lühikese elueaga rahakoti atesteeringuid üldse ilma olekuviiteta, tuginedes tühistamise asemel aegumisele; OpenID4VCI teeb olekuväite valikuliseks. TS3 ei luba seda EUDI Wallet'ite puhul. WIA elab niigi alla 24 tunni, kuid nii WIA kui ka Key Attestation peavad kandma olekuviidet, mida rahakoti pakkuja hoiab vähemalt 31 päeva, sest PID Provider'id kasutavad seda PID-ide tühistamiseks kaua pärast väljastamist.
WUA, WIA ja KA: mis termin mida tähendab
Terminoloogia muutus spetsifikatsioonide küpsemise käigus. TS3 nimetas WIA-d kuni versioonini 1.1 Wallet App Attestation'iks ja kasutas kuni versioonini 1.5 terminit WUA selle kohta, mis on nüüd Key Attestation. Seetõttu kasutavad vanemad artiklid ja ARF-i mustandid termineid teisiti.
| Termin | Mida see katab | Kes selle saab |
|---|---|---|
| WUA | Katustermin kahe allpool toodud atesteeringu jaoks | PID Provider'id ja Attestation Provider'id, ainult väljastamise ajal |
| WIA | Wallet Instance ehk rakendus | Authorization Server, Pushed Authorization Request'is ja Token Request'is |
| KA | WSCD või võtmehoidla ja selles hoitavad võtmed | Credential Issuer, Credential Request'i proofs osas |
Seotud mõisted
Korduma kippuvad küsimused
Kas WUA on sama mis Wallet Instance Attestation?
Ei. Alates TS3 versioonist 1.5 on WUA katustermin kahele atesteeringule: Wallet Instance Attestation (WIA), mis katab rakenduse, ja Key Attestation (KA), mis katab võtmeid hoidva WSCD või võtmehoidla. Vanemates dokumentides tähendab WUA seda, mida praegu nimetatakse Key Attestation'iks, mistõttu termineid aetakse sageli segi.
Kas kontrollija näeb kunagi WUA-d?
Ei. ARF-i nõuded WUA_07 ja WUA_24 lubavad rahakoti üksusel esitada WIA-d või Key Attestation'it ainult PID Provider'ile või Attestation Provider'ile väljastamise ajal, mitte kunagi tuginevale osapoolele. Kontrollija kontrollib selle asemel tõendit: selle allkirja, seadmega sidumist ja tühistamisolekut. Kui PID-i taga olev rahakott tühistatakse, tühistab PID Provider PID-i oma 24-tunnise kontrollitsükli jooksul ning kontrollija näeb seda PID-i enda oleku kaudu.
Kui kaua WUA kehtib?
WIA aegub vähem kui 24 tundi pärast seda, kui rahakoti pakkuja rakenduse terviklust kontrollis. Key Attestation võib kehtida kauem, rahakoti pakkuja äranägemisel. Lisaks kannab kumbki oleku hoolduskuupäeva, client_status.exp või key_storage_status.exp, milleni rahakoti pakkuja hoiab tühistamisoleku ajakohasena. Rahakoti üksus peab alati suutma esitada sellise, mille kuupäevani on vähemalt 31 päeva, ja PID peab aeguma enne seda kuupäeva.
Mis juhtub, kui rahakoti üksus kompromiteeritakse enne selle WUA aegumist?
Rahakoti pakkuja tühistab Wallet Instance'i oma WIA Status List'is või, kui turvanõrkus puudutab teatud tüüpi WSCD-d või võtmehoidlat, selle hoidla kande Status List'is. PID Provider kontrollib iga väljastatud PID-i taga oleva WIA ja Key Attestation'i olekut vähemalt kord 24 tunni jooksul ja tühistab PID-i, kui kumbki on tühistatud. Attestation Provider'id võivad teha sama. Rahakotti ei eemalda WUA enda aegumine, vaid sellele väljastatud tõendite tühistamine.
Kas üks Key Attestation saab katta rohkem kui ühte võtit?
Jah. attested_keys võib loetleda mitu sama WSCD või võtmehoidla avalikku võtit ja nii toimibki partiiväljastamine: väljastaja seob iga partii tõendi eri võtmega ning üks rahakoti pakkuja allkiri katab need kõik. Kui Key Attestation liigub jwt tõendis, allkirjastab rahakoti üksus selle tõendi ainult loendi esimese võtmega.
Allikad
See leht on informatiivne ega kujuta endast õigusnõustamist. Autoriteetse juhise saamiseks pöörduge otse Euroopa Komisjoni ja OpenID Foundationi poole.