Können private Schlüssel sicher auf der Blockchain gespeichert werden?

Ok, ich weiß, dass Blockchain öffentlich bekannt ist. Aber dann gibt es Experimente wie zcash, die Absender-Empfänger- und Betragsinformationen verschlüsseln und die immer noch funktionieren.

Ich überlege, ob ein P2P-Blockchain-Schlichtungsdienst möglich ist. Beispielsweise möchten Sie ETH gegen BTC tauschen. Eine Blockchain generiert 2 Adressen, von denen eine für BTC und die andere für ETH ist. Sobald beide Adressen finanziert sind, werden die Gelder von beiden an die Empfänger weitergeleitet. Um dies über die Blockchain zu tun, sollte es eine sichere Möglichkeit geben, private Schlüssel auf der Blockchain zu speichern und zu verwenden.

Ist das völlig unmöglich, oder gibt es Hinweise darauf, dass man so etwas machen könnte?

Ja. Es gibt Beispiele von Leuten, die Binärdateien in die Blockchain einfügen. Wenn Sie die privaten Schlüssel verschlüsseln, können Sie sie auf der Blockchain speichern. Wenn Sie Public-Key-Kryptografie verwenden, verschlüsseln Sie sie mit dem öffentlichen Schlüssel einer anderen Person, und nur diese Person kann sie entschlüsseln. Wenn Sie die Verschlüsselung mit symmetrischen Schlüsseln verwenden, verschlüsseln Sie sie mit einem Passwort und teilen Sie das Passwort dann jemandem mit. All dies ist jedoch nicht empfehlenswert.

Antworten (3)

Es gibt keine Verschlüsselung in einer Blockchain. Es gibt keine Schlüssel zum Verschlüsseln, da jeder Knoten die gleichen Informationen wie alle anderen hat. Kryptographie ist involviert, aber zum Signieren/Beweisen. Nicht zum Verschlüsseln.

Selbst im Fall von zcash ist die Verschlüsselung nicht beteiligt. Alles, was Wallets tun, ist dem Rest des Netzwerks zu beweisen, dass sie die Mittel hatten, die sie ausgeben. Der einzige Unterschied zu Bitcoin besteht darin, dass dabei weniger Informationen preisgegeben werden und die Nachweise dadurch wesentlich komplexer sind.

Blockchains generieren keine privaten Schlüssel – das macht keinen Sinn, da die Kette für jeden einsehbar ist.

Wallets haben private Schlüssel. Sie werden nie mit jemandem geteilt. Sie geben die entsprechenden öffentlichen Schlüssel aus, um bezahlt zu werden, und verwenden den privaten Schlüssel, um anderen später zu beweisen, dass sie bestimmte Coins besitzen.

Das Beispiel, das Sie mit einem Austausch zwischen zwei Ketten beschreiben, ist mit einer Technik namens Cross-Chain Atomic Swap möglich . Es beruht auf einer Hashlock-Transaktion, bei der die erste Brieftasche, die ihr Geld auf einer Kette bewegt, einen zufälligen Wert preisgibt, der zu einem im Voraus bekannten Wert gehasht wird. Die andere Partei verwendet dann dieses Urbild, um Gelder auf der anderen Seite freizuschalten.

Jemand schlug etwas Ähnliches vor, indem er verschlüsselte Dateien im IPFS-Netzwerk (öffentlich wie etwa die Ethereum-Blockchain) postete und dann Schlüssel zum Entschlüsseln an die Teilnehmer schickte.

Der Gründer Juan Bennet hob das folgende Zitat hervor:

'Naives Beispiel: Verschlüsseln Sie die Datei mit einem Geheimnis und teilen Sie das Geheimnis mit den Personen, die "Leseberechtigung" haben.'

https://github.com/ipfs/ipfs/issues/86

Was Sie wirklich brauchen, ist ein dezentralisiertes Fähigkeitssystem.

https://github.com/autocontracts/permissioned-blocks/blob/master/whitepaper.md

(Haftungsausschluss, dies ist ein Whitepaper, das ich geschrieben habe)

Es wird nicht empfohlen, einen privaten asymmetrischen Schlüssel auf diese Weise als Blockchain-Transaktion (was ein Kommunikationskanal ist) zu senden.

Hier gibt es ein gutes Papier zum Schlüsselaustausch:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.216.6107&rep=rep1&type=pdf

In diesem Beitrag macht der Autor auch deutlich, dass das Senden eines privaten Schlüssels über einen Kanal kein gutes Design ist:

"Wenn ein Schlüssel in einer Nachricht gesendet wird, wird nur der öffentliche Schlüssel verwendet, um es explizit zu sagen ... Keines der in diesem Artikel untersuchten Protokolle sendet jemals einen geheimen Schlüssel über die Leitung."

https://dominictarr.github.io/secret-handshake-paper/shs.pdf

Öffentliche Schlüssel sind für das Senden über einen Kanal konzipiert. Nicht der private Schlüssel. Die Verschlüsselung kann durch Brute Force gebrochen werden. Sobald jemand den privaten Schlüssel hat, kann er alles entschlüsseln, was mit diesem Schlüssel verschlüsselt wurde.

Vielen Dank für Ihren Beitrag, aber diese Antwort enthält nicht genügend Details, um nützlich zu sein
Ich habe meinen Kommentar mit einigen Links aktualisiert.
Diese Antwort wäre besser, wenn Sie erklären würden, dass die Blockchain als Kanal verwendet wird und daher die von Ihnen zitierten Quellen relevant sind. Dies ist für einen zufälligen Beobachter schwer zu verstehen, weshalb Sie wahrscheinlich herabgestimmt wurden.
Danke @Jestin. Ja, ich wurde abgelehnt, bevor ich die Links eingefügt habe, um zu erklären, was ich meinte. Erster Kommentar war "Es wird nicht empfohlen, verschlüsselte private Schlüssel über einen Kanal zu senden" - ohne Grund. Stimme hoch, wenn du denkst, dass die Antwort jetzt besser ist :-)
Die Verbindung, die für Menschen schwer herzustellen ist, ist blockchain data == channel. Es ist eine Verbindung, von der ich glaube, dass Sie angenommen haben, dass die Leute sie herstellen, aber ich bezweifle, dass sie alle sie haben. Ein erklärender Satz würde helfen, zumal der Begriff „Kanal“ in diesem Forum häufiger im Sinne von „Zahlungskanal“ verwendet wird.
OK. Guter Punkt, ich habe aktualisiert. Bitte stimme zu.