Financer le craquage légitime de mots de passe, en s'appuyant sur une place de marché totalement décentralisée. C'est l'objectif du Blockchain Password Market, un prototype ouvert il y a quelques semaines s'appuyant sur des technologies expérimentales de la blockchain Ethereum. Son créateur, Renaud Lifchitz, nous en parle.
Fin juin, à l'occasion de la 15e édition de la Nuit du hack, le chercheur Renaud Lifchitz présentait un projet en gestation depuis plusieurs mois. Son but : créer une place de marché pour le craquage de mots de passe, fondée sur Ethereum sans la moindre partie centralisée, avec le luxe d'une interface web pour les utilisateurs. Il s'agit du Blockchain Password Market, au prototype accessible à bzz:/passwords.eth via un navigateur Ethereum.
La plateforme est fondée sur un smart contract Ethereum, un programme tournant sur les 21 000 nœuds du réseau. Le principe : si une condition est remplie, le contrat déclenche automatiquement une action. Ici, un internaute envoie une empreinte (hash) de mot de passe à craquer pour retrouver l'original. Si quelqu'un envoie la bonne réponse de passe et que le réseau le vérifie, le contrat se déclenche et paie la récompense choisie par le propriétaire du hash (moins 5 % de commission pour la plateforme). Tout est automatisé, avec très peu de maintenance.
Le contrat est accompagné d'une interface web et d'un nom de domaine, fournis par des outils basés sur Ethereum. La plateforme est aussi l'occasion de s'essayer au craquage de mot de passe via des cartes FPGA, à l'efficacité redoutable pour certaines tâches et au coût réduit, au prix d'une programmation bien particulière. Au fait, pourquoi se lancer dans un tel projet ?
Tester la solidité de mots de passe d'outils exposés
« En audit de sécurité, il est régulier de tester si les mots de passe des clients sont suffisamment robustes. Or, dans une mission d'une ou deux semaines, on n'a que quelques jours pour voir si l'un d'eux est solide. On ne déploie pas de moyens phénoménaux, on utilise un ordinateur avec une carte graphique » nous détaille Renaud Lifchitz. Ces moyens sont bien éloignés de ceux que peut mettre en œuvre un attaquant motivé sur une cible à forts enjeux, qui a beaucoup plus de temps entre les mains.
« Là, l’idée était de mettre à l'épreuve la solidité de mots de passe de manière complètement ouverte et d’y inciter les gens, en y mettant des primes. C’est ce qui donne envie aux gens de participer et de donner de la puissance de calcul pour tenter de casser » détaille Lifchitz. Attention, il n'est pas question d'y envoyer des mots de passe de clients pendant un audit. Le risque est trop grand, notamment si le texte contient des éléments identifiant l'entreprise ou l'employé.
« La plateforme pourra plutôt être utilisée pour du craquage collaboratif sur un système ouvert sur Internet (caméra, routeur…). J’ai un appareil exposé, j'ai un mot de passe, je veux vérifier s’il est assez fort, je le soumets » estime le chercheur, qui dit avoir eu le déclic pour la Nuit du hack, où il présente régulièrement ses projets.
« Je trouvais ça intéressant pour la Nuit du hack, qui combine la sécurité à des aspects hack (détournement de technologies) et do it yourself » détaille-t-il. La motivation était aussi de concevoir une plateforme entièrement décentralisée, donc résistante à certaines attaques comme le déni de service distribué (DDoS). Soit quelque chose encore très rare aujourd'hui, voire inédit.
Quid des détournements ?
Craquer des mots de passe peut aussi intéresser des acteurs moins sympathiques que des chercheurs ou responsables de la sécurité. Le spécialiste reconnaît de possibles détournements, par exemple par une personne qui veut se propager sur un réseau, en disposant uniquement du hash d'un identifiant important.
« Mais les outils de craquage de mot de passe sont déjà existants, en ligne », comme des forums, souligne-t-il. Même en étant relativement anonyme, la nouvelle plateforme ne devrait donc pas changer grand-chose, si elle venait à attirer un large public, selon son concepteur.
Aussi, que se passe-t-il si quelqu'un craque un mot de passe sans le signaler ensuite sur la plateforme ? Le scénario serait peu probable. « Je pense que si quelqu'un voit un hash arriver, son intérêt est d’avoir la prime. Il ne sait pas qui le soumet donc il ne sait pas d’où il vient (quel service, quel annuaire utilisateur, quelle utilisation...), d'autant qu'il sera vu par pas mal de monde. A priori, l'outil permet d'essayer plus de stratégies que vous seul, dans votre coin » répond le spécialiste.

