Un examen technique plus approfondi des récents piratages DeFi

Alors que les frais de gaz Ethereum ont atteint des sommets records au cours du marché haussier de 2021, rendant de nombreux protocoles de finance décentralisée (DeFi) inutilisables pour les utilisateurs occasionnels, plusieurs projets ont été contraints de se déployer sur d’autres chaînes.

Cela a créé une énorme augmentation de la demande de mécanismes inter-chaînes – appelés ponts – capables de transférer en toute sécurité les actifs des utilisateurs d’une chaîne à une autre. Les ponts inter-chaînes peuvent généralement être divisés en ponts gardiens centralisés (CCB) et ponts non gardiens décentralisés (DNCB).

Comme on peut s’y attendre, la demande croissante de ponts inter-chaînes a entraîné l’émergence d’une nouvelle vague de protocoles de réputation variable. Alors que les ponts inter-chaînes desservaient un pool de plus en plus précieux d’actifs d’utilisateurs, ce n’était qu’une question de temps avant que les acteurs malveillants et les pirates n’en prennent conscience.

De manière générale, les pirates cibleront les DNCB car ils peuvent exploiter les lacunes des protocoles conçus par des équipes de développement inexpérimentées. Un pirate informatique expérimenté peut facilement tirer parti des erreurs de logique ou des failles intégrées dans la cryptographie et la conception d’un protocole mal conçu.

Cela nous amène à aujourd’hui : les conséquences de multiples attaques sur des ponts inter-chaînes. Un autre œil noir sur une industrie usée par la bataille. Pour rappel, uniquement au mois de juillet 2021 :

  • ChainSwap a subi un piratage le 2 juillet, d’une valeur d’environ 800 000 $ en actifs utilisateur.
  • Pools de liquidité AnySwap V3 a subi un piratage le 10 juillet, d’une valeur de près de 8 millions de dollars en $USDC et $MIM. AnySwap est un DEX inter-chaînes alimenté par le Fusion Network.
  • ChainSwap a subi un autre piratage, seulement 9 jours après le premier piratage. Cette fois, une valeur de 4 millions de dollars en actifs utilisateurs. ChainSwap est une plate-forme soutenue par Alameda qui relie Ethereum à Binance Smart Chain.

L’objectif principal de cet éditorial est d’éduquer et de présenter, de manière relativement détaillée, deux éléments souvent ignorés mais pourtant vitaux des ponts inter-chaînes décentralisés : le nombre aléatoire « k » impliqué dans le calcul multipartite sécurisé (SMPC) dérivé ‘R’.

chainswap-exploiter
Certains des jetons ChainSwap exploités lors de son piratage du 2 juillet. Source : CoinGecko

Le hack AnySwap : deux ne valent pas toujours mieux qu’un

Apparemment, le piratage AnySwap s’est produit parce que deux transactions distinctes ont été signées en utilisant la même valeur « R ». Le pirate a utilisé ces deux signatures pour procéder à l’ingénierie inverse de la clé privée contrôlant le compte MPC inter-chaînes d’AnySwap et a volé les fonds des utilisateurs.

Mais qu’est-ce qu’une valeur « R » exactement ?

Qu’est-ce que ‘R’ – le talon d’Achille de la sécurité des comptes

L’une des premières leçons que tout le monde apprend dans la blockchain est que les fonds de votre portefeuille sont contrôlés par votre clé privée.

Vous avez tous entendu la phrase : « pas vos clés, pas vos pièces ». Cet idiome signifie que toute personne possédant la clé privée d’un portefeuille a un contrôle total sur les actifs de ce portefeuille. En effet, la seule chose nécessaire pour transférer des fonds d’un compte à un autre est de signer une transaction avec la clé privée de ce compte.

À l’heure actuelle, l’algorithme de signature numérique standard utilisé dans les blockchains est l’algorithme de signature numérique à courbe elliptique (ECDSA).

ECDSA appartient à la catégorie « non déterministe » des algorithmes de signature numérique. Contrairement aux algorithmes « déterministes » qui donnent toujours la même sortie pour une entrée particulière, les algorithmes « non déterministes » peuvent produire des sorties différentes même s’ils reçoivent la même entrée. Pour l’ECDSA, cela signifie que le même ensemble de données, ou transaction, aura plusieurs signatures légales.

Chaque fois qu’une transaction est signée à l’aide de l’ECDSA, un nombre aléatoire cryptographiquement sécurisé « k » est généré. « k » est ensuite utilisé pour calculer un point sur la courbe elliptique qui, à son tour, est utilisé pour calculer la valeur « R ». Il est crucial qu’un nouveau nombre aléatoire « k » soit généré chaque fois qu’une transaction est signée à l’aide de l’ECDSA.

Si le même « k » est utilisé pour signer plusieurs transactions, la valeur « R » de deux transactions sera la même et la clé privée fuira. C’est ce qu’on appelle une collision de valeur « k » et c’est ce qui a causé Le hack PS3 de Sony fin 2010. C’est aussi ce qui a causé le piratage AnySwap.

Ensuite, examinons comment le pirate AnySwap a procédé à l’ingénierie inverse de la clé privée contrôlant le compte MPC inter-chaînes d’AnySwap pour voler les fonds des utilisateurs.

Deux n’est certainement pas toujours mieux qu’un

Considérez ce qui se passe lorsque deux transactions sont signées en utilisant le même nombre aléatoire « k ». Étant donné que « k » est utilisé pour dériver « R », la valeur « R » des deux transactions sera également la même. Appelons ces deux signatures (s1) et (s2).

Selon l’ECDSA, les équations représentant ces deux transactions sont :

où S1, S2 et ‘R’ représentent des données de signature et représentent des données de transaction. Ce sont toutes les données publiquement visibles sur la blockchain. Cela laisse deux paramètres inconnus restants : le nombre aléatoire « k » et la clé privée du compte.

Ceux qui se souviennent de leur algèbre de lycée sauront immédiatement comment résoudre les paramètres inconnus en utilisant les deux équations. La clé privée sk peut donc s’écrire :

img2Le pirate AnySwap a remarqué que deux transactions avaient la même valeur « R », ce qui implique que le même nombre aléatoire « k » a été utilisé dans les deux. Cela a permis au pirate informatique de rétro-concevoir la clé privée contrôlant le compte MPC inter-chaînes d’AnySwap à l’aide d’une simple algèbre et de voler les actifs des utilisateurs.

L’erreur critique était que le même nombre aléatoire « k » a été utilisé dans plusieurs transactions. De toute évidence, « k » n’a pas été généré au hasard ! Alors comment cela aurait-il pu être évité ?

La nécessité d’un calcul multipartite sécurisé

Comparé aux signatures de transaction de base, le calcul multipartite sécurisé (SMPC) est en effet assez complexe. Cependant, cela vaut bien l’effort supplémentaire. Si SMPC – qui est très différent des multi-signatures – est correctement utilisé pour générer de vrais nombres aléatoires, il n’y a aucun risque que le nombre aléatoire « k » soit exposé.

Lors de l’utilisation de SMPC, l’agent de signature n’est plus une personne individuelle, mais plusieurs personnes travaillant de concert pour signer des transactions.

Avec les signatures de transaction de base, un véritable générateur de nombres aléatoires suffit à lui seul pour générer la valeur « R » et garantir la sécurité. Cependant, étant donné que SMPC implique plusieurs parties non liées, il existe toujours la menace qu’une ou plusieurs de ces parties soient malveillantes.

En tant que tel, il n’est pas raisonnable de permettre à une seule personne de générer seule la valeur « R » car elle peut être un acteur malveillant. S’ils contrôlent à eux seuls le nombre aléatoire « k » et, à son tour, la valeur « R », ils pourront procéder à l’ingénierie inverse de la clé privée du compte et voler des actifs. Par conséquent, trois principes doivent être respectés lors de l’utilisation de SMPC pour générer la valeur « R » :

  1. La valeur « R » ne peut pas être générée par un seul individu ;
  2. Aucun individu ne peut connaître le nombre aléatoire « k » utilisé pour dériver la valeur « R » ;
  3. Le nombre aléatoire « k » doit être suffisamment aléatoire pour être impartial et imprévisible.

En termes simples, SMPC exige qu’un groupe de personnes travaille ensemble sur une tâche sans savoir sur quoi ils travaillent, ni avec qui ils travaillent.

Standardiste SMPC : la conception de partage de secrets publiquement vérifiables de Wanchain

Les ponts inter-chaînes de Wanchain reposent sur un mécanisme unique qui utilise SMPC pour maintenir les actifs inter-chaînes verrouillés dans des comptes gérés par 25 parties anonymes appelées nœuds Storeman. Le nombre de nœuds Storeman peut être augmenté selon les besoins.

Lors de la signature de transactions à partir du compte verrouillé, la valeur « R » est déterminée conjointement par ces 25 nœuds Storeman via un processus connu sous le nom de partage secret publiquement vérifiable. Ce processus garantit qu’aucune transaction n’aura jamais la même valeur « R ».

Les étapes spécifiques que ces 25 nœuds Storeman entreprennent sont les suivantes :

  1. Chaque nœud Storeman (Pi) génère un nombre aléatoire « ki » localement en utilisant un véritable générateur de nombres aléatoires ;
  2. Chaque nœud Storeman (Pi) partage son nombre aléatoire « ki » avec les autres nœuds via un canal sécurisé en utilisant Le partage secret de Shamir.
    Shamir’s Secret Sharing est un système de partage de secrets conçu pour partager un secret de manière distribuée. Le secret est divisé en plusieurs parties, appelées partages. Le secret peut être reconstitué en utilisant un nombre minimum de partages. Le partage secret de Shamir est souvent utilisé en cryptographie.
  3. Après avoir reçu les partages secrets des autres nœuds, chaque nœud Storeman collecte les partages secrets et les multiplie par le point de base de la courbe elliptique, et diffuse le résultat ;
  4. Chaque nœud Storeman effectue une interpolation de Lagrange en utilisant les données de diffusion pour obtenir un point de courbe elliptique dont l’abscisse est la valeur « R ».

Bien que le processus ci-dessus soit assez compliqué, le concept de base est assez simple. La valeur ‘R’ est déterminée conjointement par 25 nœuds Storeman. Chaque nœud Storeman contribue en partie au nombre aléatoire crypté « k ». La valeur « R » est ensuite déterminée par des opérations cryptographiques.

En d’autres termes, les 25 nœuds Storeman travaillent ensemble sans savoir sur quoi ils travaillent, ni qui sont les autres nœuds Storeman.

Partage de secrets publiquement vérifiables : pourquoi est-ce essentiel

Le partage de secrets publiquement vérifiables garantit que :

  1. Il est impossible que deux transactions aient la même valeur R

Il ya deux raisons principales pour cela. Premièrement, la valeur « R » est déterminée conjointement par 25 nœuds Storeman, plutôt que par un individu. En théorie, tant qu’il n’y a qu’un seul nœud honnête, la valeur « R » sera aléatoire. Deuxièmement, la contribution de chaque nœud Storeman est générée par le véritable générateur de nombres aléatoires.

Combinées, deux transactions n’auront la même valeur « R » que si la somme des nombres aléatoires sélectionnés par les 25 nœuds Storeman est la même dans deux transactions. La probabilité que cela se produise est de 2^(-256). Il est moins probable que vous soyez frappé par une météorite en ce moment, alors que vous lisez cette phrase.

  1. Le nombre aléatoire ‘k’ utilisé pour dériver la valeur ‘R’ reste caché

Comme démontré précédemment, une fois que le nombre aléatoire « k » est connu, la clé privée peut faire l’objet d’une ingénierie inverse. Lors de la signature de transactions à partir du compte verrouillé, chaque nœud Storeman ne génère qu’une part du nombre aléatoire « k ». Étant donné que chaque partage transmet via des canaux sécurisés, aucun nœud Storeman ne peut récupérer la valeur totale du nombre aléatoire « k ».

En d’autres termes, grâce à la conception SMPC de Wanchain, le nombre aléatoire « k » utilisé pour dériver la valeur « R » reste toujours caché. Les comptes verrouillés utilisés dans les ponts inter-chaînes de pointe de Wanchain sont extrêmement sécurisés. Il n’y a aucune possibilité que la clé privée fuit.

Verdict

L’équipe de R&D de Wanchain n’est pas d’accord sur le fait que le piratage AnySwap représente un risque général pour les autres projets qui adoptent SMPC. L’équipe de R&D de Wanchain, en alignement avec d’autres développeurs de l’industrie qui ont implémenté SMPC, ne considère pas les vulnérabilités ou les erreurs qui ont permis le piratage AnySwap comme un risque général.

L’équipe souhaite également souligner le rôle important que jouent les nombres aléatoires dans la blockchain. Les nombres aléatoires ne sont pas seulement utilisés dans le but de signer des transactions. Ils sont utilisés à plusieurs niveaux de conception technique et sont des composants importants du PoS Consensus et des algorithmes de partition, qui déterminent directement la sécurité d’un réseau blockchain.

Générer efficacement des nombres aléatoires fiables n’est pas une tâche simple. C’est le Saint Graal de pans entiers des mathématiques et de la cryptographie. Des gens brillants ont consacré leur vie et leur esprit à l’optimisation de la génération de nombres aléatoires.

Les développeurs de blockchain du monde entier doivent poursuivre cette tradition et développer des algorithmes de génération de nombres aléatoires mieux distribués tout en continuant à optimiser la génération de nombres aléatoires en chaîne. L’avenir de DeFi – et en effet de la blockchain dans son ensemble – sera construit sur le travail effectué aujourd’hui.

Divulgation : cet article a été rédigé par l’équipe R&D de Wanchain.

OFFRE SPÉCIALE (Sponsorisé)

Bon Binance Futures 50 USDT GRATUIT : Utilisez ce lien pour vous inscrire et obtenir 10 % de réduction sur les frais et 50 USDT lors de la négociation de 500 USDT (offre limitée).

Offre spéciale PrimeXBT : utilisez ce lien pour vous inscrire et entrez le code POTATO50 pour obtenir un bonus gratuit de 50 % sur tout dépôt jusqu’à 1 BTC.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *