Zero-Knowledge Proofs for P2P-metadata i dVPN
TL;DR
Metadataproblemet i decentrale netværk
Har du nogensinde undret dig over, hvorfor din "no-logs" VPN stadig ved præcis, hvornår du binge-watchede den serie i aftes? Det skyldes, at selvom de ikke kigger direkte på din trafik, så skriger dine metadata – de digitale brødkrummer om hvornår og hvorfra du forbinder – din identitet ud til alle, der kigger med.
I et traditionelt setup stoler du på ét enkelt firma. Men i en decentraliseret VPN (dVPN) router du reelt dine pakker gennem en fremmed persons hjemmeinternet. Selvom dette eliminerer problemet med et "centralt fejlpunkt" (central point of failure), skaber det en ny udfordring: Hver eneste node i det pågældende P2P-netværk er en potentiel overvåger.
Hvis jeg driver en node, kan jeg se din IP-adresse og præcis, hvor meget data du flytter. Hvad værre er, så ser jeg dine tidsstempler. Hvis du er whistleblower i en højrisikoregion, er selve det faktum, at du oprettede forbindelse til en specifik node kl. 02:00 om natten, nok til at du bliver markeret af din internetudbyders overvågning.
Metadataproblemet er i bund og grund et kort over dit digitale liv. Som Zero-knowledge proof forklarer, er målet med et ZKP at bevise, at en påstand er sand, uden at afsløre selve hemmeligheden – hvilket er præcis det, der mangler i de nuværende P2P-netværk.
Dette bliver for alvor kompliceret, når vi introducerer "bandwidth mining". I et DePIN (Decentralized Physical Infrastructure Network) bliver folk betalt i tokens for at dele deres internetforbindelse. For at få udbetalt sin belønning skal noden bevise, at den rent faktisk har udført arbejdet.
Normalt betyder bevis for udført tjeneste, at man fremviser en "kvittering" for sessionen: "Hey, bruger X brugte 5 GB af min båndbredde fra kl. 16:00 til 17:00." Bum – så røg privatlivet. Netværket har brug for dataene for at forhindre svindel, men brugeren har brug for, at disse data forbliver skjulte for at bevare sin anonymitet.
- Sundhedsvæsen: Hovedproblemet her er lækage af sessionsvarighed. Hvis en node ser, at en patient er forbundet til en lægeportal i tre timer, indikerer det en seriøs konsultation, selvom selve dataene er krypterede.
- Finans: Her er problemet koblingen mellem en IP-adresse og en wallet. Hvis en node ser en specifik IP flytte data under en handel med høj værdi, bliver den bruger et mål for såkaldte "dusting"-angreb.
Branchen er kørt fast. Vi ønsker et decentraliseret internet, men vi bygger det på et fundament af synlige metadata. Ifølge kilder om Zero-knowledge proofs viste forskere som Goldwasser og Micali helt tilbage i 1985, at vi kan bevise, at "videnskompleksiteten" er nul. Vi har bare ikke formået at anvende det effektivt nok på P2P-routing endnu.
Og helt ærligt: Indtil vi løser, hvordan man betaler en node, uden at noden ved, hvem den betjener, bytter vi blot én stor udlejer ud med tusind små.
I næste afsnit dykker vi ned i, hvordan ZK-SNARKs rent faktisk løser dette ved at lade os verificere disse sessioner uden at kende hverken "hvem" eller "hvornår".
Hvordan Zero-Knowledge Proofs redder dagen
Har du nogensinde følt dig overvåget, mens du bare prøvede at surfe på nettet? Selv med en VPN kan din internetudbyder (ISP) eller en nysgerrig node-ejer stadig se "formen" på din data, og det er et kæmpe hul i skroget på vores privatlivsskib.
Tænk på et Zero-Knowledge Proof (ZKP) som en måde at bevise, at du har nøglen til en dør, uden rent faktisk at vise nøglen eller åbne døren for alles øjne. En klassisk måde at visualisere dette på er "Find Holger"-analogien. Forestil dig en massiv tavle med et "Find Holger"-billede på. For at bevise, at du har fundet ham uden at afsløre hans koordinater, lægger du et gigantisk stykke pap over kortet med kun ét lille hul klippet ud. Du skyder kortet rundt, indtil Holger dukker op i hullet. Personen, der kigger på, ser Holger og ved derfor, at du har fundet ham, men de har ingen anelse om, hvor han befinder sig på selve kortet.
I en verden af P2P-netværk er dette en livredder. Normalt skal en node fremvise en kvittering for det udførte arbejde for at blive betalt for "bandwidth mining". Men den kvittering indeholder typisk din IP-adresse, tidspunktet for forbindelsen og hvor meget du har downloadet. Det er et mareridt for privatlivet.
Med et ZKP bruger vi det, der kaldes fuldstændighed (completeness) og pålidelighed (soundness). Fuldstændighed betyder, at hvis sessionen faktisk fandt sted, kan den ærlige node bevise det. Pålidelighed sikrer, at en uærlig node ikke kan forfalske en session for at stjæle tokens. Ifølge principperne bag Zero-Knowledge Proof gør dette det muligt for os at bevise, at en påstand er sand, uden at formidle nogen information udover selve sandheden.
En systematisering af angreb fra 2024 foretaget af forskere hos Trail of Bits viste, at 96 % af fejlene i SNARK-baserede systemer stammer fra "under-constrained" kredsløb, hvilket betyder, at matematikken ikke var stram nok til at forhindre snyd.
Vi laver altså ikke bare matematik for matematikkens skyld. Vi bygger en mur, hvor murstenene er logik. Hvis logikken er solid, får noden sine krypto-belønninger, og du kan holde dine browservaner for dig selv.
Når vi anvender dette på en P2P-tunnel, "blænder" vi i praksis metadataene. I stedet for at noden rapporterer: "Bruger A brugte 500 MB kl. 22:00", genererer den et zk-SNARK (Succinct Non-Interactive ARgument of Knowledge). Dette er en lille datapakke, der siger: "Jeg har faciliteret en gyldig session på præcis 500 MB", og netværket kan verificere det uden at vide, at det var dig.
- Detailhandel: Den teoretiske løsning er at bevise, at en forsendelsesopdatering blev modtaget uden at lække det præcise tidsstempel. Dette forhindrer konkurrenter i at spore en butiks hastighed i forsyningskæden.
- Sundhedsvæsen: En klinik kan bevise, at data blev flyttet til faktureringsformål via et ZKP. Noden ser aldrig filstørrelsen, hvilket forhindrer folk i at gætte, hvilken type specialist der bliver konsulteret baseret på datamængden.
- Finans: Tradere kan bruge tokeniserede netværk, hvor beviset validerer den brugte båndbredde uden at koble en specifik wallet-adresse til en hjemme-IP.
Det er svært at bruge disse proofs på mobile noder – som f.eks. din telefon, der deler en smule 5G – fordi matematikken er tung. Men nyere protokoller som Halo eller Virgo gør dette letvægtigt nok til at køre uden at dræne dit batteri helt.
Helt ærligt er det den eneste måde, et P2P-netværk kan overleve på lang sigt. Hvis vi ikke skjuler metadataene, bygger vi bare en større og mere distribueret overvågningsmaskine. Vi har brug for, at systemet er "zero-knowledge" som standard, ikke som en eftertanke.
Næste gang ser vi nærmere på, hvordan disse zk-SNARKs rent faktisk implementeres i koden, og hvordan det ser ud, når en node forsøger at verificere et proof i realtid.
Implementering af ZKPs i dVPN-økosystemet
Har du nogensinde tænkt over, hvor absurd det er, at vi forsøger at bygge et "privat" internet, mens vi samtidig efterlader et spor af brødkrummer, som enhver internetudbyder (ISP) og node-ejer kan følge? Det svarer til at bære maske, men efterlade sit visitkort ved hver dør, man går igennem.
Hvis man går op i de tekniske detaljer bag netværkssikkerhed, ved man, at det er et fuldtidsjob at holde trit med, hvordan disse protokoller reelt ændrer sig. Jeg kigger ofte på tekniske rapporter om nye sårbarheder i tunneling-protokoller, for det er én ting at tale om en pakke-header; det er noget helt andet at forklare, hvorfor den header i bund og grund fungerer som et pejlesignal for statslig overvågning.
Modellen "Airbnb for båndbredde" er cool i teorien, men det er et mareridt for privatlivet. For at få betaling skal en node bevise, at den har flyttet dine data. I en standardopsætning betyder det, at en relay-node fremviser en kvittering: "Jeg har håndteret 2 GB for denne specifikke wallet-adresse." Lige dér bliver forbindelsen mellem din krypto-identitet og din trafik hugget i sten.
Vi bruger smart contracts til at bygge bro over denne kløft, men de har brug for en måde at verificere arbejdet på uden at se "hvem". Det er her, ZKP (Zero-Knowledge Proof) kommer ind i billedet for at håndtere det, vi kalder Proof of Relay. Smart-kontrakten fungerer som dommer – den tjekker et matematisk bevis i stedet for en rå logfil.
- Forebyggelse af Double Spending: I et tokeniseret netværk sikrer en ZKP, at hvert sessions-ID er unikt og kun "bruges" én gang på blockchainen, uden at hovedbogen nogensinde får at vide, hvilken bruger der rent faktisk sendte dataene.
- Belønning af ærlige noder: Da Zero-Knowledge-beviser bygger på egenskaben soundness (sundhed), kan en node ikke generere et gyldigt bevis for en session, der aldrig har fundet sted. Hvis matematikken ikke stemmer, frigiver smart-kontrakten ikke midlerne.
- Blænding af metadata: Ved at bruge et ikke-interaktivt bevis sender noden en enkelt "blob" af data til kæden. Som nævnt tidligere i artiklen betyder det, at verificøren (blockchainen) intet lærer udover det faktum, at arbejdet er udført.
Dette handler ikke kun om at skjule dine Netflix-vaner; det handler om infrastruktur. Tag for eksempel detailhandlen. På implementeringssiden genererer en butiks lokale gateway en ZKP for hver lagersynkronisering. P2P-noden flytter dataene og bliver betalt af smart-kontrakten, men noden ser aldrig de tidsmæssige mønstre, der kunne afsløre forretningshemmeligheder om forsyningskæden.
Inden for finans bruger high-frequency tradere ZKPs til at skjule deres fysiske lokation. Smart-kontrakten verificerer, at båndbredde-relæet var en succes, men fordi beviset er "blændet", kan noden ikke koble trafikken til en specifik wallet for at lave front-running på en handel.
Selv i sundhedssektoren, hvor klinikker deler journaler, håndterer smart-kontrakten faktureringsbeviset. Implementeringen sikrer, at "beviset" ikke afslører, om en fil var på 10 KB eller 10 GB, hvilket holder patientens potentielle tilstand skjult for node-operatøren.
Det reelle problem, jeg ser, er "beregningsskatten". At generere et zk-SNARK er ikke gratis – det kræver CPU-cyklusser. Hvis du kører en node på en Raspberry Pi eller en telefon, ønsker du ikke, at 50 % af din strøm går til blot at bevise, at du har gjort arbejdet.
Et studie fra 2024 foretaget af forskere hos Trail of Bits (som nævnt tidligere) viste, at næsten alle fejl i disse systemer stammer fra "under-constrained" kredsløb. Hvis matematikken ikke er stram nok, kan en node "snyde" systemet ved at oprette et bevis for arbejde, de aldrig rent faktisk har udført.
Vi ser et skifte mod teknologier som Halo eller Virgo for at gøre dette hurtigere. Disse protokoller kræver ikke et "trusted setup", hvilket er en smart måde at sige, at vi ikke behøver at stole på, at udviklerne ikke efterlod en bagdør i de oprindelige matematiske konstanter. Det gør hele P2P-økosystemet langt mere transparent og sikkert.
Under alle omstændigheder er implementering af dette i en dVPN ikke bare "nice to have". Hvis vi ikke får styr på metadataene, bygger vi bare en større og mere effektiv overvågningsmaskine og kalder den "Web3".
Næste skridt er at se på de faktiske kodestrukturer – specifikt hvordan disse kredsløb er opbygget, og hvorfor det er så nemt for udviklere ved et uheld at efterlade de "under-constrained" huller i logikken.
Tekniske udfordringer og fremtiden for DePIN
Vi har talt om, hvordan disse beviser nærmest er ren magi for privatlivet, men lad os være realistiske et øjeblik – intet i netværksverdenen er gratis. Hvis du forsøger at køre et decentraliseret fysisk infrastrukturnetværk (DePIN), hvor hver node i praksis fungerer som en mini-ISP, rammer du en massiv mur: matematikken er simpelthen blytung.
Den største hindring for fremtiden for DePIN er den beregningsmæssige "skat". At generere et zk-SNARK er ikke som at hashe en adgangskode; det minder mere om at løse et komplekst puslespil, mens nogen overvåger hvert eneste træk, du foretager dig. Tidligere var genereringen af disse beviser så langsom, at det var nærmest grinagtigt at bruge dem til en VPN-session i realtid. Du ville ende med at vente flere sekunder bare på at verificere en enkelt pakke – din latenstid ville minde om en dial-up-forbindelse fra 1995.
Men tingene ændrer sig. Nyere protokoller gør det endelig muligt at anvende teknologien til bandwidth mining. Som tidligere nævnt ændrer systemer som Bulletproofs og STARKs spillereglerne, fordi de ikke kræver det "trusted setup", som gør alle nervøse. Og hvad vigtigere er: de bliver hurtigere.
- Latenstid vs. privatliv: Det er det klassiske kompromis. Hvis din node bruger for meget tid på at tygge tal for at bevise, at den har flyttet 10 MB data, dør brugeroplevelsen. Vi ser en tendens mod "batching", hvor en node beviser 1.000 sessioner på én gang for at spare på CPU-cyklusserne.
- Hardwarebegrænsninger: De fleste DePIN-noder er ikke kraftfulde servere; det er Raspberry Pi'er eller gamle bærbare computere. Hvis ZKP-protokollen er for ressourcekrævende, vil den brænde hardwaren af eller simpelthen fejle.
- Mobile noder: Drømmen er at dele din telefons 5G-forbindelse via et P2P-netværk, men zk-beviser kan være deciderede batterislugere. Protokoller som Virgo (som vi nævnte tidligere) er specifikt designet til at belaste processoren mindst muligt.
For at forstå, hvorfor det her er svært, skal man se på, hvad koden egentlig gør. Vi skriver ikke bare et script; vi bygger et aritmetisk kredsløb. I praksis bliver high-level kode, som Python-eksemplet nedenfor, kompileret til R1CS (Rank-1 Constraint System) eller aritmetiske kredsløb. Disse kredsløb består af "gates", der håndhæver logikken. Hvis du efterlader en gate "under-constrained" (utilstrækkeligt begrænset), som et studie fra 2024 af forskere hos Trail of Bits påpegede, kan en ondsindet node forfalske hele sessionen.
Her er et konceptuelt kig på, hvordan et kredsløb kan kontrollere, om en node faktisk holdt sig inden for de lovede båndbreddegrænser uden at afsløre det præcise antal bytes til den offentlige blockchain:
# Bemærk: Denne overordnede logik kompileres til et aritmetisk kredsløb
# (R1CS), for at ZK-SNARK'et rent faktisk kan fungere.
def verify_bandwidth_usage(claimed_usage, secret_session_log, limit):
# 'secret_session_log' er det private input (the witness)
# 'limit' og 'claimed_usage' er offentlige
# 1. Tjek om loggen stemmer overens med det påståede beløb
is_match = (hash(secret_session_log) == claimed_usage_hash)
# 2. Sikr at forbruget er under grænsen
is_under_limit = (secret_session_log <= limit)
# Kredsløbet returnerer kun 'True', hvis begge er i orden
# Verifikatoren (blockchainen) ser kun 'True/False' og beviset
return is_match and is_under_limit
I et ægte DePIN-miljø sender noden (proveren) et "commitment" til blockchainen. Det er i bund og grund et kryptografisk løfte. Senere, når det er tid til at få udbetalt rewards, leverer de deres ZKP. Smart contracten fungerer som verifikator og kører en smule logik, som det tager millisekunder at tjekke, selvom det måske tog noden et helt sekund at generere beviset.
Fremtiden for DePIN afhænger af at få denne matematik ned i baggrunden. Inden for detailhandlen kan en butik for eksempel ikke have, at deres kasseapparat fryser i tre sekunder, mens det genererer et bevis for dataoverførsel via et P2P-netværk. Det skal være fuldstændig sømløst.
I finanssektoren ser vi lignende udfordringer med højfrekvenshandel. Hvis en trader bruger et tokeniseret netværk for at forblive anonym, kan enhver forstyrrelse forårsaget af bevisgenerering koste dem tusindvis af kroner i et "front-running"-scenarie. Målet er at få genereringstiden for beviser ned på et punkt, hvor det er hurtigere end selve netværkets ping-tid.
Helt ærligt, så er problemet med "under-constrained" kredsløb det, der holder mig vågen om natten. Hvis 96 % af fejlene i disse systemer stammer fra dårlig matematisk logik, bygger vi i bund og grund en bank med en boksdør, der ser tung ud, men som faktisk ikke er boltet fast til væggen. Udviklere er dog begyndt at bruge værktøjer til "formel verifikation" af deres kredsløb, hvilket basalt set betyder, at man bruger en AI eller en matematisk motor til at bevise, at beviset rent faktisk er skudsikkert.
I næste afsnit samler vi trådene og ser på, hvordan det endelige "privacy stack" ser ud, når man kombinerer P2P-routing, tokeniserede rewards og zero-knowledge metadata.
Konklusion: Et sandt anonymt internet
Efter alle de matematiske gennemgange og dybdedyk i protokollerne, hvor efterlader det os så egentlig? Hvis du har fulgt med så langt, står det ret klart, at den gamle måde at gøre tingene på – hvor man bare håbede på, at ens udbyder ikke var en snushane – er ved at uddø.
Vi bevæger os fundamentalt fra en "stol på mig"-model til en "rør ikke ved dette"-model. Tidligere oprettede man forbindelse til en VPN og bad til, at de ikke gemte logfiler, selv når deres forretningsmodel eller en retskendelse antydede det modsatte.
Men med et P2P-netværk drevet af Zero-Knowledge Proofs (ZKP) kan noden bogstaveligt talt ikke sladre om dig, fordi den aldrig har haft adgang til dataene i første omgang. Det er et paradigmeskift i netværksarkitektur.
- Modstandsdygtighed mod censur: I lande med massiv overvågning fra internetudbydere er ZKP-baserede dVPN'er en total "game changer". Da metadata er "blindet", kan statslig Deep Packet Inspection (DPI) ikke uden videre forbinde en specifik bruger til en "forbudt" exit-node.
- Økonomisk retfærdighed: Bandwidth mining bliver et legitimt erhverv. Du bliver betalt for det arbejde, du udfører – bevist gennem matematik – uden at skulle opbygge en database over dine kunders vaner for at tilfredsstille en belønningsalgoritme.
- Slut med digitale fodspor: Som vi har set, er det nemt at skjule selve indholdet (payload); det svære er at skjule det faktum, at du har sendt det. ZKP'er gør det endelig muligt for os at slette de digitale fodspor i realtid.
Dette er ikke kun for privatlivsnørder eller folk, der prøver at skjule deres torrent-forbrug. Implikationerne for den faktiske industrielle infrastruktur er enorme.
Inden for sundhedsvæsenet kan en hospitalskæde, der bruger et decentraliseret netværk til at synkronisere patientdata, nu bevise over for tilsynsmyndigheder, at de har flyttet journalerne, uden at relay-noderne nogensinde har set "formen" på de data. Det forhindrer uvedkommende i at gætte patientvolumen eller typer af nødsituationer baseret på datapakkerne.
For detailhandelsgiganter betyder det synkronisering af lagerbeholdning på tværs af tusindvis af P2P-forbundne butikker, uden at en konkurrent kan kortlægge deres forsyningskædes timing. De får hastigheden fra et distribueret netværk kombineret med privatlivet fra et lokalt netværk.
Og i finansverdenen handler alt om forspring. High-frequency tradere kan bruge disse tokeniserede netværk til at maskere deres fysiske placering. Hvis en node ikke kan se sessionens varighed eller wallet-adressen via en ZKP, kan de ikke "front-runne" handlen.
Jeg vil ikke lyve for dig – vi er ikke helt ved det "perfekte" internet endnu. Den beregningsmæssige omkostning er stadig en faktor. Hvis du kører en node på en billig router, kan belastningen ved at generere disse beviser stadig påvirke din gennemløbshastighed en smule.
Men som jeg nævnte tidligere, er skiftet mod protokoller som Halo og Virgo ved at løse dette. Vi nærmer os et punkt, hvor logikken er så effektiv, at "privatlivs-omkostningen" i praksis er umærkelig for slutbrugeren.
Ifølge dokumentationen for Zero-knowledge proofs har konceptet eksisteret siden 80'erne, men det er først nu, vi har hardwaren og koden (som zk-SNARKs) til at få det til at fungere i stor skala i P2P-netværk.
Helt ærligt, hvis du er teknologi-entusiast eller går op i, hvor internettet bevæger sig hen, bør du holde skarpt øje med DePIN-projekter. "Airbnb for båndbredde"-modellen fungerer kun, hvis gæsterne forbliver anonyme, og værterne bliver betalt retfærdigt.
Fremtidens internet handler ikke kun om decentralisering; det handler om verificerbart privatliv. Vi bygger en teknologistak, hvor P2P-routing håndterer "hvor", kryptering håndterer "hvad", og Zero-Knowledge Proofs håndterer "hvem" og "hvornår".
Når man kombinerer disse, får man et internet, der ikke tilhører en enkelt virksomhed eller regering. Det er et netværk, der eksisterer i kraft af sine brugere, beskyttet af matematiske love snarere end en direktørs luner.
Uanset hvad, har det været en lang rejse gennem disse protokoller. Hvad enten du bare leder efter en bedre måde at browse på, eller du ønsker at bygge den næste store decentraliserede app, så husk: Hvis du ikke verificerer, så gætter du bare. Hold dine kredsløb tætte og dine metadata skjulte.