La décentralisation comme objectif
La place de marché est constituée de trois éléments. Le moteur (backend) est un smart contract Ethereum classique. L'interface web, censée permettre d'interagir avec le contrat, est hébergée via Swarm, une technologie en plein développement. Le nom de domaine bzz:/passwords.eth est, lui, obtenu via l'Ethereum Name Service (ENS).
« Le frontend utilise une fonctionnalité en bêta, Swarm, encore peu connue. C'est une technologie de stockage distribué, sur l'ensemble des nœuds qui en sont équipés. Le système est similaire à IPFS (Interplanetary Filesystem), à la différence qu'il ne s'agit pas d'un stockage volontaire (où l'on choisit où héberger les données) mais sur tout le réseau » explique Renaud Lifchitz, qui estime qu'entre 500 et 1 000 nœuds disposent du Swarm.
Comment donc retrouver un contenu ? « Il n’est pas adressable par une adresse IP ou une URL, mais un hash lié. On adresse le hash. Peu importe le nombre de nœuds le possédant, on télécharge les morceaux sur tous ceux qui l'ont, en mode pair-à-pair. » Pour le moment, l'interface web n'est pas fonctionnelle, mais uniquement là à titre informatif. Elle se base sur web3.js, une bibliothèque JavaScript qui permet d’interroger la blockchain depuis une page web.
L'adresse bzz:/passwords.eth passe, elle, par l'ENS. « Cette résolution de noms est aussi décentralisée, via un smart contract normalisé (ENS). Il va répondre avec une adresse (hash) de contenu décentralisé, smart contract ou wallet » nous détaille encore Lifchitz.
Comment y accéder ?
Pour accéder à la place de marché, en interagissant directement avec le smart contract ou en passant par l'interface web (en construction), il faut obtenir un client Ethereum. Parmi les « lourds », qui peuvent constituer un nœud du réseau, Lifchitz recommande l'officiel Ethereum Mist ou son concurrent Parity.
Des clients plus légers, comme l'extension navigateur MetaMask, permettent d'interagir facilement avec un smart contract, sans pour autant donner la possibilité d'accéder à des sites Swarm. Il existe enfin des passerelles publiques vers Swarm à partir d'un navigateur classique, à l'image de swarm-gateways.net.
Quelques limites concrètes sur Ethereum
Si le prototype du Blockchain Password Market fonctionne, il subit les limites d'Ethereum. La principale est que seules les empreintes d'un mot de passe créées avec l'algorithme SHA-256 sont autorisées. C'est le moyen standard actuel de créer des hash, alors que des outils plus anciens, comme SHA-1 et MD5 sont considérés comme obsolètes.
Pourquoi cette limite ? Pour une question de coût. Au moment de vérifier qu'un mot de passe « craqué » correspond bien au hash de départ, le smart contract effectue l'opération sur les nœuds du réseau Ethereum. La puissance de calcul utilisée pour exécuter un smart contract est rémunéré en « gas », le coût d'une opération, versé aux mineurs.
« Il faut payer la puissance de calcul mobilisée pour faire tourner ce smart contract sur toutes les mailles du réseau. Faire tourner la vérification sur des dizaines de milliers de serveurs se paie, sinon n’importe qui pourrait faire n’importe quoi » rappelle Lifchitz.
SHA-256 est intégré directement à la machine virtuelle Ethereum, donc effectuer des opérations avec cet algorithme coûte peu. « Il y a déjà une instruction pour calculer un hash SHA-256 dans ma machine virtuelle Ethereum. Les smart contracts sont du bytecode. J’ai simplement appelé cette instruction pour vérifier la validité du mot de passe » explique le spécialiste. Avec un autre algorithme, comme MD5 ou SHA-1, il faudrait réécrire les instructions nécessaires à la vérification, créant une usine à « gas » très consommatrice, donc onéreuse.
Pour sortir de SHA-256, passer par un oracle ?
Pour le concepteur de la plateforme, une solution pourrait être de passer par un oracle, comprendre une passerelle qui permet d'interroger des services en dehors de la blockchain Ethereum, comme la météo ou des résultats sportifs.
« Il serait donc possible de faire le calcul de hash sur un service web classique et d’utiliser un oracle pour vérifier le hash, sans contrainte de « gas » » pense Lifchitz. Problème, ce serait s'appuyer sur un outil centralisé extérieur à la chaine de blocs, ce qui va à l'encontre du principe de la place de marché. Une autre piste peut être d'attendre qu'Ethereum intègre les autres algorithmes de hash voulus, à une échéance indéterminée.
Il n'est pas dit que le projet évolue beaucoup, dans l'absolu. Il a germé pendant six à huit mois, demandant cinq à dix jours intensifs de développement, dont les 100 lignes de code du smart contract, le cœur du système qu'il s'agissait de blinder. Suivant la blockchain « depuis presque six ans » et Ethereum depuis environ deux ans, il a été marqué par les ratés de grande envergure qu'ont connu d'autres plateformes fondées sur Ethereum, comme le célèbre The DAO, une entreprise dont 50 millions de dollars ont été siphonnés à cause d'un smart contract mal ficelé, obligeant à un « hard-fork » de cette blockchain.
Le langage des smart contracts peut lui-même réserver des pièges. « Solidity est un langage très proche de JavaScript, plus fortement typé, orienté objet » retient Renaud Lifchitz, pour qui la centaine de lignes de son contrat a demandé quelques jours de réflexion. Il faut dire qu'une fuite de 30 millions de dollars, de la société Parity, s'est jouée à un mot oublié dans le smart contract multi-signatures gérant leur ICO (sorte de levée de fonds). La prudence est donc de mise.
Une carte pour craquer des mots de passe
Côté programmation pourtant, le plus grand défi n'a pas été celui-ci. Il était du côté de la carte FPGA utilisée pour concevoir un craqueur de mots de passe hashés en SHA-256. Renaud Lifchitz affirme qu'il lui a fallu deux ans de « curiosité intensive » pour bien s'en servir, avant de lancer son projet, qui a permis de mettre en pratique son apprentissage.
Une carte FPGA est un outil très spécialisé, qui se présente sous une forme équivalente à celle du Raspberry Pi. Celui utilisé par le chercheur, le Digilent PYNQ-Z1, peut être obtenu à 100 ou 200 euros. « Pour 100 euros de FPGA, on peut battre une carte graphique sur certains calculs et s’amuser à programmer » résume-t-il. Il s'agit d'un circuit reprogrammable sur lequel « on câble physiquement l'algorithme », pour obtenir extrêmement rapidement son résultat. La seule énergie utilisée est celle nécessaire à l'action voulue.
Certains algorithmes s'y prêtent bien mieux que d'autres : « Cela peut battre un CPU multi-cœurs, à condition que ce soit du binaire pas trop complexe », comme le DES ou 3DES. Il reste que le paradigme de développement diffère grandement de celui d'un projet logiciel classique. Ici, au lieu de se suivre automatiquement, les instructions peuvent s'exécuter en même temps. Il faut donc tout orchestrer très précisément.
D'ailleurs, le problème n'est pas le craquage de mots de passe hashés en SHA-256, des blocs existant déjà, pour être installés sur tous les ports physiques libres de la carte au besoin, pour multiplier la vitesse de traitement. Non, « la difficulté est d’instrumenter ce bloc et de faire les entrées sorties du FPGA. Tant que tout est en interne, avec des paramètres statiques, c'est simple » explique notre interlocuteur. Faire entrer un hash et récupérer le mot de passe est le plus compliqué.
« Il faut des modules pour gérer de l'USB, du port série (UART), lire les entrées utilisateur (au niveau utilisateur, en base 10 ou ASCII, il faut un module de conversion)... C’est déjà extraordinairement complexe ! » affirme-t-il, jugeant ce travail « extrêmement fun et formateur ».
Deux mots de passe déjà obtenus
Pour la Nuit du hack, il a mis en ligne quatre mots de passe à casser, pour un total de 120 euros de récompense. Un « password bounty » en somme. Deux ont été trouvés : « toto » en moins d'une journée et « AleaJactaEst » en quelques jours. « La difficulté était plus d’interagir avec le smart contract que de casser le mot de passe » pense notre interlocuteur. Deux autres, plus longs et plus complexes, attendent encore leurs sauveurs.
La suite est encore indéterminée. Suite à la conférence, fin juin, une développeuse s'est proposée de finaliser l'interface web. La fin de l'année sera déjà un jalon important. C'est à ce moment qu'est attendu Ethereum 3 et, potentiellement, la version finale de Swarm, l'outil qui héberge ladite interface. Au passage de la version bêta à la stable, il se peut que tous les contenus aujourd'hui stockés gratuitement par les nœuds du réseau soient supprimés, pour passer à un modèle rémunéré. Les 5 % de commission demandés sont (entre autres) une anticipation de ce changement.
Pour le moment, la plateforme n'a pas encore enregistré de soumission de nouveau hash. La seule présentation (en français) a été celle de la Nuit du hack. Une communication plus large pourrait suivre, notamment avec la diffusion du code source du smart contract. Si le but n'est pas de dépasser le stade du prototype, seul l'avenir dira si cette plateforme décentralisée percera dans le monde de la sécurité informatique.