Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?

Šiandien apie „blockchain“ technologiją, kriptovaliutas ir tai, kaip tai šaunu, nerašė tik tinginiai. Tačiau šis straipsnis nepagirs šios technologijos, kalbėsime apie jos trūkumus ir būdus, kaip juos pašalinti.

Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?

Dirbant su vienu iš Altirix Systems projektų, iškilo užduotis saugiai, cenzūrai atspariai patvirtinti duomenis iš šaltinio, nepriklausančio blokų grandinei. Reikėjo patvirtinti trečiosios sistemos įrašų pakeitimus ir, remiantis šiais pakeitimais, vykdyti vieną ar kitą šaką išmaniojoje sutarčių logikoje. Užduotis iš pirmo žvilgsnio gana banali, tačiau kai nuo jos įgyvendinimo rezultato priklauso vienos iš procese dalyvaujančių šalių finansinė būklė, atsiranda papildomų reikalavimų. Visų pirma, tai yra visapusiškas pasitikėjimas tokiu patvirtinimo mechanizmu. Bet pirmiausia pirmiausia.

Problema ta, kad pati „blockchain“ yra savarankiškas, uždaras subjektas, todėl „blockchain“ viduje esančios išmaniosios sutartys nieko nežino apie išorinį pasaulį. Tuo pačiu metu išmaniųjų sutarčių sąlygos dažnai yra susijusios su informacija apie tikrus dalykus (skrydžio vėlavimą, valiutų kursus ir pan.). Kad išmaniosios sutartys veiktų tinkamai, informacija, gauta iš už blokų grandinės ribų, turi būti patikima ir patikrinta. Ši problema išspręsta naudojant tokius orakulus kaip Town Crier ir DECO. Šie orakulai leidžia sudarius išmaniąją sutartį „blockchain“ tinkle pasitikėti informacija iš patikimo žiniatinklio serverio, galime sakyti, kad tai yra patikimos informacijos teikėjai.

Orakulai

Įsivaizduokite, kad pagal išmaniąją sutartį į jūsų bitkoinų piniginę pervedama 0.001 btc, jei jūsų mėgstamiausias futbolo klubas laimi Rusijos taurę. Realios pergalės atveju išmaniajam kontraktui reikia perduoti informaciją apie tai, kuris klubas laimėjo, ir čia iškyla nemažai problemų: iš kur gauti šią informaciją, kaip saugiai ją perkelti į išmaniąją sutartį ir kaip užtikrinti, kad informacija gauta išmaniojoje sutartyje galioja iš tikrųjų sutampa su realybe?

Kalbant apie informacijos šaltinį, gali būti 2 scenarijai: išmaniosios sutarties prijungimas prie patikimos svetainės, kurioje centralizuotai saugoma informacija apie rungtynių rezultatus, o antrasis variantas yra sujungti kelias svetaines vienu metu ir tada pasirinkti informaciją iš daugumos šaltinių. kurie pateikia tuos pačius duomenis. Informacijos teisingumui patikrinti naudojami orakulai, pavyzdžiui, Oraclize, kuris naudoja TLSNotary (TLS notaro modifikacija duomenų autentiškumui įrodyti). Tačiau „Google“ yra pakankamai informacijos apie „Oraclize“, ir yra keletas straipsnių apie Habré. Šiandien aš kalbėsiu apie orakulus, kurie naudoja šiek tiek kitokį informacijos perdavimą: „Town Crier“ ir „DECO“. Straipsnyje pateikiamas abiejų orakulų veikimo principų aprašymas, detalus palyginimas.

Miesto Crier

„Town Crier“ (TC) pristatė IC3 (kriptovaliutų ir sutarčių iniciatyva) 2016 m. CCS'16. Pagrindinė TC idėja: perkelti informaciją iš svetainės į išmaniąją sutartį ir įsitikinti, kad TC pateikiama informacija yra tokia pati kaip ir svetainėje. TC naudoja TEE (Trusted Execution Environment), kad patvirtintų duomenų nuosavybės teisę. Originalioje TC versijoje aprašoma, kaip dirbti su Intel SGX.
Town Crier susideda iš dalies blokų grandinėje ir dalies pačioje OS viduje – TC serverio.
Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?
TC sutartis yra blokų grandinėje ir veikia kaip TC priekinė dalis. Jis priima užklausas iš CU (išmaniosios vartotojo sutarties) ir grąžina atsakymą iš TC serverio. TC serverio viduje yra relė, kuri užmezga ryšį tarp anklavo ir interneto (dvikryptis srautas) ir sujungia anklavą su blokų grandine. Enclave yra progencl, kuris yra kodas, kuris pateikia užklausas iš blokų grandinės ir grąžina pranešimus į blokų grandinę su skaitmeniniu parašu, progencl yra dalis išmaniosios sutarties kodo ir iš esmės atlieka kai kurias jo funkcijas.

Intel SGX anklavas gali būti laikomas bendrinamąja biblioteka su API, veikiančia per ecall. Ecall perduoda valdymą anklavui. Anklavas vykdo savo kodą, kol išeina arba kol atsiranda išimtis. Norint iškviesti funkcijas, apibrėžtas už anklavo ribų, naudojamas ocal. Ocall vykdomas už anklavo ribų ir traktuojamas kaip nepatikimas skambutis. Įvykdžius okallą, valdymas grąžinamas anklavui.
Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?
Anklavo dalyje sukonfigūruojamas saugus kanalas su žiniatinklio serveriu, pats anklavas atlieka TLS rankos paspaudimą su tiksliniu serveriu ir atlieka visas kriptografines operacijas viduje. TLS biblioteka (mbedTLS) ir sumažintas HTTP kodas buvo eksportuoti į SGX aplinką. Be to, Enclave yra šakniniai CA sertifikatai (sertifikatų rinkinys), kad būtų galima patikrinti nuotolinių serverių sertifikatus. Užklausų tvarkytojas priima datagramos užklausą Ethereum pateiktu formatu, ją iššifruoja ir analizuoja. Tada jis sugeneruoja „Ethereum“ operaciją su prašoma datagrama, pasirašo ją su skTC ir perduoda „Relay“.

Relės dalis apima kliento sąsają, TCP, blokų grandinės sąsają. Kliento sąsaja reikalinga anklavo kodui sertifikuoti ir bendrauti su klientu. Klientas siunčia patvirtinimo užklausą naudodamas ecall ir gauna skTC pasirašytą laiko žymą kartu su att (patvirtinimo parašu), tada att patikrinama naudojant „Intel Attestation Service“ (IAS), o laiko žymą patvirtina patikimo laiko tarnyba. „Blockchain“ sąsaja patikrina gaunamas užklausas ir perkelia operacijas į „blockchain“, kad būtų pristatytos datagramos. „Geth“ yra oficialus „Ethereum“ klientas ir leidžia „Relay“ sąveikauti su „blockchain“ per RPC skambučius.

Dirbant su TEE, TC leidžia lygiagrečiai paleisti kelis anklavus ir taip 3 kartus padidinti informacijos apdorojimo greitį. Jei su vienu veikiančiu anklavu greitis buvo 15 tx/sek, tai su 20 lygiagrečiai veikiančių anklavų greitis padidėja iki 65 tx/sek palyginimui, maksimalus veikimo greitis Bitcoin blockchain yra 26 tx/sek.

DECO

DECO (Decentralized Oracle for TLS) buvo pristatytas CCS'20, veikia su svetainėmis, kurios palaiko TLS ryšius. Užtikrina duomenų konfidencialumą ir vientisumą.
DECO su TLS naudoja simetrinį šifravimą, todėl klientas ir žiniatinklio serveris turi šifravimo raktus, o klientas, jei nori, gali suklastoti TLS seanso duomenis. Norėdami išspręsti šią problemą, DECO naudoja trijų krypčių rankos paspaudimo protokolą tarp tikrintojo (išmanioji sutartis), tikrintojo (oracle) ir žiniatinklio serverio (duomenų šaltinis).

Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?

DECO veikia taip, kad tikrintojas gauna duomenų dalį D ir patvirtina tikrintojui, kad D atėjo iš TLS serverio S. Kita problema yra ta, kad TLS nepasirašo duomenų ir TLS klientui sunku įrodyti, kad duomenys buvo gauti tiksliai iš tinkamo serverio (kilmės sunkumas).

DECO protokolas naudoja KEnc ir KMac šifravimo raktus. Klientas siunčia užklausą Q žiniatinklio serveriui, atsakymas iš serverio R gaunamas užšifruota forma, tačiau klientui ir serveriui priklauso tas pats KMac, o klientas gali suklastoti TLS pranešimą. DECO sprendimas yra „paslėpti“ KMac nuo kliento (įrodytojo), kol jis atsakys į užklausą. Dabar KMac yra padalintas į patikrinimą ir tikrintuvą – KpMac ir KvMac. Serveris gauna KMac, kad užšifruotų atsakymą, naudodamas rakto dalies operaciją KpMac ⊕ KvMac = KMac.

