Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?

I dag er det bare de late som ikke har skrevet om blokkjedeteknologi, kryptovalutaer og hvor kult det er. Men denne artikkelen vil ikke prise denne teknologien; vi vil snakke om dens mangler og måter å eliminere dem på.

Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?

Under arbeidet med et av prosjektene hos Altirix Systems, oppsto oppgaven med sikker, sensurbestandig bekreftelse av data fra en kilde utenfor blokkjeden. Det var nødvendig å bekrefte endringer i postene til det tredje systemet og, basert på disse endringene, utføre en eller annen gren i den smarte kontraktslogikken. Oppgaven ved første øyekast er ganske triviell, men når den økonomiske tilstanden til en av partene som deltar i prosessen avhenger av resultatet av implementeringen, vises ytterligere krav. For det første er dette omfattende tillit til en slik valideringsmekanisme. Men først ting først.

Problemet er at blokkjeden i seg selv er en autonom, lukket enhet, så de smarte kontraktene inne i blokkjeden vet ingenting om omverdenen. Samtidig er vilkårene for smarte kontrakter ofte knyttet til informasjon om virkelige ting (flyforsinkelse, valutakurser osv.). For at smarte kontrakter skal fungere skikkelig, må informasjon mottatt utenfor blokkjeden være pålitelig og verifisert. Dette problemet løses ved å bruke orakler som Town Crier og DECO. Disse oraklene lar en smart kontrakt på blockchain-nettverket stole på informasjon fra en pålitelig webserver; vi kan si at disse er leverandører av pålitelig informasjon.

Orakler

Tenk deg at en smart kontrakt overfører 0.001 btc til bitcoin-lommeboken din hvis favorittfotballklubben vinner den russiske cupen. Ved en reell seier må smartkontrakten overføre informasjon om hvilken klubb som vant, og en rekke problemer oppstår her: hvor får man tak i denne informasjonen, hvordan overfører man den trygt til smartkontrakten og hvordan sikrer man at informasjonen mottatt i den smarte kontrakten er gyldig faktisk sammenfaller med virkeligheten?

Når det kommer til informasjonskilden, kan det være to scenarier: å koble en smart kontrakt til en pålitelig nettside der informasjon om kampresultater er sentralt lagret, og det andre alternativet er å koble til flere nettsteder samtidig og deretter velge informasjon fra de fleste kilder som gir de samme dataene. For å verifisere riktigheten av informasjonen brukes orakler, for eksempel Oraclize, som bruker TLSNotary (TLS Notary Modification to Prove the Authenticity of Data). Men det er nok informasjon på Google om Oraclize, og det er flere artikler om Habré.I dag skal jeg snakke om orakler som bruker en litt annen tilnærming til å overføre informasjon: Town Crier og DECO. Artikkelen gir en beskrivelse av operasjonsprinsippene til begge oraklene, samt en detaljert sammenligning.

Town Crier

Town Crier (TC) ble introdusert av IC3 (The Initiative for CryptoCurrencies and Contracts) i 2016 på CCS'16. Hovedideen til TC: Overfør informasjon fra et nettsted til en smart kontrakt og sørg for at informasjonen som leveres av TC er den samme som på nettstedet. TC bruker TEE (Trusted Execution Environment) for å autentisere dataeierskap. Den originale versjonen av TC beskriver hvordan du arbeider med Intel SGX.
Town Crier består av en del inne i blokkjeden og en del inne i selve OS - TC Server.
Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?
TC Contract er på blokkjeden og fungerer som frontend for TC. Den aksepterer forespørsler fra CU (user smart contract) og returnerer et svar fra TC-serveren. Inne i TC-serveren er det et relé, som etablerer en forbindelse mellom enklaven og Internett (toveis trafikk) og kobler enklaven med blokkjeden. Enclave inneholder progencl, som er kode som sender forespørsler fra blokkjeden og returnerer meldinger til blokkjeden med en digital signatur, progencl inneholder en del av den smarte kontraktskoden og utfører i hovedsak noen av dens funksjoner.

Intel SGX-enklaven kan tenkes på som et delt bibliotek med en API som kjører via ecall. Ecall overfører kontrollen til enklaven. Enklaven kjører koden sin til den går ut eller til et unntak oppstår. ocall brukes til å kalle opp funksjoner definert utenfor enklaven. Ocall blir henrettet utenfor enklaven og blir behandlet som et upålitelig anrop av den. Etter at ocall er utført, returneres kontrollen til enklaven.
Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?
I Enclave-delen konfigureres en sikker kanal med en webserver, selve enklaven utfører et TLS-håndtrykk med målserveren og utfører alle kryptografiske operasjoner internt. TLS-biblioteket (mbedTLS) og redusert HTTP-kode har blitt eksportert til SGX-miljøet. Enclave inneholder også rot-CA-sertifikater (en samling sertifikater) for å bekrefte sertifikatene til eksterne servere. Request Handler godtar en datagramforespørsel i formatet levert av Ethereum, dekrypterer den og analyserer den. Deretter genererer den en Ethereum-transaksjon som inneholder det forespurte datagrammet, signerer det med skTC og overfører det til Relay.

Relédelen inkluderer Client Interface, TCP, Blockchain Interface. Klientgrensesnittet er nødvendig for å sertifisere enklavekoden og kommunisere med klienten. Klienten sender en attestasjonsforespørsel ved hjelp av ecall og mottar et tidsstempel signert av skTC sammen med att (attestasjonssignatur), deretter blir att verifisert ved hjelp av Intel Attestation Service (IAS), og tidsstemplet verifiseres av en klarert tidstjeneste. Blockchain Interface verifiserer innkommende forespørsler og plasserer transaksjoner på blokkjeden for levering av datagrammer. Geth er en offisiell Ethereum-klient og lar Relay samhandle med blokkjeden via RPC-anrop.

Når du jobber med TEE, lar TC deg kjøre flere enklaver parallelt, og øker dermed hastigheten på informasjonsbehandlingen med 3 ganger. Hvis hastigheten med en løpende enklave var 15 tx/sek, øker hastigheten med 20 parallellløpende enklaver til 65 tx/sek; til sammenligning er den maksimale driftshastigheten i Bitcoin blockchain 26 tx/sek.

DECO

DECO (Decentralized Oracles for TLS) ble presentert på CCS'20, jobber med nettsteder som støtter TLS-tilkoblinger. Sikrer datakonfidensialitet og integritet.
DECO med TLS bruker symmetrisk kryptering, slik at klienten og webserveren har krypteringsnøkler, og klienten kan forfalske TLS-sesjonsdata hvis den vil. For å løse dette problemet bruker DECO en treveis handshake-protokoll mellom prover (smart kontrakt), verifikator (oracle) og web-server (datakilde).

Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?

Måten DECO fungerer på er at verifikatoren mottar et stykke data D og bekrefter overfor verifikatoren at D kom fra TLS-serveren S. Et annet problem er at TLS ikke signerer dataene og det er vanskelig for TLS-klienten å bevise at data ble mottatt fra nøyaktig riktig server (herkomstvanskelighet).

DECO-protokollen bruker KEnc- og KMac-krypteringsnøkler. Klienten sender en forespørsel Q til webserveren, svaret fra serveren R kommer i kryptert form, men klienten og serveren eier samme KMac, og klienten kan forfalske TLS-meldingen. DECOs løsning er å "gjemme" KMac fra klienten (prover) til den svarer på forespørselen. Nå er KMac delt mellom prover og verifikator - KpMac og KvMac. Serveren mottar KMac for å kryptere svaret ved å bruke nøkkeldeloperasjonen KpMac ⊕ KvMac = KMac.

Ved å sette opp et treveis håndtrykk vil datautveksling mellom klient og server utføres med en garanti for sikkerhet.
Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?
Når man snakker om et desentralisert orakelsystem, kan man ikke unngå å nevne Chainlink, som har som mål å skape et desentralisert nettverk av orakelnoder som er kompatibelt med Ethereum, Bitcoin og Hyperledger, tatt i betraktning modularitet: hver del av systemet kan oppdateres. Samtidig, for å sikre sikkerhet, tilbyr Chainlink hvert orakel som deltar i oppgaven å utstede en kombinasjon av nøkler (offentlige og private). Den private nøkkelen brukes til å generere en delvis signatur som inneholder deres beslutning om dataforespørselen. For å få svar er det nødvendig å kombinere alle delsignaturene til nettverkets orakler.

Chainlink planlegger å gjennomføre en innledende PoC DECO med fokus på desentraliserte finansapplikasjoner som Mixicles. I skrivende stund kom det ut nyheter på Forbes om at Chainlink kjøpte DECO fra Cornell University.

Angrep på orakler

Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?

Fra et informasjonssikkerhetssynspunkt ble følgende angrep på Town Crier vurdert:

  1. Rogue smart-kontakt kodeinjeksjon på TEE-noder.
    Essensen av angrepet: å overføre en bevisst feil smart kontraktskode til TEE, dermed vil en angriper som fikk tilgang til noden kunne utføre sin egen (uredelige) smartkontrakt på de dekrypterte dataene. Returverdiene vil imidlertid være kryptert med en privat nøkkel, og den eneste måten å få tilgang til slike data på er å lekke chifferteksten ved retur/utdata.
    Beskyttelse mot dette angrepet består i at enklaven sjekker riktigheten av koden som ligger på den gjeldende adressen. Dette kan oppnås ved hjelp av en adresseordning der kontraktsadressen bestemmes ved å hashe kontraktskoden.

  2. Kontrakt tilstand chiffertekst endringer lekkasje.
    Essensen av angrepet: Eiere av noder som smarte kontrakter utføres på har tilgang til kontraktstilstanden i kryptert form utenfor enklaven. En angriper, som har fått kontroll over en node, kan sammenligne kontakttilstanden før og etter transaksjonen og kan bestemme hvilke argumenter som ble lagt inn og hvilken smart kontraktsmetode som ble brukt, siden selve smartkontraktkoden og dens tekniske spesifikasjoner er offentlig tilgjengelig.
    Beskyttelse for å sikre påliteligheten til selve noden.

  3. Sidekanalangrep.
    En spesiell type angrep som bruker overvåking av enklave-minne og cache-tilgang i ulike scenarier. Et eksempel på et slikt angrep er Prime and Probe.
    Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?
    Angrepsrekkefølge:

    • t0: Angriperen fyller hele databufferen til offerprosessen.
    • t1: Offeret utfører kode med minnetilganger som avhenger av offerets sensitive data (kryptografiske nøkler). Hurtigbufferlinjen velges basert på nøkkelbitverdien. I eksempelet i figuren leses keybit = 0 og adressen X i hurtigbufferlinje 2. Dataene som er lagret i X lastes inn i hurtigbufferen, og fortrenger dataene som var der før.
    • t2: Angriperen sjekker hvilke av hans cache-linjer som er kastet ut – linjer brukt av offeret. Dette gjøres ved å måle tilgangstid. Ved å gjenta denne operasjonen for hver nøkkelbit, får angriperen hele nøkkelen.

Angrepsbeskyttelse: Intel SGX har beskyttelse mot sidekanalangrep som forhindrer overvåking av cacherelaterte hendelser, men et Prime and Probe-angrep vil fortsatt fungere fordi angriperen overvåker cache-hendelsene i prosessen sin og deler cachen med offeret.
Town Crier vs DECO: hvilket orakel skal du bruke i blokkjeden?
Derfor er det for øyeblikket ingen pålitelig beskyttelse mot dette angrepet.

Angrep som Spectre og Foreshadow (L1TF), som ligner på Prime og Probe, er også kjent. De lar deg lese data fra cache-minne gjennom en tredjepartskanal. Beskyttelse mot Spectre-v2-sårbarheten er gitt, som fungerer mot to av disse angrepene.

I forhold til DECO gir treveis håndtrykket en garanti for sikkerhet:

  1. Proverintegritet: En hacket prover kan ikke forfalske serveropprinnelsesinformasjon og kan ikke få serveren til å akseptere ugyldige forespørsler eller svare feil på gyldige forespørsler. Dette gjøres gjennom forespørselsmønstre mellom server og prover.
  2. Verifikatorintegritet: En hacket verifikator kan ikke få beviseren til å motta feil svar.
  3. Personvern: Den hackede verifikatoren undersøker kun offentlig informasjon (forespørsel, servernavn).

I DECO er kun trafikkinjeksjonssårbarheter mulige. For det første, med et treveis håndtrykk, kan verifikatoren etablere identiteten til serveren ved å bruke en ny nonce. Etter håndtrykket må verifikatoren imidlertid stole på nettverkslagsindikatorer (IP-adresser). Dermed må kommunikasjonen mellom verifikatoren og serveren beskyttes mot trafikkinjeksjon. Dette oppnås ved å bruke proxy.

Sammenligning av orakler

Town Crier er basert på å jobbe med en enklave i serverdelen, mens DECO lar deg verifisere autentisiteten til opprinnelsen til data ved hjelp av et treveis håndtrykk og datakryptering med kryptografiske nøkler. Sammenligning av disse oraklene ble utført i henhold til følgende kriterier: ytelse, sikkerhet, kostnad og praktisk.

Town Crier
DECO

opptreden
Raskere (0.6 s til slutt)
Langsommere (10.50 s for å fullføre protokollen)

sikkerhet
Mindre sikker
Mer sikkert

koste
Dyrere
Billigere

praktisk
Krever spesiell maskinvare
Fungerer med alle servere som støtter TLS

fart: For å jobbe med DECO kreves et treveis håndtrykk, ved oppsett via LAN tar det 0.37 sekunder, for interaksjon etter at forbindelsen er etablert, er 2PC-HMAC effektiv (0,13 s per skriving). DECOs ytelse avhenger av de tilgjengelige TLS-chifferpakkene, størrelsen på de private dataene og kompleksiteten til bevisene for en bestemt applikasjon. Bruk av binæropsjonsapplikasjonen fra IC3 som et eksempel: å fullføre protokollen via LAN tar omtrent 10,50 sekunder. Til sammenligning tar Town Crier omtrent 0,6 sekunder å fullføre en lignende applikasjon, som er omtrent 20 ganger raskere enn DECO. Alt annet likt vil TC være raskere.

Безопасность: Angrep på Intel SGX-enklaven (sidekanalangrep) fungerer og kan forårsake reell skade på deltakerne i den smarte kontrakten. Når det gjelder DECO, er angrep relatert til trafikkinjeksjon mulig, men bruk av en proxy reduserer slike angrep til ingenting. Derfor er DECO sikrere.

Koste: Kostnaden for utstyr som støtter Intel SGX er høyere enn kostnaden for å sette opp protokollen i DECO. Derfor er TC dyrere.

praktisk: For å jobbe med Town Crier kreves spesialutstyr som støtter TEE. For eksempel støttes Intel SGX på 6. generasjons Intel Core-prosessorfamilie og senere. DECO lar deg jobbe med alt utstyr, selv om det er en DECO-innstilling som bruker TEE. I følge oppsettsprosessen kan DECOs treveis håndtrykk ta litt tid, men dette er ingenting sammenlignet med maskinvarebegrensningen til TC, så DECO er mer praktisk.

Konklusjon

Ser man på de to oraklene hver for seg og sammenligner dem på fire kriterier, er det klart at Town Crier er underlegen DECO på tre av fire punkter. DECO er mer pålitelig fra et informasjonssikkerhetssynspunkt, billigere og mer praktisk, selv om å sette opp en trepartsprotokoll kan ta litt tid og har sine ulemper, for eksempel tilleggsoperasjoner med krypteringsnøkler. TC er raskere enn DECO, men sårbarheter i sidekanalangrep gjør den utsatt for tap av konfidensialitet. Det må tas i betraktning at DECO ble introdusert i januar 2020, og det har ikke gått nok tid til å vurdere det som trygt. Town Crier har vært under angrep i 4 år og har gått gjennom mange tester, så bruken i mange prosjekter er berettiget.

Kilde: www.habr.com

Legg til en kommentar