De komst van smart contracts heeft een geheel nieuwe weg van toepassingen geopend. Ethereum, het toonaangevende smart contractplatform, heeft de creatie van aantrekkelijke gedecentraliseerde toepassingen/applicaties zoals gedecentraliseerde exchanges, voorspellingsmarkten, autonome organisaties en Cryptokitties mogelijk gemaakt. De blockchain van Ethereum is echter volledig transparant en de data van elk van deze applicaties is voor iedereen toegankelijk. Dit sluit de deur naar een hele reeks toepassingen die afhankelijk zijn van privacy. Zo mag een ‘voting app’ bijvoorbeeld niets onthullen over de stemmen terwijl het stemproces gaande is. Pas als het proces is afgesloten wordt de winnaar bekendgemaakt. Stemmen is een uiterst interessante use case voor trustless (vertrouwenloze), private smart contracts. U kan erop vertrouwen dat de stemmen correct zijn geteld en er geen informatie over de stemming is uitgelekt totdat deze compleet was. Hierdoor hebben meerdere teams verschillende benaderingen gebruikt om het privacyprobleem op te lossen. Dit artikel analyseert de verschillende benaderingen en hun respectievelijke afwegingen.

Wat zijn nu smart contracts?

Inleiding tot de privacy van smart contracts

Het ideale privacy behoudende smart contract zou de mogelijkheid moeten bieden om inputs te verbergen voor iedereen, met uitzondering van de persoon die het contract aflevert, sommige willekeurige berekeningen uit te voeren zonder enige informatie over de toestand te onthullen, en om outputs terug te sturen volgens de specificaties van het programma (enkele publieke output/return output uitzenden naar specifieke gebruikers / geen zichtbare output). Dit brengt een aantal uitdagingen met zich mee:

  • Hoe verbergen we de inputs van een smart contract?
  • Hoe houden we de toestand voor iedereen verborgen, en hoe zorgen we ervoor dat het programmeerwerk correct is?
  • Hoe doen we arbitraire berekeningen op verborgen (of gecodeerde) data?

De meest ambitieuze manier om dit doel te bereiken is het gebruik van een cryptografisch schema genaamd Homomorphic encryption. Dit type encryptie stelt gebruikers in staat om hun privé-date te coderen, naar een cloud computer te sturen, de berekeningen op de codeerde data door de computer te laten uitvoeren, ze terug te sturen naar de gebruikers, en alleen de gebruikers zullen in staat zijn om deze data te decoderen. Maar, homomorphic encryption is vandaag de dag niet echt praktisch en kan hoogstens gebruikt worden om eenvoudige rekenkundige bewerkingen uit te voeren op gehele getallen. Daarom worden de teams gedwongen om andere methodes te gebruiken.

1. Vertrouwde uitvoeringsomgevingen (TEE)

Een betrouwbare uitvoeringsomgeving is een geïsoleerde ruimte op de centrale processor van een apparaat dat losstaat van het hoofdbesturingssysteem. Het zorgt ervoor dat data opgeslagen, verwerkt en beschermd wordt in een vertrouwde omgeving. De meest populaire TEE tot nu toe is de Intel SGX, die vandaag de dag in veel Intel chips wordt verwerkt.

Deze TEE’s maken het mogelijk om programma’s te draaien in veilige ‘enclaves’, die net als zwarte dozen zijn waar de staat van het programma volledig verborgen en ontoegankelijk is voor iedereen. Dit is interessant omdat men een private/public key pair kan genereren binnen een enclave, een bestand kan corderen (versleutelen) met die public key, waardoor het bestand alleen toegankelijk is vanuit de enclave. Dit is uiteraard de stap voor privé berekeningen, omdat gebruikers in staat zijn om hun bestanden te coderen, naar de TEE te sturen en de TEE de berekening uit te laten voeren zonder dat de inputs ooit zichtbaar worden. Door de trusstless feature (vertrouwenloze toepassing) van deze programma’s kunnen alle smart contractuitvoeringen buiten de chain uitgevoerd worden en kunnen er ook schalingsvoordelen voor de blockchains worden gerealiseerd. De meest opvallende projecten die deze aanpak gebruiken zijn Enigma en Oasis Labs.

Deze algemene benadering van private computing is vandaag de dag de meest schaalbare. Veel computers hebben Intel SGXs toegelaten en er zijn geen noemenswaardige prestatievertragingen door het gebruik van een veilige enclave voor het uitvoeren van een programma. Dit gaat wel gepaard met belangrijke compromissen die TEE’s volledig onrendabel kunnen maken als het gaat om zeer gevoelige data.

  1. Ten eerste zijn de meeste TEE’s die tegenwoordig op de markt zijn, Intel SGX. Dit brengt een centralisatie risico met zich mee omdat het onduidelijk is wat de precieze architectuur van de chips is, en of Intel al dan niet de veiligheid van de SGX heeft verminderd om de prestaties van hun chip in het algemeen te verbeteren met het oog op de huidige nichemarkt voor SGX’en.
  2. Ten tweede, om te bewijzen dat een computer een Intel SGX heeft, moet de computer contact opnemen met Intel’s attestatiedienst die wordt beheerd op afstand. Nogmaals, dit is een gecentraliseerde cloud-service die alle geproduceerde chips bijhoudt met Intel SGX-technologie. Een hacker die in staat is om die cloudservice te schenden, kan nep-ID’s in de cloudservice invoegen, die “bewijst” dat hun computers Intel SGX bevatten, ook al hebben ze die niet. Als er een smart contract op één van deze nep-TEE’s draait, kan de operator alle informatie zien.

Dit zijn niet alleen maar theoretische beschrijvingen van Intel SGX. Tot op heden zijn er twee grote kwetsbaarheden die de veiligheid van Intel SGXs ondermijnen nl. Meltdown and Spectre, en Foreshadow. De nieuwe TEE ontwerpen zijn bedacht, maar de betrouwbare hardware designs zullen altijd blootgesteld worden met het risico op een aanval. In plaats van hardware garanties, worden andere cryptografische methodes ondersteund door wiskunde en informatica, wat waarschijnlijk een meer solide basis is.

2. Secure Multi-party Computation (sMPC)

De tweede manier om privacy behoudende smart contracts te benaderen is door gebruik te maken van een cryptografische techniek, de zogenaamde secure multi-party computation. Als we in sMPC een geheime berekening willen uitvoeren, kunnen we gegevens op een zeer specifieke manier in meerdere delen opsplitsen, en dan kunnen we individuen rekenkundige bewerkingen op die delen laten uitvoeren zonder iets te onthullen over de oorspronkelijke data. Die stukjes kunnen dan opnieuw worden gecombineerd om het uiteindelijke resultaat te verkrijgen.

Laten we bijvoorbeeld zeggen dat we A + B willen berekenen zonder te onthullen wat A en B is. We kunnen A in 3 delen ([A]₁ , [A]₂ , [A]₃) en B in 3 delen ([B]₁ , [B]₂ , [B]₃) zodat [A]ₓ + [B]ₓ = [C]ₓ . Wij verspreiden de gegevens over 3 verschillende personen, en op zich zijn de verschillende gegevens volledig betekenisloos. Na het berekenen van hun respectievelijke [C]ₓ waarden kunnen de 3 mensen samenkomen en hun [C]ₓ waarden combineren, waardoor C ontstaat. Door dit proces waren de 3 mensen in staat om C samen te berekenen zonder dat zij ooit wisten wat A en B waren. Vermenigvuldigingen zijn moeilijker, maar kunnen worden bereikt met enkele handelingen.

In theorie kunnen we, als we eenmaal optellingen en vermenigvuldigingen kunnen doen over een sMPC-protocol, elke willekeurige berekening realiseren. Dit is een zeer boeiende manier om privacybeschermende berekeningen uit te voeren, want de enige manier om de onderliggende data bloot te stellen is door elke node te laten samenwerken. Als er zelfs maar één node is die eerlijk is, zullen alle andere nodes niet in staat zijn om de geheime, gedeelde data op een zinvolle manier te begrijpen, waardoor het extreem resistent is tegen vijandig gedrag. De afweging is echter dat sMPC-protocollen traag en duur zijn vanwege de communicatiekosten tussen de nodes. Alle nodes moeten het programma ook correct uitvoeren met behulp van de geheime gedeelde data die ze hebben gekregen. Als één enkele node hun output [C]ₓ vervangt door een willekeurige waarde, heeft de gecombineerde C-waarde van de nodes ook geen zin. Door dit te doen, zou een aanvaller de rekeninspanning van alle andere deelnemers verspild hebben.

Twee projecten die de privacybeschermende smart contracts aanpakken met sMPC zijn Keep Network en Enigma. De oorspronkelijke Enigma white paper kwam met een ontwerp voor een gedecentraliseerd privé-berekeningsplatform met behulp van sMPC, maar sindsdien hebben ze hun roadmap aangepast om in plaats daarvan TEE’s te gebruiken, wat aantoont dat het gebruik van TEE’s in plaats van sMPC op de korte termijn een haalbare optie is. Voor sMPC is de toekomst veelbelovend en er worden veel optimalisaties doorgevoerd om sMPC praktischer te maken. Enigma is van plan om sMPC opnieuw in hun bestaande protocol te introduceren, maar dat is nog minstens een jaar te vroeg.

3. Zero-knowledge Proofs (ZKP)

De uiteindelijke aanpak is het gebruik van een zero knowledge proof. Dit is een cryptografische techniek die wordt gebruikt om de juistheid van een stelling te bewijzen zonder andere informatie te onthullen. Deze techniek is nuttig in privé-berekeningen omdat het computing nodes in staat stelt om verifieerbare bewijzen te creëren waaruit blijkt dat ze de berekening eerlijk hebben uitgevoerd met de juiste inputs, en dus moet de output correct zijn.

Het enige project dat hieraan werkt is Origo Network. In dit protocol zijn alle computing nodes off-chain en moeten ze een zogenaamde zero-knowledge proof voorleggen om te bewijzen dat ze het programma correct hebben uitgevoerd. Dit stelt het publiek in staat om te controleren of de berekeningen correct zijn uitgevoerd zonder dat er ooit privé-data in de chain aanwezig zijn. Nochtans, is de grootste kritiek van het project dat het alleen de hoeveelheid privé-data die op de chain komt geminimaliseerd wordt; computing nodes kunnen nog steeds alle in- en outputs zien. Bovendien vereist het creëren van een zero-knowledge proof een vertrouwenswaardige set-up die vooraf moet worden geconfigureerd. Het uitvoeren van een trusted setup voor ieder smartcontract is super duur, en er zijn ook grenzen aan de complexiteit van een programma om een zkSNARK te genereren. Dit is waar cutting-edge technologie zoals STARKs in het spel komt, maar dit is nog jaren verwijderd van elke zinvolle toepassing in het productieproces.

 

De gouden standaard

Elke project maakt gebruik van verschillende methoden om de privacy van smart-contracts te verzekeren, elke aanpak heeft zijn eigen voor-en nadelen. Ik geloof echter wel dat deze 3 technieken in de toekomst op een consistente manier gecombineerd kunnen worden.

Eén van de grootste nadelen van sMPC is dat het protocol geen tegenstrijdig gedrag kan tolereren. Als één van de nodes de verkeerde inputs gebruikt of een verkeerde berekening uitvoert, wordt de output betekenisloos. Daarom kan men een nieuw protocol bedenken waarbij elk node in een sMPC-protocol ook een zero knowledge proof moet indienen, om te bewijzen dat ze de berekening eerlijk hebben uitgevoerd. We kunnen deze sMPC-protocollen ook in TEE’s gebruiken, zodat in het slechtste geval alle computing nodes met elkaar samenwerken, ze nog steeds niet in staat zijn om de onderliggende privé-data te achterhalen.

Elk van deze methodes is echter een kolossale inspanning op zich en vereist een heel bedrijf om het op te bouwen. Ook de zero knowledge proof en sMPC-technieken staan nog in de kinderschoenen, en er wordt door de beste cryptografen veel geavanceerd onderzoek gedaan om deze protocollen efficiënter en bruikbaarder te maken in echte toepassingen.

In de toekomst moeten we ons voorstellen dat zelfs grote bedrijven een aantal van deze technieken gaan gebruiken. Facebook, dat gegevens over ons verzamelt en gebruik maakt van algoritmes voor machine-learning om ons te voorzien van de meest effectieve advertenties, kan gebruik maken van technieken om de privacy te beschermen, zodat ze hun algoritmes nog steeds op onze gecodeerde persoonlijke gegevens kunnen uitvoeren. Dit zal ook een hele reeks industrieën zoals de gezondheidszorg of het bankwezen in staat stellen om gecodeerde data over elkaar te delen, waardoor de kwaliteit van producten zoals verzekeringsplannen, leningen en zelfs de persoonlijke gezondheid enorm wordt verbeterd.

 

Heb je vragen over dit artikel of ben je van een andere mening? Laat het ons dan zeker weten. Wordt lid van onze Telegram groep, kom rechtstreeks in contact met al onze teamleden en met andere crypto-enthousiastelingen. De groep is interactief en bevat alle relevante informatie die voor u van nut zouden kunnen zijn, het is voor iedereen toegankelijk en we proberen iedereen verder te helpen waar kan.

What's your reaction?

Leave a comment

Inschrijven voor onze nieuwsbrief!

Trade.be © 2018. All rights reserved.

Crypto Nieuwsbrief

Schrijf je hier in voor steeds het laatste crypto nieuws !