AFAICT, nu, ea nu poate face asta folosind doar informațiile de pe pașaportul ei, așa cum le descrieți* și tratând algoritmul de semnătură digitală ca pe o cutie neagră.
Cu toate acestea, dacă guvernul a prevăzut acest caz de utilizare și a inclus doar puțin mai multe informații despre pașaportul ei, acolo este o modalitate de a face acest lucru folosind de ex. metoda hash chain descrisă în acest thread de întrebări și răspunsuri anterioare (bazat pe o lucrare din 2013 de Angel & Walfish).
În special, ceea ce are nevoie Alice este:
O funcție hash criptografic rezistentă la preimagine $H$ standardizate de guvern. Ceva asemănător cu SHA-256 va fi bine.
Un jeton secret emis de guvern $s$, care nu se poate distinge din punct de vedere computațional de o ieșire a $H$. (De exemplu, $s$ poate fi generat prin selectarea unui șir aleatoriu $r$ cu cel puțin la fel de mulți biți de entropie cât lungimea de ieșire a $H$ și lăsând $s = H(r)$.)
O declarație semnată de guvern, sub forma:
Alice** s-a născut pe sau înainte de 2050-01-01 (hash = $H^a(e)$).
Unde $a$ este vârsta lui Alice în zile pe 2050-01-01 și $H^a$ denotă $H$ repetat $a$ ori, adica $H^0(s) = s$ și $H^{n+1}(s) = H(H^n(s))$
Acum, pentru a-i dovedi lui Bob că are în prezent (2021-11-24) 18 ani sau mai mult, Alice trebuie să prezinte declarația semnată de mai sus, împreună cu $h = H^b(s)$, Unde $b$ este vârsta lui Alice în zile cu exact 18 ani în urmă (adică pe 24-11-2003).
Bob poate calcula atunci $H^c(h)$, Unde $c = 16840$ este numărul de zile dintre 24-11-2003 și 01-01-2050 și comparați-l cu hash-ul din declarația semnată de Alice. Dacă afirmația lui Alice este validă, ar trebui să se potrivească, deoarece $a = b + c$, și, astfel $H^c(h) = H^c(H^b(s)) = H^a(s)$.
(Desigur, Bob ar trebui să verifice, de asemenea, că declarația Alicei este într-adevăr semnată corect cu cheia de semnare a guvernului și că îi aparține cu adevărat ei și nu, să zicem, surorii ei mai mari.)
Rețineți că, pentru comoditate de calcul și pentru a atenua atacurile de sincronizare, ar putea fi de dorit ca Alice să precalculeze și să stocheze $H^{b'}(e)$ pentru diverse valori ale $b'$ corespunzând, să zicem, vârstei ei în zile la începutul fiecărui an de până acum. În acest fel, va trebui doar să efectueze cel mult 365 de evaluări hash la fața locului pentru a calcula $H^b(e)$ pentru orice $b$.
Pentru a reduce cererea de calcul a lui Bob, ar putea fi de dorit ca guvernul să emită Alice mai multe declarații semnate de forma de mai sus, dar cu date diferite și valori corespunzătoare de $a$, astfel încât Alice să îi poată trimite lui Bob o declarație semnată pentru, de exemplu, 2004-01-01 în loc de 2050-01-01. Apoi, din nou, câteva mii de evaluări SHA-256 chiar nu sunt prea multe în zilele noastre, iar Bob nu trebuie să-și facă griji cu privire la atacurile pe canale laterale.
Cu toate acestea, emiterea mai multor declarații semnate ajută, de asemenea, la păstrarea proprietății zero-cunoștințe în prezența transferului. De exemplu, să ne imaginăm că guvernul a ales inițial 2030-01-01 ca dată fixă pentru declarațiile semnate, dar apoi a decis în urmă cu câțiva ani să o mute în 2050, deoarece au început să elibereze pașapoarte valabile până în 2030 și mai târziu. Acest lucru ar însemna că, cel puțin, Bob ar putea afla de la data din declarația lui Alice dacă pașaportul ei a fost eliberat înainte sau după tranziție, ceea ce s-ar putea corela cu alte informații, inclusiv vârsta ei. Dându-i lui Alice declarații semnate pentru ambii 2030-01-01 și 2050-01-01 (și posibil alte date aplicabile), această scurgere poate fi evitată, deoarece Alice poate alege doar declarația cu data potrivită anterioară pentru cererea lui Bob (dar nu, evident, mai devreme decât data) ea dorește să demonstreze că s-a născut la sau înainte).
Ps. După cum se notează în răspunsul meu la întrebarea de mai sus, același protocol poate fi folosit și pentru a-i permite Alicei să-și demonstreze vârsta exactă. Pentru a face acest lucru, Alice trebuie să știe nu doar $s = H(r)$ dar și jetonul aleatoriu original $r$, care ar trebui să fie aleasă de guvern astfel încât să fie nu o ieșire validă a $H$.
Apoi, dacă Alice vrea să-i demonstreze lui Bob că s-a născut pe 1975-05-04 și nu mai devreme, poate dezvălui acea dată împreună cu $r$ și cel puțin o declarație semnată din formularul de mai sus. Bob poate calcula apoi vârsta pretinsă a lui Alice în zile $a$ la data indicată în decont, se calculează $H^a(s) = H^{a+1}(r)$ și comparați-l cu hașul din declarația semnată.
Desigur, cu această variantă a protocolului, Bob trebuie să verifice și formatul $s$ sau $r$ jeton trimis de Alice (adică că este o ieșire validă a $H$ pentru afirmațiile „născut la sau înainte” și nu o ieșire validă a $H$ pentru afirmațiile „născut la această dată”).
Toate acestea fiind spuse, în scenariul tău, o semnătură guvernamentală separată pentru „Alice s-a născut pe 1975-05-04” ar servi la fel de bine acestui scop.
Note de subsol:
*) Descrierea dvs. conform căreia „[fiecare proprietate este semnată separat” este de fapt puțin problematică dacă este luată la valoarea nominală, deoarece atragerea guvernului să semneze o proprietate individuală, cum ar fi „prenume: Alice” înseamnă că oricine a văzut semnul lui Alice. prenumele poate face o copie a semnăturii și o poate folosi pentru a pretinde că prenumele lor este de asemenea Alice. De asemenea, de exemplu, dacă Alice Andrews și Bob Barker aveau pașapoarte cu astfel de nume și prenume semnate separat, le-ar putea combina pentru a crea un pașaport fals pentru „Alice Barker” sau „Bob Andrews”.
O soluție puțin mai bună ar fi ca una dintre proprietățile de pe pașaport să fie un ID unic și să includă acel ID în toate proprietățile semnate. Astfel, de exemplu, cineva care a văzut o declarație semnată de forma „ID: #123456789; prenume: Alice” ar putea verifica acum că Alice, purtând un pașaport cu ID #123456789, are într-adevăr prenumele „Alice”, dar nu pot folosi semnătura pentru a revendica pe nimeni a altuia prenumele să fie Alice.
Desigur, această schemă are încă propriile neajunsuri: de exemplu, Alice ar putea dori să-i demonstreze lui Bob că o cheamă Alice fără Bob fiind capabil să demonstreze acest fapt oricui altcuiva. Implementarea unui astfel de autentificare refuzată schema pare în afara domeniului de aplicare al acestui răspuns, deși ați putea dori să vă uitați la, de ex. aceasta de mai devreme.
**) Aici folosesc „Alice” ca substitut pentru ID-ul unic al lui Alice emis de guvern, așa cum este descris în nota de subsol anterioară de mai sus.