ETFFIN Finance >> cours Finance personnelle >  >> Crypto-monnaie >> Chaîne de blocs

Les nombres aléatoires ne mentent pas :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. Comme 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 ne s'en aperçoivent.

En général, 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. Récapituler, uniquement au mois de juillet 2021 :

  • ChainSwap a subi un piratage le 2 juillet, d'une valeur d'environ 800 000 $ en actifs d'utilisateurs.
  • Les pools de liquidités AnySwap V3 ont 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 hack. Cette fois, une valeur de 4 millions de dollars en actifs d'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, dans un détail relatif, deux éléments souvent ignorés et pourtant vitaux des ponts inter-chaînes décentralisés :le nombre aléatoire « k » impliqué dans le calcul multipartite sécurisé (SMPC) et son dérivé « R ».

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 quoi, exactement, est une valeur « R » ?

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 qui possède 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.

Maintenant, 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 opération, aura plusieurs signatures légales.

Chaque fois qu'une transaction est signée à l'aide de l'ECDSA, un nombre aléatoire « k » sécurisé cryptographiquement 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 valeurs « k » et c'est ce qui a causé le piratage PS3 de Sony à la fin de 2010. C'est également ce qui a causé le piratage AnySwap.

Suivant, Examinons comment le pirate informatique AnySwap a procédé à une 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 ». Puisque « 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).

Par ECDSA, les équations représentant ces deux transactions sont :

où S1, S2, et « R » représentent les données de signature et représentent les données de transaction. Ce sont toutes les données visibles publiquement 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 :

Le 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. Clairement, « k » n'a pas été généré au hasard ! Alors comment cela aurait-il pu être évité ?

Le besoin d'un calcul multipartite sécurisé

Par rapport aux signatures de transaction de base, Le Secure Multi-Party Computation (SMPC) est en effet assez complexe. Pourtant, 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, le signataire autorisé n'est plus une personne physique, 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é. Pourtant, parce que SMPC implique plusieurs parties non liées, il y a 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 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. Donc, 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 demande à un groupe de personnes de travailler ensemble sur une tâche sans savoir sur quoi elles travaillent, ni avec qui ils travaillent.

Standard-Setter 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 des transactions du compte bloqué, la valeur « R » est déterminée conjointement par ces 25 nœuds Storeman via un processus connu sous le nom de partage de secrets publiquement vérifiables. 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 à l'aide d'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é 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és actions. 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. D'abord, la valeur « R » est déterminée conjointement par 25 nœuds Storeman, plutôt qu'un individu. En théorie, tant qu'il y a un seul nœud honnête, la valeur « R » sera aléatoire. Seconde, la contribution de chaque nœud Storeman est générée par le véritable générateur de nombres aléatoires.

Combiné, 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). C'est moins probable que d'être touché par une météorite en ce moment, pendant 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 le nombre aléatoire « k » connu, la clé privée peut faire l'objet d'une ingénierie inverse. Lors de la signature des transactions du compte bloqué, chaque nœud Storeman ne génère qu'une part du nombre aléatoire « k ». Parce 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 R&D de Wanchain, en alignement avec d'autres développeurs de l'industrie qui ont mis en œuvre 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 des algorithmes de consensus et de partition PoS, 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 fait de la blockchain dans son ensemble - sera construit sur le travail effectué aujourd'hui.

Divulgation :cet article a été écrit par l'équipe R&D de Wanchain.