So speichern Sie private Daten in Blockchain und Smart Contract

Nach meiner vorherigen Frage zu diesem Thema Gibt es eine Möglichkeit, einen privaten Schlüssel über Blockchain zu speichern und zu teilen? , ich habe vielleicht eine Lösung, aber ich würde den Prozess gerne verbessern.

Stellen Sie sich vor, A sei Eigentümer einiger privater Daten und möchte B, einem anderen Mitglied der Blockchain, das Eigentum an diesen Daten übertragen. Die Daten sind ein privater Schlüssel, können also nicht öffentlich sein, aber sie können mit dem öffentlichen Schlüssel A oder B verschlüsselt werden.

So:

  • Geheime Daten werden mit einem öffentlichen Schlüssel verschlüsselt und in A Informationsdaten gespeichert /
  • B will A geheime Daten geben
  • A entschlüsselt die geheimen Daten (unter Verwendung seines privaten Brieftaschenschlüssels) und verschlüsselt die geheimen Daten mit dem öffentlichen Schlüssel B
  • Das Eigentum an den Daten wird B
  • Jetzt kann nur B (und A auch, aber das ist eine andere Geschichte) geheime Daten entschlüsseln.

Gibt es eine Möglichkeit, diesen Prozess mit Smart Contract zu vereinfachen? Ich gehe davon aus, dass ein Smart Contract Zugriff auf den öffentlichen Schlüssel A und B hat, aber können Daten mit dem privaten Schlüssel desjenigen verschlüsselt/entschlüsselt werden, der den Smart Contract ausführt?

Darüber habe ich auch schon nachgedacht. Haben Sie eine Art Mechanismus gefunden, um dies zumindest teilweise zu tun?

Antworten (3)

Wenn ich das richtig verstanden habe, glaube ich nicht, dass Sie die Blockchain-Technologie brauchen, um das zu erreichen, was Sie wollen. Genau dafür ist die asymmetrische Public-Key-Verschlüsselung konzipiert.

A verschlüsselt einfach einige Informationen mit dem privaten Schlüssel von A und dem öffentlichen Schlüssel von B ... und stellt so sicher:

  • Nur B kann die Informationen entschlüsseln
  • B kann überprüfen, ob die Informationen von A verschlüsselt wurden (unter Verwendung des öffentlichen Schlüssels von A)

Es gibt für A keine Möglichkeit, B zu beweisen, dass seine Kopie der Informationen von A zerstört oder vergessen wurde, aber zumindest ist eine sichere Übertragung gewährleistet.

Ich stimme voll und ganz zu, dass dies der Zweck der asymmetrischen Verschlüsselung ist. Meine Frage bezog sich eher auf die praktische Vorgehensweise unter Verwendung bestehender Blockchain-Mechanismen in Ethereum oder anderen. Kann das ein Vertrag?
Es ist nicht praktikabel, die ganze Welt dazu zu zwingen, Ihre Daten zu sehen und zu speichern, anstatt sie nur denjenigen zu geben, die sie brauchen.

(Obwohl ich auf der bitcoin.stackexchange-Seite bin, kam hier ein Ethereum-Tag heraus, also werde ich aus der Ethereum-Perspektive antworten.)

Kurze Antwort ist: Ja, es ist durchaus möglich. Verwenden der asymmetrischen Verschlüsselung mit öffentlichen Schlüsseln, wie James erwähnt hat. Es ist aber auch völlig unwirtschaftlich.

Einige neue, andere private/öffentliche Ketten wurden speziell für die Datenspeicherung in der Kette entwickelt, da aktuelle Ketten wie Ethereum die Kosten unerschwinglich machen. Mit zunehmender Datenmenge, die Sie speichern möchten, steigt auch der Aufwand, die Transaktion (mit den Daten, die Sie speichern möchten) zu "minen". Aus diesem Grund werden Netzwerkgebühren mit einer Byte-Rate berechnet.

Sehen Sie sich Tjadens Antwort hier an: https://ethereum.stackexchange.com/questions/872/what-is-the-cost-to-store-1kb-10kb-100kb-worth-of-data-into-the-ethereum- Block

Mein bester Versuch, den Aspekt „intelligenter Vertrag zur Vereinfachung“ zu beantworten, wäre

  1. Den Entschlüsselungsschlüssel bereits kennen

oder

  1. In der Lage sein, Daten in einem Smart Contract zu entschlüsseln, um den Entschlüsselungsschlüssel zu erhalten.

In '2' hätten Sie einen Smart Contract, der Transaktionen mit einer festgelegten Entschlüsselung akzeptiert. Jedes Mal, wenn A eine Nachricht senden wollte, die B lesen konnte, übermittelte es einen verschlüsselten Entschlüsselungsschlüssel. B müsste die Transaktion finden, den Schlüssel entschlüsseln und dann diesen Schlüssel verwenden, um die Nachricht zu entschlüsseln. Es ist eher wie 2-Auth, aber für eine verschlüsselte Nutzlast.

Dies wäre weder elegant noch effizient. Es gibt bessere Möglichkeiten, dieselbe Aufgabe zu erfüllen.

Ich verstehe nicht ganz was du vorhast:

  • Wenn Sie beweisen möchten, dass Partei A (und später Partei B) etwas besitzt, können Sie ein ähnliches Design wie Bitcoin verwenden. Wo Bitcoins durch Transaktionen verschickt werden, bei denen der „aktuelle Inhaber“ eine Nachricht unterschreibt, dass die Bitcoins jetzt einem „neuen Inhaber“ gehören.
  • Wenn Sie einen speziellen Smart Contract haben, den nur der "aktuelle Eigentümer" verwenden darf, und Sie das Eigentum flexibler weitergeben möchten. Sie können einen weiteren intelligenten Vertrag erstellen, der „den aktuellen Eigentümer“ auf flexiblere Weise enthält. Siehe Identitätsverträge in uPort.
  • Wenn Partei A Partei B (aber sonst niemandem) einige Daten geben möchte, warum sollten Sie dann überhaupt eine Blockchain verwenden?

Könntest du genauer spezifizieren, was du meinst mit:

und das Eigentum an diesen Daten an B übertragen möchten

In der Blockchain-Welt speichern Sie dies einfach im „Ledger“ (oder der Blockchain), genau wie bei Bitcoin.