Salut les Français !
Je bosse sur un projet dans le cadre duquel j’ai besoin de construire une table de correspondance entre des mots de passe et leurs hash cryptographiques.
Seulement voilà, l’algorithme de calcul de ces hash (argon2id) est spécifiquement construit pour être long et coûteux a calculer. Or moi j’ai besoin d’un gros volume de données aléatoires (+2Gib), et memes avec toute ma puissance dont je dispose a la maison, ça me prendrait des mois.
J’ai donc mis au point hashcrush, un “brûleur de CPU”, qui calcule ces précieux hash en utilisant toute la puissance disponible sur la machine qui l’exécute. Je l’ai testé sous Linux et OpenBSD.
Parce que je crois en l’'esprit communautaire et l’entraide dans la vie de tous les jours, je préfères demander de l’aide au sein des communautés auxquelles j’appartiens plutôt que d’engraisser les fournisseur de service (qui me louerait du CPU à foison pour le même résultat avec grand plaisir).
Donc si vous voulez bien me filer un coup de main, clonez le dépôt et mangez du hash ! Toutes les infos sont sur la page du projet.
Si vous avez des questions, n’hésitez pas à les poser ici.
Merci les copains :)
Edit: pour ceux que ça intéresse, on a atteint l’objectif. Ça nous aura prit 3 jours, contre 8 mois si j’avais fais ça tout seul !
dans quel but ?
Sans rentrer dans les détails, c’est pour un challenge de type CTF (donc à but purement récréatif).
parce que sans rentrer dans le détail, ça ressemble à du brute force sur un dump de base de donnée.
Effectivement ça peut y ressembler, et t’as raison d’être méfiant.
Mais si vraiment c’était du brute force et que c’était illégal, je ne publierais pas ça en mon nom, publiquement sur le web :)
Ensuite, concrètement tu peux voir que les hash générés utilisent un “sel” généré aléatoirement pour chaque mot de passe: hashgen.go#L97 et hashdump#L4. Si vraiment c’était un brute-force sur une base existance, alors je devrais utiliser un sel pré-existant récupéré dans cette DB. La technique est décrite dans l’article d’OWASP sur le stockage des mot de passe, qui mentionne justement Argon2ID. Spécifiquement cette phrase:
an attacker has to crack hashes one at a time using the respective salt rather than calculating a hash once and comparing it against every stored hash.
Comme je le disais dans mon cas, les “salt” de chaque hash sont générés aléatoirement à la volée, et donc ne peuvent pas correspondre dump de données (ou alors ce serait pas de bol, avec 1 chance sur 2^128).
Dans mon cas, je m’en fiche car le but est justement de générer une “fausse” base de données, mais avec des résultats cohérents.
Si tu as d’autres questions, ou si je dois éclaircir certains points, n’hésites pas !
Mais qui dépenserait de l’argent à miner tes mots de passe sans contrepartie financière? Autant miner du Bitcoin quand tu as les ressources
J’imagine que c’est pour de l’entrainement en sécurité / hacking white-hat etc.
Dans une ancienne boite ils faisaient des concours comme ça régulièrement où le mec de la sécurité créaient des services avec des failles à attaquer etc., avec des prix à la clé pour qui y arrivait. Ça permet d’éduquer sur la sécurité et aussi de repérer les devs qui ont le talent pour, un mec de mon équipe a d’ailleurs été transféré dans le departement de sécurité IT suite à un de ces exercises.
C’est effectivement quelque chose dans ce goût là (mais a titre personnel plutôt que professionnel).
Malheureusement je ne pourrais pas te payer pour le faire donc si c’est un frein pour toi, tu es libre de t’abstenir !
Il y a quelques personnes qui me donnent déjà un coup de main uniquement par gentillesse, et c’est cool ! C’est tout ce que je demande :)
argon2id me fait penser à des bases de données sur disque luks. Ça me paraît shady ton truc.
Peux-tu entrer dans les détails, exactement ?
cf. ce commentaire.
Pour donner des détails sur le contexte, mon but est de générer une “fausse” base de données, mais avec des résultats cohérents (donc de vrais hash). Et j’ai besoin d’un gros volume de données pour rendre difficile l’utilisation d’outils standard type
grep(1)
et forcer les joueurs à utiliser des méthodes plus efficaces de recherches de valeurs.Super. Merci de la précision. Ça peut en effet être super intéressant, c’est le genre de choses qui pourraient aussi m’intéresser d’apprendre si j’avais le temps/les compétences.
Je vais essayer de faire tourner ton programme un peu les prochains jours. Comment poster les hashs ?
Tu peux les uploader ici: https://up.qw.is Tout est indiqué dans le README ;)
J’ai la flemme de faire ça manuellement, mais si tu crées une image docker avec un paramètre qui permet de le faire tourner sur une plage horaire spécifique je veux bien mettre ça sur mon serveur local pour quelques semaines
Mmmh je saurais pas pondre un dockerfile pour ça, et puis j’ai aucun moyen de tester en plus, désolé :/