Wie kann ich meinen Kunden versichern, dass sie tatsächlich die richtige Person bezahlen? (MITM-Angriffe verhindern)

Es gibt viele Angriffe auf Netzwerkebene, die jemandem in der Mitte die Möglichkeit geben, meine Bitcoin-Adresse durch ihre eigene zu ersetzen.

Da es keine Möglichkeit gibt, eine Transaktion zu stornieren, und die beste Vorgehensweise darin besteht, eine eindeutige Adresse pro Absender zu generieren ...

  • Wie kann ich meinen Kunden versichern, dass sie tatsächlich die richtige Person bezahlen?

Ich möchte die Situation vermeiden, in der ein Absender tatsächlich eine Zahlung an einen Spoofer gesendet hat (die nicht storniert werden kann), und dennoch eine dynamische Adresse haben, an die Personen basierend auf dem Absender Geld senden können.

Eine ähnliche Frage ist hier, aber sie konzentriert sich nicht auf die Sicherheit der Übermittlung der Adresse vom (anonymen) Händler an den (anonymen) Empfänger.

Antworten (3)

Es gibt viele Beweise dafür, dass Man-in-the-Middle-Angriffe üblich sind , und dies ist eine gute Frage für die Bitcoin-Community.

Wenn Sie die Bitcoin-Adresse auf einer Webseite veröffentlichen, verwenden Sie entweder eine statische Adresse (eine Adresse für viele Absender) oder generieren eine neue Adresse für diesen bestimmten Benutzer.

Unabhängig von der Häufigkeit der Generierung einer neuen Adresse lautet das Fazit, wenn Sie Ihre Bitcoin-Adresse über HTTP senden, müssen Sie die DNS-Infrastruktur, SSL, sichern und sicherstellen, dass Ihre Website vor HTTP-basierten XSS- und CSRF-Angriffen geschützt ist.

Hier sind einige Links, die Ihnen den Einstieg in die Sicherung von HTTP erleichtern:

Hochmoderne DNS-Sicherheit

  • Verwenden Sie DNSSec mit einer vertrauenswürdigen Root-Domain, die DNSSEC im Root unterstützt (.com, .org usw.)
  • Verwenden Sie TLSA RFC6698 , um SSL-Schlüssel selbst im DNS zu veröffentlichen

Für ToR-Kunden

Nun, wenn Sie sich Sorgen über einen Man-in-the-Middle-Angriff machen, bedeutet das, dass es jemanden gibt, der die Kommunikation zwischen zwei Personen erfassen und im Handumdrehen ändern kann. Wenn die Bedrohung konstant ist, können Sie nicht wirklich viel tun. In der Regel erhält ein Angreifer jedoch nicht Zugriff auf alle Ihre Kommunikationskanäle. Sie könnten beispielsweise Ihre Bitcoin-Adresse auf einer sicheren Website hinterlegen, sie in eine Forensignatur einbetten oder Ihren Kunden zumindest Ihren öffentlichen PGP-Schlüssel zur Verfügung stellen, um zu verhindern, dass Ihre Nachrichten manipuliert werden.

Im Allgemeinen ist der Angriff nicht Bitcoin-spezifisch. Es geht nur darum, alle Daten sicher zwischen zwei Parteien zu übertragen. Je nachdem, welche Beschränkungen Sie anwenden, wird es immer komplizierter – kann der Angreifer beide Seiten der Kommunikation verändern, gibt es einen sicheren Kanal, ein Geheimnis, das zwischen den Parteien geteilt wird, oder wissen sie etwas voneinander?

Sichern Sie im Allgemeinen Ihren Computer und die Art und Weise, wie Sie mit Ihrem Client kommunizieren, und dies wird die meisten Angriffe abwehren. Wenn Ihr Computer nicht sicher genug ist, könnten Ihre Bitcoins trotzdem verloren gehen...

Gavin Andresen schrieb: „Wir brauchen ein Zahlungsprotokoll mit eingebauter Nichtabstreitbarkeit.“

Er schlägt eine Methode vor, bei der der private Schlüssel für eine Adresse zur Autorität wird, Zahlungsanforderungen für eine Entität zu signieren.

Alternativ könnte mit GPG eine Ebene außerhalb von Bitcoin erstellt werden.

Dieser Thread befasst sich mit der Frage und möglichen Lösungen:

Nachdem ich die Frage gelesen hatte, dachte ich sofort an Ihren Thread und Gavins Projekt, aber es ermöglicht nur den Nachweis, dass sich beide Seiten vor der Transaktion auf eine Zahlungsadresse geeinigt haben. Könnten Sie erläutern, wie diese Lösung besser ist als beispielsweise SSL, wenn der Prozess direkt vom Betteln durch MITM entführt wird?
Was ist besser als SSL? TLS 3.2 mit TLSA (RFC6698) plus DNSSec ~oder~ eine ToR .onion-Adresse. Bitcoin würde aktuelle Best Practices unterstützen, wenn es dies täte.
@Serith, ich bin mir nicht sicher, was du mit "beide Seiten sind sich einig" meinst. Wenn die Anfrage eine signierte Nachricht enthält, ist dies eine Seite mit einer Adresse und der Absender entscheidet sich für die Verifizierung oder das Senden ohne Verifizierung. Aber zu einem späteren Zeitpunkt, wenn der Absender behauptet, das Geld nicht erhalten zu haben, hat der Absender die signierte Nachricht, um zu bestätigen, dass das Geld an die angeforderte Adresse gesendet wurde.