Town Crier vs DECO: ce oracol să folosești în blockchain?

Astăzi, doar leneșii nu au scris despre tehnologia blockchain, criptomonede și cât de cool este. Dar acest articol nu va lăuda această tehnologie; vom vorbi despre deficiențele ei și despre modalitățile de a le elimina.

Town Crier vs DECO: ce oracol să folosești în blockchain?

În timp ce lucra la unul dintre proiectele de la Altirix Systems, a apărut sarcina de a confirma datele securizate, rezistente la cenzură, dintr-o sursă externă blockchain-ului. A fost necesar să se confirme modificări în înregistrările celui de-al treilea sistem și, pe baza acestor modificări, să se execute una sau alta ramură în logica contractului inteligent. Sarcina la prima vedere este destul de banală, dar atunci când starea financiară a uneia dintre părțile care participă la proces depinde de rezultatul implementării acestuia, apar cerințe suplimentare. În primul rând, aceasta este încredere cuprinzătoare într-un astfel de mecanism de validare. Dar mai întâi lucrurile.

Problema este că blockchain-ul în sine este o entitate autonomă, închisă, astfel încât contractele inteligente din interiorul blockchain-ului nu știu nimic despre lumea exterioară. În același timp, condițiile contractelor inteligente sunt adesea legate de informații despre lucruri reale (întârzierea zborului, cursurile de schimb etc.). Pentru ca contractele inteligente să funcționeze corect, informațiile primite din afara blockchain-ului trebuie să fie de încredere și verificate. Această problemă este rezolvată prin utilizarea oracolelor precum Town Crier și DECO. Aceste oracole permit unui contract inteligent din rețeaua blockchain să aibă încredere în informațiile de la un server web de încredere; putem spune că aceștia sunt furnizori de informații fiabile.

Oracole

Imaginează-ți că un contract inteligent transferă 0.001 btc în portofelul tău bitcoin dacă clubul tău de fotbal preferat câștigă Cupa Rusiei. În cazul unei victorii reale, contractul inteligent trebuie să transfere informații despre ce club a câștigat și aici apar o serie de probleme: de unde să obțineți aceste informații, cum să le transferați în siguranță la contractul inteligent și cum să vă asigurați că informațiile primit în contractul inteligent este valabil de fapt coincide cu realitatea?

Când vine vorba de sursa de informații, pot exista 2 scenarii: conectarea unui contract inteligent la un site web de încredere, unde informațiile despre rezultatele meciului sunt stocate central, iar a doua opțiune este să conectați mai multe site-uri simultan și apoi să selectați informații din majoritatea surselor. care furnizează aceleași date. Pentru a verifica corectitudinea informațiilor se folosesc oracole, de exemplu Oraclize, care folosește TLSNotary (TLS Notary Modification to Prove the Authenticity of Data). Dar sunt destule informații pe Google despre Oraclize, și sunt câteva articole despre Habré.Azi voi vorbi despre oracole care folosesc o abordare puțin diferită a transmiterii informațiilor: Town Crier și DECO. Articolul oferă o descriere a principiilor de funcționare ale ambelor oracole, precum și o comparație detaliată.

Strigător

Town Crier (TC) a fost introdus de IC3 (The Initiative for CryptoCurrencies and Contracts) în 2016 la CCS'16. Ideea principală a TC: transferați informații de pe un site web într-un contract inteligent și asigurați-vă că informațiile furnizate de TC sunt aceleași ca pe site. TC folosește TEE (Trusted Execution Environment) pentru a autentifica dreptul de proprietate asupra datelor. Versiunea originală a TC descrie modul de lucru cu Intel SGX.
Town Crier constă dintr-o parte din interiorul blockchain-ului și o parte din interiorul sistemului de operare însuși - TC Server.
Town Crier vs DECO: ce oracol să folosești în blockchain?
TC Contract se află pe blockchain și acționează ca front-end pentru TC. Acceptă cereri de la CU (user smart contract) și returnează un răspuns de la TC Server. În interiorul Serverului TC există un Releu, care stabilește o conexiune între enclavă și Internet (trafic bidirecțional) și conectează enclava cu blockchain-ul. Enclave conține progencl, care este un cod care face solicitări din blockchain și returnează mesaje către blockchain cu o semnătură digitală, progencl conține o parte din codul de contract inteligent și în esență își îndeplinește unele dintre funcțiile.

