Ethereum résistera-t-il à tous ses détracteurs? - Depuis la création du réseau Ethereum en 2014, et notamment une fois celui-ci relativement bien développé et installé, de nombreux hackers et autres saboteurs ont tenté par tous les moyens d'attaquer le logiciel client d'Ethereum, en vain.
De nombreux travaux et débats tentent d'estimer le niveau de sécurité procuré par la preuve de travail et par la preuve d'enjeu, sans qu'une réponse consensuelle n'en émane. Une chose est sûre : la complexité de la preuve d'enjeu s'accompagne d'un nombre plus grand de vecteurs d'attaque potentiels sur le réseau.
Preuve de travail vs preuve d'enjeu : quelles différences?
La Blockchain Ethereum aura donc vécu un peu plus de 7 ans en fonctionnant à l'aide de la preuve de travail ou proof of work (PoW). Participant à l'établissement d'un consensus décentralisé sur l'historique des transactions du réseau et la création de nouveaux blocs, ce mécanisme permet de sélectionner l'acteur dont le rôle sera d'intégrer le prochain bloc à la chaîne. Pour ce faire, une compétition entre cartes graphiques avec pour objectif de trouver une suite de 0 et de 1 de 256 bits commençant par un certain nombre de zéros. Ce dernier paramètre sera établi en fonction du niveau de difficulté considéré comme adéquat, après évaluation tous les 2016 blocs, afin de produire un bloc toutes les 10 minutes en moyenne. Pour espérer trouver le résultat et remporter la manche, il suffit de réaliser le calcul suivant :
- application de la fonction de cryptographie asymétrique SHA-256 sur l'en-tête de bloc du dernier bloc de la chaîne, laquelle contient un nombre aléatoire et unique appelé nonce, et expliquant que chaque tentative produise un résultat différent
- application une seconde fois de SHA-256 sur le résultat obtenu précédemment
Ce mécanisme procure de facto une sécurité et une résistance à la censure énorme dès lors que le réseau est suffisamment développé et décentralisé.
À moins d'un retournement de situation avec reprise de la preuve de travail dans le futur - hypothèse qu'il est impossible d'invalider bien que très peu vraisemblable - Ethereum devrait s'établir de façon pérenne en preuve d'enjeu.
La preuve d'enjeu constitue en réalité un mécanisme de consensus plus complexe que la preuve de travail, qu'il était impossible de déployer sereinement au moment du lancement d'Ethereum. Par ailleurs, le PoW avait déjà fait ses preuves depuis plusieurs années sur Bitcoin, il était donc logique de s'en servir afin de débuter l'aventure des contrats intelligents. Il aura finalement fallu plusieurs années de recherches et de simulations sur plusieurs testnets avant d'officialiser le passage à la preuve d'enjeu le 15 septembre 2022 lors du « Merge », finalisé grâce à la mise à jour « Paris ».
Plusieurs éléments sont à évaluer afin de comparer le réseau Ethereum originel à sa version 2.0 intégrant la fameuse beacon chain fonctionnant en preuve d'enjeu.
Décentralisation
Difficile d'apporter une réponse formelle puisque de nombreux paramètres sont imbriqués et il n'existe pas d'échelle standardisée de décentralisation. Cependant, la preuve d'enjeu apparaît comme pouvant procurer une décentralisation plus aboutie.
En effet, l'industrialisation du secteur du minage a nécessairement entraîné une réduction du nombre d'acteurs impliqués. Bien que tout le monde soit techniquement en mesure de débuter une activité de minage, les particuliers et les petites entreprises implantés dans des zones où le prix du kWh n'est pas concurrentiel sont d'emblée disqualifiés puisque non rentables. Les récompenses reçues sont bien insuffisantes et ne permettent pas de compenser les dépenses nécessaires à l'activité. Il est toutefois possible d'investir dans un pool de minage, permettant de mutualiser les ressources de plusieurs personnes. Dans ce cas, vous ne vous pouvez pas vous considérer totalement indépendant dans votre activité puisque vous dépendez d'une entité tierce, sujette à se développer et exercer une forme de lobbying d'une manière ou d'une autre.
Participer à un système de preuve d'enjeu est en revanche beaucoup plus accessible. Le coût de création d'un noeud validateur sur Ethereum est fixé à 32 ETH pour tout le monde. Le rendement généré par un noeud est sensiblement identique pour tout le monde. Il varie légèrement, selon que ledit noeud a proposé un ou des blocs durant la période évaluée ou non. Ethereum n'est pas pour autant exempt de tout risque de centralisation. Il existe effectivement une concentration importante des acteurs impliqués dans le staking mutualisé, avec par exemple Lido ou Rocketpool. Ceux-ci détiennent une part non négligeable du nombre total d'ETH verrouillés sur la beacon chain. Ils n'ont par contre qu'un pouvoir restreint sur les ETH mis en jeu et les noeuds qui en résultent. L'idéal reste bien sûr de déployer un noeud validateur localement sur un ordinateur personnel, permettant une plus grande souveraineté et une meilleure décentralisation. Il reste malgré tout une barrière à l'entrée puisqu'il est nécessaire de détenir 32 ETH et d'avoir les compétences techniques pour faire tourner un noeud personnel.
Notons tout de même que certaines blockchains utilisant la preuve d'enjeu ont fixé un seuil très élevé de jetons requis pour la création d'un noeud validateur, entraînant nécessairement une plus grande centralisation.
L'absence de nécessité d'un matériel performant et coûteux comme pour le minage (pour lequel le matériel devient rapidement obsolète) rend nécessairement l'infrastructure des acteurs du réseau plus résiliente dans le temps.
Sécurité
À l'heure actuelle, il est difficile de déterminer qui de la preuve de travail et de la preuve d'enjeu confère le plus haut niveau de sécurité. Une chose est sûre : l'épreuve du temps est le témoin le plus objectif de la sécurité d'un réseau. Il est donc difficile de comparer le niveau de sécurité de Bitcoin et d'Ethereum, l'un étant plus âgé d'environ 6 ans et demi.
Plusieurs éléments structurels permettent d'évaluer le niveau de sécurité:
- Surface d'attaque : Ethereum possède une architecture bien plus complexe que Bitcoin, entraînant forcément un nombre de points de défaillances plus élevé. Il est constitué de deux réseaux fonctionnant en parallèle, et nécessitant donc deux logiciels clients : un client d'exécution et un client de consensus. L'attribution à un noeud validateur de la mission de proposer le prochain bloc étant réalisé légèrement avant la proposition elle-même, il existe un risque théorique d'attaque par déni de service mettant hors-service le noeud validateur ciblé. La complexité d'un réseau décentralisé fonctionnant en preuve d'enjeu le rend également plus fragile vis-à-vis de bugs dans le code. Les années de recherche sur la preuve d'enjeu ont cependant permis de renforcer le système progressivement. Ethereum a également patienté 2 ans entre le lancement de la beacon chain et le Merge, pour plus de sécurité. Pour rappel, le Merge a consisté en l'intégration de la beacon chain à la couche d'exécution. Par ailleurs, les logiciels clients d'Ethereum sont implémentés dans cinq langages différentes, augmentant ainsi la résilience. Il existe néanmoins, comme dans le cas de la preuve de travail, un risque d'attaque par concentration des ressources.
- Coût de l'attaque : sur un réseau utilisant la preuve de travail, un attaquant a besoin d'une concentration de plus de 50% de la puissance de calcul afin de pouvoir effectuer une attaque sur la chaîne et effectuer une double dépense en construisant une chaîne parallèle plus rapidement que le réseau honnête, sans inclure une transaction effectuée sur la chaîne native. Il reste toutefois possible d'être confronté à une situation de double dépense si l'attaquant possède moins de 50% de la puissance informatique et que la personne recevant la première transaction la considère comme valide avec une quantité trop faible de confirmations (plus de détails dans le white paper du Bitcoin). Sur Ethereum, fonctionnant avec la preuve d'enjeu, il est nécessaire de réunir le vote positif de plus de 66% des validateurs actifs afin de finaliser la création et l'insertion d'un bloc. Il est toutefois possible d'attaquer le réseau avec moins que ça, conduisant par exemple à un retard de production de bloc. La proportion de noeuds validateurs requise afin d'altérer le bon fonctionnement du réseau Ethereum doit être supérieure à 33%. Néanmoins, la réalisation d'une double dépense et la modification du passé et du futur de la chaîne nécessité de détenir plus de 66% des noeuds du réseau. Ainsi, mentir dans une chaîne en preuve d'enjeu nécessite le contrôle d'une plus grande proportion des ressources participant au consensus.
Impact monétaire et environnemental
L'émission monétaire induite par un réseau en preuve de travail nécessite d'être suffisante pour encourager les mineurs à déployer des ressources pour in fine sécuriser le système. Elle fonctionne souvent selon un système de halving, diminuant de façon régulière par 2 la récompense selon une échéance prédéterminée. Le réseau est donc nécessairement inflationniste, bien que celle-ci puisse diminuer rapidement au point de quasiment disparaître.
La sécurisation d'une blockchain fonctionnant en preuve d'enjeu nécessite une émission monétaire plus faible. Il n'y a effectivement aucun matériel informatique coûteux à amortir, ni facture d'électricité massive à régler. Ethereum constitue une belle démonstration de cette affirmation : les récompenses ont été drastiquement diminuées, tout en conservant la production d'une incitation suffisante au bon fonctionnement du réseau. L'émission monétaire réduite s'associe par ailleurs à la destruction d'une partie des frais de transactions, rendant le réseau déflationniste en cas d'utilisation suffisante. La supply totale est restée sensiblement stable pendant les 3 mois suivant le Merge, et ce malgré un marché baissier grandement délaissé.
Le système de preuve d'enjeu présente également la vertu de ne nécessiter qu'une faible consommation énergétique. Encore une fois, le réseau Ethereum représente un témoin direct et sa dépense énergétique a diminué de 99.9%, passant de quasiment 80 TWh/an à presque rien.
Le système en preuve de travail incite quant à lui à déployer toujours plus de puissance informatique. L'augmentation de cette dernière est réelle et quantifiable, bien que contenue par l'amélioration constante de l'efficience énergétique du matériel de minage.
Principales attaques
En exploitant les différents points de faiblesse potentiels du réseau Ethereum, les personnes malveillantes peuvent avoir différents objectifs. Rappelons qu'il est tout à fait impossible de générer de nouveaux ethers, d'en supprimer ou d'en détourner d'un compte ciblé sans transaction signée.
Les attaques ciblant le fonctionnement d'Ethereum permettent techniquement d'obtenir l'un des résultats suivant :
- Délai de finalité : attaquant cherchant à nuire à Ethereum sans revendication financière. Il peut s'agir de retarder la soumission d'un bloc, ou sa validation. De telles attaques, a fortiori si elles sont répétées, risquent d'être délétères vis-à-vis de la confiance produite par le réseau.
- Réorganisation : constitue un réarrangement de l'ordre des derniers blocs, voire un ajout de bloc ou un retrait de blocs non encore validés. Un tel phénomène pourrait permettre une double dépense et engendrer une censure en refusant l'inclusion de certaines transactions via le MEV. Dans sa forme la plus destructrice, la réorganisation peut induire la suppression ou la modification de blocs préalablement validés.
- Double finalité : situation dans laquelle 2 blocs sont validés simultanément, aboutissant à une scission (fork) de la chaîne canonique, et nécessitant une discussion off chain afin de décider de la chaîne à considérer comme principale.
Détaillons maintenant les principales attaques envisageables sur le réseau Ethereum.
Attaques de la structure sociale sur laquelle repose Ethereum
Le terme « layer 0 » renvoie aux fondations sous-jacentes au réseau en lui-même, à savoir l'environnement dans lequel il se développe.
La dimension open source et publique d'Ethereum est un élément capital à sa résistance vis-à-vis de ce type d'attaque. Toute personne participant activement et de façon désintéressée au réseau représente donc un rempart contre une attaque layer 0.
Ces attaques nécessitent généralement une faible expertise technique ainsi que peu de capital.
Parmi les attaques de type layer 0, citons :
- Attaque ciblée de développeurs participant au développement du protocole, aboutissant à une désertification progressive de l'équipe technique
- Régulation excessive de la part des Banques Centrales ou des États, conduisant à un abandon du réseau par les utilisateurs
- Infiltration d'acteurs malveillants dans l'équipe de développement d'Ethereum
- Campagnes de communication mensongères discréditant le réseau et ses applications
- Corruption de développeurs
La mise en place d'une gouvernance efficace apparaît comme nécessaire afin de se prémunir au mieux de ce type de risque.
L'attaque peut également être menée de concert avec une attaque plus conséquente sur le réseau lui-même, rendant ainsi plus difficile voire impossible la résolution sociale du problème technique induit.
Attaques avec une quantité faible d'ETH stakés
Parmi les nombreuses recherches effectuées sur le sujet, un article publié en 2021 à l'université de Harvard détaille précisément les attaques qu'il est possible de mener en détenant une proportion faible (nous entendons par là moins de 33%, l'étude de l'article se focalisant sur un attaquant possédant 30%) des ETH stakés sur la beacon chain.
Sont ainsi réalisables :
- Réorganisation : extrêmement difficile à réaliser avec une quantité faible d'ETH stakés, ces attaques nécessitent généralement la connaissance d'informations sensibles relatives aux autres validateurs. Il reste théoriquement possible d'effectuer une réorganisation en supprimant de la chaîne le bloc n-1 au moment de la proposition du bloc n.
- Délai de finalité : dans le cas où l'attaquant est le proposeur d'un bloc de début ou de fin d'époque (pour rappel, une époque correspond à 32 slots pouvant chacun contenir un bloc), il peut résulter un fork entraînant un délai de finalité. Plus le montant staké est important, plus les chances de succès sont grandes. Il est également nécessaire de détenir des informations sur les autres validateurs afin de pouvoir entreprendre la réalisation d'un délai de finalité avec une faible quantité d'ETH.
- Déni de service conduisant à une censure vis-à-vis de validateurs spécifiques, via un spam intensif des validateurs identifiés légèrement en avance comme prochain constructeur de bloc. Cet type d'attaque nécessite cependant des conditions de réseau spécifiques et apparaît comme quasi-impossible avec un faible montant d'ETH stakés.
Mention spéciale pour l'attaque de type ''long range''. Réalisable par un validateur ayant participé au genesis block et construisant depuis une chaîne en parallèle, elle consiste à convaincre les autres validateurs de migrer sur sa chaîne. Elle est impossible sur Ethereum du fait de la présence de ''checkpoints'' permettant une validation régulière de la chaîne faisant foi.
Attaques par concentration du staking
Contrôle de 33% ou plus du nombre total d'ETH stakés
Posséder plus de 33% des ETH stakés permet d'augmenter les chances de succès des attaques citées précédemment.
Le seuil retenu de 33% s'explique par le fait qu'il n'est plus nécessaire de disposer d'informations concernant les autres validateurs afin de réaliser un délai de finalité, et indépendamment du fait d'être le proposeur du bloc ou non. En effet, sachant qu'il est nécessaire de réunir une majorité de 66% pour le vote des validateurs afin de finaliser l'inclusion d'un bloc, il devient impossible de réunir la majorité suffisante et aucun nouveau bloc ne peut en théorie être validé.
Ethereum permet de résoudre cette problématique grâce à un système de détection d'inactivité permettant de sanctionner tout validateur échouant à réaliser la production du bloc comme il le devrait. L'attaquant verra ainsi son solde d'ETH stakés diminuer jusqu'à redescendre sous le seuil critique des 33%. Cette attaque est donc très chère et la perturbation du réseau induite est nécessairement temporaire.
Il devient également beaucoup plus simple d'effectuer la réorganisation de suppression d'un bloc décrite dans le paragraphe précédent.
Sans rentrer dans les détails techniques, il est également possible pour un attaquant de réaliser une double finalité en ne contrôlant que 33% du nombre total d'ETH stakés, à condition de :
- Pouvoir contrôler la synchronisation des informations diffusées sur le réseau
- Sacrifier l'ensemble des ETH mis en jeu.
Contrôle de 50% ou plus du nombre d'ETH stakés
Avec un contrôle de 50% des ETH stakés sur la beacon chain, il devient possible de créer un fork de 2 chaînes identiques, puis de voter en contradiction avec les validateurs honnêtes sur la question du choix de la chaîne à adopter. Ceci aurait pour effet un délai de finalité potentiellement infini. Le layer 0 permettrait alors de rétablir un consensus.
Ce risque apparaît comme purement théorique, devant la quasi-impossibilité d'obtenir une égalité parfaite lors du processus de vote.
Détenir plus de 50% permet en revanche de contrôler le choix du fork à suivre. Il devient également possible de réaliser des réorganisations ne nécessitant aucune information sur les autres validateurs. L'attaquant peut donc censurer des transactions et réaliser des organisations intra-blocs afin d'augmenter les récompenses de frais de transaction.
Le layer 0 représente ici la principale défense, capable de décider d'établir un fork minoritaire comme chaîne principale.
Contrôle de 66% ou plus du nombre d'ETH stakés
Détenir la majorité suprême de 66% change radicalement les couleurs du décor. Il devient possible de finaliser les blocs, et donc la chaîne souhaitée en suivant le processus classique de vote. L'attaquant contrôle ainsi constamment le contenu des blocs ajoutés à la chaîne. Il a également toute liberté pour effectuer une double dépense, réorganiser la chaîne et censurer les transactions non désirées.
Par rapport à un acteur détenant 51% des ETH stakés, il devient possible d'effectuer des réorganisations de blocs anciennement validés, ainsi que de contrôler la construction future de la chaîne.
Dans un tel scénario, il resterait possible d'utiliser le consensus social pour voter l'annulation de toute ou partie de la chaîne, afin de restaurer un réseau assaini débarrassé de l'attaquant.
Attaques de contrats intelligents
À l'inverse d'une situation mettant en péril le réseau Ethereum dans les fondements qui le constituent, l'attaque de contrats intelligents constitue une attaque des couches applicatives construites au-dessus du réseau. Il ne s'agit donc pas d'attaques d'Ethereum à proprement parler.
Les failles sont nombreuses et le nombre de hacks en témoigne. La finalité reste dans tous les cas bien moins dramatique que les attaques de réseau. La perte des actifs déposés sur le contrat constitue le scénario ubiquitaire de ce type d'attaques.
Vous l'aurez compris, les méthodes théoriques pour attaquer Ethereum sont nombreuses et diverses. Ce constat nécessite néanmoins d'être nuancé. La grande majorité des attaques, notamment les plus graves, sont sans aucun doute déjà irréalisables aux vues de l'état de développement du réseau Ethereum. Par ailleurs, une telle attaque est toujours économiquement délétère, nécessitant le sacrifice d'une partie ou de tous les fonds engagés, ou alors un investissement tel que les bénéfices ne valent pas le risque encouru. Certains points de faiblesse existent tout de même et justifient de réfléchir constamment aux solutions envisageables.