Author

Topic: KeyBits - Blockchain als gpg-Schlüsseldatenbank (Read 1482 times)

newbie
Activity: 5
Merit: 0
Du meinst die öffentlichen Schlüssel, oder? Also als eine Art dezentrales Netzwerk zur Verwaltung öffentlicher Schlüssel, das mit absoluter Sicherheit den Besitzer einer Adresse mit einem PGP-öffentl-Schlüssel verbindet?

Exakt.

Finde ich an sich nicht schlecht und ich freue mich, weil es eine phantasievolle Idee ist. So könnte man mit einem entsprechenden Wallet, dass die Blockchain lesen kann, PGP-Schlüssel abrufen ...

Momentan liest das Programm die Daten von blockchain.info. Nur die eigene Wallet muss per Bitcoinj und Blockchain-Container verwaltet werden.

Was passiert aber, wenn ein PGP-Schlüssel kompromittiert ist? Anders als bei den bisherigen Datenbanken hätte man da ja keinerlei Möglichkeit mehr, ihn zu ändern ...

Das nicht. Der bleibt in der Blockchain haften. Man kann ihn aber für ungültig erklären. Durch eine zweite Transaktion von der Hauptadresse aus. D.h. ein Schlüssel ist nur gültig wenn eine Transaktion von der Hauptadresse abgeht, ungültig wenn Anzahl der Transaktionen > 1 ist (so habe ich das in meinem "Protokoll" definiert). Dazu benötigt man die Wallet der Hauptadresse und das Passwort mit welcher diese verschlüsselt wurde.
newbie
Activity: 5
Merit: 0
Inwiefern unterscheidet sich deine Idee grundlegend von Mastercoin?
Abgesehen davon könntest du eine solche Schlüsselverwaltung beispielsweise mit Namecoin abwickeln.

Wie ich oben schon schrieb (mein zweites Posting), so vermute ich, dass Namecoin diese Idee verweggenommen hat. Ich weiss es aber noch nicht genau (obwohl ich Namecoins besitze und auch grob weiss wofür die da sind). Mit Mastercoin habe ich mich noch gar nicht auseinandergesetzt.

Das Grundprinzip ist natürlich anwendbar auf jedes (Coin)Projekt, welches eine Bitcoin-ähnliche Blockchain nutzt.

Wie gesagt, dass ist momentan nur eine Spielerei, die abgespeckte Version einer etwas umfangreicheren Idee. Lieber erstmal kleine Brötchen backen.
newbie
Activity: 5
Merit: 0
Und mit hoffentlich baldiger Veröffentlichung des Quellcodes kann man auch die restlichen Zweifel ausräumen.

Ich arbeite daran. Heute will ich mich noch an Egit ausprobieren. Dem entsprechenden Eclipse-Plugin für Git.

Edit: Quellcode steht jetzt oben. Konnte vieles noch rausschmeissen. Sollte fast direkt per EGit-Import funktionieren. Vielleicht müssen Pfade neu gesetzt werden. Ausserdem müssen die Fremdbibliotheken besorgt werden (siehe build.xml). Die sind zwar durch den ersten commit noch irgendwo im .git-Verzeichnis abgespeichert, aber nicht mehr direkt im lib-Verzeichnis. Hoffentlich hilft das noch etwas mehr Vertrauen aufzubauen und jemand versucht sich mal am Programm :-).

Und in der Annahme, das nun jedem das Risiko grundsätzlich bewusst ist, wünsche ich dir viel Spaß bei deinem Experiment.

Vielen Dank.
legendary
Activity: 1734
Merit: 1015
Du meinst die öffentlichen Schlüssel, oder? Also als eine Art dezentrales Netzwerk zur Verwaltung öffentlicher Schlüssel, das mit absoluter Sicherheit den Besitzer einer Adresse mit einem PGP-öffentl-Schlüssel verbindet? Finde ich an sich nicht schlecht und ich freue mich, weil es eine phantasievolle Idee ist. So könnte man mit einem entsprechenden Wallet, dass die Blockchain lesen kann, PGP-Schlüssel abrufen ...

Was passiert aber, wenn ein PGP-Schlüssel kompromittiert ist? Anders als bei den bisherigen Datenbanken hätte man da ja keinerlei Möglichkeit mehr, ihn zu ändern ...

Man könnte ähnlich wie bei stealth addresses einen "guardian-key" haben, der den alten durch einen neuen Ersetzt. Dieser "guardian-key" könnte zwar auch geklaut werden, ist aber sicherer da er solange nicht zum einsatz kommt, bis er aus gründen der Keyänderung benutzt wird. der geänderte key bekommt einen neuen "guardian-key" zugewiesen, der wieder die gleichen "noch nie benutzt" kriterien besitzt.

Man kann den guardian key also irgendwo aufbewahren, wo man nur schwer und selten hinkommt, da er üblicherweise nicht benötigt wird (z.B. könnte man ihn im Haus einmauern, irgendwo vergraben etc.).
hero member
Activity: 803
Merit: 500
Du meinst die öffentlichen Schlüssel, oder? Also als eine Art dezentrales Netzwerk zur Verwaltung öffentlicher Schlüssel, das mit absoluter Sicherheit den Besitzer einer Adresse mit einem PGP-öffentl-Schlüssel verbindet? Finde ich an sich nicht schlecht und ich freue mich, weil es eine phantasievolle Idee ist. So könnte man mit einem entsprechenden Wallet, dass die Blockchain lesen kann, PGP-Schlüssel abrufen ...

Was passiert aber, wenn ein PGP-Schlüssel kompromittiert ist? Anders als bei den bisherigen Datenbanken hätte man da ja keinerlei Möglichkeit mehr, ihn zu ändern ...
qwk
donator
Activity: 3542
Merit: 3411
Shitcoin Minimalist
Vielleicht gibt es solch ein Programm schon, mir ist es aber nicht bekannt: KeyBits ermöglicht die Fixierung von gpg-Schluesseln in der Blockchain, welche wieder ausgelesen werden können wenn man die entsprechende Hauptadresse kennt. Bei der Fixierung beliebiger Informationen in der Blockchain werden geringe Mengen an Satoshis praktisch vernichtet! Der Schlüssel kann dann per gpg imporiert werden. Die Idee dahinter ist, dass die Bockchain eine riesige Datenbank darstellt, welche sich selbst erhält und somit praktisch immer auslesbar ist.
Inwiefern unterscheidet sich deine Idee grundlegend von Mastercoin?
Abgesehen davon könntest du eine solche Schlüsselverwaltung beispielsweise mit Namecoin abwickeln.
legendary
Activity: 1882
Merit: 1108
Die Idee selbst finde ich nicht schlecht, man wird konzeptionell sicher noch dran rumfeilen müssen.

Ich weis zwar immer noch nicht ob man dir 100% trauen kann, aber zumindest das erste Misstrauen hat sich etwas gelegt und den Rest muss jeder für sich ausmachen. Und mit hoffentlich baldiger Veröffentlichung des Quellcodes kann man auch die restlichen Zweifel ausräumen.

Und in der Annahme, das nun jedem das Risiko grundsätzlich bewusst ist, wünsche ich dir viel Spaß bei deinem Experiment.
newbie
Activity: 5
Merit: 0
Hallo Chefin,

Meinst du echt, Menschen führen ein Programm aus auf einem Rechner wo sie Bitcoins lagern, das von jemanden kommt der genau ein Posting hat und erklärt den Quellcode rücke ich irgendwann mal raus, das ihr die Ehrlichkeit des Programms überprüfen könnt.

Du hast vollkommen Recht, ich würde es wahrscheinlich auch nicht machen. Deswegen ging der Aufruf auch an Leute die sich mit Computern auskennen und meinen das Risiko beherrschen zu können.

Zu meiner Person: ich programmiere gern und um das System Bitcoin zu verstehen habe ich begonnen selbst ein bisschen damit herumzuspielen. Darum handelt es sich bei KeyBits auch nur um eine Spielerei bzw. einem Proof of Work. Das Programm ist definitiv noch in der Testphase und garantiert nicht bugfrei. Den Quellcode entwickle ich mit Eclipse, mit GitHub kenne ich mich aber noch nicht aus und muss den Code erstmal sauber in ein Git-Repository einpflegen. Das kann noch ein Weilchen dauern. Das Programm als Jar-Datei zur Verfügung zu stellen war für eine Veröffentlichung aktuell die einfachste Lösung. Da meine Kenntnisse in Bezug auf Ant auch noch ziemlich gering sind, so habe ich folgende Pakete direkt in das Jar eingebunden: bitcoinj, json-simple, commons-cli, slf4j, bcpg, bcprov. Deshalb ist die Datei hochredundant was die Grösse erklärt. Ein Doppelklick auf die Datei und man sieht alle zusammengepackten Java-Klassen. Ich glaube, per Eclipse lassen sich sogar die Methoden analysieren.

Wer es kann, der mag eine virtuelle Maschine aufsetzen oder ein Live-System nutzen, welches eine JVM bereitstellt um darin das Programm auszuführen.


Aber vieleicht hast du ja auch Glück und es findet sich jemand. Am besten erkläre mal was es den genau macht, dann kann man wenigstens das mit vergleichen was das Programm dann ausführt.

Erklärung der Funktionsweise: Man kann keine beliebigen Informationen direkt in der Blockchain ablegen. Dazu muss man die Informationen in 20 Byte grosse Blöcke zerlegen, und diese können dann in Adressen verwandelt werden. Diese sind valide was bedeutet, dass man Bitcoins dorthin versenden kann. Natürlich besitzt man den privaten Schlüssel zu diesen Adressen nicht, so dass die versendeten Bitcoins praktisch verloren sind. Jedoch werden diese Adressen in der Blockchain abgespeichert. Die Funktion, welche 20 Byte-Blöcke in Adressen verwandelt, lässt sich umdrehen, man kann also die gespeicherten Daten zurückübersetzen, wenn man weiss wo die Daten sich in der Blockchain befinden. Diese Idee ist schon alt, fast so alt wie der Bitcoin und ich glaube (weiss es aber nicht), dass Namecoin nach einem ähnlichen Prinzip funktioniert. Zumindest wurde schon das Orginalpaper von Satoshi Nakamoto derart in der Blockchain fixiert. Mancher macht sowas aus Jux, man kann dann schon von Vandalismus in der Blockchain sprechen. Ich bin aber der Meinung, dass das Fixieren von Informationen in der Blockchain unproblematisch ist, da man dafür praktisch Geld bezahlen muss.

Die Blockchain ist dauernd online, kaum abzuschalten, im Prinzip von überall erreichbar und erhält sich selbst. Da liegt die Idee nahe öffentliche GPG-Schlüssel in der Blockchain abzulegen anstatt sie auf beliebig vielen Servern zu verteilen. Um jemanden nun den öffentlichen Schlüssel zukommen zu lassen reicht es, demjenigen eine einzige Bitcoin-Adresse zukommen zu lassen. Hier ein Beispiel:

https://blockchain.info/address/1Pmbtsb5Wm2ivE1KTnRXtpkR5oRprUAccz

Diese Adresse erzeugt 112 zusätzliche Adressen durch eine einzige ausgehende Transaktion, welche man als eine Art Pointer auffassen kann, nach dem Motto: Bei Adresse X analysiere die ausgehenden Transaktionen, sind es mehr als eine dann handelt es sich garantiert nicht (per meiner Definition) um einen validen GPG-Schlüssel. Ist es eine Transaktion, dann interpretiere die Output-Adressen als öffentlichen GPG-Schlüssel. Der Aufruf

Code:
java -jar KeyBits.jar -i 1Pmbtsb5Wm2ivE1KTnRXtpkR5oRprUAccz

macht genau das und gibt den Schlüssel (GPG-Keyring, 2x RSA4096) aus (siehe README.md).

Wie erzeugt KeyBits diese Daten? Will man einen eigenen Schlüssel exportieren, so erzeugt das Programm eine Wallet assoziiert mit einem gegebenen GPG-Schlüssel, die genau eine Adresse enthält. Diese Wallet wird standardmässig verschlüsselt. Man muss also ein Passwort wählen, sich merken und dann immer eingeben. Sie kann natürlich auch schon existieren, erzeugt durch einen früheren Aufruf von KeyBis. Daraufhin synchronisiert sich die Wallet und es wird getestet ob genügend Bitcoins vorhanden sind um den GPG-Schlüssel zu fixieren. Falls dem nicht so ist, so muss der Nutzer die Wallet mit der entsprechenden Menge an Bitcoins füllen. Das kann dieser machen wie er will, mit Smartphone, Multibit, etc. pp.. Sind genügend Bitcoins vorhanden erzeugt KeyBits die notwendige Transaktion mit den entsprechenden Outputs und wartet dann bis die Transaktion in die Blockchain aufgenommen wurde. Dabei reicht dem Programm wenn die Transaktion im aktuellen Block aufgenommen wurde, was in der Regel um die 10 Minuten dauert. Deshalb beendet das Programm nicht sofort. Man kann aber leicht das Verhalten mit blockchain.info abgleichen. Das Beispiel mit oberer Adresse kostete 0.0117 BTC, das sind aktuell 5-6 €, dabei habe ich aber ausversehen per Smartphone zuviel überwiesen, nämlich 0.019 XBT anstatt 0.0119 XBT. Es sollten 0.0119 XBT anstatt 0.0117 XBT sein weil mindestens noch 20000 Satoshis notwendig sind um den GPG-Schlüssel mit einer zweiten Transaktion ungültig zu machen (für Vorschläge wie man das insgesamt billiger hinbekommt wäre ich dankbar).

Desweiteren hat das Programm noch rudimentäre Wallet-Funkionalität. Diese ist notwendig um eine zweite Transaktion von der GPG-Schlüssel-Adresse auszuführen um den dort abgespeicherten GPG-Schlüssel ungültig zu machen.
legendary
Activity: 1882
Merit: 1108
Bist du Albaner?

Handelt es sich um einen albanischen Virus?

Meinst du echt, Menschen führen ein Programm aus auf einem Rechner wo sie Bitcoins lagern, das von jemanden kommt der genau ein Posting hat und erklärt den Quellcode rücke ich irgendwann mal raus, das ihr die Ehrlichkeit des Programms überprüfen könnt.

Aber vieleicht hast du ja auch Glück und es findet sich jemand. Am besten erkläre mal was es den genau macht, dann kann man wenigstens das mit vergleichen was das Programm dann ausführt.
newbie
Activity: 5
Merit: 0
Hallo,

ich suche ein paar Freiwillige, die KeyBits ausprobieren wollen. Es handelt sich hierbei um etwas ähnliches wie Blockchaingraffiti, d.h. der Fixierung beliebiger Nachrichten in der Blockchain. Nur diesmal mit einem direkten Nutzen!

Vielleicht gibt es solch ein Programm schon, mir ist es aber nicht bekannt: KeyBits ermöglicht die Fixierung von gpg-Schluesseln in der Blockchain, welche wieder ausgelesen werden können wenn man die entsprechende Hauptadresse kennt. Bei der Fixierung beliebiger Informationen in der Blockchain werden geringe Mengen an Satoshis praktisch vernichtet! Der Schlüssel kann dann per gpg imporiert werden. Die Idee dahinter ist, dass die Bockchain eine riesige Datenbank darstellt, welche sich selbst erhält und somit praktisch immer auslesbar ist.

Dabei möchte ich mich zu Beginn an erfahrene Linux-Nutzer wenden, da das Programm sicherlich noch nicht fehlerfrei ist. Folgende Vorraussetzungen sollten erfüllt sein: Erfahrung mit der Kommandozeile sowie GnuPG. Natürlich kann auch jeder andere das Programm ausprobieren.

Ich übernehme jedoch keine Verantwortung bei verlorenen Coins oder bei anderem Schaden. Jeder benutzt das Programm auf eigene Gefahr!

Das Programm lässt sich hier

https://github.com/kiebitz/KeyBits

herunterladen oder per Kommandozeile mit

Code:
git clone https://github.com/kiebitz/KeyBits.git

klonen. Der Ordner KeyBits enthält eine README.md mit Beispielen. Desweiteren enthält er aktuell nur eine fertig kompilierte jar-Datei. Diese Datei ist relativ gross, da in ihr einige Bibliotheken direkt verpackt sind (siehe README.md). Im Moment interessiert mich erstmal eure Meinung und welche Bugs ihr findet (Exceptions etc. pp.). Den Quellcode möchte ich dann veröffentlichen wenn das Projekt weiter gediehen ist.

Erreichen könnt ihr mich unter [email protected] mit dem entsprechenden pgp-Keyring unter

Code:
1Pmbtsb5Wm2ivE1KTnRXtpkR5oRprUAccz

Bitte sendet keine Coins zu dieser Adresse!

Vielen Dank für eure Hilfe und viel Spass beim ausprobieren und Blockchain analysieren ;-).



Jump to: