A la poursuite de Moby Dick

8
108

LaurentMT, concepteur de l’explorateur de bloc Oxt.me, traque depuis deux ans les attaques subies par le réseau Bitcoin, notamment la « flood attack » de juillet 2015 : « Nous avons tous notre baleine blanche. Depuis deux ans mon Moby Dick c’est l’attaque de spam de l’été 2015. »

Laurent a accepté de revenir sur les résultats de ses recherches qu’il a récemment partagés sur Twitter : 

« Durant l’été 2015 (entre juin et septembre), le réseau bitcoin a été victime d’une attaque de spam :

Appelée “stress test” par ses auteurs, cette attaque repose sur des transactions « fan out », transactions ayant généralement une entrée et un nombre élevé de sorties [1]Le résultat de cette attaque est que 13 millions d’UTXO [2] furent ajoutés à l’UTXO set. C’est un chiffre élevé si on le compare avec la croissance de l’UTXO set durant les mois précédant l’attaque :

Cette attaque s’est déroulée en 4 vagues :
– durant les derniers jours de juin
– entre les 5 et 13 juillet
– entre le 28 juillet et le 7 août
– le 1 et 2 septembre.

La startup coinwallet.eu revendiqua la première vague (en soutien à BitcoinXT). A ma connaissance nous ne connaissons pas officiellement les auteurs des trois autres vagues. Il y a eu, à l’époque, une importante couverture de cette attaque dans les médias spécialisés puis tout le monde est passé à autre chose. Le fait est que ce genre d’attaque se déroule en deux phases et que la 2ème est la plus dommageable.

 

Phase 1 (ce qui s’est passé durant l’été 2015) :

Durant cette phase, l’attaque encombre le réseau temporairement. En gros, ça consomme de la bande passante, de l’espace dans la blockchain et de l’espace dans l’UTXO set. Cette phase est aiguë et donc très visible mais la réalité et que la partie la plus dommageable de l’attaque est encore à venir.

 

Phase 2 (ce qui s’est passé entre l’été 2015 et janvier 2017) :

Il y a une réalité très simple à comprendre dans bitcoin : les UTXO qui ont été créés seront consommés et l’entrée d’une transaction consomme généralement bien plus de ressources que la sortie qui lui correspond (on a, par exemple, une facteur de 4 pour un script P2PKH [3classique (les adresses Bitcoin commençant par 1). La conséquence est que si cette deuxième phase “nettoie” l’UTXO set, elle consomme également plus de bande passante, plus d’espace dans la blockchain et plus de CPU pour les vérifications des signatures. C’est également la partie insidieuse de l’attaque. Personne n’y prête attention car l’auteur de l’attaque peut diluer son intensité dans le temps mais les nuisances générées sont bien réelles et amplifiées.

 

Concernant les motivations de cette attaque :

L’idée d’une personne ou d’un groupe essayant de simuler une croissance de l’activité durant l’année 2016 vient évidemment à l’esprit dans le contexte du débat sur la scalabilité de bitcoin. Mais les raisons pourraient être tout autres, comme des personnes cherchant à dissimuler des mouvement de fonds au milieu d’un déluge de transactions justifiées par l’excuse du débat sur la scalabilité.

 

Concernant les graphiques publiés :

Ils sont extrêmement simples. Ils indiquent pour chaque bloc, l’âge moyen ou médian des entrées des transactions incluses dans le bloc (c.a.d. combien de temps s’est écoulé entre la création de l’UTXO et sa dépense dans le bloc). La ligne qui apparait sur le graphique de l’âge médian est composée de blocs dépensant des UTXOs qui ont été créés à peu près à la même époque, déterminée par l’intersection de la ligne avec l’axe des X.

Ce que montre donc ces charts, c’est que la dépense des UTXOs créés durant l’été 2015 a duré au moins 18 mois, jouant potentiellement un rôle dans la croissance de l’activité on-chain observée depuis fin 2015 :

Comprendre l’évolution de l’intensité de la 2ème phase de cette attaque et sa relation avec d’autres observations réalisées (comme la croissance sur cette période des fees payés aux mineurs) est selon moi quelque chose qui mériterait une analyse détaillée. »

A lire également : Good Whale Hunting


[1] En voici un exemple : https://oxt.me/transaction/tiid/384271259

[2] UTXO (Unspent Transaction Output) :  sortie de transaction non dépensée qui peut être utilisée en entrée pour un nouvelle transaction.

[3]  Pay-To-Public-Key-Hash : c’est le type de transaction le plus courant.