« Dans le Nouveau Testament, Harmaguédon est la dernière bataille entre le bien et le mal avant le jour du jugement. » Ce qui suit est l’histoire de quatre cyberattaques lors du lancement de Wasabi Wallet 2.0. Illustré par DALL-E (AI) avec l’aide de Wiesław Šoltés (humain.) J’ai également abordé le sujet lors d’une conférence lors des journées Blockchain de Majorque.
Bitcoin est la révolution la plus importante en cours actuellement. C’est le révolution de l’argent. L’argent nous a permis, pour la première fois dans l’histoire de l’humanité, d’abstraire le fruit de notre travail jusqu’à sa forme la plus pure : valeur. Nous pourrions alors le conserver et même l’échanger contre d’autres biens et services. Plus notre valeur est stockée en toute sécurité et moins il faut de frictions pour l’échanger, meilleure est la qualité de l’argent. Il est donc crucial pour le progrès de l’humanité de construire des technologies monétaires de plus en plus améliorées. Les crypto-monnaies apportent la rareté numérique dans un monde où la rareté numérique est rare. L’idée selon laquelle Bitcoin est la crypto-monnaie la plus valorisée qui existe signifie que le marché libre prédit qu’il sera la prochaine monnaie de réserve au monde.
À l’exception de la stabilité, de l’acceptabilité, de la portabilité et de la fongibilité, Bitcoin remplit les propriétés d’une bonne monnaie. Je considère la stabilité et l’acceptabilité comme des méta-propriétés. À mesure que la capitalisation boursière d’une devise augmente, ces propriétés sont satisfaites. La portabilité est également quelque chose de bien incité à prendre en compte. Bien que les défis liés à la production rapide et bon marché de Bitcoin soient loin d’être anodins, la matière grise⚡ consacrée à la réalisation de ces objectifs est extraordinaire. Cela nous laisse avec fongibilité comme propriété principale sur laquelle se concentrer. La chose la plus importante sur laquelle on peut choisir de travailler est la fongibilité du Bitcoin.
La fongibilité contribue à la qualité de la monnaie. Il montre à quel point les unités individuelles d’une monnaie sont interchangeables et indiscernables. Dans son article de 2019, l’économiste Alastair Berg déclare : « Le fait que la fongibilité de la monnaie réduit les coûts d’échange est un sujet bien étudié. (Brunner et Meltzer, 1971; voir aussi Banerjee et Maskin, 1996, p.958; Menger, 1892)».
Année -2, Mois -5, Jour -15. Wasabi Wallet est désormais opérationnel depuis deux ans. Nous sommes enfin arrivés au point où l’on pourrait qualifier ce système de « stable ». Il était possible d’avoir de la confidentialité dans Bitcoin avec Wasabi. Cependant, permettre l’utilisation privée du Bitcoin ne signifie pas que Bitcoin devient soudainement anonyme ou fongible. Pour y parvenir, les utilisateurs doivent l’adopter et pour que cela se produise, nous devons créer une expérience utilisateur fluide, où la confidentialité est la valeur par défaut. Nous avons lancé le Wasabi Research Club, où nous avons examiné la littérature de recherche sur la confidentialité des Bitcoins. Nous invitions toujours les auteurs et parfois ils venaient même. Après six mois, nous sommes passés à notre propre recherche, appelée WabiSabi. Au cours des deux années suivantes, nous l’avons mis en œuvre ainsi qu’une refonte complète de l’UI et de l’UX.
Année 0, mois 0, jour -15. Voilà, Wasabi Wallet 2.0 sera lancé dans deux semaines, le 15 juin 2022. Il s’agit de la solution de fongibilité Bitcoin de pointe. Alors que d’autres projets travaillant sur la confidentialité Bitcoin créent de nouvelles fonctionnalités de confidentialité, Wasabi Wallet 2.0 est une tentative de faire passer ses outils de confidentialité complets à l’arrière-plan, permettant aux utilisateurs de gérer d’autres choses importantes qui se produisent dans leur vie. Cela fait de Wasabi Wallet 2.0, la pièce manquante du Bitcoin : il résout sa fongibilité, en ce qui concerne les anglophones et les utilisateurs de portefeuilles de bureau chauds.
Les coinjoins sont le cœur de Wasabi Wallet. Le composant le plus important du logiciel. Nous venons de terminer une semaine de période de test réussie de coinjoin sur le réseau principal, ainsi qu’une période de test de six mois de coinjoin sur le testnet. Nous n’avons jamais eu une version aussi bien testée auparavant, même pas proche. Tout devait se dérouler parfaitement.
Année 0, mois 0, jour 0. Jour de sortie. Wasabi Wallet 2.0 est sorti sans gros problèmes. Je n’arrêtais pas de répéter : « la sortie la plus fluide jamais réalisée ». D’autres n’arrêtaient pas de répéter « le calme avant la tempête », mais je ne suis pas superstitieux, alors je n’en ai pas tenu compte, bien sûr. Durant les trois premiers jours, tout s’est déroulé comme prévu. Nous attendions patiemment qu’un nombre suffisant d’utilisateurs effectuent une mise à niveau pour commencer avec une liquidité de coinjoin décente.
Année 0, mois 0, jour 3. À l’aube du troisième jour, nous avons atteint notre objectif, mais il y avait un problème : les coinjoins échouaient. Nous avions peur que cela se produise, alors pendant que nous attendions, nous avons mis en œuvre notre plan d’urgence, qui consistait à réduire progressivement le nombre d’intrants requis.
Pendant ce temps, nous avons enquêté sur la situation, réfléchi ensemble pour théoriser pourquoi cela se produit ? L’explication la plus plausible est venue lorsque nous avons demandé : pourquoi échouons-nous maintenant et pas lorsque nous testions sur le réseau principal ou sur le réseau de test. L’explication la plus plausible était que nos tests n’étaient pas représentatifs des utilisateurs de Wasabi. Les développeurs exécutant plusieurs instances avec une connexion Internet généralement fine sont différents lorsque vous souhaitez coordonner des centaines d’utilisateurs sur un réseau anonyme peu fiable. Néanmoins, cela n’a pas changé notre plan. Il s’agissait toujours de réduire le nombre d’entrées requis jusqu’à ce que les coinjoins puissent fonctionner correctement. Nous continuons à améliorer le logiciel afin qu’au fil du temps, nous puissions coordonner des tournées de plus en plus importantes. Alors que nous continuions à réduire le nombre d’entrées requis, la première coinjoin s’est produite avec 72 entrées.
Année 0, Mois 0, Jour 4. Nous sommes attaqués ! Les coinjoins se produisaient encore à peine. Cela n’avait aucun sens. Pourquoi des pièces de monnaie beaucoup plus importantes fonctionnaient alors sur le testnet ? Pourquoi cela fonctionnait-il alors sur le réseau principal lors de nos tests ? Nous avons débogué nos systèmes et avons constaté des retards et des pannes inhabituels du réseau Tor. Ensuite, nous avons testé sur le testnet et, à notre grande surprise, aucun coinjoin ne s’y produit non plus. La seule différence était le réseau. Y a-t-il un problème avec le réseau Tor ? Oui. Le mémo est arrivé : le réseau Tor est soumis à une attaque DDoS.
Au cours des jours suivants, nous avons affiné la configuration du coordinateur, mis en œuvre quelques améliorations à faible risque et déployé le coordinateur. Cela a permis aux coinjoins de démarrer, mais ce n’était pas suffisant. En parallèle, le travail sur les correctifs de fiabilité côté client a commencé. Nous étions à nouveau sur le point de démarrer les choses, mais ensuite…
Année 0, Mois 0, Jour 7. Nouvelles attaques ! Le septième jour, nous avons reçu deux nouvelles attaques : un DDoS sur notre site Web et quatre d’entre nous ont été victimes d’une attaque de spam sur leurs e-mails personnels. Heureusement, le premier a été repoussé si vite qu’il ne valait même pas la peine d’être mentionné en soi et le second ne nous a causé que des désagréments mineurs, nous avons donc continué à travailler sur notre prochaine version v2.0.1 fixée au 10ème jour, le 25 juin, Lundi.
Année 0, mois 0, jour 10. 2ème jour de sortie. Nous avons amélioré notre anti-fragilité à un point tel que nous pouvons coordonner les coinjoins même en cas d’attaque Tor DDoS. Il nous restait trois heures avant la sortie, j’ai enfin eu un peu de temps pour me détendre, alors j’ai décidé de nettoyer mon dossier spam, où je suis tombé sur quelque chose d’intéressant : une lettre de rançon. L’attaquant affirmait que le DDoS du week-end n’était qu’un échauffement pour nous donner le temps de réfléchir. La véritable attaque aura lieu lundi, les coinjoins cesseront et l’enfer se déchaînera. Que faisons-nous maintenant ? Libérer ou ne pas libérer ? Heureusement, l’attaquant nous a également indiqué où il prévoyait d’attaquer, afin que nous puissions revoir nos défenses et constater que tout était en place, mais on ne sait jamais avec ce genre de choses. Dans une situation volatile, tout peut arriver. Nous avons poursuivi la sortie et préparé l’affrontement final avec le hacker.
Année 0, mois 0, jour 11. Jour du jugement
En veillant toute la nuit, nous avons observé quelque chose d’inquiétant au loin. Premier coup de feu tiré, puis un autre. Nous ne savions pas d’où venaient les cyberattaques, des hackers au chapeau noir nous lançaient des attaques DDoS partout. Il y avait de la fumée et du sang partout. Deux serveurs en panne, un responsable tremblant par terre à cause d’une overdose de caféine… je plaisante. Désolé de vous décevoir, mais c’était plutôt décevant. En veillant toute la nuit, nous avons observé une activité inhabituelle, mais nous n’avons pas détecté d’attaque avec une certitude absolue.
Année 0, mois 0, jour 14.
Quelques jours après la sortie, juste au moment où j’ai commencé à écrire cet article, nous avons rétabli le nombre d’entrées requis à 150 comme nous l’avions initialement prévu.
La transparence est un outil de responsabilisation, mieux utilisé lorsque des groupes d’individus accumulent des pouvoirs sur d’autres individus, comme les gouvernements, les entreprises et d’autres types d’organisations. La philosophie open source met l’accent sur la responsabilité par la transparence et c’est l’état d’esprit dans lequel j’ai grandi. Dans zkSNACKs et Wasabi Wallet, tout était public, non seulement le code source mais aussi nos options de configuration liées à la sécurité. Rien n’illustre mieux notre extrême adhésion à la transparence que le fait que nous avons commencé par diffuser en direct chaque réunion que nous avons eue.
La responsabilité doit être appliquée pour la sécurité, et non au détriment de celle-ci. Les endroits à partir desquels des vulnérabilités Zero Day pourraient être exploitées doivent être éloignés des regards indiscrets. Nous sommes conscients de cet apprentissage depuis un certain temps, mais maintenant, comme nous sommes devenus une cible beaucoup plus large qu’auparavant, nous avons activement supprimé les conversations publiques liées aux configurations de sécurité sensibles.
Il y a deux ans et demi, au moment même où commençait le développement de WW2, j’ai adopté une routine d’entraînement stricte et je n’ai manqué aucune séance depuis. Je l’ai fait pendant le froid de l’hiver ; Je l’ai fait par temps humide et tropical et je l’ai fait quand je tombais malade. Il fut même un temps où je m’entraînais dans un hôtel capsule, où je n’étais même pas capable de me lever. Cependant, j’ai sauté mon entraînement pendant ces deux semaines. Ce furent les semaines les plus intenses de ma vie. Nous déboguions jour et nuit, en course contre la montre. Une telle situation de pression, de stress et d’enjeux élevés n’est pas étrangère aux développeurs de logiciels chevronnés. Tout le monde les rencontrera en même temps. Ici, je vais laisser trois règles pour le futur sur la façon de me conduire dans de telles situations.
1. Gestion du sommeil : La dernière chose que vous souhaitez est un jugement altéré. Dormez bien !
2. Questions > Hypothèse : Vous souhaitez porter des jugements pertinents. Ne passez pas directement aux théories. On peut se rendre compte de la pertinence en posant des questions et votre hypothèse doit être pertinente. Sautez les questions à vos risques et périls, car vous vous retrouverez à passer de précieuses heures à travailler sur quelque chose qui n’a pas d’importance.
3. Récupération vs Compréhension : Un jugement commun et important que vous devrez porter. Lorsque quelque chose ne va pas, votre priorité est de récupérer le système, mais avant de mettre votre chapeau d’opérateur et d’appuyer sur Redémarrer, enfilez pendant un bref instant votre chapeau de débogueur et faites une enquête pendant que le bug est bel et bien vivant, sinon vous pourrait rater l’occasion de le trouver.
Je suis fier de la façon dont l’équipe a maîtrisé la situation. Mention spéciale pour les débuts d’Adam et Roland, car c’était la première fois qu’ils rencontraient chez nous un scénario de débogage sous le feu. Ils ont beaucoup grandi en si peu de temps.
Wasabi Wallet 2.0 est né sous le feu croisé d’une cyber-guerre. Cela a prévalu et les coinjoins de la Seconde Guerre mondiale prospèrent désormais. Au cours de ces deux semaines, j’ai appris à apprécier l’énorme travail de stabilité effectué sur les coinjoins de la Première Guerre mondiale et cela m’a ouvert les yeux sur la nécessité de faire de même pour les coinjoins de la Seconde Guerre mondiale. L’avenir est prometteur, nous avons juste beaucoup de travail à faire.
Share this content:

