Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?

Danes samo leni niso pisali o blockchain tehnologiji, kriptovalutah in kako kul je to. Toda ta članek ne bo hvalil te tehnologije, govorili bomo o njenih pomanjkljivostih in načinih za njihovo odpravo.

Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?

Med delom na enem od projektov pri Altirix Systems se je pojavila naloga varne, na cenzuro odporne potrditve podatkov iz vira, ki je zunaj verige blokov. Treba je bilo potrditi spremembe v evidenci tretjega sistema in na podlagi teh sprememb izvesti eno ali drugo vejo v logiki pametne pogodbe. Naloga je na prvi pogled precej nepomembna, ko pa je od rezultata njene izvedbe odvisno finančno stanje ene od strank, ki sodeluje v procesu, se pojavijo dodatne zahteve. Najprej je to celovito zaupanje v tak validacijski mehanizem. Ampak najprej.

Težava je v tem, da je sama veriga blokov avtonomna, zaprta entiteta, zato pametne pogodbe znotraj verige blokov ne vedo ničesar o zunanjem svetu. Hkrati so pogoji pametnih pogodb pogosto povezani z informacijami o resničnih stvareh (zamuda leta, menjalni tečaji itd.). Za pravilno delovanje pametnih pogodb morajo biti informacije, prejete izven blokovne verige, zanesljive in preverjene. Ta problem je rešen z uporabo oraklov, kot sta Town Crier in DECO. Ti oraklji omogočajo, da pametna pogodba v omrežju blockchain zaupa informacijam zaupanja vrednega spletnega strežnika; lahko rečemo, da so to ponudniki zanesljivih informacij.

Oraklji

Predstavljajte si, da pametna pogodba prenese 0.001 btc v vašo bitcoin denarnico, če vaš najljubši nogometni klub zmaga ruski pokal. V primeru prave zmage mora pametna pogodba prenesti informacijo o tem, kateri klub je zmagal, in tu nastane vrsta težav: kje dobiti te informacije, kako jih varno prenesti v pametno pogodbo in kako zagotoviti, da informacije prejeto v pametni pogodbi veljavno dejansko sovpada z realnostjo?

Kar zadeva vir informacij, sta lahko dva scenarija: povezava pametne pogodbe z zaupanja vrednim spletnim mestom, kjer so centralno shranjeni podatki o rezultatih tekem, druga možnost pa je povezava več spletnih mest hkrati in nato izbiranje informacij iz večine virov. ki zagotavljajo iste podatke. Za preverjanje pravilnosti podatkov se uporabljajo oraklji, na primer Oraclize, ki uporablja TLSNotary (TLS Notary Modification to Prove the Authenticity of Data). Toda v Googlu je dovolj informacij o Oraclize, na Habréju je več člankov.Danes bom govoril o oraklih, ki uporabljajo nekoliko drugačen pristop k prenosu informacij: Town Crier in DECO. V članku je opisan princip delovanja obeh orakljev ter podrobna primerjava.

Mestni glasnik

Town Crier (TC) je predstavil IC3 (The Initiative for CryptoCurrencies and Contracts) leta 2016 na CCS'16. Glavna ideja TC: prenesti informacije s spletnega mesta v pametno pogodbo in zagotoviti, da so informacije, ki jih posreduje TC, enake kot na spletnem mestu. TC uporablja TEE (Trusted Execution Environment) za preverjanje pristnosti lastništva podatkov. Prvotna različica TC opisuje, kako delati z Intel SGX.
Town Crier je sestavljen iz dela znotraj blockchaina in dela znotraj samega OS - TC Server.
Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?
TC Contract je v verigi blokov in deluje kot sprednji del za TC. Sprejema zahteve iz CU (uporabniške pametne pogodbe) in vrne odgovor s strežnika TC. Znotraj TC Serverja je Relay, ki vzpostavi povezavo med enklavo in internetom (dvosmerni promet) in poveže enklavo z blockchainom. Enclave vsebuje progencl, ki je koda, ki postavlja zahteve iz verige blokov in vrača sporočila v verigo blokov z digitalnim podpisom, progencl vsebuje del kode pametne pogodbe in v bistvu opravlja nekatere njene funkcije.

Enklavo Intel SGX si lahko predstavljamo kot knjižnico v skupni rabi z API-jem, ki deluje prek ecall. Ecall prenese nadzor na enklavo. Enklava izvaja svojo kodo, dokler ne zapusti ali dokler ne pride do izjeme. ocall se uporablja za klicanje funkcij, definiranih zunaj enklave. Ocall se izvede zunaj enklave in se obravnava kot nezaupljiv klic. Po izvedbi ocall se nadzor vrne enklavi.
Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?
V delu enklave je varen kanal konfiguriran s spletnim strežnikom, enklava sama izvaja TLS rokovanje s ciljnim strežnikom in izvaja vse kriptografske operacije interno. Knjižnica TLS (mbedTLS) in zmanjšana koda HTTP sta bili izvoženi v okolje SGX. Enclave vsebuje tudi korenska potrdila CA (zbirko potrdil) za preverjanje potrdil oddaljenih strežnikov. Request Handler sprejme zahtevo za datagram v formatu, ki ga ponuja Ethereum, jo ​​dešifrira in razčleni. Nato ustvari transakcijo Ethereum, ki vsebuje zahtevani datagram, jo ​​podpiše s skTC in jo posreduje Relayju.

Relejni del vključuje odjemalski vmesnik, TCP, vmesnik verige blokov. Odjemalski vmesnik je potreben za potrjevanje kode enklave in komunikacijo z odjemalcem. Odjemalec pošlje zahtevo za potrdilo z uporabo ecall in prejme časovni žig, ki ga podpiše skTC skupaj z att (potrditveni podpis), nato se att preveri s storitvijo Intel Attestation Service (IAS), časovni žig pa preveri zaupanja vredna časovna storitev. Blockchain vmesnik preverja dohodne zahteve in postavlja transakcije v blockchain za dostavo datagramov. Geth je uradni odjemalec Ethereum in omogoča Relay interakcijo z verigo blokov prek klicev RPC.

Delo s TEE vam TC omogoča vzporedno izvajanje več enklav, s čimer povečate hitrost obdelave informacij za 3-krat. Če je bila pri eni delujoči enklavi hitrost 15 tx/s, se pri 20 vzporedno delujočih enklavah hitrost poveča na 65 tx/s, za primerjavo, največja hitrost delovanja v verigi blokov Bitcoin je 26 tx/s.

DECO

DECO (Decentralized Oracles for TLS) je bil predstavljen na CCS'20, deluje s spletnimi mesti, ki podpirajo povezave TLS. Zagotavlja zaupnost in celovitost podatkov.
DECO s TLS uporablja simetrično šifriranje, tako da imata odjemalec in spletni strežnik šifrirne ključe, odjemalec pa lahko ponaredi podatke o seji TLS, če želi. Za rešitev te težave DECO uporablja tristranski protokol rokovanja med dokazovalnikom (pametna pogodba), preveriteljem (oracle) in spletnim strežnikom (vir podatkov).

Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?

DECO deluje tako, da verifikator prejme del podatkov D in potrdi verifikatorju, da je D prišel s strežnika TLS S. Druga težava je, da TLS ne podpiše podatkov in odjemalec TLS težko dokaže, da podatki so bili prejeti iz pravega strežnika (težava izvora).

Protokol DECO uporablja šifrirna ključa KEnc in KMac. Odjemalec pošlje zahtevo Q spletnemu strežniku, odgovor s strežnika R pride v šifrirani obliki, vendar imata odjemalec in strežnik isti KMac in odjemalec lahko ponaredi sporočilo TLS. DECO-jeva rešitev je, da "skrije" KMac pred odjemalcem (preverjevalcem), dokler se ta ne odzove na zahtevo. Zdaj je KMac razdeljen med dokazovalca in preveritelja - KpMac in KvMac. Strežnik prejme KMac za šifriranje odgovora z operacijo dela ključa KpMac ⊕ KvMac = KMac.

Z vzpostavitvijo tristranskega rokovanja bo izmenjava podatkov med odjemalcem in strežnikom potekala z zagotovljeno varnostjo.
Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?
Ko govorimo o decentraliziranem orakeljskem sistemu, ne moremo mimo omeniti Chainlinka, katerega namen je ustvariti decentralizirano omrežje orakeljskih vozlišč, združljivih z Ethereumom, Bitcoinom in Hyperledgerjem, ob upoštevanju modularnosti: vsak del sistema je mogoče posodobiti. Hkrati za zagotovitev varnosti Chainlink vsakemu oraklju, ki sodeluje pri nalogi, ponuja, da izda kombinacijo ključev (javnih in zasebnih). Zasebni ključ se uporablja za ustvarjanje delnega podpisa, ki vsebuje njihovo odločitev glede zahteve po podatkih. Za pridobitev odgovora je potrebno združiti vse delne podpise omrežnih orakljev.

