Mauvaise implémentation et vol de Bitcoins

Published on: Aug 23 2013 by Calypt

L’affaire a fait assez de bruit pour que le site officiel de Bitcoin se fende d’un communiqué daté du 11 août 2013 : en effet des “pertes” de Bitcoins ont été signalés par des utilisateurs de la monnaie électronique.

Dans le protocole d’échange de monnaie Bitcoin, on appelle entrées (inputs) un ensemble de références de transactions précédemment effectuées permettant d’assurer que la personne à l’origine du transfert possède réellement la quantité de Bitcoins à transférer. Les sorties (outputs) déterminent le bénéficiaire de la transaction et seront les entrées d’une future transaction.

Chaque entrée est signée par l’auteur de la transaction avec sa clef privée. Bitcoin utilise ECDSA pour la signature.

Une étape de l’algorithme ECDSA de génération de signature consiste à tirer un nombre aléatoire. Cette étape est critique car si le même nombre aléatoire est utilisé pour générer les signatures de deux messages, on peut déduire la clef privée ayant signé les messages.

Or sur Android, une implémentation malheureuse de la méthode SecureRandom de génération de nombres pseudo-aléatoires faisait qu’en sortie du PRNG les nombres n’étaient pas si aléatoires que cela. Dans le cas de Bitcoin cette méthode était utilisée dans création de la clef privée ainsi que pour tirer le fameux nombre “aléatoire” utilisé lors de la signature des transactions. Les transactions Bitcoin sont référencées dans une base de données publique (blockchain) partagée par tous les utilisateurs du système. Il semblerait que des petits malins aient récupéré des signatures des entrées et en aient déduit des clefs privées correspondantes.

Bitcoin a mis à jour les applications Android pouvant poser problème et Android devrait être patché.

 

 

Filed under: Android, Crypto
Tags: ,

Leave a Reply

*

*