{"id":163,"date":"2017-01-25T20:42:56","date_gmt":"2017-01-25T19:42:56","guid":{"rendered":"http:\/\/www.robert-kofler.at\/?p=163"},"modified":"2017-03-04T21:43:07","modified_gmt":"2017-03-04T20:43:07","slug":"wo-kommen-bitcoin-adressen-her","status":"publish","type":"post","link":"https:\/\/www.robert-kofler.at\/Blog\/2017\/01\/25\/wo-kommen-bitcoin-adressen-her\/","title":{"rendered":"Wo kommen Bitcoin Adressen her?"},"content":{"rendered":"<p>Wenn jemand Bitcoins empfangen oder versenden will braucht er daf\u00fcr eine Adresse. Doch woher kommt diese Adresse?\u00a0Wie entsteht eine Bitcoin Adresse? Dem gehen wir in diesem Artikel auf den Grund und schauen Bitcoin mal etwas genauer unter die Haube.<br \/>\n<!--more-->Hier sieht man die, vereinfacht dargestellte, Transaktion e9a66845e05d5abc0ad04ec80f774a7e585c6e8db975962d069a522137b80c1d aus dem Block 100.000 (wer will kann sich das ganze gerne in der Bitcoin Blockchain ansehen z.B. online mit einem <a href=\"https:\/\/blockexplorer.com\">Blockexplorer<\/a>):<\/p>\n<pre>from:\u00a01JxDJCyWNakZ5kECKdCU9Zka6mh34mZ7B2\r\nvalue 0,01 BTC\r\nto:\u00a016FuTPaeRSPVxxCnwQmdyx2PQWxX6HWzhQ<\/pre>\n<p>Von der Adresse 1JdxD&#8230; gehen 0,01 Bitcoin an die Adresse 16Fu&#8230;<\/p>\n<p>Die Schreibweise der Adresse ist jene, die man als Endbenutzer kennt. Und ist nichts anderes als die Base 58 Codierung des zweifachen <a href=\"http:\/\/www.robert-kofler.at\/?p=43\">Hashes<\/a> des <a href=\"http:\/\/www.robert-kofler.at\/?p=22\">\u00f6ffentlichen Schl\u00fcssels<\/a>, der wiederum aus dem &#8211; geheimen &#8211; privaten Schl\u00fcssel berechnet wird. Alles klar?<\/p>\n<p>Aber der Reihe nach. Am Beginn erstellt man einen privaten Schl\u00fcssel, der, wie der Name schon sagt, auf alle F\u00e4lle geheim bleiben sollte. Bitcoin benutzt f\u00fcr die asynchrone Verschl\u00fcsselung elliptische Kurven (<strong>E<\/strong>liptic <strong>C<\/strong>urve <strong>D<\/strong>iffie <strong>H<\/strong>ellman &#8211; ECDHE). Man hat sich hier auf die Kurve mit dem klingenden Namen <strong>secp256k<\/strong> geeignet. Zur Generierung des privaten Schl\u00fcssels wird eine zuf\u00e4llige Zahl (P) mit einem Punkt (Q) auf der Kurve multipliziert. Der dadurch erhaltene Punkt (R) ist wiederum ein Punkt auf der Kurve und dient als \u00f6ffentlicher Schl\u00fcssel.<\/p>\n<p>Um das Ganze leichter zu verstehen gehen wir das mal bildlich Schritt f\u00fcr Schritt durch. Wir werden dabei nur oberfl\u00e4chlich an der dahinterliegenden Mathematik kratzen, es bleibt also noch leserlich &#8211; versprochen.<\/p>\n<p>Zuerst brauchen wir den Graph dieser\u00a0elliptischen Kurve, der in etwa* so aussieht:<\/p>\n<figure id=\"attachment_177\" aria-describedby=\"caption-attachment-177\" style=\"width: 250px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-177\" src=\"http:\/\/www.robert-kofler.at\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_blank-250x300.png\" alt=\"Graph einer elliptischen Kurve\" width=\"250\" height=\"300\" srcset=\"https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_blank-250x300.png 250w, https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_blank.png 308w\" sizes=\"auto, (max-width: 250px) 85vw, 250px\" \/><figcaption id=\"caption-attachment-177\" class=\"wp-caption-text\">Graph einer elliptischen Kurve<\/figcaption><\/figure>\n<p>Nun w\u00e4hlt man einen Punkt P der auf der Kurve liegt. Die Auswahl erfolgt zuf\u00e4llig, damit niemand mittels einer Regel nachvollziehen kann wo der Punkt liegt. P hat einen Zahlenwert und entspricht damit dem geheimen Schl\u00fcssel.<\/p>\n<p>Ein Beispiel f\u00fcr einen privaten Schl\u00fcssel ist:<\/p>\n<p>D9 87 3D 80 C2 D3 7D C0 FB 6A 57 78 63 33 89 F4 45 32 13 30 3D A6 1F 20 FD 67 AA 23 3F AC3 32 62<\/p>\n<figure id=\"attachment_178\" aria-describedby=\"caption-attachment-178\" style=\"width: 250px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-178 size-medium\" src=\"http:\/\/www.robert-kofler.at\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_P-250x300.png\" alt=\"Punkt P auf der Kurve\" width=\"250\" height=\"300\" srcset=\"https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_P-250x300.png 250w, https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_P.png 308w\" sizes=\"auto, (max-width: 250px) 85vw, 250px\" \/><figcaption id=\"caption-attachment-178\" class=\"wp-caption-text\">Punkt P auf der Kurve<\/figcaption><\/figure>\n<p>Nun w\u00e4hlt man noch einen Punkt Q auf der Kurve.<\/p>\n<figure id=\"attachment_184\" aria-describedby=\"caption-attachment-184\" style=\"width: 250px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-184 size-medium\" src=\"http:\/\/www.robert-kofler.at\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_PQ-1-250x300.png\" width=\"250\" height=\"300\" srcset=\"https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_PQ-1-250x300.png 250w, https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_PQ-1.png 308w\" sizes=\"auto, (max-width: 250px) 85vw, 250px\" \/><figcaption id=\"caption-attachment-184\" class=\"wp-caption-text\">Punkt Q auf der Kurve<\/figcaption><\/figure>\n<p>Mathematisch kann man nun Punkt P und Q addieren und erh\u00e4lt dadurch den Punkt R. Diese Funktion ist praktischerweise nicht umkehrbar (zumindest ist die Umkehrung nicht in absehbarer Zeit schaffbar, vgl. Umkehrung von\u00a0<a href=\"http:\/\/www.robert-kofler.at\/?p=43\">Hash<\/a>)\u00a0und f\u00fcr Nichtmathematiker eventuell schon ziemlich schwer zu verstehen. Allerdings kann man diese Funktion auch graphisch als Gerade zwischen den beiden Punkten P und Q darstellen. Und schon kann man sich das Ganze auch ohne besondere mathematische Begabung vorstellen. Am Schnittpunkt der Geraden zwischen P und Q mit der Kurve erh\u00e4lt man den Punkt R.<\/p>\n<figure id=\"attachment_183\" aria-describedby=\"caption-attachment-183\" style=\"width: 250px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-183 size-medium\" src=\"http:\/\/www.robert-kofler.at\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_PQR-1-250x300.png\" width=\"250\" height=\"300\" srcset=\"https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_PQR-1-250x300.png 250w, https:\/\/www.robert-kofler.at\/Blog\/wp-content\/uploads\/2017\/01\/elliptische-Kurve_PQR-1.png 308w\" sizes=\"auto, (max-width: 250px) 85vw, 250px\" \/><figcaption id=\"caption-attachment-183\" class=\"wp-caption-text\">Punkt R auf der Kurve<\/figcaption><\/figure>\n<p>Der Punkt R hat auch wieder einen Zahlenwert und entspricht nun dem \u00f6ffentlichen Schl\u00fcssel, den man jedem weitergeben kann.<\/p>\n<p>Durch eine ge\u00e4nderte Auswahl von Q, bei stets gleichem P, erh\u00e4lt man jedesmal einen anderen Punkt R. Damit kann man aus einem privaten Schl\u00fcssel (P) viele \u00f6ffentliche Schl\u00fcssel (R) generieren. Genau das machen moderne Wallets bei jeder Transaktion &#8211; sie wechseln Q und in Verbindung mit dem privaten und gleichbleibenden P wird ein neuer Punkt R generiert. Das best\u00e4ndige Wechseln des \u00f6ffentlichen Schl\u00fcssels dient der Steigerung der Privatsph\u00e4re.<\/p>\n<p>Der \u00f6ffentliche Schl\u00fcssel, der von R repr\u00e4sentiert wird, ist f\u00fcr Menschen eine relativ lange Zahl, wie zum Beispiel dieser public key:<\/p>\n<p>02 a1 63 3c af cc 01 eb fb 6d 78 e3 9f 68 7a 1f 09 95 c6 2f c9 5f 51 ea d1 0a 02 ee 0b e5 51 b5 dc<\/p>\n<p>Auf den public key wird nun SHA256 und RIPEMD-160 in Serie angwandt (also zweimal ein\u00a0<a href=\"http:\/\/www.robert-kofler.at\/?p=43\">Hash<\/a>\u00a0gebildet) und man erh\u00e4lt dann eine Bitcoinadresse im\u00a0Base 58 Format:<\/p>\n<p>5Kb6hWXMss8QgidDA76NzPL6TsZZY3SzNydYXYB9KFkf9zgVPno<\/p>\n<p>Bitcoinadressen sind case sensitve (es wird zwischen Gro\u00df- und Kleinschreibung unterschieden) und enthalten weder ein gro\u00dfes O oder I ein kleines L oder die Ziffer 0. So sind sie f\u00fcr Menschen relativ leicht zu lesen.<\/p>\n<p>Die Bitcoinadresse ist nicht besonders viel k\u00fcrzer als der urspr\u00fcngliche \u00f6ffentliche Schl\u00fcssel. Warum sollte man also den Schl\u00fcssel nun noch zus\u00e4tzlich zweimal hashen, wo ist der Vorteil?<\/p>\n<p>Dies dient der Sicherheit. Vom \u00f6ffentlichen Schl\u00fcssel k\u00f6nnte man mit ausreichend Rechenpower den privaten Schl\u00fcssel errechnen. So viel Rechenkraft w\u00fcrden aber, aus heutige Sicht, lediglich Quantencomputer (die es erst einmal geben muss) bieten. Durch den doppelten Hash wird es aber auch f\u00fcr Quantencomputer schwer den privaten Schl\u00fcssel zu errechnen. Man m\u00fcsste ja erst zweimal den Hash retour rechnen, bevor man sich an den privaten Schl\u00fcssel machen kann. Um Bitcoin gegen Angriffe von Quantencomputern sicher zu machen bedarf es allerdings noch mehr. Daf\u00fcr gibt es bereits Ideen, die ich hier aber nicht n\u00e4her ausf\u00fchren werde. Wichtig an dieser Stelle ist, dass man als Nutzer keine Angst haben muss, wenn eines Tages &#8211; \u00fcberraschend &#8211; Quantencomputer die Arena betreten. Bitcoins haben durch den doppelten Hash der Adressen einen Schutz eingebaut, der einen Vorsprung bietet, um in dieser Zeit Bitcoin weiter gegen einen solchen Angriff abzusichern.<\/p>\n<p>*den Graph der Kurve habe ich sinnbildlich mit Gimp erstellt &#8211; er ist also nicht ma\u00dfst\u00e4blich.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wenn jemand Bitcoins empfangen oder versenden will braucht er daf\u00fcr eine Adresse. Doch woher kommt diese Adresse?\u00a0Wie entsteht eine Bitcoin Adresse? Dem gehen wir in diesem Artikel auf den Grund und schauen Bitcoin mal etwas genauer unter die Haube.<\/p>\n","protected":false},"author":1,"featured_media":182,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-163","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-allgemein"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/posts\/163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/comments?post=163"}],"version-history":[{"count":15,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/posts\/163\/revisions"}],"predecessor-version":[{"id":194,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/posts\/163\/revisions\/194"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/media\/182"}],"wp:attachment":[{"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/media?parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/categories?post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.robert-kofler.at\/Blog\/wp-json\/wp\/v2\/tags?post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}