Chainlink namerava izvesti začetni PoC DECO s poudarkom na decentraliziranih finančnih aplikacijah, kot je Mixicles. V času pisanja je na Forbesu prišla novica, da je Chainlink kupil DECO z univerze Cornell.

Napadi na oraklje

Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?

Z vidika informacijske varnosti so bili obravnavani naslednji napadi na Town Crier:

  1. Prevarantsko vbrizgavanje kode pametnega stika v vozlišča TEE.
    Bistvo napada: prenos namerno napačne kode pametne pogodbe v TEE, tako da bo napadalec, ki je pridobil dostop do vozlišča, lahko izvršil lastno (goljufivo) pametno pogodbo na dešifriranih podatkih. Vendar pa bodo vrnjene vrednosti šifrirane z zasebnim ključem in edini način za dostop do takšnih podatkov je uhajanje šifriranega besedila ob vrnitvi/izhodu.
    Zaščita pred tem napadom je sestavljena iz preverjanja enklave pravilnosti kode, ki se nahaja na trenutnem naslovu. To je mogoče doseči z uporabo sheme naslavljanja, kjer je pogodbeni naslov določen z zgoščevanjem pogodbene kode.

  2. Uhajanje sprememb šifriranega besedila pogodbe.
    Bistvo napada: Lastniki vozlišč, na katerih se izvajajo pametne pogodbe, imajo dostop do stanja pogodbe v šifrirani obliki izven enklave. Napadalec, ki pridobi nadzor nad vozliščem, lahko primerja stanje stika pred in po transakciji ter lahko ugotovi, kateri argumenti so bili vneseni in kateri način pametne pogodbe je bil uporabljen, saj so sama koda pametne pogodbe in njene tehnične specifikacije javno dostopne.
    Zaščita pri zagotavljanju zanesljivosti samega vozlišča.

  3. Napadi stranskega kanala.
    Posebna vrsta napada, ki uporablja spremljanje pomnilnika enklave in dostop do predpomnilnika v različnih scenarijih. Primer takega napada sta Prime in Probe.
    Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?
    Vrstni red za napad:

    • t0: Napadalec zapolni celoten podatkovni predpomnilnik procesa žrtve.
    • t1: žrtev izvaja kodo z dostopi do pomnilnika, ki so odvisni od občutljivih podatkov žrtve (kriptografski ključi). Vrstica predpomnilnika je izbrana na podlagi vrednosti ključnega bita. V primeru na sliki je bit ključa = 0 in prebran je naslov X v vrstici predpomnilnika 2. Podatki, shranjeni v X, se naložijo v predpomnilnik in izpodrinejo podatke, ki so bili tam prej.
    • t2: Napadalec preveri, katere njegove vrstice predpomnilnika so bile izločene – vrstice, ki jih uporablja žrtev. To se naredi z merjenjem dostopnega časa. S ponavljanjem te operacije za vsak bit ključa napadalec pridobi celoten ključ.

Zaščita pred napadi: Intel SGX ima zaščito pred napadi po stranskem kanalu, ki preprečuje spremljanje dogodkov, povezanih s predpomnilnikom, vendar bo napad Prime in Probe vseeno deloval, ker napadalec spremlja dogodke predpomnilnika svojega procesa in deli predpomnilnik z žrtvijo.
Town Crier proti DECO: kateri orakelj uporabiti v verigi blokov?
Tako trenutno ni zanesljive zaščite pred tem napadom.

Znani so tudi napadi, kot sta Spectre in Foreshadow (L1TF), podobni Prime in Probe. Omogočajo branje podatkov iz predpomnilnika prek kanala tretje osebe. Zagotovljena je zaščita pred ranljivostjo Spectre-v2, ki deluje proti dvema od teh napadov.

V zvezi z DECO zagotavlja trosmerno rokovanje jamstvo za varnost:

  1. Integriteta preverjalnika: vdrti preverjalnik ne more ponarediti informacij o izvoru strežnika in ne more povzročiti, da strežnik sprejme neveljavne zahteve ali se nepravilno odzove na veljavne zahteve. To se izvede prek vzorcev zahtev med strežnikom in preverjalnikom.
  2. Integriteta preverjalnika: vdrti preverjalnik ne more povzročiti, da bi preverjalnik prejel napačne odgovore.
  3. Zasebnost: vdrti preverjalnik pregleduje samo javne podatke (zahtevo, ime strežnika).

V DECO so možne le ranljivosti vnosa prometa. Prvič, s tristranskim rokovanjem lahko preveritelj ugotovi identiteto strežnika s svežim nonce. Vendar pa se mora preveritelj po rokovanju zanašati na indikatorje omrežne plasti (naslove IP). Tako mora biti komunikacija med preveriteljem in strežnikom zaščitena pred vnosom prometa. To se doseže z uporabo proxyja.

Primerjava orakljev

Town Crier temelji na delu z enklavo v strežniškem delu, medtem ko DECO omogoča preverjanje pristnosti izvora podatkov s tristranskim rokovanjem in šifriranjem podatkov s kriptografskimi ključi. Primerjava teh orakljev je bila izvedena po naslednjih kriterijih: zmogljivost, varnost, cena in praktičnost.

Mestni glasnik
DECO

hitrost
Hitreje (0.6 s do konca)
Počasneje (10.50 s za dokončanje protokola)

varnost
Manj varno
Bolj varno

stroškovno
Dražje
Cenejši

praktičnost
Zahteva posebno strojno opremo
Deluje s katerim koli strežnikom, ki podpira TLS

Hitrost: Za delo z DECO je potrebno trosmerno rokovanje, pri nastavitvi preko LAN traja 0.37 sekunde, za interakcijo po vzpostavljeni povezavi je učinkovit 2PC-HMAC (0,13 s na pisanje). Učinkovitost DECO je odvisna od razpoložljivih paketov šifre TLS, velikosti zasebnih podatkov in kompleksnosti dokazov za določeno aplikacijo. Uporaba aplikacije binarnih možnosti iz IC3 kot primer: dokončanje protokola prek LAN traja približno 10,50 sekunde. Za primerjavo, Town Crier potrebuje približno 0,6 sekunde za dokončanje podobne aplikacije, kar je približno 20-krat hitreje kot DECO. Če so vse enake, bo TC hitrejši.

varnost: Атаки на анклав Intel SGX (side-channel attacks) работают и могут нанести реальный ущерб участникам смарт-контракта. Относительно DECO возможны атаки, связанные с инъекцией трафика, но использование proxy сводит такие атаки на нет. Поэтому DECO более безопасный.

Stroški: Cena opreme, ki podpira Intel SGX, je višja od cene nastavitve protokola v DECO. Zato je TC dražji.

Praktičnost: Za delo z Town Crier je potrebna posebna oprema, ki podpira TEE. Intel SGX je na primer podprt v družini procesorjev Intel Core 6. generacije in novejših. DECO vam omogoča delo s katero koli opremo, čeprav obstaja nastavitev DECO z uporabo TEE. V skladu s postopkom namestitve lahko DECO trismerno rokovanje traja nekaj časa, vendar to ni nič v primerjavi z omejitvijo strojne opreme TC, zato je DECO bolj praktičen.

Zaključek

Če oba oraklja pogledamo ločeno in ju primerjamo po štirih kriterijih, je jasno, da je Town Crier slabši od DECO v treh od štirih točk. DECO je zanesljivejši z vidika informacijske varnosti, cenejši in bolj praktičen, čeprav lahko vzpostavitev tristranskega protokola traja nekaj časa in ima svoje slabosti, na primer dodatne operacije s šifrirnimi ključi. TC je hitrejši od DECO, vendar je zaradi ranljivosti stranskih kanalov dovzeten za izgubo zaupnosti. Upoštevati je treba, da je bil DECO uveden januarja 2020 in ni minilo dovolj časa, da bi ga lahko ocenili kot varnega. Town Crier je bil na udaru že 4 leta in je šel skozi številne teste, zato je njegova uporaba v številnih projektih upravičena.

Vir: www.habr.com

Dodaj komentar