Enclava Intel SGX poate fi gândită ca o bibliotecă partajată cu un API care rulează prin ecall. Ecall transferă controlul către enclavă. Enclava își execută codul până când iese sau până când apare o excepție. ocall este folosit pentru a apela funcții definite în afara enclavei. Ocall este executat în afara enclavei și este tratat ca un apel de încredere de către aceasta. După ce ocall este executat, controlul este returnat la enclavă.
Town Crier vs DECO: ce oracol să folosești în blockchain?
În partea Enclavă, un canal securizat este configurat cu un server web, enclava însăși efectuează o strângere de mână TLS cu serverul țintă și efectuează toate operațiunile criptografice intern. Biblioteca TLS (mbedTLS) și codul HTTP redus au fost exportate în mediul SGX. De asemenea, Enclave conține certificate CA rădăcină (o colecție de certificate) pentru a verifica certificatele serverelor de la distanță. Request Handler acceptă o cerere de datagramă în formatul oferit de Ethereum, o decriptează și o analizează. Apoi generează o tranzacție Ethereum care conține datagrama solicitată, o semnează cu skTC și o transmite către Relay.

Partea Relay include Interfața Client, TCP, Interfața Blockchain. Interfața client este necesară pentru a certifica codul enclavei și a comunica cu clientul. Clientul trimite o cerere de atestare utilizând ecall și primește un marcaj de timp semnat de skTC împreună cu att (semnătura de atestare), apoi att este verificat folosind Intel Attestation Service (IAS), iar marcajul de timp este verificat de un serviciu de timp de încredere. Interfața Blockchain verifică cererile primite și plasează tranzacții în blockchain pentru livrarea datagramelor. Geth este un client oficial Ethereum și îi permite lui Relay să interacționeze cu blockchain-ul prin apeluri RPC.

Lucrând cu TEE, TC vă permite să rulați mai multe enclave în paralel, crescând astfel viteza de procesare a informațiilor de 3 ori. Dacă cu o enclavă de rulare viteza a fost de 15 tx/sec, atunci cu 20 de enclave de rulare paralelă viteza crește la 65 tx/sec; spre comparație, viteza maximă de operare în blockchain-ul Bitcoin este de 26 tx/sec.

DECO

DECO (Decentralized Oracles for TLS) a fost prezentat la CCS'20, lucrează cu site-uri care acceptă conexiuni TLS. Asigură confidențialitatea și integritatea datelor.
DECO cu TLS utilizează criptarea simetrică, astfel încât clientul și serverul web au chei de criptare, iar clientul poate falsifica datele sesiunii TLS dacă dorește. Pentru a rezolva această problemă, DECO utilizează un protocol de strângere de mână cu trei căi între probator (contract inteligent), verificator (oracol) și serverul web (sursa de date).

Town Crier vs DECO: ce oracol să folosești în blockchain?

Modul în care funcționează DECO este că verificatorul primește o bucată de date D și îi confirmă verificatorului că D provine de la serverul TLS S. O altă problemă este că TLS nu semnează datele și este dificil pentru clientul TLS să demonstreze că datele au fost primite exact de la serverul potrivit (dificultatea de proveniență).

Protocolul DECO utilizează chei de criptare KEnc și KMac. Clientul trimite o cerere Q către serverul web, răspunsul de la serverul R vine în formă criptată, dar clientul și serverul dețin același KMac, iar clientul poate falsifica mesajul TLS. Soluția DECO este să „ascundă” KMac-ul de client (demonstrator) până când acesta răspunde la cerere. Acum KMac este împărțit între probator și verificator - KpMac și KvMac. Serverul primește KMac pentru a cripta răspunsul utilizând operația cheie KpMac ⊕ KvMac = KMac.

