Town Crier vs DECO : quel oracle utiliser en blockchain ?

Aujourd’hui, seuls les paresseux n’ont pas Ă©crit sur la technologie blockchain, les crypto-monnaies et Ă  quel point c’est cool. Mais cet article ne fera pas l'Ă©loge de cette technologie, nous parlerons de ses dĂ©fauts et des moyens de les Ă©liminer.

Town Crier vs DECO : quel oracle utiliser en blockchain ?

Alors qu'il travaillait sur l'un des projets d'Altirix Systems, la tĂąche s'est posĂ©e de confirmer de maniĂšre sĂ©curisĂ©e et rĂ©sistante Ă  la censure des donnĂ©es provenant d'une source externe Ă  la blockchain. Il Ă©tait nĂ©cessaire de confirmer les modifications apportĂ©es aux enregistrements du troisiĂšme systĂšme et, sur la base de ces modifications, d'exĂ©cuter l'une ou l'autre branche dans la logique du contrat intelligent. La tĂąche Ă  premiĂšre vue est assez triviale, mais lorsque la situation financiĂšre de l'une des parties participant au processus dĂ©pend du rĂ©sultat de sa mise en Ɠuvre, des exigences supplĂ©mentaires apparaissent. Tout d’abord, il s’agit d’une confiance totale dans un tel mĂ©canisme de validation. Mais tout d’abord.

Le problĂšme est que la blockchain elle-mĂȘme est une entitĂ© autonome et fermĂ©e, de sorte que les contrats intelligents Ă  l’intĂ©rieur de la blockchain ne savent rien du monde extĂ©rieur. Dans le mĂȘme temps, les termes des contrats intelligents sont souvent liĂ©s Ă  des informations sur des choses rĂ©elles (retard de vol, taux de change, etc.). Pour que les contrats intelligents fonctionnent correctement, les informations reçues de l’extĂ©rieur de la blockchain doivent ĂȘtre fiables et vĂ©rifiĂ©es. Ce problĂšme est rĂ©solu en utilisant des oracles tels que Town Crier et DECO. Ces oracles permettent Ă  un contrat intelligent sur le rĂ©seau blockchain de faire confiance aux informations provenant d'un serveur web de confiance ; on peut dire que ce sont des fournisseurs d'informations fiables.

Oracles

Imaginez qu'un contrat intelligent transfĂšre 0.001 BTC sur votre portefeuille Bitcoin si votre club de football prĂ©fĂ©rĂ© remporte la Coupe de Russie. En cas de victoire rĂ©elle, le contrat intelligent doit transfĂ©rer des informations sur le club qui a gagnĂ©, et un certain nombre de problĂšmes surviennent ici : oĂč obtenir ces informations, comment les transfĂ©rer en toute sĂ©curitĂ© vers le contrat intelligent et comment garantir que les informations reçu dans le contrat intelligent est valide coĂŻncide rĂ©ellement avec la rĂ©alitĂ© ?

En ce qui concerne la source d'information, il peut y avoir 2 scĂ©narios : connecter un contrat intelligent Ă  un site Web de confiance oĂč les informations sur les rĂ©sultats des matchs sont stockĂ©es de maniĂšre centralisĂ©e, et la deuxiĂšme option consiste Ă  connecter plusieurs sites Ă  la fois, puis Ă  sĂ©lectionner les informations de la plupart des sources. qui fournissent les mĂȘmes donnĂ©es. Afin de vĂ©rifier l'exactitude des informations, des oracles sont utilisĂ©s, par exemple Oraclize, qui utilise TLSNotary (TLS Notary Modification to Prove the Authenticity of Data). Mais il y a suffisamment d'informations sur Google sur Oraclize, et il y a plusieurs articles sur HabrĂ©. Aujourd'hui, je vais parler des oracles qui utilisent une approche lĂ©gĂšrement diffĂ©rente pour transmettre l'information : Town Crier et DECO. L'article fournit une description des principes de fonctionnement des deux oracles, ainsi qu'une comparaison dĂ©taillĂ©e.

Crieur public

Town Crier (TC) a Ă©tĂ© introduit par IC3 (The Initiative for CryptoCurrencies and Contracts) en 2016 lors de CCS'16. L'idĂ©e principale de TC : transfĂ©rer les informations d'un site internet vers un contrat intelligent et s'assurer que les informations dĂ©livrĂ©es par TC sont les mĂȘmes que sur le site internet. TC utilise TEE (Trusted Execution Environment) pour authentifier la propriĂ©tĂ© des donnĂ©es. La version originale de TC dĂ©crit comment travailler avec Intel SGX.
Town Crier se compose d'une partie Ă  l'intĂ©rieur de la blockchain et d'une partie Ă  l'intĂ©rieur du systĂšme d'exploitation lui-mĂȘme - TC Server.
Town Crier vs DECO : quel oracle utiliser en blockchain ?
TC Contract est sur la blockchain et fait office de frontal pour TC. Il accepte les demandes du CU (contrat intelligent utilisateur) et renvoie une rĂ©ponse du serveur TC. À l'intĂ©rieur du serveur TC se trouve un relais qui Ă©tablit une connexion entre l'enclave et Internet (trafic bidirectionnel) et connecte l'enclave Ă  la blockchain. Enclave contient progencl, qui est un code qui effectue des requĂȘtes depuis la blockchain et renvoie des messages Ă  la blockchain avec une signature numĂ©rique, progencl contient une partie du code du contrat intelligent et remplit essentiellement certaines de ses fonctions.

L'enclave Intel SGX peut ĂȘtre considĂ©rĂ©e comme une bibliothĂšque partagĂ©e avec une API exĂ©cutĂ©e via ecall. Ecall transfĂšre le contrĂŽle Ă  l'enclave. L'enclave exĂ©cute son code jusqu'Ă  sa sortie ou jusqu'Ă  ce qu'une exception se produise. ocall est utilisĂ© pour appeler des fonctions dĂ©finies en dehors de l'enclave. Ocall est exĂ©cutĂ© en dehors de l’enclave et est traitĂ© comme un appel non fiable par celle-ci. Une fois ocall exĂ©cutĂ©, le contrĂŽle est rendu Ă  l'enclave.
Town Crier vs DECO : quel oracle utiliser en blockchain ?
Dans la partie Enclave, un canal sĂ©curisĂ© est configurĂ© avec un serveur web, l'enclave effectue elle-mĂȘme une prise de contact TLS avec le serveur cible et effectue toutes les opĂ©rations cryptographiques en interne. La bibliothĂšque TLS (mbedTLS) et le code HTTP rĂ©duit ont Ă©tĂ© exportĂ©s vers l'environnement SGX. Enclave contient Ă©galement des certificats d'autoritĂ© de certification racine (une collection de certificats) pour vĂ©rifier les certificats des serveurs distants. Request Handler accepte une requĂȘte de datagramme au format fourni par Ethereum, la dĂ©chiffre et l’analyse. Ensuite, il gĂ©nĂšre une transaction Ethereum contenant le datagramme demandĂ©, la signe avec skTC et la transmet Ă  Relay.

La partie relais comprend l'interface client, TCP, l'interface Blockchain. L'interface client est nécessaire pour certifier le code de l'enclave et communiquer avec le client. Le client envoie une demande d'attestation à l'aide d'ecall et reçoit un horodatage signé par skTC avec att (signature d'attestation), puis att est vérifié à l'aide du service d'attestation Intel (IAS) et l'horodatage est vérifié par un service de temps de confiance. Blockchain Interface vérifie les demandes entrantes et place les transactions sur la blockchain pour la livraison des datagrammes. Geth est un client Ethereum officiel et permet à Relay d'interagir avec la blockchain via des appels RPC.

En travaillant avec TEE, TC vous permet d'exécuter plusieurs enclaves en parallÚle, augmentant ainsi de 3 fois la vitesse de traitement de l'information. Si avec une enclave en cours d'exécution, la vitesse était de 15 tx/s, alors avec 20 enclaves en parallÚle, la vitesse augmente à 65 tx/s ; à titre de comparaison, la vitesse de fonctionnement maximale dans la blockchain Bitcoin est de 26 tx/s.

DÉCO

DECO (Decentralized Oracles for TLS) a Ă©tĂ© prĂ©sentĂ© Ă  CCS'20, fonctionne avec des sites prenant en charge les connexions TLS. Assure la confidentialitĂ© et l’intĂ©gritĂ© des donnĂ©es.
DECO avec TLS utilise un cryptage symétrique, de sorte que le client et le serveur Web disposent de clés de cryptage et que le client peut falsifier les données de session TLS s'il le souhaite. Pour résoudre ce problÚme, DECO utilise un protocole de négociation à trois entre le prouveur (contrat intelligent), le vérificateur (oracle) et le serveur Web (source de données).

Town Crier vs DECO : quel oracle utiliser en blockchain ?

La façon dont DECO fonctionne est que le vérificateur reçoit une donnée D et lui confirme que D provient du serveur TLS S. Un autre problÚme est que TLS ne signe pas les données et il est difficile pour le client TLS de prouver que le les données ont été reçues exactement du bon serveur (difficulté de provenance).

Le protocole DECO utilise les clĂ©s de chiffrement KEnc et KMac. Le client envoie une requĂȘte Q Ă  serveur WebLa rĂ©ponse du serveur R arrive chiffrĂ©e, mais le client et le serveur partagent le mĂȘme KMac, et le client peut falsifier le message TLS. La solution de DECO consiste Ă  « masquer Â» le KMac au client (le prouveur) jusqu'Ă  ce qu'il rĂ©ponde Ă  la requĂȘte. Le KMac est alors partagĂ© entre le prouveur et le vĂ©rificateur : KpMac et KvMac. Le serveur obtient le KMac pour chiffrer la rĂ©ponse grĂące Ă  l'opĂ©ration de partitionnement de clĂ© : KpMac ⊕ KvMac = KMac.

En mettant en place une poignée de main à trois, l'échange de données entre le client et le serveur s'effectuera avec une garantie de sécurité.
Town Crier vs DECO : quel oracle utiliser en blockchain ?
Lorsqu'on parle de systĂšme oracle dĂ©centralisĂ©, on ne peut manquer de mentionner Chainlink, qui vise Ă  crĂ©er un rĂ©seau dĂ©centralisĂ© de nƓuds oracle compatibles avec Ethereum, Bitcoin et Hyperledger, en tenant compte de la modularitĂ© : chaque partie du systĂšme peut ĂȘtre mise Ă  jour. ParallĂšlement, pour assurer la sĂ©curitĂ©, Chainlink propose Ă  chaque oracle participant Ă  la tĂąche d'Ă©mettre une combinaison de clĂ©s (publiques et privĂ©es). La clĂ© privĂ©e est utilisĂ©e pour gĂ©nĂ©rer une signature partielle contenant leur dĂ©cision concernant la demande de donnĂ©es. Pour obtenir une rĂ©ponse, il faut combiner toutes les signatures partielles des oracles du rĂ©seau.

Chainlink prévoit de mener un premier PoC DECO en mettant l'accent sur les applications financiÚres décentralisées telles que Mixicles. Au moment de la rédaction de cet article, Forbes a annoncé que Chainlink avait acquis DECO de l'Université Cornell.

Attaques contre les oracles

Town Crier vs DECO : quel oracle utiliser en blockchain ?

Du point de vue de la sĂ©curitĂ© de l'information, les attaques suivantes contre Town Crier ont Ă©tĂ© envisagĂ©es :

  1. Injection de code de contact intelligent malveillant sur les nƓuds TEE.
    L'essence de l'attaque : transmettre un code de contrat intelligent dĂ©libĂ©rĂ©ment incorrect Ă  TEE, ainsi, un attaquant qui a accĂ©dĂ© au nƓud pourra exĂ©cuter son propre contrat intelligent (frauduleux) sur les donnĂ©es dĂ©cryptĂ©es. Cependant, les valeurs de retour seront cryptĂ©es avec une clĂ© privĂ©e, et le seul moyen d'accĂ©der Ă  ces donnĂ©es est de divulguer le texte chiffrĂ© lors du retour/sortie.
    La protection contre cette attaque consiste en ce que l'enclave vĂ©rifie l'exactitude du code situĂ© Ă  l'adresse actuelle. Ceci peut ĂȘtre rĂ©alisĂ© en utilisant un schĂ©ma d'adressage dans lequel l'adresse du contrat est dĂ©terminĂ©e en hachant le code du contrat.

  2. Le texte chiffrĂ© de l’état du contrat change de fuite.
    L'essence de l'attaque : les propriĂ©taires des nƓuds sur lesquels les contrats intelligents sont exĂ©cutĂ©s ont accĂšs Ă  l'Ă©tat du contrat sous forme cryptĂ©e en dehors de l'enclave. Un attaquant, ayant pris le contrĂŽle d'un nƓud, peut comparer l'Ă©tat du contact avant et aprĂšs la transaction et dĂ©terminer quels arguments ont Ă©tĂ© saisis et quelle mĂ©thode de contrat intelligent a Ă©tĂ© utilisĂ©e, puisque le code du contrat intelligent lui-mĂȘme et ses spĂ©cifications techniques sont accessibles au public.
    Protection pour assurer la fiabilitĂ© du nƓud lui-mĂȘme.

  3. Attaques par canal secondaire.
    Un type d'attaque spĂ©cial qui utilise la surveillance de la mĂ©moire de l'enclave et l'accĂšs au cache dans divers scĂ©narios. Un exemple d’une telle attaque est Prime and Probe.
    Town Crier vs DECO : quel oracle utiliser en blockchain ?
    Ordre d'attaque :

    • t0 : l'attaquant remplit l'intĂ©gralitĂ© du cache de donnĂ©es du processus victime.
    • t1 : La victime exĂ©cute du code avec des accĂšs mĂ©moire qui dĂ©pendent des donnĂ©es sensibles de la victime (clĂ©s cryptographiques). La ligne de cache est sĂ©lectionnĂ©e en fonction de la valeur du keybit. Dans l'exemple de la figure, le bit de clĂ© = 0 et l'adresse X est lue dans la ligne de cache 2. Les donnĂ©es stockĂ©es dans X sont chargĂ©es dans le cache, dĂ©plaçant les donnĂ©es qui s'y trouvaient auparavant.
    • t2 : l'attaquant vĂ©rifie lesquelles de ses lignes de cache ont Ă©tĂ© expulsĂ©es (lignes utilisĂ©es par la victime). Cela se fait en mesurant le temps d’accĂšs. En rĂ©pĂ©tant cette opĂ©ration pour chaque bit de clĂ©, l'attaquant obtient la clĂ© entiĂšre.

Protection contre les attaques : Intel SGX dispose d'une protection contre les attaques par canal secondaire qui empĂȘche la surveillance des Ă©vĂ©nements liĂ©s au cache, mais une attaque Prime and Probe fonctionnera toujours car l'attaquant surveille les Ă©vĂ©nements de cache de son processus et partage le cache avec la victime.
Town Crier vs DECO : quel oracle utiliser en blockchain ?
Ainsi, il n’existe actuellement aucune protection fiable contre cette attaque.

Des attaques telles que Spectre et Foreshadow (L1TF), similaires à Prime et Probe, sont également connues. Ils vous permettent de lire les données de la mémoire cache via un canal tiers. Une protection contre la vulnérabilité Spectre-v2 est fournie, qui fonctionne contre deux de ces attaques.

Concernant DECO, la poignée de main à trois constitue un gage de sécurité :

  1. IntĂ©gritĂ© du prouveur : un prouveur piratĂ© ne peut pas falsifier les informations sur l'origine du serveur et ne peut pas amener le serveur Ă  accepter des demandes non valides ou Ă  rĂ©pondre de maniĂšre incorrecte Ă  des demandes valides. Cela se fait via des modĂšles de requĂȘtes entre le serveur et le prouveur.
  2. IntĂ©gritĂ© du vĂ©rificateur : un vĂ©rificateur piratĂ© ne peut pas amener le prouveur Ă  recevoir des rĂ©ponses incorrectes.
  3. ConfidentialitĂ© : le vĂ©rificateur piratĂ© examine uniquement les informations publiques (demande, nom du serveur).

Dans DECO, seules les vulnĂ©rabilitĂ©s d'injection de trafic sont possibles. Initialement, lors d'une nĂ©gociation en trois Ă©tapes, le vĂ©rificateur peut Ă©tablir l'identitĂ© du serveur Ă  l'aide d'un nonce neuf. Cependant, aprĂšs la nĂ©gociation, le vĂ©rificateur doit s'appuyer sur des indicateurs de couche rĂ©seau (Adresses IPPar consĂ©quent, la connexion entre le vĂ©rificateur et le serveur doit ĂȘtre protĂ©gĂ©e contre l'injection de trafic. Ceci est rĂ©alisĂ© grĂące Ă  l'utilisation d'un proxy.

Comparaison des oracles

Town Crier est basé sur le travail avec une enclave dans la partie serveur, tandis que DECO vous permet de vérifier l'authenticité de l'origine des données à l'aide d'une poignée de main à trois et d'un cryptage des données avec des clés cryptographiques. La comparaison de ces oracles a été réalisée selon les critÚres suivants : performance, sécurité, coût et praticité.

Crieur public
DÉCO

performance
Plus rapide (0.6 s pour terminer)
Plus lent (10.50hXNUMX pour terminer le protocole)

sécurité
Moins sécurisé
Plus sécurisé

coût de
Plus cher
Moins cher

praticité
Nécessite du matériel spécial
Fonctionne avec n'importe quel serveur prenant en charge TLS

Vitesse: Pour travailler avec DECO, une poignée de main à trois est requise, lors de la configuration via LAN, cela prend 0.37 seconde, pour l'interaction une fois la connexion établie, 2PC-HMAC est efficace (0,13 s par écriture). Les performances de DECO dépendent des suites de chiffrement TLS disponibles, de la taille des données privées et de la complexité des preuves pour une application particuliÚre. En utilisant l'application d'options binaires d'IC3 comme exemple : l'exécution du protocole via LAN prend environ 10,50 secondes. En comparaison, Town Crier prend environ 0,6 seconde pour compléter une application similaire, ce qui est environ 20 fois plus rapide que DECO. Toutes choses égales par ailleurs, TC sera plus rapide.

sécurité: Les attaques contre l'enclave Intel SGX (attaques par canal secondaire) fonctionnent et peuvent causer de réels dommages aux participants au contrat intelligent. Concernant DECO, des attaques liées à l'injection de trafic sont possibles, mais l'utilisation d'un proxy réduit à néant ces attaques. DECO est donc plus sûr.

coût de: Le coût de l'équipement prenant en charge Intel SGX est supérieur au coût de mise en place du protocole dans DECO. C'est pourquoi TC est plus cher.

Praticité: Pour travailler avec Town Crier, un équipement spécial prenant en charge TEE est requis. Par exemple, Intel SGX est pris en charge sur la famille de processeurs Intel Core de 6e génération et versions ultérieures. DECO vous permet de travailler avec n'importe quel équipement, bien qu'il existe un paramÚtre DECO utilisant TEE. Selon le processus de configuration, la négociation à trois de DECO peut prendre un certain temps, mais ce n'est rien comparé à la limitation matérielle de TC, donc DECO est plus pratique.

Conclusion

En regardant les deux oracles sĂ©parĂ©ment et en les comparant sur quatre critĂšres, il apparaĂźt clairement que Town Crier est infĂ©rieur Ă  DECO sur trois points sur quatre. DECO est plus fiable du point de vue de la sĂ©curitĂ© de l'information, moins cher et plus pratique, mĂȘme si la mise en place d'un protocole tripartite peut prendre un certain temps et prĂ©sente des inconvĂ©nients, par exemple des opĂ©rations supplĂ©mentaires avec des clĂ©s de cryptage. TC est plus rapide que DECO, mais les vulnĂ©rabilitĂ©s liĂ©es aux attaques par canal secondaire le rendent vulnĂ©rable Ă  la perte de confidentialitĂ©. Il faut tenir compte du fait que DECO a Ă©tĂ© introduit en janvier 2020 et qu’il ne s’est pas Ă©coulĂ© suffisamment de temps pour le considĂ©rer comme sĂ»r. Town Crier est attaquĂ© depuis 4 ans et a subi de nombreux tests, son utilisation dans de nombreux projets est donc justifiĂ©e.

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster