Idag Àr det bara de lata som inte har skrivit om blockkedjeteknik, kryptovalutor och hur coolt det Àr. Men den hÀr artikeln kommer inte att berömma denna teknik; den kommer att fokusera pÄ sina brister och sÀtt att eliminera dem.

Under arbetet med ett av projekten pÄ Altirix Systems uppstod uppgiften att sÀker, censurbestÀndig bekrÀftelse av data frÄn en extern kÀlla för blockkedjan. Det var nödvÀndigt att bekrÀfta Àndringar i det tredje systemets register och, baserat pÄ dessa Àndringar, utföra en eller annan gren i logiken för det smarta kontraktet. Uppgiften Àr vid första anblicken ganska trivial, men nÀr den ekonomiska situationen för en av parterna i processen beror pÄ resultatet av dess genomförande, dyker ytterligare krav upp. För det första Àr det ett omfattande förtroende för en sÄdan valideringsmekanism. Men först till kvarn.
Problemet Àr att sjÀlva blockkedjan Àr en autonom, sluten enhet, sÄ smarta kontrakt inuti blockkedjan vet ingenting om omvÀrlden. Samtidigt Àr villkoren för smarta kontrakt ofta kopplade till information om riktiga saker (flygförseningar, vÀxelkurser etc.). För att smarta kontrakt ska fungera korrekt mÄste information som tas emot utanför blockkedjan vara tillförlitlig och verifierad. Detta problem löses genom att anvÀnda orakel som Town Crier och DECO. Dessa orakel tillÄter ett smart kontrakt i blockchain-nÀtverket att lita pÄ information frÄn en pÄlitlig webbserver, sÄ de kan kallas pÄlitliga informationsleverantörer.
Orakel
FörestÀll dig ett smart kontrakt som överför 0.001 btc till din bitcoin-plÄnbok om din favoritfotbollsklubb vinner den ryska cupen. Vid en riktig seger behöver det smarta kontraktet ges information om vilken klubb som vann, och det vÀcker ett antal problem: var kan denna information fÄs, hur kan den pÄ ett sÀkert sÀtt överföras till det smarta kontraktet, och hur kan vi sÀkerstÀlla att informationen som det smarta kontraktet tar emot faktiskt stÀmmer överens med verkligheten?
I problemet med informationskÀllan kan det finnas tvÄ scenarier: att koppla ett smart kontrakt till en pÄlitlig webbplats dÀr information om resultaten av matchningar lagras centralt, och det andra alternativet Àr att koppla ihop flera sajter samtidigt och sedan vÀlja information frÄn de flesta kÀllor som tillhandahÄller samma data. För att sÀkerstÀlla informationens riktighet anvÀnds orakel, sÄsom Oraclize, som anvÀnder TLSNotary (TLS Modification for Proving Data Authenticity). Men det finns tillrÀckligt med information om Oraclize i Google, och det finns flera artiklar om Habr, men idag ska jag prata om orakel som anvÀnder ett lite annorlunda tillvÀgagÄngssÀtt för att överföra information: Town Crier och DECO. Artikeln ger en beskrivning av funktionsprinciperna för bÄda oraklen, samt en detaljerad jÀmförelse.
Town Crier
Town Crier (TC) introducerades av IC3 (The Initiative for Cryptocurrencies and Contracts) 2016 pÄ CCS'16. Huvudidén med TC Àr att skicka information frÄn en webbplats till ett smart kontrakt och se till att informationen som levereras av TC Àr densamma som den pÄ webbplatsen. TC anvÀnder TEE (Trusted Execution Environment) för att sÀkerstÀlla att dataÀgandet Àr Àkta. Den ursprungliga versionen av TC beskriver arbetet med Intel SGX.
Town Crier bestÄr av en del inuti blockkedjan och en del inuti sjÀlva OS - TC Server.

TC Contract ligger pÄ blockkedjan och fungerar som en frontend för TC. Den accepterar förfrÄgningar frÄn CU (user smart contract) och returnerar svar frÄn TC Server. Inuti TC-servern finns ett relÀ, som upprÀttar en koppling mellan enklaven och Internet (dubbelriktad trafik) och kopplar enklaven till blockkedjan. Enclave innehÄller progencl, vilket Àr koden som gör förfrÄgningar frÄn blockkedjan och returnerar meddelanden till blockkedjan med en digital signatur, progencl innehÄller en del av den smarta kontraktskoden och utför i huvudsak nÄgra av dess funktioner.
Intel SGX-enklaven kan ses som ett delat bibliotek med ett API som fungerar via ecall. Ecall överför kontrollen till enklaven. Enklaven exekverar sin kod tills den avslutas eller tills ett undantag intrÀffar. För att anropa funktioner definierade utanför enklaven, anvÀnds ocall. Ocall exekveras utanför enklaven och behandlas av den som ett otillförlitligt samtal. Efter att ocall har utförts, ÄtergÄr kontrollen till enklaven.

I Enclave-delen konfigureras en sÀker kanal med webbservern, enklaven sjÀlv utför ett TLS-handslag med mÄlservern och utför alla kryptografiska operationer internt. TLS-biblioteket (mbedTLS) och minifierad HTTP-kod har exporterats till SGX-miljön. Enclave innehÄller ocksÄ rot-CA-certifikat (en samling certifikat) för att verifiera fjÀrrservercertifikat. Request Handler accepterar en datagrambegÀran i formatet som tillhandahÄlls av Ethereum, dekrypterar den och analyserar den. Den genererar sedan en Ethereum-transaktion som innehÄller det begÀrda datagrammet, signerar det med skTC och skickar det till Relay.
RelÀdelen inkluderar Client Interface, TCP, Blockchain Interface. KlientgrÀnssnittet behövs för att validera enklavkoden och kommunicera med klienten. Klienten skickar en attestationsbegÀran med ecall och fÄr en tidsstÀmpel signerad av skTC tillsammans med att (attestationssignatur), sedan verifieras att med Intel Attestation Service (IAS) och tidsstÀmpel verifieras av en betrodd tidstjÀnst. Blockchain-grÀnssnittet verifierar inkommande förfrÄgningar och placerar transaktioner pÄ blockkedjan för att leverera datagram. Geth Àr den officiella Ethereum-klienten och lÄter Relay interagera med blockkedjan via RPC-samtal.
Genom att arbeta med TEE tillÄter TC flera enklaver att lanseras parallellt, vilket ökar hastigheten pÄ informationsbearbetningen med 3 gÄnger. Om hastigheten med en löpande enklav var 15 tx/sek, sÄ ökar hastigheten med 20 parallellt löpande enklaver till 65 tx/sek, för jÀmförelse Àr den maximala operationshastigheten i Bitcoin blockchain 26 tx/sek.
DECO
DECO (Decentralized Oracles for TLS) presenterades pÄ CCS'20, arbetar med sajter som stöder TLS-anslutning. SÀkerstÀller konfidentialitet och integritet för data.
DECO med TLS anvÀnder symmetrisk kryptering, sÄ bÄde klienten och webbservern har krypteringsnycklar, och klienten kan förfalska TLS-sessionsdata om den vill. För att lösa detta problem anvÀnder DECO ett trevÀgshandskakningsprotokoll mellan provaren (smart kontrakt), verifieraren (oracle) och webbservern (datakÀllan).

Principen för DECO Àr att provaren tar emot en bit data D och bekrÀftar för verifieraren att D kom frÄn TLS-servern S. Ett annat problem Àr att TLS inte signerar data och det Àr svÄrt för TLS-klienten att bevisa att data kom frÄn den servern (hÀrkomstsvÄrigheter).
DECO-protokollet anvĂ€nder krypteringsnycklarna KEnc och KMac. Klienten skickar en begĂ€ran Q till webbserverSvaret frĂ„n server R anlĂ€nder krypterat, men klienten och servern delar samma KMac, och klienten kan förfalska TLS-meddelandet. DECOs lösning Ă€r att "dölja" KMac frĂ„n klienten (provern) tills den svarar pĂ„ begĂ€ran. Nu delas KMac mellan provern och verifieraren â KpMac och KvMac. Servern hĂ€mtar KMac för att kryptera svaret med hjĂ€lp av nyckelpartitioneringsoperationen KpMac â KvMac = KMac.
Genom att sÀtta upp en trevÀgshandskakning kommer datautbytet mellan klienten och servern att utföras med en garanti för sÀkerhet.

NÀr vi pratar om decentraliserade orakelsystem kan vi inte lÄta bli att nÀmna Chainlink, som syftar till att skapa ett decentraliserat nÀtverk av orakelnoder som Àr kompatibla med Ethereum, Bitcoin och Hyperledger, med modularitet i Ätanke: varje del av systemet kan uppgraderas. För att sÀkerstÀlla sÀkerheten krÀver Chainlink att varje orakel som deltar i uppgiften tillhandahÄller en kombination av nycklar (offentliga och privata). 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 mÄste alla delsignaturer av nÀtverkets orakel kombineras.
Chainlink planerar att genomföra en första PoC av DECO med fokus pÄ decentraliserade finansiella applikationer som Mixicles. I skrivande stund kom nyheter pÄ Forbes att Chainlink förvÀrvade DECO frÄn Cornell University.
Attacker pÄ Oracles

Ur ett informationssÀkerhetsperspektiv övervÀgdes följande attacker mot Town Crier:
Rogue smart-kontakt kodinjektion pÄ TEE-noder.
KÀrnan i attacken: överföring av en medvetet felaktig smart kontraktskod till TEE, sÄ att en angripare som har fÄtt tillgÄng till noden kommer att kunna utföra sitt eget (bedrÀgliga) smarta kontrakt pÄ de dekrypterade data. De returnerade vÀrdena kommer dock att krypteras med en privat nyckel, och det enda sÀttet att komma Ät sÄdan data Àr att lÀcka chiffertexten vid retur/utmatning.
Skydd mot denna attack bestÄr av att enklaven kontrollerar korrektheten av koden som finns pÄ den aktuella adressen. Detta kan uppnÄs med hjÀlp av ett adresseringsschema dÀr adressen till ett kontrakt bestÀms genom att hasha kontraktskoden.Kontrakt stat chiffertext Àndringar lÀcka.
KĂ€rnan i attacken: Ăgare av noder dĂ€r smarta kontrakt exekveras har tillgĂ„ng till kontraktstillstĂ„ndet i krypterad form utanför enklaven. En angripare som fĂ„r kontroll över en nod kan jĂ€mföra kontakttillstĂ„ndet före och efter att transaktionen exekveras och kan avgöra vilka argument som angavs och vilken smart kontraktsmetod som anvĂ€ndes, eftersom sjĂ€lva smarta kontraktskoden och dess tekniska specifikationer Ă€r allmĂ€nt tillgĂ€ngliga.
Skydd för att sÀkerstÀlla tillförlitligheten hos sjÀlva enheten.Sidokanalattacker.
En speciell typ av attack som anvÀnder övervakning av Ätkomst till enklavminne och cache i olika scenarier. Ett exempel pÄ en sÄdan attack Àr Prime and Probe.

Ordningen för attacken:- t0: Angriparen fyller hela datacchen för offerprocessen.
- t1: Offret exekverar kod med minnesÄtkomster som beror pÄ offrets kÀnsliga data (kryptografiska nycklar). Cacheminnet vÀljs baserat pÄ nyckelbitvÀrdet. I exemplet i figuren lÀses keybit = 0 och adress X i cache-rad 2. Data som lagras i X laddas in i cachen och ersÀtter data som fanns dÀr tidigare.
- t2: Angriparen kontrollerar vilka av hans cache-rader som har vrÀkts - de rader som offret anvÀnder. Detta görs genom att mÀta Ätkomsttiden. Genom att upprepa denna operation för varje nyckelbit fÄr angriparen hela nyckeln.
Attackskydd: Intel SGX har skydd mot sidokanalattacker som förhindrar övervakning av cache-relaterade hÀndelser, men Prime- och Probe-attacken kommer fortfarande att lyckas eftersom angriparen övervakar cachehÀndelserna i sin process och delar cachen med offret.

För nÀrvarande finns det alltsÄ inget tillförlitligt skydd mot denna attack.
Spectre och Foreshadow (L1TF) attacker, liknande Prime och Probe, Àr ocksÄ kÀnda. De tillÄter lÀsning av data frÄn cacheminnet via en tredje parts kanal. Det finns ett skydd mot Spectre-v2-sÄrbarheten som fungerar mot bÄda dessa attacker.
I förhÄllande till DECO ger trevÀgshandslaget en sÀkerhetsgaranti:
- Proverintegritet: En komprometterad provare kan inte förfalska information om en servers ursprung och kan inte fÄ servern att acceptera ogiltiga förfrÄgningar eller svara felaktigt pÄ giltiga förfrÄgningar. Detta Àr möjligt genom begÀran mallar mellan server och prover.
- Verifierarens integritet: En hackad verifierare kan inte fÄ en provare att fÄ felaktiga svar.
- Sekretess: Den hackade verifieraren undersöker endast allmÀnt tillgÀnglig information (frÄga, servernamn).
I DECO Àr endast sÄrbarheter för trafikknÀckning möjliga. Inledningsvis, under en trevÀgshandskakning, kan verifieraren faststÀlla serverns identitet med hjÀlp av en ny nonce. Efter handskakningen mÄste verifieraren dock förlita sig pÄ nÀtverkslagerindikatorer (IP-adresserDÀrför mÄste anslutningen mellan verifieraren och servern skyddas frÄn trafikkontrombos. Detta uppnÄs genom att anvÀnda en proxy.
JÀmförelse av Oracles
Town Crier bygger pÄ att arbeta med en enklav i serverdelen, medan DECO möjliggör verifiering av Àktheten av datas ursprung med hjÀlp av en trevÀgshandskakning och kryptering av data med kryptografiska nycklar. JÀmförelsen av dessa orakel utfördes enligt följande kriterier: hastighet, sÀkerhet, kostnad och praktisk.
Town Crier
DECO
prestanda
Snabbare (0.6 s till slut)
LÄngsammare (10.50s för att avsluta protokollet)
sÀkerhet
Mindre sÀker
SĂ€krare
kosta
Dyrare
Billigare
praktiskhet
KrÀver speciell hÄrdvara
Fungerar med alla servrar som stöder TLS
Hastighetsprestanda: DECO krÀver en trevÀgshandskakningsinstÀllning, som tar 0.37 sekunder vid installation via LAN, och 2PC-HMAC Àr effektiv för kommunikation efter anslutning (0,13 sekunder per skrivning). Prestandan för DECO beror pÄ tillgÀngliga TLS-chiffersviter, storleken pÄ privata data och komplexiteten hos bevisen för en viss applikation. Med exemplet med den binÀra optionen frÄn IC3 tar slutförandet av protokollet via LAN cirka 10,50 s. Som jÀmförelse tar Town Crier cirka 0,6 sekunder att köra en liknande applikation, vilket Àr cirka 20 gÄnger snabbare Àn DECO. Allt annat lika kommer TC att bli snabbare.
ĐĐ”Đ·ĐŸĐżĐ°ŃĐœĐŸŃŃŃ: Intel SGX-enklavens sidokanalsattacker fungerar och kan orsaka verklig skada för smarta kontraktsdeltagare. Trafikinjektionsattacker Ă€r möjliga med DECO, men att anvĂ€nda en proxy kommer att förneka sĂ„dana attacker. DĂ€rför Ă€r DECO sĂ€krare.
Kostnad: Kostnaden för hÄrdvara som stöder Intel SGX Àr högre Àn kostnaden för att sÀtta upp protokollet i DECO. Det Àr dÀrför TC Àr dyrare.
praktiskhet: För att arbeta med Town Crier krÀvs specialutrustning som stöder TEE. Till exempel stöds Intel SGX pÄ 6:e generationens Intel Core-processorfamilj och senare. DECO lÄter dig arbeta med vilken utrustning som helst, Àven om det finns en DECO-instÀllning med TEE. NÀr det gÀller installationsprocessen kan DECOs trevÀgshandskakning ta lite tid, men det Àr ingenting jÀmfört med TC:s hÄrdvarubegrÀnsning, sÄ DECO Àr mer praktiskt.
Slutsats
Om man tittar pÄ de tvÄ oraklen separat och jÀmför dem pÄ fyra kriterier, Àr det tydligt att Town Crier Àr underlÀgsen DECO pÄ tre av fyra punkter. DECO Àr mer pÄlitligt vad gÀller informationssÀkerhet, billigare och mer praktiskt, Àven om det kan ta lite tid att sÀtta upp ett trepartsprotokoll och har sina nackdelar, sÄsom ytterligare operationer med krypteringsnycklar. TC Àr snabbare Àn DECO, men en sÄrbarhet i samband med en sidokanalattack gör den mottaglig för förlust av integritet. Det bör beaktas att DECO introducerades i januari 2020 och att det inte har gÄtt tillrÀckligt med tid för att betrakta det som sÀkert. Town Crier har varit under attack i 4 Är och har genomgÄtt mÄnga tester, sÄ dess anvÀndning i mÄnga projekt Àr motiverad.
KĂ€lla: will.com

