@@ -45,7 +45,7 @@ <h2>Einleiung:</h2>
45
45
Auch gibt es viele gute Tutorial auf YT, welche auch noch genauer erklären, wie eine Blockchain an sich
46
46
funkioniert.
47
47
</ p >
48
- < iframe src ="https://www.youtube.com/embed/muIv8I6v1aE " title ="YouTube video player " frameborder =" 0 "
48
+ < iframe src ="https://www.youtube.com/embed/muIv8I6v1aE " title ="YouTube video player "
49
49
allow ="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture "
50
50
allowfullscreen >
51
51
</ iframe >
@@ -54,23 +54,26 @@ <h2>Generieren eines Private Keys</h2>
54
54
< p >
55
55
Das Generieren einer Bitcoin Adresse beginnt damit, einen random Private Key zu generieren.
56
56
Es ist extrem wichtig, dass dieser Key möglichst zufällig erstellt wird. Wenn Angreifer in der Lage wären
57
- diesen Key zu erraten, sind sie dadurch auch automtisch in der Lage den Public Key und die Bitcoin Adresse zu
57
+ diesen Key zu erraten, sind sie dadurch auch automtisch in der Lage den Public Key und die Bitcoin Adresse
58
+ zu
58
59
bestimmen. Dieser zufällig generierte Key wird anschliessend mit Hilfe des Haschingalgorythmus SHA256 in den
59
60
eigentlichen Private Key verwandelt.
60
61
</ p >
61
62
62
63
< h2 > Generieren des Public Keys</ h2 >
63
64
< p >
64
65
Im 2. Schritt wird aus dem Private Key ein Public Key generiert. Bitcoin benutzt dafür die Generierung eines
65
- Public Key ECC (Elliptic Curve Cryptography). Wie genau Elliptic Curve funktioniert, wird im nächsten Kapitel
66
+ Public Key ECC (Elliptic Curve Cryptography). Wie genau Elliptic Curve funktioniert, wird im nächsten
67
+ Kapitel
66
68
beschrieben. Nun erhalten wir einen Public Key, welcher mit dem Private Key in Verbindung steht. Dabei ist
67
69
aber wichtig zu wissen, dass man zwar jederzeit in der Lage ist vom Private Key den Public Key zu generieren
68
70
aber nicht umgekehrt.
69
71
</ p >
70
72
71
73
< h1 > Wie funktioniert ECC</ h1 >
72
74
< p >
73
- Bei einer Elliptic Curve handelt es sich, wie der Name schon sagt, um einen Graphen. Die Formel um diesen Graphen
75
+ Bei einer Elliptic Curve handelt es sich, wie der Name schon sagt, um einen Graphen. Die Formel um diesen
76
+ Graphen
74
77
zu erstellen lautet < b > y**2=x**3 + ax + b (mod p) </ b > . In dieser Formel sind a, b und die Primzahl
75
78
p fest definierte Werte, welche je nach Elliptic Curve varieren können. Bitcoin verwendet wie auch viele
76
79
andere Altcoins secp256k1. In diesem Fall gilt < b > b = 7</ b > und < b > a = 0 </ b > .
@@ -80,15 +83,19 @@ <h1>Wie funktioniert ECC</h1>
80
83
< figcaption > Beispiel von Secp256k1</ figcaption >
81
84
</ figure >
82
85
< p >
83
- Der Trick dabei ist es nun, Linien zwischen 2 Punkten (oder auch Addition) oder auch die Tangente einer Linie
86
+ Der Trick dabei ist es nun, Linien zwischen 2 Punkten (oder auch Addition) oder auch die Tangente einer
87
+ Linie
84
88
zu zeichnen (Multiplikation) wenn nur
85
89
ein Punkt vorhanden ist. Nun kann man dies x mal wiederholen, wobei x die Zahl des vorherig generierten
86
- Private Keys enstpricht. Das Ganze startet vom Generatorpoint aus, welcher eine Konstante ist. Nun könnte man
87
- sich natürlich fragen, warum ECC denn so sicher ist. Wenn man den Gerator Point hat und der Private Schlüssel
90
+ Private Keys enstpricht. Das Ganze startet vom Generatorpoint aus, welcher eine Konstante ist. Nun könnte
91
+ man
92
+ sich natürlich fragen, warum ECC denn so sicher ist. Wenn man den Gerator Point hat und der Private
93
+ Schlüssel
88
94
nur daraus besteht den Gerator Point zu multiplizieren, gibt es eigentlich keinen Grund, den Generator
89
95
Point so häufig zu multiplizieren, bis man den Public Key erhält. Allerdings vergisst man dabei einen
90
96
wichtigen Faktor nähmlich die Zeit. Die Elliptic Curve Secp256k1 kann beispielsweise eine Private Keylänge
91
- von fast 2**256 haben. Wenn man nun in der Lage wäre 2**20 Additionen pro Sekunde durchzuführen (~1 Million),
97
+ von fast 2**256 haben. Wenn man nun in der Lage wäre 2**20 Additionen pro Sekunde durchzuführen (~1
98
+ Million),
92
99
bräuchte man dennoch 2**256 / 2**20 = 2**12.8 Sekunden. Zum Vergleich: das Universum ist geschätzt etwa 14
93
100
Milliarde Jahre alt (~2**34). Man bräuchte also 1/3 von der Zeit seit der Enstehung der Erde, um den Secret
94
101
Key zu bestimmen.
@@ -98,7 +105,7 @@ <h2>Allgorythmus zum Generieren des Keys</h2>
98
105
Schritte braucht. Die Antwort darauf ist einfach Multiplikation. Ein gutes Beispiel dafür wäre die
99
106
Frage, wie viele Schritte man braucht um die Zahl x**8 auszurechnen. Viele Personen würden nun mit 7
100
107
Antworten da x**8 = x*x*x*x*x*x*x*x ist. Allerdiengs wird dabei oft vergessen, dass man x auch
101
- multiplizieren kann. Die richtige Antwort wäre dann 3 < br />
108
+ multiplizieren kann. Die richtige Antwort wäre dann 3 < br />
102
109
< br /> < b >
103
110
0. x**1 = x < br /> < br />
104
111
1. x**2 = x**1 * x**1 < br /> < br />
@@ -112,15 +119,17 @@ <h2>Komprimierte und unkomprimierte Keys</h2>
112
119
Key um. Dabei gibt es bei Bitcoin 2 verschiedene Keytypen komprimierte und unkomprimierte. Der Unterschied
113
120
besteht lediglich darin, dass bei einem unkomprimierten Key auch noch die Y Koordinate zu erhalten ist. Da
114
121
die Elliptic Curve mit der Formel y**2 = x**3 + ax + b definiert ist, ist es nicht zwindgend notwendig beide
115
- Koordinaten abzuspeichern. Der unkomprimierte Key wird in Bitcon im folgenden Format dargestellt < b > 04XY</ b > .
122
+ Koordinaten abzuspeichern. Der unkomprimierte Key wird in Bitcon im folgenden Format dargestellt
123
+ < b > 04XY</ b > .
116
124
Beim komprimierten Key kommt es darauf an, ob Y gerade oder ungerade ist. Wenn Y gerade ist, ist das Format
117
125
< b > 02X</ b > und wenn Y ungerade ist, folgt das Format < b > 03X</ b > .
118
126
</ p >
119
127
120
128
< h2 > Erzeugen einer Adresse</ h2 >
121
129
< p >
122
130
Von einem Public Key zu einer Adresse ist es lediglich einen weiteren Schritt. In diesem wird zuerst der
123
- entstandene Public Key durch SHA256 und anschlissend RIPEMD160 gehascht. Anschliessend wird eine 00 Byte (Für
131
+ entstandene Public Key durch SHA256 und anschlissend RIPEMD160 gehascht. Anschliessend wird eine 00 Byte
132
+ (Für
124
133
Main Network) davorgesetzt. Dieser neu enstande String wird zwischengespeichert, da er später nochmals in
125
134
dieser Form verwendet werden muss. Nun nimmt man ihn und wendet 2 mal darauf SHA256 an und nimmt die ersten
126
135
4 Bytes, welche als Prüfzahl fungieren. Diese setzt man hinten an den zwischengespeicherten String an. Nun
@@ -132,8 +141,10 @@ <h2>Wie Vanity-BTC funktioniert</h2>
132
141
< p >
133
142
Unter Vanity BTC stellt man sich sofort einen extrem komplexen und durchdachten Algorithmus dar.
134
143
Allerdings stimmt das so nicht, da keiner der oben beschriebenen Schritte umkehrbar ist (Was auch extrem
135
- wichtig für die Sicherheit ist). Deshalb ist man auch nicht in der Lage, auf Wunsch Adressen zu erstellen. Wenn
136
- man sich dennoch dazu entscheidet, dass man eine custom Addresse haben möchte, bleibt einem fast nichts anderes
144
+ wichtig für die Sicherheit ist). Deshalb ist man auch nicht in der Lage, auf Wunsch Adressen zu erstellen.
145
+ Wenn
146
+ man sich dennoch dazu entscheidet, dass man eine custom Addresse haben möchte, bleibt einem fast nichts
147
+ anderes
137
148
übrig, als tausende oder millionen von Adressen zu generieren, bis man eine findet, welche in das gewünschte
138
149
Pattern passt.
139
150
</ p >
@@ -142,7 +153,8 @@ <h2>Wie Passphrase-BTC funktioniert</h2>
142
153
< p >
143
154
Auch Passphrase-BTC ist kein Hexenwerk. Dabei nimmt man lediglich den String Input vom User und Hash ihn mit
144
155
SHA256 wodurch man dann einen Private Key erhält. Nun gilt auch hier: same Imput, same Output. Sobald
145
- jemand den gleichen Key verwendet wie bereits jemand, hat dieser auch die Kontrolle über alle Bitcoins auf dem
156
+ jemand den gleichen Key verwendet wie bereits jemand, hat dieser auch die Kontrolle über alle Bitcoins auf
157
+ dem
146
158
Konto. Aus diesem Grund sollte man als Passphrase einen langen Satz nehmen, welche nur einem selber bekannt
147
159
ist.
148
160
</ p >
0 commit comments