Intégrer la sécurité dans les applications de blockchain – 1re partie : mode de fonctionnement d'une blockchain avec clés privées

Par Stephen Evanczuk

Avec la contribution de Rédacteurs nord-américains de DigiKey

Note de l'éditeur : Les détails de la technologie blockchain et ses méthodes de transaction sont complexes, mais la 1re partie de cette série en deux parties fournit une présentation de la structure de la blockchain et de son processus de transaction. Elle permet ainsi de comprendre pourquoi la protection des clés privées constitue la base de la sécurité de la blockchain. Elle présente ensuite une solution clés en main pour la sécurisation des clés privées. La 2e partie explique comment les développeurs peuvent simplifier la protection des transactions de blockchain à l'aide de cette solution matérielle clés en main.

Les problèmes de sécurité ont entraîné le développement de la technologie blockchain (chaîne de blocs), connue par de nombreux développeurs dans le contexte des cryptomonnaies. Cependant, la technologie blockchain peut également offrir aux développeurs une infrastructure sécurisée dotée d'une applicabilité étendue. Son architecture décentralisée ne nécessite aucune autorité centrale et se base plutôt sur des clés privées et des méthodes cryptographiques pour protéger les ressources et leur échange entre les parties. Par conséquent, la sécurité d'un système de blockchain dépend essentiellement de la sécurité des clés et de leur utilisation adaptée dans des algorithmes fiables.

Même s'il est facile de trouver des algorithmes adaptés, leur implémentation nécessite une expertise et une expérience considérables pour développer une solution sécurisée et l'intégrer dans l'application cible. Les développeurs ont besoin d'une approche plus accessible pour assurer la sécurité des clés dans les applications de blockchain émergentes.

Cet article décrit brièvement l'importance de la blockchain et le mode de fonctionnement de la technologie avant de présenter une solution matérielle d'Infineon Technologies pour la sécurité de la blockchain.

L'émergence de la blockchain

La technologie blockchain a conquis presque la totalité des segments de la société avec des applications aussi diverses que les cryptomonnaies, la protection de l'identité, la gestion de l'approvisionnement ou encore le scrutin. Souvent qualifiée de technologie à registre distribué, elle se démarque par sa combinaison de la décentralisation, de l'authentification et de la préservation des dossiers, avec sa capacité à se passer d'autorité centrale pour la surveillance ou d'intermédiaire pour l'exécution des transactions.

Les institutions financières s'intéressent à son potentiel quant aux mécanismes de paiement plus rapides et plus économiques que ceux proposés par les technologies et les pratiques existantes. Outre la technologie financière, les entreprises attachées à la validation de l'identité et à la traçabilité des transactions s'intéressent à la capacité de la blockchain à conserver une trace authentifiée et vraiment immuable (invariable) des dossiers. Cette immuabilité de la blockchain repose sur sa structure, tandis que son authenticité dépend du mode d'exécution des transactions.

À la base, cette technologie dépend essentiellement de la capacité de protection des clés secrètes utilisées dans la construction des blocs de transfert des transactions. Même si cet article n'entre pas dans les détails spécifiques de la technologie blockchain et de ses méthodes de transaction, un bref examen de la structure de la blockchain et de son processus de transaction peut fournir le contexte nécessaire pour comprendre l'importance cruciale de la protection des clés privées pour la sécurité de la blockchain. Cependant, il convient de noter que les systèmes de blockchain réels se basent sur des structures et des protocoles beaucoup plus sophistiqués qu'il n'y paraît dans cette présentation conceptuelle et simplifiée de la technologie blockchain.

Chaînes immuables

Une blockchain, comme son nom l'indique, est une chaîne de blocs utilisée pour enregistrer un ensemble de transactions. Les détails structurels et les protocoles utilisés dans les blockchains publiques, comme Bitcoin et Ethereum, peuvent être très différents des blockchains privées utilisées par une organisation individuelle. Il existe également des blockchains semi-privées, dites blockchains avec droit d'accès, qui sont utilisées par un groupe collaboratif d'entités.

Toutefois, les bases du bloc dans chaque type de blockchain reposent sur quelques éléments communs (Figure 1) :

  • La valeur de hachage du bloc précédent (Prev_Hash), qui sert de liaison au sein de la chaîne de blocs
  • Les transactions associées du bloc, représentées par la racine (Tx_Root) d'un arbre appelé « arbre de hachage » ou « arbre de Merkle », qui contiennent les codes de hachage (Hashi) des transactions (Txi)
  • Un nombre aléatoire à usage unique servant à générer des blocs valides
  • Un horodatage permettant d'enregistrer l'heure de création du bloc

Schéma d'une vue simplifiée d'une blockchain de BitcoinFigure 1 : Dans une vue simplifiée d'une blockchain de Bitcoin, chaque bloc contient un horodatage, un nombre aléatoire à usage unique, un arbre de hachage ou arbre de Merkle et le code de hachage du bloc précédent (Prev_Hash) dans la chaîne. (Source de l'image : Wikimedia Commons/CC-BY-SA-3.0)

L'inclusion de la valeur Prev_Hash dans une blockchain permet d'assurer l'intégrité de l'ensemble de la blockchain. Si un pirate informatique modifie une transaction passée du blocn-1, cela invalide le code de hachage contenu dans le blocn, même si le pirate corrige l'arbre de Merkle et la racine Tx_Root du blocn-1. Comme décrit ci-dessous, la nature distribuée des systèmes de blockchain permet de résoudre ces problèmes de codes de hachage différents.

Le nombre aléatoire à usage unique joue un rôle dans les règles de création des blocs assurant le caractère immuable des blockchains. Les blockchains publiques comme les cryptomonnaies Bitcoin et Ethereum appliquent des contraintes artificielles au niveau de la valeur de hachage d'un nouveau bloc comme critère préalable à son utilisation dans l'extension de la chaîne. Lorsqu'un ensemble de transactions Prev_Hash est regroupé pour construire un nouveau bloc, ces règles nécessitent typiquement que le dernier code de hachage d'un nouveau bloc construit soit inférieur à une valeur maximale spécifiée. Les algorithmes de hachage utilisés dans les systèmes de blockchain génèrent le même résultat pour une même entrée, mais une modification de l'entrée, aussi infime soit-elle, renvoie à un résultat complètement différent et imprévisible.

Le nombre aléatoire à usage unique permet de modifier la valeur de hachage sans affecter les éléments essentiels au système de blockchain et à ses utilisateurs. Trouver le code de hachage conforme aux règles de la blockchain demande alors des efforts considérables, en utilisant différentes valeurs pour le nombre aléatoire à usage unique. En essayant une série de valeurs différentes pour le nombre aléatoire et en modifiant à chaque fois le hachage du bloc, on finit par trouver une valeur de hachage conforme aux règles. Ce n'est pas pour rien que ceux qui exécutent cette tâche sont appelés les mineurs de blockchain.

Ce dernier nombre aléatoire acceptable est appelé « preuve de travail », car il représente la réussite de tous les processus de minage impliquant des calculs intensifs. Ce processus et cette preuve de travail reflètent également la nature décentralisée des systèmes de blockchain. Après avoir trouvé un nombre aléatoire acceptable, le mineur gagne le droit d'étendre la blockchain avec le nouveau bloc créé (et la rémunération qui va avec dans le cadre du minage de cryptomonnaie).

Les autres mineurs et utilisateurs de blockchain peuvent facilement vérifier la validité du nouveau bloc en calculant le code de hachage avec le bloc et le nombre aléatoire trouvé par le mineur victorieux.

Dans l'architecture décentralisée des blockchains, des nœuds individuels au sein du réseau distribué de la blockchain analysent chaque bloc et chaque transaction par rapport à l'ensemble de règles appliqué lors du minage. Par conséquent, les blockchains peuvent s'auto-corriger, car les nœuds ignorent les blocs invalides en raison d'une erreur de construction ou d'un code de hachage non conforme ou simplement incorrect. Les cryptomonnaies et autres systèmes de blockchain exploitent pleinement cet aspect consensuel de la décentralisation des blockchains pour utiliser des mécanismes supplémentaires afin de compliquer la tâche des pirates qui essaient de corrompre le processus.

La combinaison de règles de preuve de travail impliquant des calculs intensifs et de processus consensuels de validation des blocs constitue un obstacle insurmontable pour un pirate souhaitant modifier une transaction passée au sein d'une blockchain. Pour pouvoir reconstruire une chaîne à partir du bloc modifié, le pirate doit réaliser la preuve de travail plus rapidement que la communauté de mineurs. Cette situation à elle seule force les pirates à se lancer dans une course à l'armement virtuelle, pour trouver toujours plus de ressources de traitement. S'ils utilisaient en premier lieu des unités de traitement graphiques sur ordinateurs personnels, ils sont ensuite passés aux FPGA, puis aux circuits intégrés spécifiques à des applications spécialisées. Outre la barrière de l'investissement massif dans des ressources informatiques, les exigences de consommation énergétique associées sont à elles seules prohibitives.

Après tous ces efforts de traitement et cette consommation énergétique, les pirates risquent toujours de voir leur chaîne modifiée être d'emblée rejetée par les mécanismes consensuels. Les différences importantes dans les résultats d'exécution des blocs sont rares, ce qui entraîne des perturbations majeures et notables dans le système de blockchain affecté, et peut nécessiter dans certains cas un embranchement divergent qui créerait une toute nouvelle version du système.

Authentification des transactions

Tout ce qui a été dit précédemment sur la structure et les processus de la blockchain suppose que les transactions représentées par un arbre de Merkle dans un bloc sont valides. En cas de présence de transactions non valides dans le système de blockchain, les efforts déployés pour la preuve de travail et la validation décentralisée des blocs sont réduits à néant. En effet, la principale motivation pour l'adoption de la technologie blockchain repose sur sa capacité à inclure de manière fiable un ensemble de transactions valides dans une blockchain immuable. De ce point de vue, la génération des blocs commence lorsque l'utilisateur demande une transaction. Au lieu de l'approbation de la transaction par une autorité centrale, la technologie blockchain repose sur des méthodes cryptographiques à l'aide de clés privées appartenant à l'utilisateur à l'origine de la requête.

Pour lancer une requête, les utilisateurs doivent signer numériquement leur requête à l'aide de leur clé privée, puis l'envoyer à un groupe contenant d'autres transactions non confirmées (Figure 2). Le mineur de blockchain récupère à son tour un ensemble de transactions non confirmées dans ce groupe et vérifie que chaque requête provient bien des propriétaires respectifs des clés privées, en utilisant la clé publique du demandeur incluse dans chaque transaction non confirmée. Dans le cas des cryptomonnaies, les mineurs ignorent rapidement les requêtes de transactions avec signatures non valides afin de pouvoir être plus rapides que les autres mineurs qui essaient de créer me prochain bloc de la blockchain.

Schéma des paires de clés privées/publiques fournissant la base d'une transaction de blockchainFigure 2 : Les paires de clés privées/publiques fournissent la base de la signature d'une transaction de blockchain par le demandeur (à gauche) et de la vérification par le mineur de blockchain (à droite). (Source de l'image : Wikimedia Commons/CC-BY-SA-3.0)

Assurer la confidentialité des clés privées

Dans l'une architecture décentralisée d'une blockchain, le fait de posséder la clé privée pour un ensemble de transactions confère le statut de propriétaire de ces transactions. Aucun représentant du service client n'est prêt à retracer des fonds perdus ou à se plier aux règles fédérales relatives à leur recouvrement. Par conséquent, les clés privées perdues ou volées sont souvent à l'origine des gros titres sur les pertes massives de cryptomonnaies. Et selon les prévisions des analystes, cette tendance va continuer.

La grande dépendance de la technologie blockchain aux clés privées pour la signature et la vérification des transactions exige la protection de ces données. Pour l'utilisateur, une clé mal sécurisée peut entraîner la perte de contrôle de sa participation dans un système de blockchain.

Des pirates ont déjà réussi à accéder à des clés privées non cryptées stockées sans précaution sur des dispositifs mobiles ou des ordinateurs en utilisant des attaques par hameçonnage et d'autres approches familières. Souvent, les clés cryptées sont tout autant vulnérables. Les logiciels de génération de clés permettent généralement aux utilisateurs de crypter la clé sur leur dispositif en saisissant une phrase de passe. Les chercheurs en sécurité ont découvert que cette approche présentait le même problème que toutes les approches basées sur des mots de passe : les utilisateurs cryptent souvent leur clé avec une phrase de passe faible et facile à deviner.

Même si l'utilisateur prend les mesures de précaution nécessaires pour sa clé privée, il se peut que cette dernière soit déjà compromise à cause d'erreurs dans le logiciel de génération de clés. Les générateurs de clé basés sur logiciel reposent souvent sur des générateurs de nombre aléatoire (RNG) fonctionnant selon des modèles prévisibles qu'un voleur peut déchiffrer à l'aide d'un simple script. Pire encore, les erreurs de codage ou les erreurs dans les algorithmes de génération de clés peuvent exposer les clés à toute personne connaissant les logiciels de génération de clés.

Même l'implémentation parfaite d'un algorithme fiable ne permet pas de garantir la protection des clés. Les utilisateurs courent toujours le risque que le système exécutant ce code idéalisé exécute aussi des logiciels entièrement infiltrés par des pirates informatiques. Pendant son exécution, le logiciel de génération de clés partage les cycles du processeur et de la mémoire avec les logiciels compromis, ce qui donne aux pirates une visibilité sur les données secrètes.

Les processeurs offrant un environnement d'exécution fiable (TEE) renforcent le niveau de protection en exécutant le code fiable et le code non fiable dans des espaces d'exécution distincts. Cette approche réduit le risque d'attaque des algorithmes et des données secrètes comme les clés privées par le biais des vulnérabilités des systèmes d'exploitation, des intergiciels ou d'autres applications.

Malgré une conception dotée de capacités d'exécution sécurisée et de protection de clés, de nombreux dispositifs matériels restent vulnérables aux attaques physiques et micro-architecturales plus sophistiquées. Les attaques micro-architecturales tirent parti des faiblesses de la conception du processeur. Ces types d'attaques ont été révélées avec les failles Meltdown et Spectre, qui ont exploité les vulnérabilités de l'accès à la mémoire du microprocesseur et du traitement des instructions.

Les attaques physiques incluent notamment les exploitations des canaux auxiliaires qui surveillent la consommation énergétique, l'émission électromagnétique ou encore les caractéristiques de temporisation pour exposer les informations protégées. Dans d'autres attaques physiques, les pirates déclenchent des pannes avec des lasers ou provoquent des problèmes d'alimentation pour intercepter les signaux internes. Dans les attaques physiques plus directes, les pirates enlèvent le couvercle des dispositifs à semi-conducteurs et utilisent des microsondes afin d'essayer de lire les séquences de données et d'instructions.

Pour assurer la protection contre ces menaces de sécurité, il faut un contrôleur de sécurité combinant des fonctionnalités de sécurité de base et une protection plus étendue contre les diverses méthodes physiques et micro-architecturales utilisées pour attaquer les dispositifs à semi-conducteurs. Basé sur ce type de contrôleur de sécurité, le kit de démarrage Blockchain Security 2Go d'Infineon (BLOCKCHAINSTARTKITTOBO1) fournit une solution immédiate au défi essentiel de la sécurisation des clés privées utilisées pour signer les transactions à inclure dans une blockchain (Figure 3).

Schéma de la carte à puce Blockchain Security 2Go d'InfineonFigure 3 : La carte à puce Blockchain Security 2Go d'Infineon simplifie la sécurité de la blockchain, notamment la signature des transactions, sans exposer les précieuses clés privées. (Source de l'image : Infineon)

Au lieu de passer du temps à concevoir des méthodes de signature sécurisées, les intégrateurs de système de blockchain peuvent simplement fournir aux utilisateurs des cartes à puce provenant du kit de démarrage Blockchain Security 2Go ou du lot de 10 cartes Security 2Go d'Infineon (BLOCKCHAIN10CARDSTOBO1).

Conclusion

La technologie blockchain offre une applicabilité étendue qui va bien au-delà des cryptomonnaies. Cependant, elle est également complexe et dépend de clés privées qui nécessitent des mécanismes de sécurité fiables pour empêcher la perte de contrôle des utilisateurs sur les transactions et la mise en danger du système de blockchain.

Tandis que les concepteurs ont l'option de passer du temps à concevoir des méthodes de signature sécurisées, le kit de démarrage Blockchain Security 2Go d'Infineon fournit une solution clés en main pour la sécurité des blockchains, qui permet de gagner du temps et d'économiser des ressources.

DigiKey logo

Avertissement : les opinions, convictions et points de vue exprimés par les divers auteurs et/ou participants au forum sur ce site Web ne reflètent pas nécessairement ceux de DigiKey ni les politiques officielles de la société.

À propos de l'auteur

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk affiche plus de 20 ans d'expérience dans la rédaction de contenu pour et sur l'industrie électronique, couvrant un large éventail de sujets, notamment le matériel, les logiciels, les systèmes et les applications, y compris l'IoT. Il a obtenu son doctorat (Ph.D.) en neurosciences sur les réseaux neuronaux et a travaillé dans l'industrie aérospatiale sur les systèmes sécurisés massivement distribués et les méthodes d'accélération par algorithmes. Actuellement, lorsqu'il n'écrit pas d'articles techniques, il travaille sur l'application de l'apprentissage approfondi pour les systèmes de reconnaissance et de recommandation.

À propos de l'éditeur

Rédacteurs nord-américains de DigiKey