Speichern privater Daten auf der Ethereum-Blockchain

Ich plane, eine App mit Ethereum zu erstellen, die private Daten über einen Benutzer speichert. Letztendlich möchte ich, dass diese Daten ausgewählten Benutzern zugänglich sind.

Ich habe widersprüchliche Antworten und Diskussionen in verschiedenen Threads auf SE, reddit und anderen Artikeln darüber gesehen, wie man dies am besten angeht. Obwohl hier einige Optionen sind, die ich in Betracht gezogen habe:

  1. Ich könnte mit einem Schlüssel verschlüsseln und der Blockchain hinzufügen, aber ist das nicht das Äquivalent zu einer gehackten Datenbank? Die Daten sind natürlich verschlüsselt, aber sie sind öffentlich zugänglich ( Vitalik schlägt vor, dass es sich um Low-Tech handelt . Könnte jemand vorschlagen, warum dies keine gute Methode ist?). Außerdem könnte das bei vielen Transaktionen teuer werden.

  2. Verwenden Sie Quorum, bin mir nicht 100 % sicher, ob es für meinen Anwendungsfall geeignet ist.

  3. Zcash bietet möglicherweise eine Lösung für private Daten an (habe mich nicht vollständig damit befasst), obwohl ich, wenn möglich, lieber bei Ethereum bleiben würde, könnte eine längere Lebensdauer haben.

  4. Ich könnte einen ähnlichen Weg wie Zitronen-E-Mail einschlagen: Nachrichtentransaktionsdaten auf Ethereum, verschlüsselte Daten auf IPFS, Frontend auf IPFS.

Ich denke, dass 4 (Zitronen-E-Mail) die beste Option ist, fühlt sich aber irgendwie wie Betrug an, weil die Daten dann nicht auf der Blockchain sind.

Gibt es noch andere Optionen, die ich in Betracht ziehen sollte? Gibt es eine bessere Möglichkeit, dies zu implementieren?

Antworten (2)

Ich glaube nicht, dass Lösung Nummer 4 Betrug ist. Die Blockchain ist eher eine Konsensmaschine und nicht gerade eine Datenbank, wenn Sie alle Ihre Daten auf der öffentlichen Blockchain speichern, wird es auch ziemlich teuer. Das Speichern des Großteils der Daten auf ipfs oder swarm und dann nur noch den Hash in der Blockchain wird zu einer Standardlösung für Dapps, um hohe Kosten zu vermeiden

Als ich meine Frage schrieb, war mir nicht klar, dass ich wirklich Unveränderlichkeit brauchte, die natürlich nur eine Blockchain bieten kann. Also werde ich die privaten Daten auf der Blockchain mit sha3 verschlüsseln, was sehr sehr unwahrscheinlich ist, dass sie entschlüsselt werden
IPFS bietet Unveränderlichkeit. Obwohl ein Blockchain-Ledger unveränderlich ist, bieten viele Dinge eine überprüfbare Unveränderlichkeit. Der Begriff „Blockchain“ ist kein Fachbegriff. Wenn Menschen von „Blockchain“ sprechen, meinen sie in Wirklichkeit eine Reihe verteilter Komponenten, die zusammengefügt werden, um das Vertrauen zu fördern. Es gibt eine Vielzahl von Kompromissen, wenn man so etwas baut, und am Ende des Tages handelt es sich um Software, die verschiedene verteilte Systeme und kryptografische akademische Theoreme verwendet.

Als ich meine Frage schrieb, war eine Sache, die ich nicht berücksichtigte, das Schlüsselmerkmal der Verwendung von Ethereum überhaupt ... Unveränderlichkeit. Die privaten Daten, die ich speichern möchte, mussten auch unveränderlich sein. Dies ist etwas, das nur die Blockchain bieten kann, also werde ich mich in diesem Fall für Option 1 entscheiden und die privaten Daten in der Kette speichern.

Meine Sorge war, dass die Daten irgendwie entschlüsselt werden könnten, aber anscheinend brauche ich mir keine Sorgen zu machen.

Ich werde mit sha3 (also der Ethereum-Version „keccak“) verschlüsseln, das sogar Schutz vor Quantenangriffen bietet, also sollte dies mehr als ausreichend sein, um alle privaten Daten in der Kette risikofrei zu machen. Ich kann nicht viele nicht lächerlich technische Vorschläge finden, wie lange es dauern kann, außer diesem Artikel zu entschlüsseln.

Wenn die Quantenkorrektur von ASICs durchgeführt wird, die mit einigen Millionen Hashes pro Sekunde laufen (und wenn die Tabelle von Vulture South richtig ist), würde Grovers Algorithmus etwa 10 32 Jahre brauchen, um SHA-256 oder SHA3-256 zu knacken.

Ich habe keine bessere Alternative gefunden, also wenn jemand einen Vorschlag hat, bitte melden.

Außerdem habe ich keine Antwort darauf gefunden, warum Vitalik es für Low-Tech hält und was eine geeignete Alternative ist.

Option 2 – Quorum scheint nur für Organisationen geeignet zu sein, die Daten miteinander teilen möchten.

Option 3 - Ich habe nicht in Betracht gezogen, dass zcash bei Ethereum bleiben wollte

Option 4 - Nicht für mich geeignet, Daten mussten unveränderlich sein.

Edit: Ich wusste also nicht, dass sha3 1-Wege-Verschlüsselung anbietet (ja, ich bin Noob). Da ich neu in diesem Bereich bin, bin ich mir nicht sicher, welcher Algorithmus am besten wäre, also geht meine Suche weiter ...

Edit 2 (2018-04-30): Nachdem ich versucht hatte, dies später zu implementieren, stellte ich fest, dass die Preise ziemlich verrückt werden können, wenn Sie Gasgebühren oben drauf legen. Da die Preise unvorhersehbar und für große Datenmengen sehr hoch sind, halte ich die Blockchain für meinen Anwendungsfall für unerschwinglich. Dies bedeutet natürlich nicht, dass Sie dies nicht tun sollten. Es hängt von Ihrer Benutzerbasis und ihrer Zahlungsbereitschaft ab. Als ich mir vor ein paar Monaten das letzte Mal die Preise angesehen habe, hat es ungefähr geklappt, dass etwa 64 Zeichen ~ £ 1,70 kosten würden, um einen 64-Zeichen-Hash zu speichern. Womit ich derzeit fortfahre.

Warum funktioniert Option 4 für Sie nicht? Sie können Hashes verwenden, um zu überprüfen, ob Daten geändert wurden oder nicht, sodass Sie garantieren können, dass Daten nicht geändert wurden.
Ich nehme an, dass ich zum Zeitpunkt des Schreibens dachte, dass ich IFPS verwenden würde, um die Hashes der privaten Daten als Alternative zur Speicherung auf der ETH-Blockchain zu speichern. Du hast recht, ich kann das durchaus so machen.
FWIW gibt es keine "1-Wege-Verschlüsselung". Sie können einen Hash-Algorithmus verwenden, der nicht auf die Originaldaten rückgängig gemacht werden kann, oder Sie können ein Verschlüsselungsverfahren verwenden, das mit den richtigen Schlüsseln natürlich entschlüsselt werden kann. Hash-Algorithmen verlieren während der Verarbeitung den Inhalt der Originaldaten. Durch die Verschlüsselung gehen während der Verarbeitung keine Daten verloren.
Bitte aktualisieren Sie den Antwortteil "Verschlüsselung mit sha3". Hashing ist keine Verschlüsselung.
Wenn Sie auf Edit1 vor dem 30.04.2018 bemerken, bin ich bereits zu dieser Erkenntnis gekommen ...