Auteur original : Carl Hua, associé et CTO de Shima Capital
Après le récent exploit de réentrance Curve, je réfléchis à mon séjour au JPL NASA, où j'ai appris les principes clés du développement de logiciels fiables et résilients. Pour l’industrie de la cryptographie, ces informations sont désormais plus importantes que jamais, et voici pourquoi :
En fin de compte, il n’existe que deux types de logiciels qui intéressent vraiment les gens : les logiciels qui peuvent vous tuer et les logiciels qui peuvent vous faire perdre de l’argent.
La majorité du budget (plus de 80 %) des logiciels critiques de toute machine aérospatiale n'est pas allouée au développement lui-même, mais à l'intégration et aux tests. Si le logiciel tombe en panne, des véhicules volants tombent du ciel - avions de chasse, drones, vaisseaux spatiaux, etc.
La plupart du code des logiciels aérospatiaux (s'il est classé comme module critique) adhère à des normes de test/développement extrêmement strictes, telles que DO-178B niveau A. Non seulement chaque ligne de code doit être testée, mais s’il existe une logique imbriquée, chaque condition logique est également spécifiquement testée.
Chez JPL NASA, la philosophie de l'écriture de logiciels avancés de vol spatial n'est pas d'écrire le code le plus beau et le plus propre, mais d'écrire du code facile à tester unitairement. Pourquoi? C'est simple : lorsque vous envoyez un vaisseau spatial dans l'espace, vous n'avez qu'une seule chance, et personne ne veut prendre un risque avec une forte probabilité d'échec. C'est la même logique que les blockchains, puisque le code immuable est leur caractéristique importante, et nous n'avons qu'une seule chance de dépenser nos fonds correctement dans chaque transaction, alors pourquoi ne prenons-nous pas plus au sérieux le processus de développement des dApps ?
Malgré des processus de développement, de test et d'audit de code rigoureux, ces moyens ne suffisent clairement pas à atténuer tous les bogues et attaques, car il est en fait presque impossible d'éliminer tous les bogues d'exécution par des tests et des audits. Alors, comment pouvons-nous protéger nos logiciels contre les pannes ?
Protection d'exécution
La protection d'exécution est une technique de sécurité qui protège les applications logicielles contre les attaques malveillantes pendant leur exécution. Son principe est d'effectuer une détection en temps réel lorsque le code est en cours d'exécution et d'analyser le comportement réel du programme pour protéger le programme des données malveillantes et des attaques.
Les protections d'exécution pour les logiciels à haute fiabilité nécessitent des efforts et une conception importants, car elles constituent la dernière ligne de défense pour garantir que le logiciel n'entre pas dans des états inconnus ou ne tombe pas en panne. Ce n'est pas seulement un argument, mais des décennies de pratique éprouvée.
Aujourd'hui, dans le Web3, je pense que les applications DeFi ont besoin de la même fiabilité élevée et devraient envisager la même approche. Cependant, en raison de ses limites potentielles, l'EVM n'a pas été conçu pour gérer des tâches complexes telles que la protection de l'exécution. Alors, comment pouvons-nous fournir une protection d’exécution ?
L'une des solutions consiste à programmer Aspect. Aspects est conçu par le réseau blockchain Artela, qui est capable de changer le contexte d'exécution pendant le cycle de vie de toute transaction de contrat intelligent pour effectuer des contrôles avancés sur l'état en temps réel du programme. Artela propose une conception unique de protection d'exécution grâce à la compatibilité Aspect et EVM, et a l'opportunité de devenir la future base de la sécurité des contrats intelligents cryptés.
Voir l'original
Cette page peut inclure du contenu de tiers fourni à des fins d'information uniquement. Gate ne garantit ni l'exactitude ni la validité de ces contenus, n’endosse pas les opinions exprimées, et ne fournit aucun conseil financier ou professionnel à travers ces informations. Voir la section Avertissement pour plus de détails.
Réflexion sur l'événement Curve pourquoi nous avons besoin de la protection d'exécution
Auteur original : Carl Hua, associé et CTO de Shima Capital
Après le récent exploit de réentrance Curve, je réfléchis à mon séjour au JPL NASA, où j'ai appris les principes clés du développement de logiciels fiables et résilients. Pour l’industrie de la cryptographie, ces informations sont désormais plus importantes que jamais, et voici pourquoi :
En fin de compte, il n’existe que deux types de logiciels qui intéressent vraiment les gens : les logiciels qui peuvent vous tuer et les logiciels qui peuvent vous faire perdre de l’argent.
La majorité du budget (plus de 80 %) des logiciels critiques de toute machine aérospatiale n'est pas allouée au développement lui-même, mais à l'intégration et aux tests. Si le logiciel tombe en panne, des véhicules volants tombent du ciel - avions de chasse, drones, vaisseaux spatiaux, etc.
La plupart du code des logiciels aérospatiaux (s'il est classé comme module critique) adhère à des normes de test/développement extrêmement strictes, telles que DO-178B niveau A. Non seulement chaque ligne de code doit être testée, mais s’il existe une logique imbriquée, chaque condition logique est également spécifiquement testée.
Chez JPL NASA, la philosophie de l'écriture de logiciels avancés de vol spatial n'est pas d'écrire le code le plus beau et le plus propre, mais d'écrire du code facile à tester unitairement. Pourquoi? C'est simple : lorsque vous envoyez un vaisseau spatial dans l'espace, vous n'avez qu'une seule chance, et personne ne veut prendre un risque avec une forte probabilité d'échec. C'est la même logique que les blockchains, puisque le code immuable est leur caractéristique importante, et nous n'avons qu'une seule chance de dépenser nos fonds correctement dans chaque transaction, alors pourquoi ne prenons-nous pas plus au sérieux le processus de développement des dApps ?
Malgré des processus de développement, de test et d'audit de code rigoureux, ces moyens ne suffisent clairement pas à atténuer tous les bogues et attaques, car il est en fait presque impossible d'éliminer tous les bogues d'exécution par des tests et des audits. Alors, comment pouvons-nous protéger nos logiciels contre les pannes ?
Protection d'exécution
La protection d'exécution est une technique de sécurité qui protège les applications logicielles contre les attaques malveillantes pendant leur exécution. Son principe est d'effectuer une détection en temps réel lorsque le code est en cours d'exécution et d'analyser le comportement réel du programme pour protéger le programme des données malveillantes et des attaques.
Les protections d'exécution pour les logiciels à haute fiabilité nécessitent des efforts et une conception importants, car elles constituent la dernière ligne de défense pour garantir que le logiciel n'entre pas dans des états inconnus ou ne tombe pas en panne. Ce n'est pas seulement un argument, mais des décennies de pratique éprouvée.
Aujourd'hui, dans le Web3, je pense que les applications DeFi ont besoin de la même fiabilité élevée et devraient envisager la même approche. Cependant, en raison de ses limites potentielles, l'EVM n'a pas été conçu pour gérer des tâches complexes telles que la protection de l'exécution. Alors, comment pouvons-nous fournir une protection d’exécution ?
L'une des solutions consiste à programmer Aspect. Aspects est conçu par le réseau blockchain Artela, qui est capable de changer le contexte d'exécution pendant le cycle de vie de toute transaction de contrat intelligent pour effectuer des contrôles avancés sur l'état en temps réel du programme. Artela propose une conception unique de protection d'exécution grâce à la compatibilité Aspect et EVM, et a l'opportunité de devenir la future base de la sécurité des contrats intelligents cryptés.