Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Zcoin, une extension du Bitcoin au centre d'une énorme fuite estimée à 400 000 $,
Les failles d'un projet open source

Le , par Patrick Ruiz

8PARTAGES

7  0 
Depuis novembre 2008, le concept de monnaie cryptographique dénommée Bitcoin a connu bien de reproductions. On en dénombre à ce jour au moins 700 variantes. Celle au centre de notre attention aujourd’hui est Zcoin et pour cause, une erreur de saisie dans l’implémentation du protocole Zerocoin a permis à des hackers de s’emparer de l’équivalent de 400 000 $.

De Bitcoin à Zcoin


Le concept de Bitcoin se résume en une phrase simple : « la possibilité d'échanger de l’argent via internet comme on le ferait avec des courriels ». Comme pour un échange de courriels, on fait donc usage d’adresses (pour envoyer de l’argent à Jerry, Amy a besoin de connaitre son adresse ou Public Key). Elles sont générées automatiquement par un portefeuille Bitcoin (dans la figure ci-dessus, Amy et Jerry disposent de portefeuilles installés sur leurs téléphones respectifs). Transférer des bitcoins d’un portefeuille à un autre prend le nom de transaction dans la terminologie du concept Bitcoin. La totalité des transactions est enregistrée dans la blockchain (chaine de blocs), laquelle est rendue publique à chaque nœud (utilisateur) du réseau. On peut bien voir qu’une transaction encapsule au moins une information cruciale, celle d’adresse. Celle-ci peut permettre de « tracer » les activités d’un utilisateur sur le réseau et de fil en aiguille de retrouver sa véritable identité.

Le Bitcoin est donc un système permettant de transférer de l’argent dans un pseudoanonymat. Le protocole Zerocoin est une extension du Bitcoin mis en place pour lever cette limitation majeure c’est-à-dire permettre aux utilisateurs du réseau Bitcoin de pouvoir transférer leurs avoirs dans un réel anonymat, ce, par l’utilisation d’un portefeuille compatible Zcoin (Zcoin est une implémentation pratique du protocole Zerocoin). Faisons simple, utilisez un portefeuille compatible Zcoin pour opérer sur le réseau Bitcoin tout en vous affranchissant du risque de vous faire pister.

Les failles dans le projet Zcoin

Le projet Zcoin est open source. Son code source est disponible sur GitHub. Des sections particulières de celui-ci ont été dévoilées par le biais de cryptocentral. Elles mettent en exergue les failles exploitées par les hackers pour pouvoir dérober des fonds. L’usage de l’opérateur de test d’égalité (==) à la place de celui d'affectation (=) dans diverses sections du code source aura permis aux hackers de déjouer le système pour s’emparer de fonds estimés à 400 000 $.

Les auteurs du code source et les contributeurs auraient-ils tous fait fi d’un principe fondamental du test de logiciel qui stipule que « l’absence de bogue dans une application est une utopie » ? Un contributeur malhonnête aurait-il détecté la faille et profité pour extorquer des fonds ? En tout cas voilà qui remet sur la table le débat sur la pertinence de faire d’un projet un « open source ». Zcoin a pour sa part annoncé avoir corrigé le problème.

Sources : weusecoins, github, cryptocentral

Et vous ?

Pensez-vous qu'un contributeur au projet soit derrière cet acte ?

Finalement, mettre un projet dans le domaine public aurait-il plus d'inconvénients que d'avantages ?

Voir aussi :

La cryptomonnaie bitcoin connaît une envolée dépassant les 800 dollars pour un bitcoin en cette fin d'année, peut-on l'utiliser comme valeur refuge ?

Le système de paiement de Bitcoin aurait-il atteint ses limites ? Plusieurs transactions n'auraient pas été validées après des heures d'attente

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Matthieu Vergne
Expert éminent https://www.developpez.com
Le 08/03/2017 à 18:50
Je ne sais pas si les adeptes de cette crypto-monnaie sont des croyants du "zéro test parce que zéro défaut", mais penser que trouver un bogue dans un projet open-source relance le débat sur la pertinence de faire un projet en open-source ne me semble pas plus mature. Si on devait remettre en cause l'idée de faire des projets propriétaires à chaque fois que M$ bogue, on n'aurait jamais le temps de dormir.
3  0 
Avatar de monwarez
Membre actif https://www.developpez.com
Le 09/03/2017 à 9:29
Ce bug aurait pu être évitée en compilant avec -Wall . Je viens de faire un test avec le code suivant
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
int main()
{
    int a = 5;
    int b = 6;

    a == b;

    return 0;
}
Qui donne lors de la compilation avec les warnings
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
main2.cpp:6:7: warning: equality comparison result unused [-Wunused-comparison]
    a == b;
    ~~^~~~
main2.cpp:6:7: note: use '=' to turn this equality comparison into an assignment
    a == b;
      ^~
      =
1 warning generated.
2  0 
Avatar de Matthieu Vergne
Expert éminent https://www.developpez.com
Le 09/03/2017 à 10:05
Citation Envoyé par monwarez Voir le message
Ce bug aurait pu être évitée en compilant avec -Wall .
Vu que ce ne sont que des warnings, il ne suffit pas d'utiliser l'option. Encore faut-il faire l'effort de corriger les causes des warnings. Et si l'équipe n'a pas cette habitude (ce qui me semble relativement commun) le projet doit avoir une quantité phénoménale de warnings. Ce qui bien entendu amène à les ignorer purement et simplement, rendant l'option totalement inutile. Je n'ai pas compilé leur code, donc je ne sais pas si ça s'applique à leur cas, mais ce serait une explication possible (ce qui ne n'efface pas leur responsabilité, on est bien d'accord).
2  0 
Avatar de Matthieu Vergne
Expert éminent https://www.developpez.com
Le 15/04/2017 à 9:09
Citation Envoyé par Matthieu Vergne Voir le message
Je ne sais pas si les adeptes de cette crypto-monnaie sont des croyants du "zéro test parce que zéro défaut", mais penser que trouver un bogue dans un projet open-source relance le débat sur la pertinence de faire un projet en open-source ne me semble pas plus mature. Si on devait remettre en cause l'idée de faire des projets propriétaires à chaque fois que M$ bogue, on n'aurait jamais le temps de dormir.
Bien, à la lumière des dernières news sur Windows, bien pire que celle-ci, j'attends donc un article DVP nous informant que le débat sur la pertinence de faire un projet propriétaire est relancé. {^_^}
2  0 
Avatar de Matthieu Vergne
Expert éminent https://www.developpez.com
Le 14/03/2017 à 11:50
Citation Envoyé par NSKis Voir le message
Bon les théories du complot assaisonnées d'un peu d'anarchisme, cela va un moment!!!

L'euro est utilisé par 340 mio d'habitants et sa valeur repose sur l'économie de 19 pays de l'UE!!! Alors certains guignols peuvent toujours cracher sur les monnaies étatiques et porter au nu le bitcoin. Toujours est-il que dans la vie de tous les jours quand tu dois payer le plein d'essence de ta bagnole ou la miche de pain chez ta boulangère, tu peux t'assoir sur tes bitcoins!!!

Alors au lieu d'écrire des conneries, dis-nous combien de personnes utilisent les bitcoins pour leur dépenses courantes et dis-nous surtout sur quoi repose la valeur du bitcoin si ce n'est sur un miroir aux alouettes??? T'aurais-t-il échappé que la valeur du bitcoin correspond à la somme en argent "étatique" (dollars, euro, etc.) que les pigeons veulent bien dépenser pour en acheter?
Il est certes expéditif, mais il a raison, et cela n'a rien à voir avec des théories du complot ou de l'anarchisme.

D'une part, l'euro existe majoritairement sous forme virtuelle, vu que les pièces et billets ne font qu'une petite partie des euros en circulation. Donc physiquement parlant, l'euro et le bitcoin sont très similaires : les échanges se font majoritairement sous forme de transferts purement numériques.

D'autre part, l'euro n'est pas adossé à une quelconque ressource physique, comme l'or. Sa valeur n'a donc comme base que le fait que la loi oblige à accepter ces billets et pièces en euros en banque ou dans les commerces (cf. monnaie fiduciaire). Ce qui rajoute a l'idée que tes euros n'ont de valeur que ce que les gens veulent bien leur donner, ce qui est totalement subjectif, mais se décide en fonction des lois du marché.

Ce qui donne l'illusion de valeurs solide est le fait que ce soit hautement régulé, pour éviter justement les inflations/déflations abusives qui rendent la valeur de la monnaie fluctuante. C'est la BCE qui est en charge de garantir la stabilité de l'euro, alors que le bitcoin est sujet aux aléas du marché. Mais régulation ou monnaie nationale ne garantie pas pour autant stabilité, on a vu l'exemple du dollars du Zimbabwe et autres cas d'hyperinflations.

Et contrairement à ce que tu sembles penser, on utilise bien le bitcoin pour des achats de tous les jours.

Donc que cela te plaise ou non, effectivement le bitcoin n'est pas moins réel que l'euro. Oui, il est plus utilisé et plus régulé, mais ce ne sont pas des critères qui établissent la réalité d'une monnaie.
1  0 
Avatar de JackJnr
Membre confirmé https://www.developpez.com
Le 08/03/2017 à 18:07
L’usage de l’opérateur de test d’égalité (==) à la place de celui d'affectation (=) dans diverses sections du code source
Ca me rappelle une histoire au sujet du noyau Linux. Quelqu'un avait tenté de faire passer une modif pour s'octroyer les droits root en transformant le test d'égalité en affectation, mais dans ce cas ça avait été remarqué
0  0 
Avatar de Lcf.vs
Membre éclairé https://www.developpez.com
Le 08/03/2017 à 18:32
Citation Envoyé par Patrick Ruiz Voir le message
Zcoin a pour sa part annoncé avoir corrigé le problème.
Ben, encore heureux
0  0 
Avatar de Lcf.vs
Membre éclairé https://www.developpez.com
Le 08/03/2017 à 19:11
@Matthieu Vergne: Ouep, et on peut en dire tout autant de l'association de ces bugs, aux crypto-monnaies... les systèmes basés sur des monnaies réelles n'en sont pas plus à l'abri, loin de là...
0  0 
Avatar de kain_tn
Membre émérite https://www.developpez.com
Le 09/03/2017 à 22:03
Citation Envoyé par Patrick Ruiz Voir le message
En tout cas voilà qui remet sur la table le débat sur la pertinence de faire d’un projet un « open source »
Wouaou... Heureusement que l'on est entre professionnels de l'informatique...
0  0 
Avatar de micka132
Expert confirmé https://www.developpez.com
Le 08/03/2017 à 17:55
Citation Envoyé par Patrick Ruiz Voir le message

Finalement, mettre un projet dans le domaine public aurait-il plus d'inconvénients que d'avantages ?
En tout cas ca ne le rend en rien plus sécurisé!
Prochain scandale ca sera les chevaux de troyes dans nos navigateurs avec un code source pourtant bien visible par "tout le monde".
0  1