Commentaires : Comment une faille de sécurité a permis à des chercheurs de récupérer 3 millions d’euros en bitcoin

Deux années se sont écoulées depuis que « Michael », un détenteur de Bitcoin (dont le cours semble repartir de plus belle), a été privé de l’accès à une coquette somme avoisinant les trois millions d’euros. Un fichier corrompu en était la cause, l’empêchant de récupérer cette précieuse réserve virtuelle. Cependant, la persévérance de deux chercheurs, Joe Grand et son acolyte Bruno leur a permis de déjouer cet écueil en exploitant une brèche dans le générateur de mots de passe RoboForm.

Maintenant il faut qu’ils développent un algorithme pour déterminer le parcours d’un disque dur dans une décharge :wink:

5 « J'aime »

J’imagine que les « chercheurs » ont eu le droit à une récompense ?

Puis concevoir une technique pour récupérer des données d’un disque dur qui a baigné des années dans du jus de poubelle :rofl:

3 « J'aime »

bah, un petit coup de Paic citron :sweat_smile:

2 « J'aime »

Si j’extrapole, cela veut dire que le véritable hasard n’est pas concevable en informatique ?

Ça ne peut pas se faire de façon strictement programmatique. Pour faire du vrai hasard, il faut un composant dédié, qui va générer une « graine » qui permet d’initialiser l’algorithme de génération. En général, ça se fait en mesurant des variations de certaines mesures physiques, par exemple les irrégularités dans les tensions d’alimentation ou dans les fréquences de certains signaux.

Un exemple concret, il y a quelques années un des jeux de hasard à tirage fréquent (trop pour le faire avec des boules) de la FDJ fonctionnait avec quelques micros disséminés en région parisienne, et c’est le bruit ambiant mesuré par ces micros qui servait de graine pour l’algorithme de génération.

Une autre solution, utilisée par exemple dans VeraCrypt et KeePass, c’est de demander à l’utilisateur de faire des mouvements de souris ou des frappes au clavier pour générer la clé, ça permet là aussi d’avoir une graine imprévisible.

Après, pour pas mal d’usages, on peut se contenter d’une graine basée sur le temps à la microseconde près (avec quand même le risque dans ce cas d’une attaque si on connait l’heure où l’initialisation a eu lieu, mais si on a cette heure seulement à la seconde près, ça fait quand même déjà un million de graines à tester au minimum… à priori RoboForm se basait sur l’heure à la seconde près, pas à la microseconde) ou sur le compteur de cycles du CPU (là ça devient très compliqué à deviner, surtout avec les CPU dont la fréquence varie en permanence, même si tu connais le modèle de CPU et sait que ça a été généré x secondes après le démarrage de la machine, c’est très dur de prévoir de façon fiable la valeur du compteur), surtout si en plus on utilise ensuite un algorithme de génération suffisamment complexe pour empêcher le brute force.

Par exemple, si ton algo de génération met 1s à générer un mot de passe à partir de la graine et que la graine est basée sur le temps à la microseconde, quelqu’un qui saurait à 10 minutes près l’heure de génération du mot de passe aura statistiquement besoin de 10 ans pour trouver le mot de passe.

2 « J'aime »

Merci, très intéressant !

Pour compléter ce que dit @MattS32 : oui le véritable hasard n’existe pas, il faut trouver une base issue d’un chaos (heureusement le monde réel en est rempli) pour ne limiter fortement la reproductibilité de la génération de nombres aléatoires.
D’un autre coté, la reproductibilité des algos de générations de nombres « aléatoires » est souvent pratique en informatique, par exemple pour les tests, les validations, les simulations, …

1 « J'aime »

Dans la serie hasard, je me souviens avoir lu il y a quelques annees qu’une grande societe generait ses mots de passe ou salt ou je ne sais plus quoi a partir de cameras qui etaient braquees sur un mur de « lava lamps », et donc filmaient unr image « aleatoire » pour generer un input aleatoire.