Holder binding explicat: de ce un credențial copiat nu valorează nimic
Un credențial semnat este o copie foarte bună a lui însuși. Oricine pune mâna pe unul are un document cu o semnătură validă a emitentului, iar verificarea acelei semnături îi va confirma fără ezitare că este autentic. Holder binding este partea care închide această breșă: leagă credențialul de o cheie pe care o poate folosi o singură persoană, astfel încât pentru a-l prezenta nu este suficient să îl deții.
Această pagină este versiunea pe înțelesul tuturor. Explică ce este de fapt legătura, când este creată, cum o realizează fiecare dintre cele două formate europene de credențiale și partea pe care majoritatea explicațiilor o omit: ce anume holder binding tot nu îi spune unui verificator.
Problema pe care o rezolvă
Documentele digitale se copiază perfect. Fotografia unui pașaport este un fals slab, pentru că hârtia are caracteristici fizice pe care o fotocopie le pierde, dar un credențial semnat nu are un asemenea semn distinctiv. Copiați fișierul, iar copia se verifică exact la fel de bine ca originalul, pentru că semnătura emitentului acoperă conținutul, iar conținutul nu s-a schimbat.
Prin urmare, un verificator care verifică doar semnătura emitentului răspunde la întrebarea greșită. A aflat că claim-urile sunt autentice. Nu a aflat nimic despre faptul dacă partea din fața lui are dreptul la ele, iar de obicei tocmai asta avea nevoie să știe.
Claim-urile
Faptele pe care le declară credențialul: un nume, o dată a nașterii, o categorie de permis, un număr de înregistrare al firmei. Aceasta este partea la care se gândește toată lumea când își imaginează un credențial.
Semnătura emitentului
Dovada că aceste fapte provin de la emitent și nu au fost modificate de atunci. Nu spune absolut nimic despre cine le deține acum.
Cheia publică a deținătorului
Piesa care realizează legătura. Emitentul scrie cheia publică a deținătorului în credențialul semnat, astfel încât credențialul numește acum cheia care are voie să îl prezinte.
Când este creată legătura și când este folosită
Legătura se creează o singură dată, la emitere, și intră în acțiune de fiecare dată când credențialul este prezentat. Deținătorul nu vede nimic din toate acestea în afară de solicitarea de deblocare la care se așteaptă oricum.
1. Portofelul creează o cheie
Înainte să ceară ceva, portofelul creează o pereche nouă de chei în hardware-ul securizat propriu al telefonului. Jumătatea privată nu mai poate fi citită, nici măcar de aplicația portofelului.
2. Emitentul o înscrie
Portofelul trimite jumătatea publică odată cu cererea și dovedește că o deține pe cea privată. Emitentul pune acea cheie publică în credențial înainte să îl semneze.
3. Un verificator cere
Cererea conține o valoare aleatorie nouă și spune cine întreabă, astfel încât răspunsul poate fi folosit o singură dată și doar de partea care l-a cerut.
4. Portofelul semnează
Portofelul semnează răspunsul cu cheia privată, de obicei după o amprentă sau un PIN. Verificatorul verifică acea semnătură cu cheia din credențial.
Unde se află de fapt cheia privată
Legătura este întotdeauna doar atât de bună cât de greu este să folosești cheia fără deținător. De aceea portofelele generează aceste chei în hardware dedicat, în elementul securizat sau un echivalent care protejează și datele de plată ale telefonului, în loc să le stocheze ca fișier pe care sistemul de operare îl poate da oricărei aplicații care îl cere.
Un verificator nu poate vedea nimic din toate acestea în prezentarea propriu-zisă. O semnătură dovedește că cheia a fost folosită, nu că a fost bine păstrată. Dacă cheia se află cu adevărat în hardware certificat este o garanție separată, purtată de atestările pe care un portofel le prezintă unui emitent înainte să primească ceva, iar conform regulilor europene exact pentru asta există atestarea de portofel și atestarea de cheie.
Holder binding răspunde la întrebarea
A fost produs acest răspuns de cheia pentru care a fost emis acest credențial, pentru această cerere, chiar acum?
Atestarea de cheie răspunde la întrebarea
Este cheia păstrată într-un loc din care un atacator nu o poate extrage? Altă întrebare, altă dovadă, stabilită la emitere.
Cum o fac cele două formate europene
Ideea este aceeași în ambele formate pe care este construit portofelul european. Mecanismele diferă, iar asta contează pentru cine implementează un verificator și pentru aproape nimeni altcineva.
SD-JWT VC
Emitentul pune cheia publică a deținătorului într-un claim de confirmare din interiorul credențialului semnat. La prezentare, portofelul adaugă un mic token separat, semnat cu cheia privată, care acoperă identitatea verificatorului și valoarea aleatorie din cerere. Un verificator care ignoră acest token a verificat emitentul și nimic altceva.
Citiți definițiamdoc
Cheia dispozitivului este menționată în obiectul semnat care protejează elementele de date, iar telefonul semnează transcrierea sesiunii în care se află. Deoarece această transcriere acoperă schimbul dintre cele două dispozitive, înregistrarea unei prezentări nu poate fi reutilizată într-o alta, iar asta face sigură o verificare offline pe marginea drumului sau la o ușă.
Citiți definițiaUn portofel din ecosistemul european poartă de regulă aceeași atestare în ambele formate și o transmite pe cea pe care o înțelege cealaltă parte, așa că o organizație care acceptă credențiale trebuie să poată verifica legătura în ambele.
Ce nu dovedește holder binding
Holder binding dovedește controlul asupra unei chei. Nu dovedește cine ține telefonul. Cineva care a primit dispozitivul și PIN-ul produce exact același răspuns valid ca deținătorul de drept, iar nicio doză de criptografie din credențial nu poate vedea diferența.
Nici nu spune ceva despre cât de bine a verificat emitentul identitatea înainte de emitere. Un credențial legat de o cheie este tot doar atât de demn de încredere cât procesul care l-a creat, iar exact asta descriu nivelurile Level of Assurance. Legarea foarte strânsă de o cheie a unui credențial emis cu verificări slabe nu face claim-urile din el cu nimic mai adevărate.
Luate împreună, împărțirea sarcinilor este destul de clară. Holder binding oprește reutilizarea și copierea, deblocarea portofelului leagă cheia de un om prezent, Level of Assurance descrie cât de bine a fost identificat acel om, iar o listă de încredere spune ce emitenți acceptați în primul rând. Un verificator care vrea un răspuns real are nevoie de toate patru, nu doar de cel care vine gratuit cu credențialul.
Ce înseamnă asta pentru dumneavoastră
Emitent
Credențialele dumneavoastră devin inutile pentru oricine fură o copie a lor, ceea ce elimină o întreagă categorie de fraudă pe care altfel ar trebui să o detectați ulterior. Prețul este că trebuie să fiți pregătiți să reemiteți ori de câte ori un deținător își schimbă dispozitivul.
Verificator
Verificați legătura, nu doar semnătura emitentului. Trimiteți o valoare aleatorie nouă la fiecare cerere și respingeți orice răspuns care nu o semnează, altfel o prezentare înregistrată vă poate fi redată mai târziu.
Deținător de portofel
Nimic de gestionat și un singur lucru de știut: credențialele dumneavoastră sunt legate de acest dispozitiv, așa că un telefon nou înseamnă să le obțineți din nou, nu să le restaurați dintr-o copie de rezervă.
Termeni conexi
Întrebări frecvente
Este holder binding același lucru cu key binding sau device binding?
În practică, da, iar termenii diferiți provin din specificații diferite, nu dintr-o diferență de sens. Holder binding este proprietatea: acest credențial aparține acestui deținător. Key binding este numele pe care lumea SD-JWT VC îl dă mecanismului, iar partea ISO vorbește despre device binding sau device authentication, pentru că cheia se află într-un anumit telefon. Dacă un document folosește unul dintre acești termeni, citiți-l ca pe aceeași idee văzută dintr-un alt unghi.
Dovedește holder binding că persoana care prezintă credențialul este titularul acestuia?
Nu, și aceasta este de departe cea mai frecventă neînțelegere. Dovedește că cel care a produs răspunsul controlează cheia pentru care a fost emis credențialul. Dacă omul care atinge telefonul este persoana descrisă de claim-uri depinde de modul în care se deblochează portofelul, de cât de atent a verificat emitentul identitatea de la bun început și de faptul dacă deținătorul a dat dispozitivul și PIN-ul altcuiva. Pentru o verificare cu miză mare, combinați legătura cu un portofel care cere date biometrice și cu un credențial emis la un Level of Assurance pe măsura riscului.
Ce se întâmplă cu un credențial legat atunci când deținătorul își ia un telefon nou?
Nu se mută. Tot rostul păstrării cheii private în hardware securizat este că nu poate fi exportată, așa că un credențial legat de vechiul telefon nu poate fi restaurat pe cel nou în speranța că va funcționa. Noul dispozitiv își generează propria cheie, iar credențialul este emis din nou pentru ea. Tratați reemiterea ca pe un eveniment normal și frecvent, nu ca pe o excepție, pentru că pentru utilizatorii dumneavoastră este pur și simplu ziua în care și-au schimbat telefonul.
Există credențiale fără holder binding?
Da, și își au locul lor. Un credențial fără holder binding este un credențial la purtător: beneficiul îl are oricine îl prezintă, ca în cazul unui bilet de hârtie. Este un compromis rezonabil pentru ceva de valoare mică și de scurtă durată, unde costul reutilizării unei copii este mic și ați prefera să nu îi cereți deținătorului să deblocheze ceva. Este alegerea greșită pentru identitate, drepturi și orice ar merita reutilizat în ochii unui fraudator.
Surse
- IETF SD-JWT-based Verifiable Digital Credentials (SD-JWT VC), încă în stadiu de draft
- OpenID for Verifiable Credential Issuance, despre dovada deținerii cheii la emitere
- OpenID for Verifiable Presentations, despre legarea unui răspuns de o singură cerere
- ISO/IEC 18013-5, despre autentificarea dispozitivului pentru documentele mobile
Această pagină are caracter informativ și nu constituie consultanță juridică. Pentru formularea oficială, consultați direct specificațiile.