Nustačius trijų krypčių rankos paspaudimą, duomenų mainai tarp kliento ir serverio bus vykdomi užtikrinant saugumą.
Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?
Kalbant apie decentralizuotą „Oracle“ sistemą, negalima nepaminėti „Chainlink“, kurios tikslas – sukurti decentralizuotą „Oracle“ mazgų tinklą, suderinamą su „Ethereum“, „Bitcoin“ ir „Hyperledger“, atsižvelgiant į moduliškumą: kiekviena sistemos dalis gali būti atnaujinama. Tuo pačiu metu, siekiant užtikrinti saugumą, „Chainlink“ siūlo kiekvienam užduotyje dalyvaujančiam orakului išduoti raktų derinį (viešąjį ir privatų). Privatus raktas naudojamas daliniam parašui, kuriame yra jų sprendimas dėl duomenų užklausos, generuoti. Norint gauti atsakymą, reikia sujungti visus dalinius tinklo orakulų parašus.

„Chainlink“ planuoja atlikti pradinį „PoC DECO“, daugiausia dėmesio skirdamas decentralizuotoms finansų programoms, tokioms kaip „Mixicles“. Rašymo metu „Forbes“ pasirodė naujienos, kad „Chainlink“ įsigijo DECO iš Kornelio universiteto.

Išpuoliai prieš orakulus

Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?

Informacijos saugumo požiūriu buvo svarstomos šios atakos prieš Town Crier:

  1. Netikras išmaniojo kontakto kodo įvedimas TEE mazguose.
    Atakos esmė: sąmoningai neteisingo išmaniosios sutarties kodo perdavimas TEE, taigi prie mazgo gavęs užpuolikas galės vykdyti savo (apgaulingą) išmaniąją sutartį dėl iššifruotų duomenų. Tačiau grąžinamos reikšmės bus užšifruotos privačiu raktu, o vienintelis būdas pasiekti tokius duomenis yra nutekėti šifruoto teksto grąžinimas / išvestis.
    Apsaugą nuo šios atakos sudaro anklavas, tikrinantis esamu adresu esančio kodo teisingumą. Tai galima pasiekti naudojant adresavimo schemą, kai sutarties adresas nustatomas maišant sutarties kodą.

  2. Sutarties būsenos šifruoto teksto pakeitimų nutekėjimas.
    Atakos esmė: mazgų, kuriuose vykdomos išmaniosios sutartys, savininkai turi prieigą prie sutarties būsenos šifruota forma už anklavo ribų. Užpuolikas, įgijęs mazgo kontrolę, gali palyginti kontaktinę būseną prieš ir po operacijos bei gali nustatyti, kurie argumentai buvo įvesti ir kuris išmaniosios sutarties metodas buvo naudojamas, nes pats išmaniosios sutarties kodas ir jo techninės specifikacijos yra viešai prieinamos.
    Apsauga užtikrinant paties mazgo patikimumą.

  3. Šoninio kanalo atakos.
    Ypatingas atakos tipas, kuris įvairiais atvejais naudoja anklavo atminties ir talpyklos prieigos stebėjimą. Tokios atakos pavyzdys yra Prime and Probe.
    Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?
    Atakos tvarka:

    • t0: užpuolikas užpildo visą aukos proceso duomenų talpyklą.
    • t1: Auka vykdo kodą su atminties prieigomis, kurios priklauso nuo aukos jautrių duomenų (kriptografinių raktų). Talpyklos eilutė parenkama pagal klaviatūros bitų reikšmę. Paveikslo pavyzdyje klaviatūros bitas = 0, o adresas X 2 talpyklos eilutėje nuskaitomas X saugomi duomenys įkeliami į talpyklą, išstumiant ten buvusius duomenis.
    • t2: Užpuolikas patikrina, kurios iš jo talpyklos eilučių buvo iškeltos – aukos naudojamos linijos. Tai atliekama matuojant prieigos laiką. Kartodamas šią operaciją kiekvienam klaviatūros bitui, užpuolikas gauna visą raktą.

Apsauga nuo atakų: „Intel SGX“ turi apsaugą nuo šoninių kanalų atakų, neleidžiančių stebėti su talpykla susijusių įvykių, tačiau „Prime“ ir „Probe“ ataka vis tiek veiks, nes užpuolikas stebi savo proceso talpyklos įvykius ir dalijasi talpykla su auka.
Town Crier vs DECO: kurį orakulą naudoti blokų grandinėje?
Taigi šiuo metu nėra patikimos apsaugos nuo šios atakos.

Taip pat žinomos tokios atakos kaip Spectre ir Foreshadow (L1TF), panašios į Prime ir Probe. Jie leidžia nuskaityti duomenis iš talpyklos atminties per trečiosios šalies kanalą. Suteikiama apsauga nuo Spectre-v2 pažeidžiamumo, kuri veikia prieš dvi iš šių atakų.

Kalbant apie DECO, trijų krypčių rankos paspaudimas garantuoja saugumą:

  1. Prover Integrity: Nulaužtas tikrintojas negali suklastoti serverio kilmės informacijos ir negali priversti serverio priimti netinkamų užklausų arba neteisingai atsakyti į galiojančias užklausas. Tai atliekama naudojant užklausų šablonus tarp serverio ir tikrintojo.
  2. Tikrintojo vientisumas: įsilaužęs tikrintojas negali priversti tikrintojo gauti neteisingų atsakymų.
  3. Privatumas: įsilaužęs tikrintojas tiria tik viešą informaciją (užklausą, serverio pavadinimą).

DECO galimos tik eismo įpurškimo pažeidžiamumas. Pirma, trijų krypčių rankos paspaudimu tikrintojas gali nustatyti serverio tapatybę naudodamas naują nonce. Tačiau po rankos paspaudimo tikrintojas turi pasikliauti tinklo sluoksnio indikatoriais (IP adresais). Taigi ryšys tarp tikrintojo ir serverio turi būti apsaugotas nuo srauto injekcijos. Tai pasiekiama naudojant tarpinį serverį.

Orakulų palyginimas

„Town Crier“ yra pagrįsta darbu su anklavu serverio dalyje, o DECO leidžia patikrinti duomenų kilmės autentiškumą naudojant trijų krypčių rankos paspaudimą ir duomenų šifravimą kriptografiniais raktais. Šių orakulų palyginimas atliktas pagal šiuos kriterijus: našumas, saugumas, kaina ir praktiškumas.

Miesto Crier
DECO

spektaklis
Greičiau (0.6 s iki pabaigos)
Lėčiau (10.50 s, kol baigsite protokolą)

saugumas
Mažiau saugus
Saugesnis

kaina
Brangesnis
Pigiau

praktiškumas
Reikalinga speciali aparatūra
Veikia su bet kokiu serveriu, kuris palaiko TLS

Greitis: Norint dirbti su DECO, reikalingas trijų krypčių rankos paspaudimas, nustatant per LAN užtrunka 0.37 sekundės, sąveikai užmezgus ryšį efektyvus 2PC-HMAC (0,13 s per rašymą). DECO našumas priklauso nuo turimų TLS šifrų rinkinių, privačių duomenų dydžio ir konkrečios programos įrodymų sudėtingumo. Kaip pavyzdį naudojant dvejetainių parinkčių programą iš IC3: protokolo užbaigimas per LAN užtrunka apie 10,50 sekundės. Palyginimui, „Town Crier“ užtrunka maždaug 0,6 sekundės, kad užbaigtų panašią programą, o tai yra maždaug 20 kartų greičiau nei DECO. Jei viskas bus vienoda, TC bus greitesnis.

saugumas: Atakos prieš Intel SGX anklavą (šoninio kanalo atakos) veikia ir gali padaryti realią žalą išmaniosios sutarties dalyviams. Kalbant apie DECO, galimos atakos, susijusios su srauto įvedimu, tačiau tarpinio serverio naudojimas sumažina tokias atakas iki nieko. Todėl DECO yra saugesnis.

Kaina: „Intel SGX“ palaikančios įrangos kaina yra didesnė nei DECO protokolo nustatymo kaina. Štai kodėl TC yra brangesnis.

Praktiškumas: Norint dirbti su Town Crier, reikalinga speciali įranga, palaikanti TEE. Pavyzdžiui, „Intel SGX“ palaiko 6-osios kartos „Intel Core“ procesorių šeima ir naujesnė versija. DECO leidžia dirbti su bet kokia įranga, nors yra DECO nustatymas naudojant TEE. Atsižvelgiant į sąrankos procesą, trijų krypčių DECO rankos paspaudimas gali užtrukti, tačiau tai yra niekis, palyginti su TC techninės įrangos apribojimu, todėl DECO yra praktiškesnis.

išvada

Pažvelgus į du orakulus atskirai ir palyginus juos pagal keturis kriterijus, akivaizdu, kad Town Crier nusileidžia DECO trimis iš keturių taškų. DECO yra patikimesnis informacijos saugumo požiūriu, pigesnis ir praktiškesnis, nors trijų šalių protokolo nustatymas gali užtrukti ir turi trūkumų, pavyzdžiui, papildomos operacijos su šifravimo raktais. TC yra greitesnis nei DECO, tačiau dėl šoninio kanalo atakų pažeidžiamumo gali prarasti konfidencialumą. Reikia atsižvelgti į tai, kad DECO buvo pristatytas 2020 m. sausio mėn. ir nepraėjo pakankamai laiko jį laikyti saugiu. Town Crier buvo atakuojamas 4 metus ir buvo išbandytas daug, todėl jo naudojimas daugelyje projektų yra pagrįstas.

Šaltinis: www.habr.com

Добавить комментарий