Signature des données avec ECDSA

Prithaj Nath

Signature des données avec ECDSA


Je lisais sur les mathématiques derrière les bitcoins dans cet article , et une chose que je n’arrive pas à comprendre est la façon dont ledit algorithme est utilisé pour signer les « données ». Qu’est-ce que ces «données» exactement? Est-ce mon bitcoin? Si oui, comment un bitcoin est-il représenté exactement en termes de données? Disons que j’ai 5 bitcoins dans mon portefeuille Coinbase que je veux envoyer à mon ami. Comment cela se traduirait-il dans l’ensemble du processus « gagner la clé privée et signer vos données avec » comme décrit dans l’article?

Désolé si c’est une question trop novice, je suis nouveau dans les concepts de cryptographie. Merci d’avance!

Réponses


 David Schwartz

Chaque Bitcoin existant aujourd’hui existe en tant que sortie de transaction non dépensée (UTXO) sur la blockchain Bitcoin. C’est-à-dire la sortie d’une transaction confirmée existante qui n’a pas encore été consommée comme entrée d’une autre transaction.

Coinbase possède une collection d’UTXO qui représentent les Bitcoins qu’ils détiennent. Lorsque vous dites à Coinbase d’effectuer un paiement Bitcoin à quelqu’un de votre portefeuille, ils choisissent un ou plusieurs de ces UTXO pour effectuer le paiement.

Ils forment ensuite un bloc de données qui revendique ces UTXO et crée un nouvel UTXO donnant les Bitcoins au destinataire et un autre leur redonnant toute modification. C’est ce bloc de données qu’ils signent avec la clé de chaque UTXO qu’ils dépensent avec ce paiement.

Une fois la transaction confirmée, le nouvel UTXO pour le destinataire est le Bitcoins que vous lui avez envoyé. Quand ils voient que UTXO apparaît sur la blockchain, ils savent que vous les avez payés. Ils peuvent ensuite former une transaction qui dépense cet UTXO pour transférer ces Bitcoins à quelqu’un d’autre.


 karimkorun

Une coin est décrite par 3 choses.

  • Le txid sortie: l’indice txid et de sortie dans la transaction de création. Identifie explicitement les pièces dépensées
  • Le montant
  • Le scriptPubKey

Pour dépenser une pièce, vous créez une transaction spécifiant le point de sortie comme entrée. Vous spécifiez certaines destinations (appelées sorties). Le scriptPubKey vous demande souvent de fournir une signature authentifiant la dépense.

ECDSA spécifie de prendre h = H(m) mod n , où H (m) est un algorithme de hachage, et d’utiliser ces données pour calculer une signature par une clé privée. Votre question est, qu’est-ce que m ?

m (les données en cours de signature) est une transaction sérialisée selon les indicateurs SIGHASH qui déterminent les parties qui sont engagées dans la signature.

  • SIGHASH_ALL valide l’intégralité de la transaction en tant que «données», donc si l’une de ces données change (quelqu’un ajoute une entrée ou change une destination), la signature est invalide.
  • SIGHASH_NONE capture tout sauf les sorties (l’index de sortie est redimensionné à zéro). Cela garantit que la signature est valide tant que les entrées restent les mêmes. Les sorties peuvent être modifiées à volonté.
  • SIGHASH_SINGLE capture une entrée et une sortie. Tout le reste peut changer sans rendre la signature invalide.
  • SIGHASH_ANYONECANPAY peut être appliqué sur les autres types de sighash. Une seule entrée est signée (la vôtre) et les sorties.

Les drapeaux SIGHASH sont ajoutés à la signature, ce qui permet aux autres de répéter la procédure effectuée lors de la signature.

Il existe d’autres modifications: – les scripts d’entrée sont mis à zéro, car les signatures ne peuvent pas se signer elles-mêmes. – le txout.scriptPubKey est ajouté en tant que txin.scriptSig pour ce vin (la partie depuis le dernier OP_CODESEPARATOR) – à la toute fin, le hashTypeCode (drapeau sighash à 4 octets) est ajouté

Pour plus de détails sur ce processus, lisez cette page et l’image: https://en.bitcoin.it/wiki/OP_CHECKSIG

Le témoin séparé inclut une modification de la façon dont m est dérivé. Voir BIP 143: https://github.com/bitcoin/bips/blob/master/bip-0143.mediawiki

 

avec, des, données), ECDSA:, signature

 

yahoo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *