Elliptische Kurven: hm... hatte ich nie viel zu tun mit. Ist aber die Basis von ECDSA
welcher verwendet wird um die echtheit von Bitcoin-"Überweisungen" zu
verifizieren.

Schlüsselpare: Es gibt zu jedem privaten einen öffentlichen Schlüssel.

E-Mail-Verschlüsselung mit PGP-Verfahren: Ich lade mir deinen
öffentlichen Schlüssel herunter und verschlüssele die E-Mail damit und
schicke Sie Dir. Nur Du kannst die E-Mail mit dem privaten Schlüssel
(einfach eine 2048Bit-lange-Datei) entschlüsseln.

Bei ECDSA scheint es genau anders herum zu sein: D.h. der Überweisende
kann mit dem privaten Schlüssel die Überweisung (Einfach
ein Eintrag in Datenbank: "UserX übergibt 0.5Bitcoins and UserY")
signieren und der Rest der Welt kann mit dem öffentlichen Schlüssel
prüfen ob die Überweisung auch wirklich von UserX war. (so lange dem
sein privater Schlüssel nicht geklaut worden ist, geht man davon aus,
dass es UserX war)

http://de.wikipedia.org/wiki/Elliptic_Curve_DSA

Quelle: http://bitcoinblog.de/2013/12/22/kryptografie-des-bitcoins-fuer-anfaenger/

Kryptografie des Bitcoins für Anfänger Posted on 22. December 2013 by Christoph Bergmann // 22 Comments

„Elliptische Kurven

Was? Elliptische Kurven? Auch das noch. In diesem Abschnitt komme ich nicht umhin, ein wenig mathematischer zu werden, um das Problem besser und korrekter beschreiben zu können.

Bitcoin verwendet kein RSA, es verwendet elliptische Kurven. Eine elliptische Kurve ist eine Sammlung von Punkten, die einer bestimmten Gleichung genügen (meist in Form von y^2 = x^3 + a*x + b). Es gibt einige fest definierte Kurven, im Falle von Bitcoin heißt die Kurve, auf die man sich geeinigt hat,secp256k1. Die Parameter a und b sind fest, darüber hinaus gibt es einen Punkt G und eine Primzahl p, auf die man sich geeinigt hat (die Primzahl liegt in der Größenordnung von 2^256).

Außerdem sind einige bekannte Mathe-Operationen definiert: Zum Beispiel die Addition von zwei Punkten und die Multiplikation eines Punkte mit einer Zahl.

Um nun einen öffentlichen und einen geheimen Schlüssel zu erzeugen geht man wie folgt vor:

  1. Man generiert eine zufällige Zahl s, dies ist der geheime Schlüssel
  2. Man multipliziert s mit G (dem Punkt auf der Kurve, der allen bekannt ist) und erhält p
  3. Das Ergebnis der Multiplikation ist wieder ein Punkt auf der Kurve, dies ist der öffentliche Schlüssel

RSA nutzt das Problem, dass man zwar eine Multiplikation schnell durchführen kann, aber die Umkehrung dessen sehr zeitintensiv ist. Ähnlich ist es bei elliptischen Kurven: Man kann leicht eine Zahl mit einem Punkt multiplizieren, aber die Umkehrung ist bisher nicht (bzw. kaum) möglich.

Bevor ihr das in der Schule versucht: Nur auf elliptischen Kurven kann man eine Zahl mit einem Punkt multiplizieren oder zwei Punkte miteinander addieren. Auf der Kurve y=x^2 geht das nicht.

Als mathematische Gleichung:

s*G = p

Man könnte annehmen, dass man einfach durch G teilen könnte, allerdings ist diese Operation nicht definiert: Man kann den Punkt p nicht durch den Punkt G teilen. Das ist nicht möglich.

Da elliptische Kurven endliche Körper sind, lassen sich bekannte Verfahren wie der Digital Signature Algorithm (DSA) und der Diffie-Hellmann (DH) Schlüsselaustausch auf elliptische Kurven anwenden und man kann damit:

  1. Signaturen erzeugen (ECDSA, dies wird in Bitcoin verwendet)
  2. einen geheimen Schlüssel über ein unsicheres Medium austauschen (ECDH, wird nicht in Bitcoin verwendet)

Möchte man dieses System brechen, muss man eine effiziente Methode finden s zu bestimmen wenn man nur G und p kennt.

Falls man dies geschafft hat, steht am nächsten Tag die Welt auf dem Kopf, denn kein Verschlüsselungsverfahren wäre mehr sicher.

Jede Internet-Verbindung mit einer Bank wäre abhörbar, jedes militärische System wäre abhörbar und jede Art von Signatur wäre wertlos.

Bisher wurde das ECDLP auf einer relativ kleinen Kurve gelöst: Einer Kurve mit einer Primzahl in der Größenordnung von 2^112. Dazu hat man 200 Playstation 3 knapp 3 Monate lang in einem Cluster laufen lassen.“

admin