Wie funktioniert die Gesangsanfrage von Ethereum?

Was ist die Notwendigkeit, damit einige Dapp-Websites Sie auffordern, Nachrichten per Metamaske zu signieren, wenn Sie zum ersten Mal auf ihre Website gelangen?

Wie ich gelesen habe, stellen sie sicher, dass Sie authentifiziert werden. Also unterschreiben Sie die Nachricht.

  • kann diese Nachricht, die Sie unterschreiben, irgendetwas sein, solange es nicht die Hack-Transaktion ist?
  • Wohin geht die Signatur, die Metamask erhält, nachdem wir die Nachricht signiert haben? speichert die Website es? Oder wartet die Website einfach, ob die Signatur generiert wurde, und wenn ja, was tut sie, damit sie bei jeder nächsten Anfrage denkt, dass der Benutzer bereits authentifiziert ist?
  • Vielleicht speichert dapp überhaupt keine Signatur und alles, was es interessiert, ist, ob der Benutzer die Nachricht signieren kann oder nicht, und wenn die Signierung wahr zurückgibt, wird der Benutzer authentifiziert. aber wie bleibt der Benutzer für die zweite und dritte usw. authentifiziert?

Eine nette Erklärung wäre wünschenswert.

Antworten (1)

Was ist die Notwendigkeit, damit einige Dapp-Websites Sie auffordern, Nachrichten zu signieren?

Es stellt fest, dass der Unterzeichner den privaten Schlüssel für eine bestimmte Ethereum-Adresse kennt. Mit Etherscan können Sie beispielsweise die Website, die Links zu sozialen Medien, das Logo usw. für einen bestimmten Vertrag konfigurieren, aber zuerst müssen Sie zeigen, dass es Ihr Vertrag ist, indem Sie eine Nachricht von demselben Konto signieren, das den Vertrag bereitgestellt hat, um dies anzuzeigen dass du kannst.

kann diese Nachricht, die Sie unterschreiben, irgendetwas sein, solange es nicht die Hack-Transaktion ist?

Ich bin mir nicht sicher, was "solange es nicht die Hack-Transaktion ist" bedeutet.

Ein gängiges Muster besteht darin, einen Hash einer beliebig langen Nachricht zu erstellen und diesen zu signieren. Betrachten Sie einen API-Endpunkt, der Ethereum-Signaturen verwendet, um Benutzer zu authentifizieren. Der POST könnte etwa so aussehen:

{
  someObject: {
    // arbitrarily long
  }
  signature: <short string>
}
  1. HaschischsomeObject
  2. Unterschreiben Sie den Hash
  3. Senden Sie das Paket

Auf der Empfängerseite:

  1. HaschischsomeObject
  2. Absender = ECRecover(MessageHash, Signatur)

Wohin geht die Signatur, die die Metamaske erhält, nachdem wir die Nachricht signiert haben?

Es wird an das JavaScript zurückgegeben, das nach der Nachrichtensignierung gefragt hat.

speichert die Website es? Oder wartet die Website einfach, ob die Signatur generiert wurde, und wenn ja, was tut sie, damit sie bei jeder nächsten Anfrage denkt, dass der Benutzer bereits authentifiziert ist?

Was auch immer es tun will. Siehe die vorherige Antwort für eine Möglichkeit. Als Vorsichtsmaßnahme ist es normalerweise eine gute Idee, dem Gesamtschema eine Art Wiedergabeschutz hinzuzufügen, damit eine signierte Nachricht nicht mehr als einmal verwendet werden kann. Zum Beispiel verwendet Ethereum, noncedamit „Geld senden“ nicht wiederholt gesendet werden kann, sobald die Leute die Signatur sehen.

Wie bleibt der Benutzer für die zweite und dritte usw. authentifiziert?

Dies hängt alles davon ab, wofür die App Signaturen verwendet. Es könnte sich beispielsweise einmal authentifizieren und einen dauerhaften Sitzungsstatus festlegen. Oder es würde auf der Grundlage des Signierens jeder Nachricht funktionieren, dh jede Interaktion mit einer API wird authentifiziert.

Ich hoffe es hilft.

Hallo Rob, ich liebe deine Antworten. Ich würde mich über Ihren Beitrag zu meiner anderen Frage freuen - ethereum.stackexchange.com/questions/94556/… . Habe ein schönes Wochenende.