2024. október 15.
FinTechShow

KEDVEZMÉNYES JEGYEK    2024.07.31-IG! 

2024. november 26.
BankTechShow

KEDVEZMÉNYES JEGYEK    2024.07.31-IG! 

2024.04.26.

“Hol van Waldo?” – Játék a “zero knowledge proof” kriptográfiai protokoll megértéséhez

Szerző:

Kategóriák:

A blockchain alkalmazások és infrastruktúra egyik fontos kutatás-fejlesztés alatt álló területe a nem feltáró bizonyítások (zero knowledge proof). A nem feltáró bizonyítás egy kriptográfiai eszköz, mely segítségével kvázi “bebizonyítható”, hogy ismerünk egy tényt, de úgy, hogy maga a tény elrejtve marad. Előreláthatóan számos helyen felhasználható lesz mind blockchain rendszerek skálázásánál, mind titkos tranzakciók megvalósításához, de számos nem blockchaines alkalmazásuk is lehet, mint például digitális fényképek eredetiségvizsgálata, vagy tőzsdék likviditásának bizonyítása.

Jelen cikkünkben Szegő Dániel a nem feltáró bizonyításokat és lehetséges alkalmazásaikat vizsgálja meg közelebbről.

Amennyiben nem feltáró bizonyításokról beszélünk, akkor valamiféle állítás létezését, vagy ismeretét bizonyítjuk. Ez a bizonyítás azonban nem teljesen olyan mint egy klasszikus matematikai bizonyítás, mint például a Pitagorasz tétel bizonyítása.

Nem feltáró bizonyításoknál általában egy olyan modellt használunk, amiben két szereplő van:

  • Bizonyító (Prover): A bizonyító feladata, hogy az ellenőrzőt meggyőzze arról, valami igaz, általában úgy, hogy a “valamiről” nem szivárog ki semmiféle információ.
  • Ellenőrző (Verifier): Az ellenőrző feladata meggyőződni arról, hogy a bizonyító ténylegesen tud valamit, azonban oly módon, hogy a “valamiről” nem tud meg semmit.

A nem feltáró bizonyítások erőteljesen feltételezik a két szereplő meglétét (bizonyító és ellenőrző) és maga a bizonyítás folyamata többféle lehet:

  • Interaktív (interactive) bizonyításoknál a bizonyító és az ellenörző szereplők között több körös üzenetváltás történik. Jellemzően az ellenőrző több véletlenszerű kérdést tesz fel több körön keresztül, amire a bizonyító válaszol. A kérdés-válasz körök végén az ellenőrző szerepkör meglesz győződve arról, hogy a bizonyító ténylegesen ismeri a bizonyítandó dolgot.
  • Nem interaktív (non-interactive): Ebben az esetben csak egykörös interakció valósul meg a bizonyító és az ellenőrző között.
  • Probabilisztikus (probabilistic): A bizonyításoknál egy tény sosincs teljes mértékben bebizonyítva, hanem mindig csak egy bizonyos valószínűséggel. Például ha interaktív protokollokat használunk, jellemzően minden interakció után egyre biztosabb egy állítás, de ez soha nem lesz 100%-os biztonságú.
  • Determinisztikus (deterministic): Egy bizonyítandó tény igazsága teljes mértékben, 100%-ban igaz.

Egy egyszerű intuitív, nem matematikai példa egy nem feltáró bizonyításra a “Hol van Waldo játék?”. A játék lényege, hogy Waldot kell megtalálni egy viszonylag zsúfolt képen, melyen elég sok ember megtalálható. A bizonyító feladata az, hogy bebizonyítsa, Waldo ténylegesen rajta van a képen, oly módon azonban, hogy Waldo pontos helye a képen ne derüljön ki.

Az ellenőrző pedig meggyőződik róla, hogy Waldo ténylegesen a képen van, azonban Waldo pontos helyét a képen nem fogja megtudni. Itt természetesen nem a baloldali nagy Waldo fejre gondolunk. Waldo megtalálható kicsiben is valahol a képen, elrejtve a tömegben.

Nem feltáró bizonyítások alkalmazása a blockchain technológiában

A feladat megoldására két nem matematikai, nem számítástechnikai módszer is létezik, mindkét esetben feltételezzük, hogy kinyomtatjuk a fenti képet.

Az első esetben veszünk egy fehér borítólapot, mely tízszer akkora mint a kinyomtatott lapunk. Majd a fehér borítólapon kivágunk egy kis lyukat, melyen Waldo feje látszik és rátesszük az egészet a kinyomtatott képre.

Így látható bárki számára (ellenőrző), hogy Waldo rajta van a képen, de mivel a borítólap többszörösen elfedi az eredeti képet a pontos hely nem derül ki.

A másik lehetőség, hogy a kinyomtatott kép másik oldalát az ellenőrző (verifier) sűrűn aláírja, majd kivágjuk belőle Waldó képét. Mivel a kivágott rész túloldalán rajta van az aláírás így biztosak lehetünk benne, hogy a képről származik, de ennek pontos lokációja nem ismert.

Természetesen az előző példa eléggé intuitív és szemléletes volt, azonban a gyakorlatban is haszhálható nem feltáró bizonyítások mögött elég mély matematikai apparátus van.

A legtöbb nem feltáró bizonyítást az úgynevezett zkSNARK segítségével valósítják meg, ahol a rövidítés a kriptográfiai protokoll egyes szavait jelöli:

  • S, succinct, tömör: itt alapvetően olyan bizonyításokat szeretnénk használni, amik rövidek és tömörek, mind a bizonyítás méretét tekintve, mind pedig az ellenőrzéshez szükséges idő tekintetében.
  • N, non-interactive: főleg a nem interaktív bizonyításokat lehet jól használni.
  • ARK, argument of knowledge: valamiféle bizonyítás, vagy legalábbis egy ellenőrző szereplő meggyőzése egy tényről.
  • zk, zero knowledge, nem feltáró: ebben az esetben a bizonyítandó tényről nem derül ki információ. Fontos megjegyezni, hogy egy SNARK-nak akkor is van értelme, ha nem rendelkezik a zk (zero knowledge) tulajdonságokkal. Ebben az esetben egy viszonylag komplex számítás korrekt végrehajtásáról lehet egy rövid matematikai bizonyítékot adni. Ez fontos lehet, amennyiben a komplex számításhoz valamiféle erős számítógépre lenne szükségünk, de az eredmény ellenőrzését egy sokkal gyengébb-limitáltabb kapacitású gépen szeretnénk végrehajtani. Ez egy gyakori szituáció például ha off-chain számításokat egy okosszerződés segítségével szeretnénk ellenőrizni.

Felhasználás szempontjából a leginkább fejlődő és innovatív megoldásokat a különböző blockchain alkalmazásoknál és platformoknál látjuk. A blockchain rendszerek egyik nagy problémája hogy a tranzakciók nyilvánosak, mivel az egymástól független peerek úgy tudják őket validálni, ha látják a benne lévő információt.

Ezen változtathatnak a nem feltáró bizonyítások, melyek segítségével úgy lehet egy tranzakció hitelességét bizonyítani, hogy maga a tranzakció nem látható.

Egy másik, szintén blockchainhez kötődő innovatív alkalmazás az úgynevezett zkRollup-ok. Mivel a legtöbb blockchain viszonylag kevés tranzakciót tud végrehajtani, azokat is elég lassan, ezért egy jogos ötlet lehet tranzakciókat blockchainen kívül (off-chain) végrehajtani.

A problémát az jelenti, hogy aki a blockchainen kívül végrehajtja a tranzakciókat abban meg kell bízni (counterparty risk) ami eléggé ellentétes a blockchain decentralizált, bizalom nélküli (trustless) koncepciójával.

A megoldást az jelentheti, hogy az off-chain tranzakciók korrekt végrehajtásáról egy zkSNARK bizonyítás készül, melynek eredményét a blockchainen ellenőrizni lehet. Ezt a technológiát hívják zkRollup-nak.

Összefoglalva azt mondhatjuk, hogy a nem feltáró bizonyítás egy nagyon izgalmas kriptográfiai eszköz, melynek felhasználási lehetőségei mind a blockchain rendszerek, mind más területeken roppant izgalmasak lehetnek.

Bár a terület még erősen kutatás-fejlesztés alatt áll, a felhasználási lehetőségeket legalább olyan széleskörűnek becslik mint a digitális aláírásét.

Címlapfotó: stock.adobe.com | Licenc: FinTech Group Kft.

Címkék: