Détection Des Vols D'essences Dans Les Contrats Intelligents Sur La
Total Page:16
File Type:pdf, Size:1020Kb
i Détection des vols d’essences dans les contrats intelligents sur la plateforme Ethereum par Hong Huynh Essai présenté au CeFTI en vue de l’obtention du grade de maître en technologies de l’information (maîtrise en génie logiciel incluant un cheminement de type cours en technologies de l’information) FACULTÉ DES SCIENCES UNIVERSITÉ DE SHERBROOKE Longueuil, Québec, Canada, décembre 2019 ii Sommaire L’architecture des chaînes de blocs possède plusieurs caractéristiques particulières. Celle-ci est basée sur un réseau distribué, une méthode de consensus pour synchroniser les informations entre les membres, une cryptographie et un registre de données quasi immuable. En 2015, l’arrivée d’Ethereum a permis le déploiement de « contrats intelligents », c’est-à-dire des applications sur les chaînes de blocs. Le développement de contrats intelligents requiert la compréhension de plusieurs nouveaux concepts. En effet, une fois déployées, ces applications ne sont pratiquement plus modifiables puisqu’elles résident dans un registre de données immuables. De plus, chaque invocation nécessite un coût calculé en essences qui doit être acquitté par l’appelant. Un contrat intelligent frauduleux peut se servir de plusieurs approches pour soutirer un maximum d’essences aux utilisateurs avec peu d’effort. Ce comportement est défini comme étant un vol d’essences. Dans cet essai, l’exécution symbolique a été utilisée pour détecter les vols d’essences dans les contrats intelligents de la plateforme Ethereum. Cette méthode formelle a déjà été exploitée avec succès par d’autres chercheurs pour déceler plusieurs failles dans les contrats intelligents [1] [2] [3]. L’hypothèse de l’essai stipule que cette technique est en mesure de détecter les vols d’essences avec une efficacité d’au moins 80 %. Un nouvel outil basé sur l’exécution symbolique, nommé Sherlock [4], a été développé et a analysé un échantillonnage de 40 contrats intelligents. Sherlock est apte à déceler les vols d’essences avec une efficacité allant jusqu’à 82,5 %. L’hypothèse de départ est de ce fait validée. Pour atteindre un haut taux d’efficacité, Sherlock nécessite toutefois un temps d’analyse élevé de plusieurs heures. De plus, l’échantillonnage effectué comprend des contrats intelligents déployés au plus tôt un an avant la publication de l’essai. Cependant, la précision de l’outil peut être augmentée en améliorant le module d’estimation d’essences et aussi en tenant compte des appels effectués entre contrats intelligents. iii Remerciements Cet essai est le résultat d’un long parcours durant lequel j’ai eu la chance de vivre de multiples expériences enrichissantes. Je suis alors très reconnaissant envers toutes les personnes ayant contribuées de proche ou de loin à rendre ce cheminement possible. J’aimerais d’abord remercier tout le personnel du CeFTI en commençant par M. Cardinal qui m’a permis de continuer mes études dans un programme des plus intéressants. Cet essai ne serait pas possible sans l’aide de M. Échelard et de Mme Legault qui m’ont transmis toutes les connaissances et notions nécessaires à la rédaction de l’essai. Évidemment, j’aimerais remercier mon directeur de recherche, M. Bévo Wandji qui a toujours été disponible et pour tout le temps consacré à la lecture et à l’amélioration de l’essai. Ce parcours a grandement élargi mes connaissances et j’aimerais alors remercier tous les chargés de cours du CEFTI pour leur dévouement à l’enseignement. J’aimerais également remercier ma famille qui m’a toujours encouragé du début jusqu’à la fin et plus particulièrement ma femme qui m’a convaincu de poursuivre mes études et soutenu durant tout le processus. iv Table des matières Sommaire .............................................................................................................................. iii Remerciements ...................................................................................................................... iv Table des matières ................................................................................................................. v Liste des tableaux ................................................................................................................. viii Liste des figures ...................................................................................................................... x Glossaire ............................................................................................................................... xi Liste des sigles, des symboles et des acronymes ................................................................. xiii Introduction ............................................................................................................................. 1 Chapitre 1 Mise en contexte ................................................................................................... 3 1.1 La cryptomonnaie ........................................................................................................ 3 1.1.1 Architecture distribuée .......................................................................................... 4 1.1.2 Registre de données distribuées........................................................................... 4 1.1.3 La cryptographie ................................................................................................... 5 1.1.4 Les mineurs .......................................................................................................... 5 1.1.5 Les méthodes de consensus ................................................................................ 6 1.2 Les contrats intelligents ............................................................................................... 6 1.3 Ethereum : une chaîne de blocs 2.0 ............................................................................ 7 1.3.1 Développement et exécution des contrats intelligents ........................................... 7 1.3.2 Coûts de l’invocation des contrats intelligents ....................................................... 8 1.3.3 Failles dans l’invocation des contrats intelligents .................................................. 8 1.4 Les méthodes formelles .............................................................................................. 9 Chapitre 2 Revue de la littérature.......................................................................................... 10 2.1 Méthodologie de recherche ....................................................................................... 11 2.1.1 Mots-clés utilisés ................................................................................................ 11 2.2 Formalisation de la machine virtuelle d’Ethereum (MVE) ........................................... 12 2.3 Traduction du code source et du code intermédiaire en F* ........................................ 13 v 2.4 Exécution symbolique et analyse statique du code intermédiaire .............................. 13 2.4.1 Détection de failles ............................................................................................. 13 2.4.2 Détection de pratiques de programmation inefficaces ......................................... 14 2.5 État actuel des recherches ........................................................................................ 14 Chapitre 3 Problématique ..................................................................................................... 16 3.1 Le coût d’utilisation des contrats intelligents .............................................................. 16 3.2 Les méthodes formelles ............................................................................................ 17 3.3 L’application des méthodes formelles aux contrats intelligents d’Ethereum ............... 17 3.4 Efficacité de l’exécution symbolique pour la détection des vols d’essences ............... 18 3.5 La question de recherche .......................................................................................... 19 3.5.1 Le schéma conceptuel et l’hypothèse ................................................................. 20 3.6 Limites ....................................................................................................................... 21 3.7 Conclusion ................................................................................................................ 21 Chapitre 4 Méthodologie ....................................................................................................... 22 4.1 Définition des comportements frauduleux de vol d’essences ..................................... 22 4.2 Critères de détection par l’exécution symbolique ....................................................... 23 4.2.1 Caractérisation d’un chemin d’exécution ............................................................. 24 4.2.2 Caractérisation des bifurcations frauduleuses..................................................... 25 4.2.3 Prédiction du prix d’un chemin d’exécution en essences .................................... 26 4.3 Création de l’instrument de mesure Sherlock ............................................................ 27 4.4 Validation du fonctionnement de Sherlock ................................................................. 28 4.5 Échantillonnage des contrats intelligents ................................................................... 29 4.6 Collecte des données ................................................................................................ 31 4.7 Analyse des résultats