Woher weiß Alice, dass sie die richtige Adresse erhält?

Nehmen wir an, Alice möchte Bob ein paar Münzen schicken. Bob muss Alice sagen, wohin er sie schicken soll, also schickt er seine Adresse an Alice. Wie sendet Bob diese Adresse, damit Alice weiß, dass die Adresse, die sie erhält, tatsächlich Bobs Adresse ist und nicht die von Eve (einer Lauscherin), die die Münzen stehlen will?

Was ist der Unterschied zwischen Bob und Eva? Das heißt, was weiß Alice über Bob, das Bob zu der Person macht, an die sie senden möchte?

Antworten (4)

Das Problem selbst ist per se nicht Bitcoin-spezifisch. Es geht darum, den Absender einiger Daten verifizieren zu können. Bitcoin-Adressen sind nur so konzipiert, dass sie gegen Tippfehler immun sind (sie enthalten eine Prüfsumme), aber ansonsten tut das Protokoll nichts.

Man kann jedoch ein paar Dinge tun, um sicherzustellen, dass eine korrekte Adresse gesendet und empfangen wird:

  • Man kann eine Vanity-Adresse verwenden, die schwer zu generieren ist und eindeutig auf die Situation bezogen ist. Die Verwendung von 1Bob ... wäre nicht die beste Wahl, aber 1BobEveryman ... oder 1ThankYouAlice ... kann besser sein (Beispiele wurden aus Gründen der Klarheit ausgewählt, normalerweise würden Sie das Alphabet zur Basis 58 verwenden). Wenn es länger als ein paar Minuten dauert, eine Adresse zu generieren, wissen Sie im Allgemeinen, dass sie entweder vom ursprünglichen Absender stammt oder dass jemand absichtlich Bobs Identität stehlen wollte (indem er viel Zeit damit verbracht hat, die Adresse zu generieren).
  • Man kann versuchen, den Verlauf der Adresse im Bitcoin Block Explorer zu überprüfen . Wenn die Adresse ein paar Mal verwendet wurde, ist es weniger wahrscheinlich, dass es sich um eine Fälschung handelt. Als Eve würde ich wahrscheinlich nicht dieselbe Adresse mehr als einmal zum Betrügen von Leuten verwenden wollen, und das Erstellen einer Historie von Transaktionen würde einige Zeit dauern.
  • Man kann Bob bitten, seine Bitcoin-Adresse anzugeben, die in Bobs digitale Signatur verpackt ist. Das Hauptproblem dabei ist, überhaupt Bobs Unterschrift zu sichern, was im Grunde das gleiche Problem ist, das wir gerade lösen.
  • Man kann nach erhaltenen Adressen im Internet suchen. Viele Leute haben die Angewohnheit, die von ihnen verwendete Bitcoin-Adresse an Orten wie Forensignaturen, ihren Websites und dergleichen anzugeben.
  • Wenn Alice Bob kennt, könnten sie entscheiden, einige Informationen zu verwenden, die nur sie kennen, um ein ECDSA-Schlüsselpaar zu erstellen und dieses für die Übertragung von Bitcoins zu verwenden. Solche Informationen können beispielsweise der Film sein, den sie bei ihrer ersten Begegnung gesehen haben, einige Informationen über die Schule, die sie besucht haben, und so weiter. Im Allgemeinen etwas, an das sie sich erinnern und das schwer herauszufinden wäre. Alice kann dies als privaten Seed des Schlüsselpaars verwenden, die öffentliche Adresse generieren, an die die Bitcoins gesendet werden, und die Übertragung vornehmen. Bob müsste dann denselben Vorgang wiederholen und Bitcoins an ihrem Ende abheben. Das Hauptproblem bei diesem Ansatz ist, ob Bob und Alice sich vorher kennen und sich den Umgang mit privaten Schlüsseln anvertrauen.
  • Wenn alles andere fehlschlägt, kann man Bob immer noch persönlich treffen und so seine Adresse bekommen.

Alles in allem gibt es viele Möglichkeiten, einen Man-in-the-Middle-Angriff in dem beschriebenen Szenario zu verhindern.

Bitcoin bietet derzeit keinen Schutz dagegen. Alice und Bob müssen sicherstellen, dass ihr Kommunikationskanal sicher ist.

Bedeutet das also, dass Bob Alice seine Identität offenbaren müsste?
@Alice: Wenn Bob Alice seine Identität nicht offenbart hat, warum sollte Alice sich dann darum kümmern, ob sie Bob oder Eve Geld schickt? Welchen Unterschied macht es? Was ist das Besondere an Bob, das ihn zu dem macht, dem sie Geld schicken möchte?
@David Schwartz: Der Unterschied zwischen Bob und Eve ist, dass Bob Alice etwas verkauft, zB Socken. Bob und Alice wollen beide anonym bleiben, aber Alice will ihre Socken und bekommt sie nur, wenn Bob die Münzen bekommt. Ich weiß, dass es keinen Kundenschutz gibt (dh es gibt keine Garantie dafür, dass Sie die Artikel auf jeden Fall erhalten, wenn Sie die richtige Person bezahlen), aber gibt es eine Möglichkeit zu garantieren, dass Sie zumindest die richtige Person bezahlen? Was ich wirklich frage, ist: Was ist das Protokoll zum Senden von Adressen beim Übertragen einer Münze?
@Alice: Woher weißt du, dass Bob Socken verkauft? Durch welche Methode könnten Sie zuverlässig wissen, dass Bob tatsächlich Socken zu einem bestimmten Preis verkauft, der Ihnen nicht auch Bobs Adresse mitteilen würde? Würden Sie nicht einfach wissen, dass eine nicht näher bezeichnete Person (die genauso gut Eva sein könnte) Socken verkauft? Das Senden an Bob wäre also genauso gut wie das Senden an Eve, denn soweit Sie wissen, könnte einer von beiden Socken verkaufen? Ich glaube, ich verstehe die Umstände überhaupt nicht. Woher wissen Sie, dass es eine "richtige Adresse" gibt?
@David Schwartz: Es ist nicht so sehr, an wen genau sie sendet. Es geht vielmehr darum, wie Alice eine Adresse anfordert, an die sie die Coins senden möchte? Es geht eher um die Frage: Gibt es Maßnahmen, um einen MITM-Angriff zu verhindern?
@Alice: Woher weiß sie, wessen Adresse sie anfordern muss? Ich verstehe die Umstände nicht. Woher weiß Alice überhaupt, dass Bob Socken verkauft, ohne Bobs Adresse zu kennen? Sie weiß nur, dass jemand Socken verkauft, hat aber keine Ahnung, wer? Dann hat die Frage nichts mit Bitcoin zu tun, sondern ist, wie kann Alice herausfinden, wer Socken verkauft? (Für mich macht die Frage keinen Sinn.) Wo Sie sagen "Ich verkaufe Socken, ich brauche X Bitcoins, ...", können Sie Ihre Bitcoin-Adresse eingeben. Und wenn Sie diesen Informationen nicht vertrauen könnten, könnten Sie die Socken nicht kaufen, selbst wenn Sie die Adresse kennen, richtig?
@David Schwartz: Ich verstehe jetzt deinen Punkt. Danke für eure Hilfe (und Geduld!) :)

Der Marktplatz #bitcoin-otc verwendet die GPG-Authentifizierung, um sich genau vor dieser Situation zu schützen.

Da IRC-Spitznamen anfällig für Manipulationen sind, hilft die Aufgabe, sich zuerst beim Bot des Kanals zu authentifizieren, um sicherzustellen, dass die Kommunikation wirklich vom beabsichtigten Handelspartner stammt.

Dies ist nur eine Methode, um dieses Thema anzugehen. Es gibt viele Möglichkeiten.

Ist dies also eine ähnliche Idee wie die Marktplatzbewertungen von Amazon, außer dass anonyme Benutzer gewissermaßen zentral authentifiziert werden?

Wenn Alice Bob über seine Website https://bobbysox.com/ getroffen hat, kann sie ziemlich sicher sein, dass die Adresse, die Bob auf seiner Website anzeigt, echt ist, solange Bobs SSL-Zertifikat erfolgreich verifiziert wird. Damit Eve Woman-in-the-Middle spielen kann, müsste sie sich irgendwie ein Zertifikat für bobbysox.com besorgen, oder Alices Browser wird sie auf die Tatsache aufmerksam machen, dass es ein Problem mit der sicheren Verbindung gibt. (Ob Alice davon Notiz nimmt, steht auf einem anderen Blatt).

Auf diese Weise werden Bitcoin-Adressen häufig über sichere Socket-Layer-Webverbindungen vom Händler an den Käufer weitergegeben.

Hinweis: Interessanterweise sehe ich, wenn ich auf diesen Link klicke, den ich gerade erfunden habe, eine Warnung: "Das Sicherheitszertifikat der Website ist nicht vertrauenswürdig!"