Prin stabilirea unei strângeri de mână în trei căi, schimbul de date între client și server se va realiza cu o garanție de securitate.
Town Crier vs DECO: ce oracol să folosești în blockchain?
Când vorbim despre un sistem oracle descentralizat, nu se poate să nu menționăm Chainlink, care își propune să creeze o rețea descentralizată de noduri oracle compatibile cu Ethereum, Bitcoin și Hyperledger, ținând cont de modularitate: fiecare parte a sistemului poate fi actualizată. În același timp, pentru a asigura securitatea, Chainlink oferă fiecărui oracol care participă la sarcină să emită o combinație de chei (publice și private). Cheia privată este folosită pentru a genera o semnătură parțială care conține decizia lor la cererea de date. Pentru a obține un răspuns, este necesar să combinați toate semnăturile parțiale ale oracolelor rețelei.

Chainlink intenționează să efectueze un DECO inițial PoC, cu accent pe aplicații financiare descentralizate, cum ar fi Mixicles. La momentul redactării acestui articol, pe Forbes au apărut vești că Chainlink a achiziționat DECO de la Universitatea Cornell.

Atacurile asupra oracolelor

Town Crier vs DECO: ce oracol să folosești în blockchain?

Din punct de vedere al securității informațiilor, au fost luate în considerare următoarele atacuri asupra lui Town Crier:

  1. Injectarea codului inteligent de contact necinstiți pe nodurile TEE.
    Esența atacului: transmiterea unui cod de contract inteligent incorect în mod deliberat către TEE, astfel, un atacator care a obținut acces la nod va putea să-și execute propriul contract inteligent (fraudulent) asupra datelor decriptate. Cu toate acestea, valorile returnate vor fi criptate cu o cheie privată, iar singura modalitate de a accesa astfel de date este să scurgeți textul cifrat la returnare/ieșire.
    Protecția împotriva acestui atac constă în verificarea enclavei a corectitudinii codului aflat la adresa curentă. Acest lucru poate fi realizat folosind o schemă de adresare în care adresa contractului este determinată prin hashing codul contractului.

  2. Scurgere de modificări ale textului cifrat al stării contractului.
    Esența atacului: proprietarii nodurilor pe care sunt executate contracte inteligente au acces la starea contractului în formă criptată în afara enclavei. Un atacator, după ce a câștigat controlul asupra unui nod, poate compara starea contactului înainte și după tranzacție și poate determina ce argumente au fost introduse și ce metodă de contract inteligent a fost utilizată, deoarece codul contractului inteligent în sine și specificațiile sale tehnice sunt disponibile public.
    Protecție în asigurarea fiabilității nodului în sine.

  3. Atacurile pe canale laterale.
    Un tip special de atac care utilizează monitorizarea memoriei enclavei și accesul la cache în diferite scenarii. Un exemplu de astfel de atac este Prime și Probe.
    Town Crier vs DECO: ce oracol să folosești în blockchain?
    Ordine de atac:

    • t0: Atacatorul umple întregul cache de date al procesului victimei.
    • t1: Victima execută cod cu acces la memorie care depind de datele sensibile ale victimei (chei criptografice). Linia cache este selectată pe baza valorii keybit. În exemplul din figură, keybit = 0 și se citește adresa X din linia cache 2. Datele stocate în X sunt încărcate în cache, înlocuind datele care erau acolo înainte.
    • t2: Atacatorul verifică care dintre liniile sale de cache au fost evacuate - liniile folosite de victimă. Acest lucru se face prin măsurarea timpului de acces. Repetând această operație pentru fiecare keybit, atacatorul obține întreaga cheie.

Protecție împotriva atacurilor: Intel SGX are protecție împotriva atacurilor pe canalele laterale care împiedică monitorizarea evenimentelor legate de cache, dar un atac Prime și Probe va funcționa în continuare, deoarece atacatorul monitorizează evenimentele din cache ale procesului său și partajează memoria cache cu victima.
Town Crier vs DECO: ce oracol să folosești în blockchain?
Astfel, în momentul de față nu există o protecție sigură împotriva acestui atac.

Sunt cunoscute și atacuri precum Spectre și Foreshadow (L1TF), similare Prime și Probe. Acestea vă permit să citiți date din memoria cache printr-un canal terță parte. Este oferită protecție împotriva vulnerabilității Spectre-v2, care funcționează împotriva a două dintre aceste atacuri.

În ceea ce privește DECO, strângerea de mână în trei direcții oferă o garanție de securitate:

  1. Integritatea dovezitorului: un probator piratat nu poate falsifica informațiile despre originea serverului și nu poate determina serverul să accepte cereri nevalide sau să răspundă incorect la solicitări valide. Acest lucru se realizează prin modele de solicitare între server și probator.
  2. Integritatea verificatorului: un verificator piratat nu poate determina ca demonstratorul să primească răspunsuri incorecte.
  3. Confidențialitate: verificatorul piratat examinează numai informații publice (cerere, nume server).

În DECO, sunt posibile doar vulnerabilitățile de injectare a traficului. În primul rând, cu o strângere de mână în trei căi, verificatorul poate stabili identitatea serverului folosind un nonce nou. Cu toate acestea, după strângere de mână, verificatorul trebuie să se bazeze pe indicatori de nivel de rețea (adrese IP). Astfel, comunicarea dintre verificator și server trebuie protejată de injecția de trafic. Acest lucru se realizează prin utilizarea Proxy.

Comparația oracolelor

Town Crier se bazează pe lucrul cu o enclavă în partea de server, în timp ce DECO vă permite să verificați autenticitatea originii datelor folosind o strângere de mână în trei căi și criptarea datelor cu chei criptografice. Compararea acestor oracole a fost efectuată în funcție de următoarele criterii: performanță, securitate, cost și caracter practic.

Strigător
DECO

performanţă
Mai rapid (0.6 s pentru a termina)
Mai lent (10.50s pentru a termina protocolul)

siguranță
Mai puțin sigur
Mai sigur

costul
Mai scump
Mai ieftin

practic
Necesită hardware special
Funcționează cu orice server care acceptă TLS

viteză: Pentru a lucra cu DECO, este necesară o strângere de mână în trei căi, la configurarea prin LAN durează 0.37 secunde, pentru interacțiune după stabilirea conexiunii, 2PC-HMAC este eficient (0,13 s per scriere). Performanța DECO depinde de suitele de criptare TLS disponibile, de dimensiunea datelor private și de complexitatea dovezilor pentru o anumită aplicație. Folosind aplicația de opțiune binară de la IC3 ca exemplu: finalizarea protocolului prin LAN durează aproximativ 10,50 secunde. Prin comparație, Town Crier durează aproximativ 0,6 secunde pentru a finaliza o aplicație similară, care este de aproximativ 20 de ori mai rapidă decât DECO. Toate lucrurile fiind egale, TC va fi mai rapid.

Безопасность: Atacurile asupra enclavei Intel SGX (atacuri pe canalul lateral) funcționează și pot provoca daune reale participanților la contractul inteligent. În ceea ce privește DECO, sunt posibile atacuri legate de injectarea de trafic, dar utilizarea unui proxy reduce astfel de atacuri la nimic. Prin urmare, DECO este mai sigur.

Costa: Costul echipamentelor care acceptă Intel SGX este mai mare decât costul instalării protocolului în DECO. De aceea TC este mai scump.

practic: Pentru a lucra cu Town Crier, este necesar un echipament special care acceptă TEE. De exemplu, Intel SGX este compatibil cu familia de procesoare Intel Core din a șasea generație și mai târziu. DECO vă permite să lucrați cu orice echipament, deși există o setare DECO folosind TEE. Conform procesului de configurare, strângerea de mână în trei căi a DECO poate dura ceva timp, dar acest lucru nu este nimic în comparație cu limitarea hardware a TC, așa că DECO este mai practic.

Concluzie

Privind cele două oracole separat și comparându-le pe patru criterii, este clar că Town Crier este inferior DECO în trei din patru puncte. DECO este mai fiabil din punct de vedere al securității informațiilor, mai ieftin și mai practic, deși configurarea unui protocol tripartit poate dura ceva timp și are dezavantajele sale, de exemplu, operațiuni suplimentare cu chei de criptare. TC este mai rapid decât DECO, dar vulnerabilitățile de atac pe canalul lateral îl fac susceptibil la pierderea confidențialității. Trebuie avut în vedere că DECO a fost introdus în ianuarie 2020 și nu a trecut suficient timp pentru a-l considera sigur. Town Crier este atacat de 4 ani și a trecut prin multe teste, așa că utilizarea sa în multe proiecte este justificată.

Sursa: www.habr.com

Adauga un comentariu