33.3.4. Zéró tudású emberségigazolások

2025.10.06.
AI Biztonság Blog

Mi történik, ha a legmagasabb szintű adatvédelem és a Sybill-támadások elleni védekezés nem egymást kizáró, hanem egymást erősítő célokká válnak? A zéró tudású (Zero-Knowledge Proof, ZKP) protokollok ezt az ígéretet hordozzák: bizonyítsd, hogy ember vagy, anélkül, hogy bármi mást elárulnál magadról. Még azt sem, hogy ki vagy.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

A koncepció lényege: Bizonyítás felfedés nélkül

A zéró tudású bizonyítás egy kriptográfiai csoda. Lehetővé teszi egy fél (a „bizonyító”) számára, hogy egy másik fél (az „ellenőrző”) felé igazolja egy állítás valódiságát anélkül, hogy bármilyen további információt felfedne az állításon túl. Az emberségigazolás (Proof-of-Humanity) kontextusában ez azt jelenti, hogy bizonyíthatod a jogosultságodat egy egyedi emberi identitáshoz anélkül, hogy magát az identitást – legyen az biometrikus adat, név vagy bármilyen más személyes azonosító – megosztanád.

Gondolj rá úgy, mint egy digitális „Hol van Valdó?” játékra. Te, a bizonyító, megtaláltad Valdót egy hatalmas képen. Az ellenőrnek bizonyítani akarod, hogy tudod, hol van, de nem akarod megmutatni neki, hogy el ne áruld a megoldást. Ezért fogsz egy óriási kartonlapot, kivágsz rajta egy Valdó méretű lyukat, és a képre helyezed úgy, hogy csak Valdó látszódjon ki. Az ellenőr látja Valdót, tehát meggyőződött róla, hogy tudod a helyét, de a kartonlap miatt semmilyen kontextust nem kapott a kép többi részéről. A zéró tudású igazolás ennek a folyamatnak a matematikai megfelelője.

Hogyan működik a gyakorlatban?

Bár a mögöttes matematika (pl. zk-SNARKs vagy zk-STARKs) rendkívül bonyolult, a folyamat logikailag három fő lépésre bontható:

  1. Egyszeri regisztráció (Commitment): Egy megbízható (akár decentralizált) rendszer elvégez egy egyszeri, alapos emberség-ellenőrzést. Ez lehet egy videóhívás, egy biometrikus szkennelés (ahogy az előző fejezetben láttuk), vagy egy személyes megjelenés. Az ellenőrzés során a rendszered generál egy titkos kulcsot (a „titkot”), és ennek egy nyilvános lenyomatát (a „commitmentet”) rögzíti a rendszerben. A lényeg, hogy a titok soha nem hagyja el a te eszközödet.
  2. Igazolás generálása (Proof Generation): Amikor egy szolgáltatás emberséget igazoló bizonyítékot kér, a kliensalkalmazásod a titkos kulcs és a szolgáltatás által küldött egyedi kihívás (challenge) alapján generál egy kompakt, kriptográfiai igazolást. Ez az igazolás matematikailag bizonyítja, hogy te rendelkezel azzal a titokkal, amely a láncon rögzített nyilvános lenyomathoz tartozik.
  3. Ellenőrzés (Verification): A szolgáltatás megkapja ezt a kis méretű igazolást. Az ellenőrzéshez nincs szüksége a titkodra, sem a személyes adataidra. Csupán a nyilvános lenyomatra, a kihívásra és magára az igazolásra van szüksége. Egy matematikai művelettel ellenőrzi, hogy az igazolás érvényes-e. Ha igen, tudja, hogy egy regisztrált, egyedi emberrel van dolga.

Felhasználó 1. Regisztráció Titok generálása Kriptográfiai Titok (eszközön marad) 2. Igazolás Zéró Tudású Igazolás (Proof) Szolgáltatás 3. Ellenőrzés Érvényes / Érvénytelen

Red Teaming nézőpont: Erősségek és gyengeségek

Egy Red Teamer számára a ZKP-alapú rendszerek egyszerre jelentenek álmot és rémálmot. Az adatvédelmi garanciák rendkívül erősek, de a támadási felület csupán eltolódik, nem pedig eltűnik.

Erősségek

  • Maximális adatvédelem: Ez a legfőbb előnye. A szolgáltatások nem gyűjtenek és nem tárolnak személyes adatokat, így egy adatszivárgás esetén sincs mit ellopni. Megszünteti az identitás-adatbázisok központi kockázatát.
  • Összekapcsolhatóság (Unlinkability): Minden egyes igazolás kriptográfiailag egyedi. A szolgáltatások nem tudják összekötni a különböző bejelentkezéseidet vagy interakcióidat, így megakadályozzák a felhasználói profilalkotást.
  • Sybill-rezisztencia: Mivel minden igazolás egy egyedi, regisztrált emberi „titokhoz” van kötve, a rendszer rendkívül ellenálló a Sybill-támadásokkal szemben, ahol egy támadó több ezer hamis fiókot hozna létre.

Gyengeségek és támadási vektorok

  • A regisztrációs „orákulum” támadása: A rendszer Achilles-sarka. Ha egy MI képes átverni a kezdeti, egyszeri emberség-ellenőrzési folyamatot, akkor szerezhet egy legitim „titkot”, amellyel onnantól kezdve végtelen számú, érvényes zéró tudású igazolást generálhat. A támadások fókusza a biometrikus rendszerek (deepfake videók, szintetikus hangok) vagy a humán operátorok (social engineering) megtévesztésére helyeződik át.
  • A „titok” kompromittálódása: Ha a felhasználó eszközét feltörik és a titkos kulcsot ellopják, a támadó megszemélyesítheti a felhasználó „emberségét”. Bár a személyes adatai nem szivárognak ki, a támadó a nevében hajthat végre műveleteket (pl. szavazhat egy DAO-ban, igényelhet airdropot).
  • Implementációs hibák: A ZKP kriptográfia a technológia élvonalába tartozik. Egy apró hiba az implementációban lehetővé teheti hamis igazolások generálását vagy a titok visszafejtését az igazolásból. Ezek a rendszerek rendkívül alapos, szakértői auditálást igényelnek.
  • Kvantumfenyegetettség: A ma használt ZKP-sémák egy része (főleg az elliptikus görbéken alapulók) sebezhető egy kellően erős kvantumszámítógéppel szemben. A post-kvantum ZKP kutatása aktív terület, de ez egy jövőbeli, ámde valós kockázat.
// Pszeudokód egy ZKP alapú hitelesítéshez
// Figyelem: ez a valóságnál sokkal egyszerűbb, a logikát szemlélteti.

// A felhasználó titka, ami az eszközén van tárolva.
// Ez a regisztráció során jött létre.
const FELHASZNÁLÓ_TITKA = "nagyon_bonyolult_biometrikus_alapú_kulcs_123";

// A titokból származtatott nyilvános "commitment", amit mindenki ismer.
const NYILVÁNOS_LENYOMAT = hash(FELHASZNÁLÓ_TITKA);

function generál_igazolás(felhasználó_titka, kihívás) {
 // A ZKP "mágia" itt történik.
 // A függvény egy bizonyítékot (proof) hoz létre, ami megmutatja,
 // hogy ismerjük a titkot, ami a NYILVÁNOS_LENYOMAT-hoz vezet,
 // anélkül, hogy a titkot felfednénk.
 let proof = zkp_prove(felhasználó_titka, kihívás);
 return proof;
}

function ellenőriz_igazolás(igazolás, nyilvános_lenyomat, kihívás) {
 // A szerver ezt a függvényt futtatja.
 // Fontos: NINCS szüksége a FELHASZNÁLÓ_TITKA-ra!
 // Csak a nyilvános adatokkal és az igazolással dolgozik.
 let érvényes = zkp_verify(igazolás, nyilvános_lenyomat, kihívás);
 return érvényes; // true vagy false
}

// A folyamat
let kihívás = "egyedi_nonce_a_szervertől_456";
let igazolás = generál_igazolás(FELHASZNÁLÓ_TITKA, kihívás);

// A szerver oldalon...
let eredmény = ellenőriz_igazolás(igazolás, NYILVÁNOS_LENYOMAT, kihívás);
console.log("A felhasználó emberi mivolta igazolva:", eredmény); // -> true

Összefoglalás: Az elegancia ára

A zéró tudású emberségigazolások egy rendkívül elegáns megoldást kínálnak az online identitás egyik legégetőbb problémájára. Lehetővé teszik a Sybill-rezisztens rendszerek építését a felhasználói adatvédelem feláldozása nélkül. Red Teamerként azonban tudnunk kell, hogy a védelem sosem abszolút. A ZKP-k a *matematikai bizonyítás* és az *ellenőrzés* problémáját oldják meg kiválóan, de a támadási felületet a rendszer peremére tolják: az emberi regisztráció gyenge pontjaira és a végponti eszközök biztonságára. A harc az MI és az emberi hitelesítés között itt a beiratkozás kapujában dől el.