ecdsa : Si quelqu'un voulait se faire passer pour Satoshi en publiant une fausse signature pour frauder les gens, comment pourrait-il le faire ?


Malheureusement, étant donné la compréhension limitée du public en matière de cryptographie, il s'agit apparemment d'une fraude facile à réaliser.

L'astuce clé est que les personnes non techniques sont enclines à croire des choses qui sonnent assez jargonnelles et que les personnes techniques ont tendance à penser qu'elles en savent beaucoup plus qu'elles ne le font en réalité – et sont donc facilement envoyées dans les mauvaises herbes.

Dans les cryptosystèmes, les détails sont plus importants que vous ne pourriez l’imaginer. Donc, tout ce que vous avez à faire est de créer une contrefaçon qui fonctionne pour un système cryptographique légèrement modifié, puis beaucoup de gens qui PENSENT comprendre le fonctionnement de l'ECDSA se précipiteront pour affirmer que le résultat est valable.

ecdsa : Si quelqu'un voulait se faire passer pour Satoshi en publiant une fausse signature pour frauder les gens, comment pourrait-il le faire ?

La plupart des modifications auxquelles vous pouvez penser suffisent à rendre le système non sécurisé.

Ainsi, par exemple, il y a quelques années, Craig Wright a affirmé « prouver qu'il était Satoshi » en copiant simplement certaines signatures préexistantes hors de la blockchain et en publiant des instructions quelque peu obscurcies pour les vérifier. Cela a été compris assez rapidement, mais cela a quand même réussi à tromper beaucoup de gens – ils étaient trop pris dans le charabia pour penser à l’évidence. La « modification » dans ce cas était que le message que l'escroc prétendait signer n'avait tout simplement aucun rapport avec le message qui avait été réellement signé.

Plus récemment, il semble que quelqu'un ait tenté à nouveau quelque chose de similaire, mais cette fois avec des « signatures » qui ne provenaient pas de la blockchain. ce qui a entraîné une « vérification » de la part des développeurs de certains clients BCH auprès d'un ingénieur de RedHat. Mais il s’avère, encore une fois, que la tentative était fausse et que la compréhension partielle mais incomplète de la cryptographie les a brûlés.

Comme le note le développeur Bitcoin Pieter Wuille, « les signatures ECDSA où le message n'est pas un hachage et choisi par le « signataire » ne sont pas sécurisées. » – cette fois, l'escroc vient de publier des tuples « hash », r, s. La partie hachage d'ECDSA fait partie intégrante de l'algorithme. Si le vérificateur n'exécute pas lui-même le hachage, les propriétés de sécurité de l'ECDSA ne sont pas valables et une contrefaçon existentielle devient triviale.

]

Si le vérificateur n'effectue pas lui-même le hachage mais accepte simplement une valeur donnée par le signataire, il devient sensible à ce qui suit  : Étant donné la clé publique P, choisissez des valeurs aléatoires non nulles a et b. Calculez R=aG+bP. Maintenant (Rx, Rx/b) est une signature valide sous la clé P pour « message-hash » (Rx*a/b).

Cela ne compromet pas la sécurité du véritable ECDSA car vous ne pouvez pas trouver un message haché selon une valeur choisie (Rx*a/b).

Les gens doivent se méfier des « preuves » obscurcies ou trop techniques, des choses qui ressemblent « à » à un système sécurisé mais, pour une raison quelconque, des personnes le vérifient en travaillant avec des chiffres ou du code bruts. Un logiciel cryptographique bien conçu a déployé beaucoup d’efforts pour éviter que les utilisateurs ne soient trompés par des cascades comme celle-ci. Ce genre de choses est délicate et n’importe qui pourrait être amené à accepter une fausse preuve s’il était convaincu de mettre en œuvre lui-même efficacement un système de cryptographie sur mesure. Un système cryptographique n’est pas sécurisé simplement parce que vous, personnellement, ne voyez pas comment le casser.

Voici un exemple de script Sage pour produire des contrefaçons qui tromperont quelqu'un qui accepte une « signature » ECDSA sans hacher lui-même le message. Il fonctionne avec n'importe quelle clé EC, y compris celle dont le faussaire n'a jamais vu de signature auparavant.

order()) P = P=-C def forge(c, a=-1) : # Créer une fausse signature 'ECDSA' (sans hachage) # définir a sur quelque chose d'autre que -1 pour être moins évident a = N(a) R = c*G + int(a )*P s = N(int(R.xy()[0]))/a m = N(c)*N(int(R.xy()[0]))/a print 'hash1 = %d'%m print 'r1 = %d'%(int(R.xy()[0])) imprimer 's1 = %d'%s pour c dans la plage (1,10) : forger(c)

Ce code produit de fausses contrefaçons du type de celles utilisées récemment pour tromper les gens.

hachage1 = r1 = s1 =