Town Crier vs DECO: hvilken oracle skal bruges i blockchain?

I dag har kun de dovne ikke skrevet om blockchain-teknologi, kryptovalutaer og hvor fantastisk det er. Men i denne artikel vil der ikke være noget ros af denne teknologi; vi vil derimod tale om dens ulemper og måder at løse dem på.

Town Crier vs DECO: hvilken oracle skal bruges i blockchain?

Under arbejdet med et af projekterne i Altiriks Systems opstod der en opgave om beskyttet, censurresistent bekræftelse af data fra en ekstern blockchain-kilde. Det var nødvendigt at bekræfte ændringer i poster fra et tredje system og udføre forskellige handlinger i smart-kontraktens logik baseret på disse ændringer. Opgaven virker umiddelbart ret trivial, men når resultatet af den afhænger af den finansielle situation for en af parterne i processen, opstår der yderligere krav. Først og fremmest kræves der en bred tillid til en sådan valideringsmekanisme. Men lad os tage det skridt for skridt.

Problemet er, at blockchain i sig selv er et autonomt, lukket system, så smart-kontrakter inden for blockchain ikke har kendskab til den ydre verden. Samtidig er betingelserne for smart-kontrakter ofte forbundet med information om virkelige forhold (f.eks. forsinkelse af fly, valutakurser osv.). For at smart-kontrakter kan fungere korrekt, skal den eksterne information være pålidelig og verificeret. Dette problem løses ved at anvende orakler som Town Crier og DECO. Disse orakler gør det muligt for smart-kontrakten i blockchain-netværket at stole på information fra en kontrolleret webserver; man kan sige, at de er leverandører af pålidelig information.

Orakler

Forestil dig, at en smart-kontrakt overfører 0,001 btc til din bitcoin-tegnebog, hvis dit yndlingsfodboldhold vinder den russiske pokal. I tilfælde af en reelt sejr skal smart-kontrakten have information om, hvilket hold der vandt, og her opstår der en række problemer: hvor skal man finde denne information, hvordan kan man sikkert overføre den til smart-kontrakten, og hvordan kan man sikre, at den information, som kommer ind i smart-kontrakten, faktisk stemmer overens med virkeligheden?

Når det kommer til kilden til information, kan der være to scenarier: at forbinde smartkontrakten til en betroet hjemmeside, hvor information om kampenes resultater er centralt opbevaret, eller den anden mulighed – at forbinde flere hjemmesider og derefter vælge information fra de fleste kilder, der giver de samme data. For at sikre informationens korrekthed anvendes orakler, eksempelvis Oraclize, der bruger TLSNotary (en modification af TLS til at bevise datagennemsigtighed). Men der er rigeligt med information om Oraclize på Google, og der er adskillige artikler på Habré; i dag vil jeg dog fortælle om orakler, der benytter en lidt anden tilgang til informationsoverførsel: Town Crier og DECO. Artiklen indeholder en beskrivelse af arbejdsprincipperne for begge orakler samt en detaljeret sammenligning.

Town Crier

Town Crier (TC) blev præsenteret af IC3 (Initiative for CryptoCurrencies and Contracts) i 2016 på CCS'16. Den grundlæggende idé med TC er at overføre information fra et website til smartkontrakten og sikre sig, at den information, der leveres af TC, er identisk med den, der er på websitet. TC anvender TEE (Trusted Execution Environment) til datagennemsigtighed. I den originale version beskrives brugen af Intel SGX.
Town Crier består af en del inden for blockchain og en del inden i operation systemet selv – TC Server.
Town Crier vs DECO: hvilken oracle skal bruges i blockchain?
TC Contract ligger i blockchain og fungerer som front-end for TC. Den modtager forespørgsler fra CU (brugerens smartkontrakt) og returnerer svar fra TC Server. Inden i TC Server findes Relay, som etablerer forbindelsen mellem enclaven og internettet (tovejs trafik) og forbinder enclaven med blockchain. Enclaven indeholder progencl, som er koden, der udfører forespørgsler fra blockchain og sender meddelelser tilbage til blockchain med digital signatur; progencl indeholder en del af koden fra smartkontrakten og udfører hovedsagelig nogle af dens funktioner.

Intel SGX-enclaven kan betragtes som et generelt bibliotek med API, der fungerer via ecall. Ecall overfører kontrol til enclaven. Enclaven kører sin kode, indtil den er færdig eller indtil der opstår en undtagelse. For at kalde funktioner, der er defineret uden for enclaven, anvendes ocall. Ocall udføres uden for enclaven og behandles som et usikkert kald. Efter udførelsen af ocall returneres kontrollen til enclaven.
Town Crier vs DECO: hvilken oracle skal bruges i blockchain?
I Enclave-konfigurationen oprettes der en sikker forbindelse til webserveren, hvor selve enclave'en udfører TLS handshake med den målserver og udfører alle kryptografiske operationer internt. TLS-biblioteket (mbedTLS) og HTTP-koden er forkortet og eksporteret til SGX-miljøet. Desuden indeholder Enclave root CA-certifikater (en samling af certifikater) for at verificere certifikater fra fjerntliggende servere. Request Handler modtager en datagramforespørgsel i det format, som Ethereum leverer, dekrypterer det og analyserer det. Derefter genereres en Ethereum-transaktion, der indeholder den ønskede datagram, den signeres med skTC og sendes til Relay.

Relay-delen inkluderer Client Interface, TCP, Blockchain Interface. Client Interface er nødvendig for at attestere enclave-koden og kommunikationen med klienten. Klienten sender en forespørgsel om attestering via ecall og modtager et tidsstempel, der er signeret med skTC sammen med att (attestationssignatur), hvorefter att bekræftes ved hjælp af Intel Attestation Service (IAS), og tidsstemplet kontrolleres af en betroet tidsservice. Blockchain Interface kontrollerer indkommende forespørgsler og placerer transaktioner i blockchain for levering af datagrammer. Geth er den officielle Ethereum-klient og giver Relay mulighed for at interagere med blockchain via RPC-kald.

Når man arbejder med TEE, giver TC mulighed for at starte flere enclaves parallelt, hvilket øger hastigheden på databehandlingen med 3 gange. Hvis hastigheden med én aktiv enclave var 15 tx/sek, stiger hastigheden til 65 tx/sek med 20 parallelt kørte enclaves, til sammenligning er den maksimale hastighed for Bitcoin-blockchain 26 tx/sek.

DECO

DECO (Decentralized Oracles for TLS) blev præsenteret på CCS’20, og det fungerer med sider, der understøtter TLS-forbindelse. Det sikrer fortrolighed og integritet af data.
DECO med TLS anvender symmetrisk kryptering, så både klienten og webserveren har krypteringsnøgler, og klienten kan, hvis den ønsker, forfalske TLS-sessiondata. For at løse dette problem bruger DECO en treparts håndtrykprotokol mellem prover (smartkontrakt), verifier (oracle) og webserver (datakilde).

Town Crier vs DECO: hvilken oracle skal bruges i blockchain?

DECO's arbejdsprincip er, at verificatoren (prover) får en del data D og bekræfter over for verificatoren (verifier), at D stammer fra TLS-serveren S. Et andet problem er, at TLS ikke signerer data, og det er svært for TLS-klienten at bevise, at dataene er modtaget fra netop den server (provenance difficulty).

I protokollen DECO benyttes krypteringsnøglerne KEnc og KMac. Klienten sender en anmodning Q til webserveren, svaret fra serveren R kommer i krypteret form, men klienten og serveren ejer de samme KMac, og klienten kan forfalske TLS-besked. Løsningen fra DECO er at "skjule" KMac for klienten (prover), indtil han svarer på anmodningen. Nu er KMac delt mellem prover og verifier — KpMac og KvMac. Serveren får KMac til at kryptere svaret ved hjælp af en operation på delene af nøglen KpMac ⊕ KvMac = KMac.

Når der er etableret en trevejs håndtryk, vil dataudvekslingen mellem klienten og serveren finde sted med sikkerhedsgaranti.
Town Crier vs DECO: hvilken oracle skal bruges i blockchain?
Når man taler om et system af decentraliserede orakler, kan man ikke undlade at nævne Chainlink, som stræber efter at skabe et decentraliseret netværk af orakel-noder, kompatibelt med Ethereum, Bitcoin og Hyperledger, med hensyn til modularitet: hver del af systemet kan opdateres. For at sikre sikkerhed tilbyder Chainlink hver orakel, der deltager i opgaven, at udstede en kombination af nøgler (offentlig og privat). Den private nøgle bruges til at generere en delvis signatur, der indeholder deres løsning på anmodningen om data. For at få et svar kræves en sammenlægning af alle dele af signaturerne fra netværkets orakler.

Chainlink planlægger at gennemføre en indledende PoC DECO med fokus på decentraliserede finansapplikationer som Mixicles. På tidspunktet for skrivningen blev der offentliggjort en nyhed på Forbes om, at Chainlink har købt DECO fra Cornell University.

Angreb på orakler

Town Crier vs DECO: hvilken oracle skal bruges i blockchain?

Set fra et informationssikkerhedsperspektiv er følgende angreb på Town Crier blevet overvejet:

  1. Rogue smart-contract kodeinjektion på TEE noder.
    Essensen af angrebet: transmission af falsk smart-contract kode til TEE, således at en angriber, der får adgang til noden, vil have mulighed for at udføre sin egen (svindel) smart-contract på dekrypterede data. Ikke desto mindre vil de returnerede værdier være krypteret med den private nøgle, og den eneste måde at få adgang til sådanne data på er, hvis den krypterede tekst lækkes under returneringen/udtrækningen.
    Beskyttelse mod dette angreb består i at kontrollere at koden på den nuværende adresse er korrekt verificeret af enclaven. Dette kan opnås med en adresseringsskema, hvor kontraktens adresse bestemmes ved hjælp af hashing af kontraktens kode.

  2. Contract state ciphertext changes leak.
    Angrebs essens: Ejere af noder, hvor smarte kontrakter udføres, har adgang til contract state i krypteret form uden for enclave. En angriber, der opnår kontrol over en node, kan sammenligne contract state før og efter udførelsen af en transaktion og kan bestemme, hvilke argumenter der blev indsendt, og hvilken specifik metode der blev brugt i den smarte kontrakt, da selve koden for den smarte kontrakt og dens tekniske specifikationer er offentligt tilgængelige.
    Beskyttelse af node selv for at sikre pålidelighed.

  3. Sidekanalangreb.
    En særlig type angreb, der bruger overvågning af adgang til hukommelse og cache af enclave i forskellige scenarier. Et eksempel på et sådant angreb er Prime and Probe.
    Town Crier vs DECO: hvilken oracle skal bruges i blockchain?
    Forløbet af angrebet:

    • t0: Angriberen fylder hele cache af data fra offerets proces.
    • t1: Offret udfører kode med adgang til hukommelse, der afhænger af fortrolige data fra offeret (kryptografiske nøgler). Valget af cache line foretages baseret på værdien af keybit. I eksemplet på billedet er keybit = 0, og adressen X er læst i cache line 2. Dataene gemt i X indlæses i cache og skubber de data, der tidligere var der, ud.
    • t2: Angriberen tjekker, hvilke af hans cachelinjer der er blevet skubbet ud — linjer, der anvendes af offeret. Dette gøres ved at måle adgangstiden. Ved at gentage denne proces for hver af keybit, opnår angriberen hele nøglen.

Beskyttelse mod angrebet: Intel SGX har beskyttelse mod sidekanalangreb, som forhindrer overvågning af begivenheder relateret til cache, men angrebet Prime and Probe vil stadig lykkes, da angriberen overvåger cachebegivenhederne i sin egen proces og deler cache med offeret.
Town Crier vs DECO: hvilken oracle skal bruges i blockchain?
Derfor findes der i øjeblikket ingen pålidelig beskyttelse mod dette angreb.

Angreb som Spectre og Foreshadow (L1TF), der ligner Prime and Probe, er også kendt. De gør det muligt at læse data fra cache via en sidekanal. Beskyttelse mod sårbarheden Spectre-v2 er planlagt og fungerer imod disse to angreb.

I forhold til DECO giver en trevejs håndtryk sikkerhedsgarantier:

  1. Prover Integritet: En kompromitteret prover kan ikke forfalske information om oprindelsen af serveren og kan ikke få serveren til at acceptere ugyldige forespørgsler eller svare forkert på gyldige forespørgsler. Dette opnås gennem forespørgselsmønstre mellem serveren og prover.
  2. Verifier Integritet: En kompromitteret verifier kan ikke få prover til at modtage forkerte svar.
  3. Fortrolighed: Den kompromitterede verifier studerer kun offentlig tilgængelig information (forespørgsel, servernavn).

I DECO er der kun sårbarheder relateret til trafikindsprøjtning. I starten, under den trevejs håndtryk, kan verifier identificere serverens identitet ved hjælp af en fresh nonce. Men efter håndtrykket skal verifier stole på netværksniveau indikatorer (IP-adresser). Derfor skal forbindelsen mellem verifier og server være beskyttet mod trafikindsprøjtning. Dette opnås ved brug af en Proxy.

Sammenligning af orakler

Town Crier er baseret på arbejde med et enclave i serverdelen, mens DECO muliggør validering af datakildens oprindelse ved hjælp af trevejs håndtryk og kryptering af data med kryptografiske nøgler. Sammenligningen af data orakler blev udført ud fra følgende kriterier: ydeevne, sikkerhed, omkostninger og praktisk anvendelighed.

Town Crier
DECO

ydelse
Hurtigere (0,6 sek. til færdiggørelse)
Langsommere (10,50 sek. til at færdiggøre protokollen)

sikkerhed
Mindre sikker
Mere sikker

prisen
Dyrere
Billigere

praktisk anvendelighed
Krav om speciel hardware
Fungerer med enhver server, der understøtter TLS

Ydelse: For at arbejde med DECO kræves opsætning af trevejs håndtryk, ved opsætning gennem LAN tager det 0,37 sekunder, for interaktion efter forbindelsen er etableret er 2PC-HMAC effektivt (0,13 sek. ved skrivning). DECO's ydeevne afhænger af de tilgængelige TLS krypteringsmetoder, størrelsen af de personlige data og kompleksiteten af beviserne for den specifikke applikation. For eksempel for applikationen med binære optioner fra IC3: færdiggørelsen af protokollen gennem LAN tager cirka 10,50 sekunder. Til sammenligning kræver Town Crier for at udføre en tilsvarende applikation cirka 0,6 sekunder, dvs. omtrent 20 gange hurtigere end DECO. Under de samme forhold vil TC være hurtigere.

Sikkerhed: Angreb på Intel SGX enclave (side-channel angreb) virker og kan forårsage reel skade på deltagerne i smart kontrakten. Hvad angår DECO er der mulige angreb relateret til trafikindsprøjtning, men brug af proxy eliminerer sådanne angreb. Derfor er DECO mere sikker.

Omkostninger: Omkostningerne til udstyr, der understøtter arbejde med Intel SGX, er højere end omkostningerne til opsætning af protokollen i DECO. Derfor er TC dyrere.

Praktisk anvendelighed: For Town Crier to function, specialized equipment that supports TEE is mandatory. For example, Intel SGX is supported on processors from the Intel Core 6th generation and newer. DECO, on the other hand, can operate on any hardware, although there is a DECO setup that utilizes TEE. The process of establishing a three-way handshake with DECO may take some time, but this is nothing compared to the hardware limitations of TC, making DECO the more practical choice.

Konklusion

When examining the two oracles separately and comparing them based on four criteria, it is evident that Town Crier falls short against DECO in three out of four points. DECO is more reliable in terms of information security, cheaper, and more practical, although setting up the three-way protocol can take some time and has its drawbacks, such as additional operations with encryption keys. TC operates faster than DECO, but its vulnerability to side-channel attacks puts it at risk of privacy loss. It's important to consider that DECO was introduced in January 2020, and not enough time has passed to deem it safe. Town Crier has already undergone attacks for 4 years and has passed numerous tests, making its use justified in many projects.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster