Bitcoin Forum
December 07, 2016, 12:57:35 PM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   Home   Help Search Donate Login Register  
Pages: [1]
  Print  
Author Topic: Nachricht signieren wozu?  (Read 2747 times)
Wolf
Newbie
*
Offline Offline

Activity: 19


View Profile
May 18, 2012, 07:10:05 PM
 #1

Ich habe das mit dem Signieren einer Nachricht (bitcoin-qt) noch nicht verstanden. Ich finde es auch völlig unzureichend erklärt im Client.
Also ich kann eine Empfangs-Adresse auswählen, dort eine Nachricht hinzufügen und das dann signieren. Ja und dann???
Was mache ich mit der "Nachricht". Wer bekommt die? Wie kann er diese Signatur überprüfen? Wie bekomme ich diese Nachricht überhaupt zu einem möglichen Empfänger?
Ich könnte mir vorstellen, dass ich die Adresse, die Nachricht und die Signatur einzeln in eine E-Mail kopieren und dann an jemand senden soll, von dem ich Bitcoins erwarte. Aber wenn das so ist, warum kann ich dann nicht alles zusammen in die Zwischenablage kopieren? Das scheint mir noch völlig unausgegoren zu sein. Oder verstehe ich da etwas falsch?
Und was soll die Warnung bedeuten, dass man "nicht ungewollt" etwas signieren soll?? Was könnte das denn sein?

1481115455
Hero Member
*
Offline Offline

Posts: 1481115455

View Profile Personal Message (Offline)

Ignore
1481115455
Reply with quote  #2

1481115455
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1481115455
Hero Member
*
Offline Offline

Posts: 1481115455

View Profile Personal Message (Offline)

Ignore
1481115455
Reply with quote  #2

1481115455
Report to moderator
1481115455
Hero Member
*
Offline Offline

Posts: 1481115455

View Profile Personal Message (Offline)

Ignore
1481115455
Reply with quote  #2

1481115455
Report to moderator
meneken
Newbie
*
Offline Offline

Activity: 18


View Profile
May 21, 2012, 08:59:51 PM
 #2

Würde ich auch gern mal wissen.
wareen
Millionaire
Hero Member
*****
Offline Offline

Activity: 742

bitcoin-austria.at


View Profile
May 22, 2012, 07:19:19 AM
 #3

Die Funktion ist wirklich nicht besonders ausführlich dokumentiert und die derzeitigen Anwendungsfälle sind auch recht überschaubar. Es kann jedoch sinnvoll sein wenn du zBsp jemandem etwas überweist und der Empfänger dann anzweifelt das Geld wirklich von dir bekommen zu haben. Dann kannst du eine Nachricht wie zBsp "Ich, Vorname Nachname habe 100 BTC an die Adresse 1abc... überwiesen" erstellen und mit einer Absenderadresse der entsprechenden Transaktion signieren. Damit kannst du zweifelsfrei belegen dass wirklich du derjenige warst der die Überweisung durchgeführt hat.

Wie die Nachricht und die Signatur zum Empfänger kommen bleibt dir überlassen - e-mail bietet sich an. Die Adresse brauchst du allerdings nicht mitschicken, da der entsprechende public key aus der (kompakten) Signatur rekonstruierbar ist. Im Normalfall ist es auch eher so gedacht dass der Empfänger dir eine Nachricht schickt mit der Bitte diese zu signieren und du ihm dann nur mehr die Signatur zurückschickst. Der Empfänger kann dann mit dem RPC-Kommando verifymessage die Authentizität der Signatur überprüfen.

Die aktuelle Implementierung dieser Funktion im GUI ist derzeit eher nur proof-of-concept - wirklich praktisch wird das wohl erst in künftigen Versionen. Wenn du message signing brauchst, dann würde ich mal Armory ausprobieren - der bietet bereits eine etwas ausgereiftere Implementierung im GUI. Ansonsten: Kommandozeile!
antares
Hero Member
*****
Offline Offline

Activity: 518


View Profile
May 23, 2012, 12:32:07 AM
 #4

naja, der nutzen ist doch eigentlich offensichtlich:

Beispielsituation:
A und B wollen bitcoins gegen paypal oder sonstewas tauschen
A hat die GayPal USD, B hat die Bitcoins

A traut B aber nicht, und möchte einen beweis, dass B die BTC wirklich besitzt. (eine von mehreren sicherheitsvorkehrungen)
Nun geht B hin, und signiert irgendeine nachricht mit dem Key, auf dem die Bitcoins liegen. diese signierte nachricht veröffentlich er.
Nun kann A die signatur verifizieren, und zb im Blockexplorer nachschlagen, dass die Addresse von B tatsächlich die coins enthält.

Dadurch dass die Signatur (nach derzeitigen massstäben, das ganze ist nach wie vor genauso wie die cryptographie nur ein mathematisches problem, keine sichere cryptographie) stimmt, kann A sicher sein, dass B kontrolle über die Addresse besitzt, weil B den Private Key zu dieser Addresse benötigt, um die nachricht zu signieren.
Wolf
Newbie
*
Offline Offline

Activity: 19


View Profile
May 25, 2012, 07:42:16 AM
 #5

> Nun kann A die signatur verifizieren, und zb im Blockexplorer nachschlagen, dass die Addresse von B tatsächlich die coins enthält.

Kannst du das bitte nochmal genauer erklären? Für mich liest sich das so, als könne man anhand der Signatur über den Blockexplorer ermitteln, wie viele Bitcoins der Betreffende (B) in seinem Wallet hat.
Wolf
Newbie
*
Offline Offline

Activity: 19


View Profile
May 25, 2012, 09:11:40 AM
 #6

> Dann kannst du eine Nachricht wie zBsp "Ich, Vorname Nachname habe 100 BTC an die Adresse 1abc... überwiesen" erstellen und mit einer Absenderadresse der entsprechenden Transaktion signieren.

Auch das ist mir unklar! Ich bekomme in meinem Client z.B. den Button "Nachricht signieren" nur im Menü "Bitcoins empfangen". Da sind natürlich gar keine Absenderadressen drin?!?!

Es scheint mir also eher so zu sein, dass ich einem eventuellen Absender von Bitcoins "beweisen" kann, dass die Adresse, an die er senden soll tatsächlich mir gehört und diese nicht durch einen eventuellen Angreifer bei der Übermittlung auf dessen Empfangsadresse geändert wurde.

Und überhaupt: Was wird denn dabei eigentlich signiert? Die Adresse, die ich dabei ausgewählt habe, oder die Nachricht im Nachrichtenfeld, oder beides??? Oder wird die ausgewählte Adresse zum Signieren der Nachricht verwendet? Glaube ich eher nicht. Es macht offensichtlich nur Sinn, die Nachricht mit dem geheimen Schlüssel zu signieren. Davon gibt es aber in einem Wallet nach meinem Verständnis nur einen; warum also zum Signieren eine Empfangsadresse auswählen?

Kopfkraz!!!
antares
Hero Member
*****
Offline Offline

Activity: 518


View Profile
May 27, 2012, 05:41:32 PM
 #7

@Wolf:

signiert wird deine nachricht mit dem private key zu deiner addresse. jemand der deinen public key kennt(also jeder mit einer kopie der blockchain, wenn du von dieser addresse jemals etwas verschickt hast), kann mittels eines asymmetrischen kryptoverfahrens(hier ecdsa auf der elliptischen kurve sec256k1) kontrollieren, dass diese nachricht mit dem private key zu der entsprechenden addresse signiert wurde.

> Nun kann A die signatur verifizieren, und zb im Blockexplorer nachschlagen, dass die Addresse von B tatsächlich die coins enthält.

Kannst du das bitte nochmal genauer erklären? Für mich liest sich das so, als könne man anhand der Signatur über den Blockexplorer ermitteln, wie viele Bitcoins der Betreffende (B) in seinem Wallet hat.


Genau so ist es. wenn du eine bitcoin addresse kenst, kannst du nachschlagen, wie viel "guthaben" diese addresse besitzt. damit kannst du aber nicht unbedingt den genauen kontostand der wallet ermitteln, da bitcoin ja eigentlich so gedacht ist, dass jede addresse nur einmal benutzt wird(und man für die nächste transaktion eine neue nimmt). Kennst du jedoch alle addressen einer wallet, kannst du den kontostand nachschlagen.

Kleines Beispiel:
ILkLGuhfxV3DA3kLzQEQ5WrFyY++vXXYP3i7UmEl1XNdU5IkWPlFj2M8OaLApkMRNHz8nLhXAJvD8APrfMCFs9Q=

Diese Signatur kannst du mit bitcoin via rpc mit dem command verify überprüfen, ob sie von dieser Addresse signiert wurde:
1PkZY1fv7heRCJiCDHPsBzx3iSi7b3V3tt

Nun kannst du im Blockexplorer nachschlagen, dass auf dieser addresse gerade keine balance ist, aber mal 15 BTC drauf waren, und du weisst dass diese Addresse mir gehört, weil nur ich diese nachricht signieren konnte:
http://blockexplorer.com/address/1PkZY1fv7heRCJiCDHPsBzx3iSi7b3V3tt
Wolf
Newbie
*
Offline Offline

Activity: 19


View Profile
May 29, 2012, 01:52:25 PM
 #8

@antares

Vielen Dank. Ich fasse mal zusammen:
- Über den Blockexplorer kann man das Guthaben einer Adresse feststellen, aber nicht das Guthaben eines Wallet;
- Man signiert mit dem Private Key und prüft die Signatur mit dem Public Key = Bitcoin-Adresse;
- Wozu man signiert und wie man die Signatur prüft geht aus dem bitcoin-qt noch nicht eindeutig hervor;
- Der Bitcoin-qt client ist diesbezüglich noch nicht ganz fertig/verständlich/für Benutzer verwendbar (das wird sicher noch ;-)

Und nun noch eine Annahme von mir (bitte sofort widersprechen, falls es nicht stimmt):
Ein Wallet hat nur einen Private Key aus dem beliebig viele Public Keys = Adressen abgeleitet werden können. Somit wäre es gleichgültig, mit welcher der betreffenden Adressen die Signatur geprüft wird.
Wenn das stimmt, ist die Anordnung der Funktion "Nachricht signieren" innerhalb des Menüs "Bitcoins empfangen" mit Auswahl einer Adresse unlogisch/irreführend.
antares
Hero Member
*****
Offline Offline

Activity: 518


View Profile
May 29, 2012, 04:35:31 PM
 #9

hehe, nein, eine wallet hat immer mindestens 100 private keys. für jede neue addresse die du generierst wird einer dieser private keys verwendet.

Wenn du bitcoins senden willst, schaut der client nach den guthaben auf den verschiedenen private keys(die im client nur als summe angezeigt werden) und erstellt die passendste transaktion(stell dir die keys wie münzen vor, wenn du damit im supermarkt bezahlst, suchst du auch die passendste kombination und bekommst dann eben den rest als rausgeld). nun ist es aber gezielt möglich, deine gesamten guthaben auf eine Addresse zu schieben, eben um zum beispiel zu beweisen, dass du so viel geld besitzt.
hburg1234
Newbie
*
Offline Offline

Activity: 6


View Profile
July 10, 2012, 09:35:43 PM
 #10

Mal so am Rande: Wie überprüfe ich denn die Signaturen unter Linux/CLI?
ewibit
Legendary
*
Offline Offline

Activity: 1745


View Profile
June 10, 2013, 02:59:54 PM
 #11

Ich habe das mit dem Signieren einer Nachricht (bitcoin-qt) noch nicht verstanden. Ich finde es auch völlig unzureichend erklärt im Client.
Also ich kann eine Empfangs-Adresse auswählen, dort eine Nachricht hinzufügen und das dann signieren. Ja und dann???
Was mache ich mit der "Nachricht". Wer bekommt die? Wie kann er diese Signatur überprüfen? Wie bekomme ich diese Nachricht überhaupt zu einem möglichen Empfänger?
Ich könnte mir vorstellen, dass ich die Adresse, die Nachricht und die Signatur einzeln in eine E-Mail kopieren und dann an jemand senden soll, von dem ich Bitcoins erwarte. Aber wenn das so ist, warum kann ich dann nicht alles zusammen in die Zwischenablage kopieren? Das scheint mir noch völlig unausgegoren zu sein. Oder verstehe ich da etwas falsch?
Und was soll die Warnung bedeuten, dass man "nicht ungewollt" etwas signieren soll?? Was könnte das denn sein?


also ich habe es trotz dieser Anleitung:
http://imgur.com/a/nUmZ0
auch noch nicht kapiert...
Bitcoin-Qt:
ich gehe auf Adressen, suche mir eine Empfängeradresse aus, Nachricht signieren, schreibe etwas rein, Nachricht signieren, Signatur Code wird erzeugt, dann auf Nachricht verifizieren, wieder die gleiche Empfängeradresse aus dem Adressbuch, (wieder die gleiche message?), kopiere die Signatur aus der Zwischenablage und Nachricht verifizieren und dann kommt:
Code:
Die Signatur entspricht nicht dem Message Digest. Bitte überprüfen sie die Signatur und versuchen sie es erneut.

 Huh
TIA
Birdy
Sr. Member
****
Offline Offline

Activity: 364



View Profile
June 11, 2013, 01:48:35 PM
 #12

also ich habe es trotz dieser Anleitung:
http://imgur.com/a/nUmZ0
auch noch nicht kapiert...

Sofern du Englisch kannst versuch es mal mit dieser hier:
https://bitcointalk.org/index.php?topic=223713.0
ewibit
Legendary
*
Offline Offline

Activity: 1745


View Profile
June 11, 2013, 06:12:06 PM
 #13

Danke
da war der Hund...
Quote
Send Address:
Sending Address:
Pages: [1]
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!