Dies ist nun mein siebter Artikel zum Thema Bitcoin (Funktionsweise bzw technische Erläuterungen). Ich hoffe ihr könnt ein paar Informationen daraus ziehen und so Bitcoin besser verstehen (macht auch bei Investitionen Sinn, da man verstehen sollte, in was man investiert, um abwägen zu können, wie viel Geld man bereit ist zu investieren).
Ich werde nachdem ich mit der Artikelserie über Bitcoin fertig bin auch noch Artikel über Iota schreiben. Ansonsten sind die Themen auf diesem Blog Fitness, Ernährung sowie Persönlichkeitsentwicklung (und eben Kryptowährungen). Bei Interesse könnt ihr mir gerne folgen:)
Übersicht über die bisher erschienenen Artikel zum Thema Bitcoin:
- Das Bitcoin-System
- Erfüllung der drei Transaktionsbedingungen bei Bitcoin
- Transaktionskonsens bei Bitcoin (Mining und Blockchain)
- Netzwerkknoten (Bitcoin)
- Bitcoin Kommunikationsprotokoll und aktuelle Registerversion, Verwaltung des Bitcoin Systems (BIP), Bitcoin ist Fiatgeld
- Pseudonyme und Zugriffsberechtigungen bei Bitcoin (transaktionslegitimität)
Einweg-Pseudonymität
Für die Sicherheit (und Anonymität) ist es wichtig, dass die Pseudonyme im Bitcoin System nur einmal verwendet werden. Wie das gelöst wird steht auch als Kommentar unter meinem letzten Artikel wird aber hier nochmal kurz erklärt. Viele Wallets (die meisten) erstellen für jede Transaktion ein neues Schlüsselpaar (da aus dem public key ja die Bitcoin Adresse generiert wird, wird damit auch eine neue Bitcoin Adresse erstellt). Bei der Transaktion (von deiner Wallet aus) sendet die Wallet also den eigentlichen Betrag an die Adresse des Rechnungsstellers und generiert gleichzeitig neue Adressen, auf die dann das restliche Guthaben geschickt wird.
Dabei wird schnell klar, das es einen extrem großen Bedarf nach Adressen bzw Pseudonymen gibt. Diese können wie in Artikel 6 gelernt aus dem private key generiert werden oder aber mithilfe eines sogenannten Seed´s.
Wallets (deterministisch und nicht-deterministisch)
Nicht deterministische Wallets erstellen zu Beginn eine gewisse Anzahl an Schlüsselpaaren die dann nacheinander genutzt werden.
Deterministische Wallets dagegen nutzen eine Zufallszahl (den Seed) und erzeugen mithilfe von diesem Seed und einer Hashfunktion die private keys (Hashwert vom Seed und der Laufnummer). Das geile ist jetzt, dass das eine unbegrenzte Anzahl neuer private keys ermöglicht (wie auch bei nicht deterministischen Wallets) aber mit dem großen Vorteil, dass nur der Seed als Backup gespeichert werden muss (den Seed bekommst du anfänglich, schreibst ihn auf/gravierst ihn in eine Stahlplatte die du in einen Tresor legst oder was auch immer:D) und dann kannst du aus dem Seed deine private keys wiederherstellen, falls du deinen private key verlierst. Bei der nicht deterministischen Wallet müssen alle private keys gespeichert werden (du musst die ganze Zeit Backups machen wenn ein neues Schlüsselpaar erzeugt wird). Die Deterministischen Wallets sind also "besser" wenn man das so sagen kann. Das die Schlüssel durch eine Deterministische Wallet auf Basis eines Seeds erzeugt wurden ist "von außen"nicht erkennbar. Es gibt auch eine "Weiterentwicklung" der deterministischen Wallet, die Hierarchisch deterministische Wallet.
Sicherheit des private keys und der Pseudonyme
Da die privaten Schlüssel ja aus einer bereits bekannten Zahlenmenge gewählt werden (wie in Artikel 6 beschrieben) sind die möglichen Werte bereits vorher bekannt. Da jeder Nutzer sich eine unbegrenzte Anzahl von private keys und damit Pseudonymen aussuchen kann, könnte es hierbei zu Überschneidungen kommen.
Hierzu mal drei Szenarien, die aufzeigen, wie gering das Risiko ist das ein und derselbe private key zweimal ausgewählt wird, oder es anderweitig zu Überschneidungen kommt.
- Szenario 1:
Jemand will den private key einer bestimmten Bitcoin Adresse um über diese Bitcoin Einheiten verfügen zu können. Dieser private key kann durch ihn nur durch einen Brute-Force Angriff (also ausprobieren aller möglichen Kombinationen) bestimmt werden. Mit einem Computer der in der Lage ist, 60 Milliarden private keys pro Sekunde zu überprüfen würde man im 24/7 Betrieb über 7 Quadrilliarden Jahre benötigen um den passenden private key mit einer einprozentigen Wahrscheinlichkeit zu finden.
- Szenario 2:
Den private key für irgendeine beliebige Adresse mit Guthaben zu finden ist praktisch genauso unmöglich. Selbst wenn man alle 21 Millionen Bitcoin Einheiten (die es irgendwann mal geben wird) kleinstmöglich aufteilt (also in 2.1 Billiarden Satoshi) und jedes Satoshi einzeln auf einer anderen Adresse verteilt würde man mit dem Computer aus dem ersten Szenario noch knapp 3.7 Billionen Jahre benötigen um mit einer einprozentigen Wahrscheinlichkeit einen passenden private key zu finden (mit der Brute Force Methode).
- Szenario 3:
"Geburtstagsparadoxon": Wahrscheinlichkeit das durch das gesamte Bitcoin Netzwerk mindestens 2 gleiche private keys gewählt werden. (Geburtstagparadoxon ist die Wahrscheinlichkeit, nach der in einer Gruppe von Menschen mindestens zwei am gleichen Tag Geburtstag haben). Bei 5,4*10 hoch 22 erstellten Bitcoin Adressen liegt die Wahrscheinlichkeit einer solchen Kollision bei 0.01%. Selbst wenn jeder Mensch auf der Welt einen Computer hätte und Non-stop Bitcoin Adressen generieren würde, würde es über 300 Jahre dauern bis die kritische Schlüsselzahl überschritten wäre (jeder Mensch bräuchte dann ungefär 50 000 TB Speicherplatz).
Im Endeffekt wird dadurch klar, dass das System mit Pseudonymen und Schlüsseln sehr sicher ist. Für Hacker lohnt es sich überhaupt nicht die Brute-Force Methode bei Bitcoin private keys anzuwenden (die Rechenleistung ist beim Minen besser aufgehoben).
Der einzige Weg durch den euer private key unsicher wird, ist eigentlich wenn ihr diesen von "zwielichtigen" Zufallsprogrammen erstellen lasst. Diese private keys könnten dann ein bestimmtes Muster aufweisen, dass ein Hacker nutzen könnte.
Manche Zufallsgeneratoren nutzen auch die Bewegung der Maus zum erstellen eines private keys, was wenn der Generator kein Scam ist sicher ist.
Am besten ist es meiner Ansicht nach die private keys abseits vom Computer mithilfe von physikalischen Phänomenen (die aufjedenfall echte Zufallswerte liefern und garantiert kein Scam sind:D) zu erstellen. Da könnt ihr ganz kreativ sein. zb ganz altmodisch mit Würfeln oder Münzwürfen oder Naturereignissen die ihr in Zahlen irgendwie darstellt:D
Einstieg Hashfunktionen und Hashwerte
Wie uns mittlerweile klar geworden ist, basiert sehr viel im Bitcoin System auf diesen Hashfunktionen. Hier wird jetzt erklärt was diese Hashfunktionen überhaupt sind.
Hashfunktionen H sind mathematische Abbildungen, die einem Input m (auch Urbild genannt)einen Hashwert h zuweisen H(m)=h. Das Urbild kann dabei eine Zeichenfolge von beliebiger Länge sein. Ein und das selbe Urbild wird mit einer gegebenen Hashfunktion immer den selben Hashwert liefern. Theoretisch können auch unterschiedliche Urbilder den gleichen Hashwert liefern (Kollision).
Auch in der IBAN wird übrigens eine Hashfunktion verwendet. Die ersten zwei Ziffern (nach dem Ländercode selbstverständlich) entsprechen nämlich dem Hashwert vom Rest der Kontonummer. Falls nun eine Zahl falsch eingetippt wird, wird ein Fehler gemeldet, da der Hashwert nichtmehr passt.
Damit dies funktioniert muss die Hashfunktion zwei wesentliche Eigenschaften haben:
- Wenn man verschiedne Inputs durchprobiert sollten alle Hashwerte ungefähr gleich oft vorkommen.
- Selbst kleine Input Änderungen sollten zu einem anderen Hashwert führen (sonst würde die Tippfehler Kontrolle bei einem falsch eingegebenen Wert ja nichtmehr funktionieren).
Diese Hashfunktionen sind aber nicht für komplexere Aufgaben geeignet und könnten manipuliert werden (Wahl von bestimnmten Urbildern führt zu bestimmten Hashwerten, es ist möglich Kollisionen herbeizuführen). Außerdem dürfen vom Hashwert keine Rückschlüsse auf das Urbild zu vollziehen sein. Das wird durch die Verwendung kryptografischer Hashfunktionen möglich.
Integrität der Urbilder durch kryptografische Hashfunktionen
Jegliche Anpassung des Urbilds führt sofort zu einer starken Veränderung des Hashwerts. Aufgrund der Eigenschaften kryptografischer Hashfunktionen (bei Hashfunktionen wäre es möglich) ist es außerdem unmöglich eine Kollision herbeizuführen; das bedeutet ein anderes Urbild zu finden, dass den gleichen Hashwert ergibt.
Hashwerte als Arbeitsnachweis (Block ID Schwellenwert)
Da es bei kryptografischen Hashfunktionen nicht möglich ist gezielte Hashwerte herbeizuführen, kann eine solche Hashfunktion (bei Bitcoin SHA-256) auch als Nachweis dazu dienen, dass zur Berechnung eines bestimmten Hashwertes eine bestimmte Rechenleistung genutzt wurde(im Schnitt). Wie das ganze bei Bitcoin genutzt wird, wurde in Artikel 3 bereits grob erklärt.
Fragen oder Anmerkungen wie immer gerne in die Kommentare. Ich werde alle Fragen so gut ich kann beantworten. Über einen Upvote würde ich mich ebenfalls sehr freuen. Schönen Tag noch:)
Quellen
- Mein Wissen über dieses Thema habe ich größtenteils aus diesem Buch. Ich kann es sehr empfehlen.
Dies ist ein ref Link von mir zu dem Buch.
- Ebenfalls als Quelle empfehlen kann ich Medium und https://coinforum.de/forum/19-technik-entwicklung-sicherheit/
- Hier noch eine sehr interessante Quelle zu Hashfunktionen bei Bitcoin (SHA-256)
http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html