FERMER
Image

La Blockchain, une technologie vraiment sûre ? Étude sous l’angle Cybersécurité

#experisit | 18/07/2018

Selon Gartner en 2018, 1% des DSI seulement aurait un projet de blockchain. Cette technologie est pourtant des plus innovantes aujourd’hui et est considérée, par nombre de spécialistes qui se sont penchés sur le sujet, comme une disruption majeure dans le monde de l’IT. Elle révolutionne les techniques comme elle pourrait révolutionner l’économie mondiale.

Nous n’allons pas ici nous pencher sur le succès ou non de telle cryptomonnaie, pas plus que nous n’allons parier sur la disparition d’intermédiaires comme les plateformes Paypal, Uber, Amazon, mais aussi les banques et les notaires, du fait de bouleversements que la technologie blockchain génère. Si certains intermédiaires disparaîtront, il est fort à parier que les grosses entreprises vont se transformer pour proposer de nouveaux services innovants (Facebook, Google, Amazon et Microsoft viennent d’annoncer la création d’une activité autour de la blockchain).

Nous allons axer notre réflexion sur la sécurité, car si la technologie permet de partager des données de manière « sécurisé(e) » et « inviolable« , elle n’est pas pour autant exempte de problèmes et nécessite de bien comprendre son fonctionnement pour ne pas mettre en risque (péril) son activité.

Qu’est-ce que la blockchain ?

Contrairement aux idées reçues, la technologie n’est pas toute jeune. En 1991, W. Scott Stornetta et Stuart Haber, deux employés de Bellcore (société de R&D en télécommunication d’AT&T), publient un article dans le Journal of Cryptologie sur l’horodatage d’un document numérique à l’aide d’une chaîne. L’idée est de construire un « grand livre » des modifications apportées à un document numérique.

Cette technologie est reprise quelques années plus tard par Satoshi Nakamoto qui adopte le concept pour Bitcoin et qui permet de mettre en place un système de paiement pair-à-pair sans tiers dès 2009. Le Bitcoin devient ainsi le premier aboutissement de la technologie blockchain à trouver le succès car il fonctionne sans autorité de contrôle et met en place un mécanisme permettant d’éviter les doubles dépense.

Dans les faits cette technologie permet de disposer donc d’un « grand livre de compte » (base de données distribuée) auquel tout le monde accède. Des blocs sont constitués et liés les uns aux autres (la « chaine »).

Si l’on se penche sur les aspects cybersécurité maintenant, la mise en place d’une blockchain utilise les techniques qui permettent d’enregistrer des faits « sûrs » et « inviolables ». Plusieurs points sont structurants et la caractérisent :

  • La base de données est constituée d’un ensemble de blocs (plusieurs faits/transactions) qui sont chainés et qui constituent le registre.
    Pour réaliser le chaînage, chaque bloc ajouté contient dans son en-tête le « hash » du bloc précédent. Le hachage des blocs et l’intégration dans chacun du hash du bloc précédent rend théoriquement inviolable la modification a posteriori de la chaîne.

 

  • La base est répliquée par l’ensemble de la communauté qui accède à la blockchain. On peut donc estimer que le registre est protégé contre la falsification ou la modification car chaque machine (nœud) porte toute la chaîne. Corrompre la blockchain peut se faire si l’on dispose de plus de la moitié des nœuds. Si cela n’est pas impossible, cela nécessite une puissance de calcul importante (voir plus loin l’attaque des 51%). De même, la disponibilité du service est assurée par les multiples registres. Si un registre n’est plus accessible, les autres nœuds continuent à assurer le service.

 

  • Pour ajouter une transaction (un nouveau fait au registre), le fait doit être proposé par un « mineur » (il s’agit de nœuds qui ont ce rôle spécifique) qui a la charge de la vérification de la validité de la transaction. Pour ce faire, plusieurs méthodes existent pour l’obtention d’un consensus : la preuve de travail (proof of work), la preuve de possession (proof-of-stake), la preuve d’importance (proof of importance), le round-roubin,  Practical Byzantine Fault Tolerant. Une fois validé, le bloc est horodaté et ajouté à la blockchain.

Principe de la blockchain par Satoshi Nakamoto

  • La blockchain est transparente car chacun peut consulter l’ensemble des transactions qui la compose.
    Plusieurs techniques de cryptographies sont utilisées : fonctions de hash pour s’assurer de l’intégrité d’un bloc, utilisation de clés asymétriques pour signer les transactions (blocs).
    L’accès pouvant être ouvert à tous, on parle de blockchain publique ou partiellement ouvert pour les blockchains privées.

En 2013, Vitalik Buterin, utilise la technologie et définit le concept de smart contracts. Ces contrats sont en fait des applications qui exécutent automatiquement des actions définies. C’est cette notion de « smart contracts » qui permet d’imaginer que tout système qui nécessite un tiers de confiance est amené à disparaître (transfert d’actifs notamment comme les contrats de propriété, d’actions, etc).

Les mythes de la blockchain

 « La blockchain est inviolable » : Parmi les principes de la blockchain, l’utilisation d’un algorithme de consensus pour pouvoir « décider » de l’intégration d’un bloc de transactions dans la chaîne et éviter les doubles dépenses permet de se passer d’un tiers de confiance. L’algorithme « proof of Work«  est aujourd’hui un des plus utilisé car un des plus simples à mettre en œuvre.

Plus il y a de nœuds, plus la sécurité est garantie. Il ne faut cependant pas généraliser car des attaques des 51% ont déjà été réalisées avec succès (voir plus bas). Par ailleurs, un travail récent de Emin Gün Sirer et ses collègues de l’Université Cornell montre que Bitcoin comme Ethereum ne sont pas aussi décentralisés qu’on peut l’imaginer. Ils ont constaté que les quatre principales exploitations minières Bitcoin et les trois plus gros mineurs d’Ethereum possédaient plus de 50% de la puissance de minage.

 

« Personne ne contrôle une blockchain » : c’est oublier que derrière cette blockchain, il y a des développeurs. En 2010, une faille dans le protocole du Bitcoin a permis l’émission de milliards de bitcoins. Une fois repérés, ceux-ci furent retirés de la circulation. Nous avons déjà assisté à des « hard forks » rendus nécessaires suite à des piratages. Si cela a quelque peu remué les puristes des blockchains, l’histoire a pu être réécrite.

 

 

 « L’anonymat est garanti » : On entend souvent dire que les transactions sont anonymes. C’est oublier que parmi les principes de la blockchain, on a un registre des transactions qui est visible par tous. De même, si l’adresse IP d’un utilisateur n’est pas clairement intégrée, elle n’est pas pour autant anonyme. En effet, cette adresse n’est pas clairement intégrée à la transaction mais elle est « pseudonymisée« . Une université a par ailleurs montré qu’on pouvait trouver l’adresse IP en profitant de faille de codage dans Bitcoin. Des alternatives comme Monero, Zcash et Dash existent et sont construites sur le principe de l’anonymat. Pour résoudre cette problématique, ils mettent en place des mécanismes d’adresses furtives.

 

 

 « Les transactions et les communications sont sécurisées » : dans ce cas, tout va dépendre de l’implémentation de la blockchain. Pour le Bitcoin notamment, les transactions comme les communications ne sont pas chiffrées.

Les attaques connues

De par sa conception, on peut imaginer que la blockchain est sécurisée. Pourtant, régulièrement, des attaques permettent de mettre à mal les blockchains.

  • L’attaque des 51% (ou attaque Goldfinger) : pour ajouter des blocs à la chaine actuelle, la plupart des blockchains utilisent un algorithme de « proof of work » (preuve de travail) ou de « proof of stake » (preuve d’enjeu). En disposant de plus de 50% de la puissance totale de calcul de minage, modifier la blockchain et la rendre plus longue de façon à ce qu’elle soit légitime devient assez facile. Si cela a semblé pour tout le monde hypothétique, plusieurs hacks ont déjà eu lieu (bitcoin gold, Monacoin).

 

  • L’attaque Sybil : attaque basée sur le leurre d’identité. L’attaquant va essayer de remplir le réseau avec des nœuds qu’il contrôle. Il créé donc plusieurs nœuds avec la même adresse IP. Avec ce mécanisme, il peut réaliser une attaque des 51% ou perturber l’émission/la réception de blocs en inondant le réseau de mauvaises transactions. Pour éviter ce type d’attaque, certains font appel à une autorité de certification chargée de rendre impossible les utilisateurs multiples depuis une même adresse. Dans d’autre cas, le programme chargé de gérer les nouveaux blocs procède à des vérifications entre la puissance de calcul et la puissance du mécanisme de « proof-of-work ».

 

  • L’attaque d’éclipse (eclipse attack) : l’attaquant va prendre le contrôle des communications d’un nœud et le tromper. Il contrôle les informations que la victime peu recevoir et envoyer. Cette attaque a pour objectif de provoquer une séparation de nœuds en plusieurs groupe et de pouvoir générer une blockchain parallèle. Difficile dans ce cas de déterminer la blockchain valide.

 

  • Les attaques DDos : sans véritable impact sur la blockchain, si ce n’est une paralysie temporaire du réseau, ce type d’attaque est relativement courant et vise à paralyser un ou plusieurs nœud(s) en inondant ceux-ci de trafic réseau.

 

  • Le lien avec le « monde réel » : la plupart des hacks de crypto-monnaie se font en général par l’attaque des plateformes satellites aux blockchains. Elles servent généralement à gérer les portefeuilles et détiennent la plupart du temps des clés privées qui permettent par exemple de certifier le propriétaire d’une transaction. Ainsi, en 2015, la plateforme d’échange de NEM Coincheck a été victime d’un piratage de plus de 500 millions de dollars.

 

Alors sûr – Pas sûr ?

Comme on a pu le voir au travers des attaques récentes, la technologie blockchain est encore aujourd’hui « faillible ».
Sans revenir sur le fait que, comme pour tout projet, mesurer les risques et s’assurer de la mise en place de contrôles de sécurité est un prérequis… pour qu’un projet utilisant une blockchain soit un succès, il est nécessaire d’être attentif aux faiblesses des blockchains actuelles :

  • Les concepts qui sous-tendent cette technologie sont complexes et les experts rares
  • La décentralisation rend difficile les évolutions du système
  • La plupart des mises en œuvre pratiques du système de validation des transactions se révèlent lentes (jusque 10 minutes pour les Bitcoin).

Il est important de se poser la question de la pertinence de cette technologie au cas d’usage, notamment lorsque l’on parle de blockchain privée.
Cependant, dès lors que la traçabilité, la résilience, la transparence ou un fonctionnement sans tiers de confiance est nécessaire, c’est une technologie utile pour sécuriser des transactions  publiques.

Il reste alors à mesurer l’effort de mise en oeuvre à fournir et à intégrer le fait qu’il n’y a pour le moment pas d’algorithme de consensus sans risque. Les pirates passent souvent par ce biais et réagir n’est pas simple car cela peut poser des problématiques d’évolution (voir cas du hard fork) ou des problèmes légaux car il faudra nécessairement déterminer les responsabilités… Sans gouvernance cela devrait s’avérer délicat.

 

Laurent Hareau – Directeur Cybersécurité

FERMER