Idag har bara de lata Ànnu inte skrivit om blockchain-teknologi, kryptovalutor och hur fantastiskt det Àr. Men i den hÀr artikeln kommer det inte att handla om att hylla denna teknologi, utan snarare dess nackdelar och sÀtt att ÄtgÀrda dem.

Under arbetet med ett av projekten pÄ Altirix Systems uppstod en uppgift som handlade om skyddad, censurstabil bekrÀftelse av data frÄn en extern blockkedjekÀlla. Det var nödvÀndigt att bekrÀfta Àndringar i poster frÄn ett tredje system och baserat pÄ dessa Àndringar genomföra en viss gren i logiken för smarta kontrakt. Vid första anblicken verkar uppgiften ganska trivial, men nÀr resultatet av dess utförande pÄverkar den ekonomiska situationen för en av parterna i processen, tillkommer ytterligare krav. Först och frÀmst handlar det om ett omfattande förtroende för en sÄdan valideringsmekanism. Men mer om det senare.
Problemet ligger i att blockchain i sig Àr ett autonomt, slutet objekt, vilket innebÀr att smarta kontrakt inom blockkedjan inte har nÄgon kÀnnedom om den externa vÀrlden. Samtidigt Àr villkoren för smarta kontrakt ofta kopplade till information om verkliga hÀndelser (flygförseningar, valutakurser osv.). För att smarta kontrakt ska fungera korrekt mÄste informationen som hÀmtas utanför blockkedjan vara pÄlitlig och verifierad. Detta problem löses genom att anvÀnda orakler, sÄsom Town Crier och DECO. Dessa orakler tillÄter smarta kontrakt pÄ blockchain-nÀtverket att lita pÄ information frÄn en verifierad webbserver, man kan sÀga att de Àr leverantörer av pÄlitlig information.
Orakler
FörestÀll dig att ett smart kontrakt genomför en överföring av 0,001 btc till din bitcoin-plÄnbok om ditt favoritfotbollslag vinner den ryska cupen. Vid verklig seger mÄste smarta kontraktet fÄ information om vilket lag som vann, och hÀr uppstÄr en rad problem: var ska man fÄ denna information, hur ska den överföras sÀkert till det smarta kontraktet och hur kan man försÀkra sig om att den information som kommer in i det smarta kontraktet faktiskt stÀmmer överens med verkligheten?
NÀr det gÀller informationskÀllan kan det finnas tvÄ scenarier: att koppla en smart kontrakt till en betrodd webbplats dÀr information om matchresultat lagras centraliserat, och det andra alternativet - att koppla flera webbplatser och sedan vÀlja information baserat pÄ de flesta kÀllor som tillhandahÄller samma data. För att sÀkerstÀlla informationens korrekthet anvÀnds orakler, till exempel Oraclize, som anvÀnder TLSNotary (en modifiering av TLS för att bevisa dators autenticitet). Men information om Oraclize Àr tillrÀcklig pÄ Google, och det finns flera artiklar pÄ Habré, idag kommer jag att berÀtta om orakler som anvÀnder en nÄgot annan metod för informationsöverföring: Town Crier och DECO. Artikeln beskriver principerna för arbetet hos bÄda oraklerna samt en detaljerad jÀmförelse.
Town Crier
Town Crier (TC) introducerades av IC3 (The Initiative for CryptoCurrencies and Contracts) 2016 vid CCSâ16. HuvudidĂ©n med TC Ă€r att överföra information frĂ„n en webbplats till en smart kontrakt och sĂ€kerstĂ€lla att den information som levereras av TC Ă€r densamma som pĂ„ webbplatsen. TC anvĂ€nder TEE (Trusted Execution Environment) för Ă€ktheten av dators Ă€gande. I den ursprungliga versionen av TC beskrivs arbetet med Intel SGX.
Town Crier bestÄr av en del inom blockkedjan och en del inom sjÀlva operativsystemet - TC Server.

TC-kontraktet finns pÄ blockkedjan och fungerar som front end för TC. Den tar emot förfrÄgningar frÄn CU (anvÀndarens smart kontrakt) och returnerar svar frÄn TC Server. Inuti TC Server finns Relay, som etablerar en anslutning mellan enklaven och internet (tvÄvÀgstrafik) och kopplar enklaven med blockkedjan. Enklaven innehÄller progencl, som Àr koden som utför förfrÄgningar frÄn blockkedjan och returnerar meddelanden till blockkedjan med en digital signatur, progencl innehÄller en del av smart kontrakts koden och utför i grunden vissa av dess funktioner.
Intel SGX-enklaven kan betraktas som ett gemensamt bibliotek med API som fungerar via ecall. Ecall överför kontrollen till enklaven. Enklaven kör sin kod tills den Àr klar eller ett undantag intrÀffar. För att anropa funktioner definierade utanför enklaven anvÀnds ocall. Ocall utförs utanför enklaven och behandlas av den som ett osÀker anrop. Efter att ocall har genomförts, ÄtergÄr kontrollen till enklaven.

I Enclave konfigureras en sÀker kanal med webbservern; Enclaven sjÀlv utför TLS handshake med mÄservern och genomför alla kryptografiska operationer internt. TLS-biblioteket (mbedTLS) och HTTP-koden har exporteras i en reducerad version till SGX-miljön. Enclaven innehÄller ocksÄ root CA-certifikat (en samling certifikat) för att verifiera certifikat frÄn externa servrar. Request Handler tar emot datagramförfrÄgningar i det format som tillhandahÄlls av Ethereum, dekrypterar det och analyserar. Den genererar sedan en Ethereum-transaktion som innehÄller det begÀrda datagrammet, signerar det med skTC och vidarebefordrar det till Relay.
Relay-delen omfattar Client Interface, TCP, Blockchain Interface. Client Interface behövs för att attestera Enclave-koden och för kommunikation med klienten. Klienten skickar en begÀran om attestering via ecall och fÄr en tidsstÀmpel som Àr signerad med skTC tillsammans med att (attesteringssignatur), som sedan bekrÀftas via Intel Attestation Service (IAS), medan tidsstÀmpeln verifieras av en pÄlitlig tidsservice. Blockchain Interface kontrollerar inkommande förfrÄgningar och registrerar transaktioner i blockkedjan för att leverera datagram. Geth Àr den officiella Ethereum-klienten som gör det möjligt för Relay att interagera med blockkedjan via RPC-anrop.
Genom att arbeta med TEE tillÄter TC att köra flera Enclaves parallellt, vilket ökar hastigheten för informationsbehandling med 3 gÄnger. Om hastigheten med en fungerande Enclave var 15 tx/sec, sÄ ökar hastigheten upp till 65 tx/sec med 20 parallellt körda Enclaves; till exempel Àr den maximala hastigheten i Bitcoin-blockkedjan 26 tx/sec.
DECO
DECO (Decentralized Oracles for TLS) presenterades pĂ„ CCSâ20 och fungerar med webbplatser som stödjer TLS-anslutning. Det sĂ€kerstĂ€ller konfidentialitet och dataintegritet.
DECO med TLS anvÀnder symmetrisk kryptering, vilket innebÀr att bÄde klienten och webbservern har krypteringsnycklar, och klienten kan, om sÄ önskas, fuska med TLS-sessionens data. För att lösa detta problem anvÀnder DECO ett tredelat handskakningsprotokoll mellan prover (smartkontrakt), verifierare (oracle) och webbserver (datakÀlla).

DECO:s arbetsprincip Àr att verifieraren (prover) fÄr en del av data D och bekrÀftar för verifieraren (verifier) att D kom frÄn TLS-servern S. Ett annat problem Àr att TLS inte signerade data, vilket gör det svÄrt för TLS-klienten att bevisa att data verkligen mottogs frÄn den servern (provenance difficulty).
I protokollet DECO anvĂ€nds nycklarna KEnc och KMac. Klienten skickar förfrĂ„gan Q till webbserver, svaret frĂ„n servern R kommer i krypterad form, men bĂ„de klienten och servern innehar samma KMac, och klienten kan förfalska TLS-meddelandet. Lösningen frĂ„n DECO Ă€r att "dölja" KMac frĂ„n klienten (prover) tills denne svarar pĂ„ förfrĂ„gan. Nu Ă€r KMac delad mellan prover och verifierare â KpMac och KvMac. Servern fĂ„r KMac för att kryptera svaret genom en operation pĂ„ nyckeldelarna KpMac â KvMac = KMac.
Genom att stÀlla in en trepartshandshake kommer datakommunikationen mellan klienten och servern att genomföras med sÀkerhetsgaranti.

NÀr man pratar om system för decentraliserade orakel fÄr man inte glömma Chainlink, som strÀvar efter att skapa ett decentraliserat nÀtverk av orakelnoder som Àr kompatibelt med Ethereum, Bitcoin och Hyperledger, med modulÀritet i Ätanke: varje del av systemet kan uppdateras. För att sÀkerstÀlla sÀkerhet erbjuder Chainlink varje oracle som deltar i uppdraget att utfÀrda en nyckelkombination (öppen och privat). Den privata nyckeln anvÀnds för att generera en partiell signatur som innehÄller deras svar pÄ dataförfrÄgan. För att fÄ svar krÀvs en kombination av alla orakels nÀtverks partiella signaturer.
Chainlink planerar att genomföra en första PoC DECO med fokus pÄ decentraliserade finansiella applikationer som Mixicles. Vid tidpunkten för skrivandet publicerades en nyhet pÄ Forbes om att Chainlink har förvÀrvat DECO frÄn Cornell University.
Attacker mot orakel

Ur perspektivet informationssÀkerhet har följande attacker mot Town Crier övervÀgts:
Rogue smart-contract kodinjektion pÄ TEE-noder.
Angreppets kÀrna: att överföra uppenbart felaktig smart-contractkod till TEE, vilket innebÀr att en angripare som fÄtt tillgÄng till noden kommer att kunna köra sin egen (bedrÀgliga) smart-contract pÄ dekrypterade data. Emellertid kommer de ÄterlÀmnade vÀrdena att krypteras med den privata nyckeln, och det enda sÀttet att fÄ tillgÄng till sÄdan data Àr genom lÀckage av den krypterade texten vid ÄterlÀmnandet/utmatningen.
Skydd mot denna attack Àr att kontrollera koden som finns pÄ den aktuella adressen av enclaven. Detta kan uppnÄs genom en adresseringsschema dÀr kontraktsadressen definieras genom att hashkoda kontraktskoden.Contract state ciphertext changes leak.
Angreppets kĂ€rna: Ăgare av noder dĂ€r smarta kontrakt körs har Ă„tkomst till contract state i krypterad form utanför enclaven. En angripare som fĂ„r kontroll över en nod kan jĂ€mföra contact state före och efter transaktionen och kan avgöra vilka argument som införts och vilken specifik metod av det smarta kontraktet som anvĂ€nts, eftersom sjĂ€lva koden för det smarta kontraktet och dess tekniska specifikationer Ă€r offentligt tillgĂ€ngliga.
Skydd för att sÀkerstÀlla nodens tillförlitlighet.Sidokanalattacker.
En sÀrskild typ av attacker som anvÀnder övervakning av Ätkomst till minne och cache i enclaven i olika scenarier. Ett exempel pÄ en sÄdan attack Àr Prime and Probe.

Ordningen för att utföra attacken:- t0: Angriparen fyller hela datacachen för offrets process.
- t1: Offret kör kod med minnesanrop som beror pÄ konfidentiella data frÄn offret (kryptografiska nycklar). Valet av cachelinje görs baserat pÄ vÀrdet av keybit. I exemplet pÄ bilden, keybit = 0 och adress X har lÀsts i cachelinje 2. Data som lagras i X laddas in i cachen, vilket verdrar data som redan fanns dÀr.
- t2: Angriparen kontrollerar vilka av hans cachelinjer som har blivit verdrivna â de linjer som anvĂ€nts av offret. Detta görs genom att mĂ€ta Ă„tkomsttiden. Genom att upprepa denna operation för varje keybit fĂ„r angriparen hela nyckeln.
Skydd mot attacken: I Intel SGX finns skydd mot sidokanalattacker som förbjuder övervakning av cache-relaterade hÀndelser, men attacken Prime and Probe kommer ÀndÄ att lyckas, eftersom angriparen observerar cachehÀndelser för sin egen process och delar cache med offret.

SÄledes finns det för nÀrvarande inget tillförlitligt skydd mot denna attack.
Ăven attacker av typen Spectre och Foreshadow (L1TF) Ă€r kĂ€nda, vilka liknar Prime and Probe. De tillĂ„ter att lĂ€sa data frĂ„n cacheminnet genom en sidokanal. Skydd mot sĂ„rbarhet Spectre-v2 finns, vilket fungerar mot dessa tvĂ„ attacker.
I relation till DECO ger det tredelade handslaget sÀkerhetsgaranti:
- Prover Integrity: En hackad prover kan inte förfalska information om ursprunget till servern och kan inte fÄ servern att ta emot ogiltiga förfrÄgningar eller svara felaktigt pÄ giltiga förfrÄgningar. Detta Ästadkoms genom förfrÄgningsmönster mellan server och prover.
- Verifier Integrity: En hackad verifier kan inte fÄ prover att fÄ felaktiga svar.
- Sekretess: Den hackade verifieraren granskar endast offentlig information (förfrÄgan, servernamn).
I DECO finns endast sÄrbarheter relaterade till trafikinjicering. Till en början, vid den tredubbla handskakningen kan verifieraren faststÀlla serverns identitet genom en ny nonce. Men efter handskakningen mÄste verifieraren förlita sig pÄ indikatorer pÄ nÀtverksnivÄ (IP-adresser). SÄledes mÄste förbindelsen mellan verifieraren och servern skyddas mot trafikinjicering. Detta uppnÄs genom att anvÀnda en proxy.
JÀmförelse av oraklar
Town Crier Àr baserat pÄ arbete med en enclave pÄ serversidan, medan DECO tillÄter autentisering av dators ursprung genom tredubbla handskakningar och kryptering av data med kryptografiska nycklar. JÀmförelsen av oraklars data genomfördes utifrÄn följande kriterier: prestanda, sÀkerhet, kostnad och praktisk anvÀndbarhet.
Town Crier
DECO
prestanda
Snabbare (0,6 s för att slutföra)
LÄngsammare (10,50 s för att slutföra protokollet)
sÀkerhet
Mindre sÀker
Mer sÀker
kostnaden
Dyrare
Billigare
praktisk anvÀndbarhet
KrÀver specialiserad hÄrdvara
Fungerar med vilken server som helst som stöder TLS
Prestanda: För att arbeta med DECO krÀvs en konfiguration av tredubbla handskakningar, nÀr man installerar via LAN tar det 0,37 sekunder, för interaktion efter etablering av förbindelse Àr 2PC-HMAC effektiv (0,13 s vid skrivning). DECO:s prestanda beror pÄ tillgÀngliga TLS-krypteringsuppsÀttningar, storleken pÄ personuppgifterna och komplexiteten i bevisen för en viss applikation. Med exemplet frÄn IC3:s binÀra alternativapplikation: att slutföra protokollet via LAN tar cirka 10,50 s. I jÀmförelse krÀver Town Crier cirka 0,6 sekunder för att utföra en liknande applikation, alltsÄ ungefÀr 20 gÄnger snabbare Àn DECO. Under lika förhÄllanden kommer TC att vara snabbare.
SÀkerhet: Angrepp pÄ Intel SGX-enklaven (side-channel attacks) fungerar och kan orsaka verklig skada för deltagarna i smart kontrakt. Relaterat till DECO Àr angrepp relaterade till trafikinjicering möjliga, men anvÀndningen av proxy minskar sÄdana angrepp. SÄledes Àr DECO mer sÀker.
Kostnad: Kostnaden för hÄrdvara som stöder arbete med Intel SGX Àr högre Àn kostnaden för att konfigurera protokollet i DECO. DÀrför Àr TC dyrare.
Praktisk anvÀndbarhet: För att arbeta med Town Crier krÀvs speciell utrustning som stöder TEE. Till exempel stöds Intel SGX pÄ processorer av Intel Core 6:e generationen och nyare. DECO Ä sin sida fungerar med all utrustning, Àven om det finns en DECO-konfiguration som anvÀnder TEE. Vid konfigurationen kan DECO:s trevÀgshandslag ta lite tid, men det stÄr inte i jÀmförelse med hÄrdvarubegrÀnsningen för TC, vilket gör DECO mer praktiskt.
Slutsats
Genom att granska de tvÄ oraklen separat och jÀmföra dem utifrÄn fyra kriterier blir det tydligt att Town Crier underpresterar gentemot DECO pÄ tre av fyra punkter. DECO Àr mer pÄlitligt nÀr det gÀller informationssÀkerhet, billigare och mer praktiskt, Àven om konfigurationen av det tredubbla protokollet kan ta lite tid och har sina nackdelar, till exempel ytterligare operationer med krypteringsnycklar. TC fungerar snabbare Àn DECO, men sÄrbarheten kopplad till side-channel attack gör att det riskerar att förlora konfidentialitet. Det bör noteras att DECO presenterades i januari 2020, och det har Ànnu inte gÄtt tillrÀckligt med tid för att anse det som sÀkert. Town Crier har redan utsatts för attacker i 4 Är och genomgÄtt mÄnga tester, sÄ dess anvÀndning i mÄnga projekt Àr berÀttigad.
KĂ€lla: habr.com

