Wie sieht die in Bitcoin verwendete Kurve secp256k1 aus?

Ich lese mich in ECC-Kurven ein und auf vielen von ihnen sehe ich eine Illustration, die so aussieht

Geben Sie hier die Bildbeschreibung ein

Wie sieht die vergleichbare Kurve bei Bitcoin aus, oder sind generell alle Kurven gleich?

Antworten (3)

Ich fürchte, Ihnen wird die Antwort nicht gefallen.

Diese Kurven - einschließlich der secp256k1Kurve y 2 = x 3 + 7 - "sehen" gut aus, wenn sie in typischen Feldern (wie den reellen Zahlen) ausgewertet werden, aber secp256k1 ist über das endliche Feld Z 2 256 -2 32 -977 definiert , was bedeutet die X- und Y-Koordinaten sind 256-Bit-Ganzzahlen modulo einer großen Zahl. Kurven, die solche Koordinaten verwenden, haben kein Konzept von durchgehenden Linien.

Ich habe versucht, diese Kurve über ein ähnliches, aber viel kleineres Feld, Z 2 8 +1 , zu zeichnen . Die Koordinaten erstrecken sich von -128 bis 128.

y² = x³ + 7 über Z257, -128 bis 128

Beachten Sie, dass es, obwohl es geometrisch vielleicht keinen Sinn mehr macht, immer noch alle Eigenschaften hat, die Sie brauchen. Eine Linie (dh eine Gruppe von Punkten mit der Gleichung ay + bx + c = 0 ), die 2 Punkte der Kurve „schneidet“, schneidet einen dritten. Die Tangente hat wieder keine geometrische Interpretation mehr, aber Sie können immer noch symbolisch eine Ableitung der Gleichung in einem bestimmten Punkt berechnen, die die Eigenschaft hat, die Kurve in einem zweiten Punkt zu schneiden.

Um Ihnen zu zeigen, was Sie erhalten würden, wenn dies über den reellen Zahlen läge, ist hier ein Diagramm derselben Kurvengleichung für diesen Fall. Einmal mit den Koordinaten -128 bis 128, einmal mit -8 bis 8.

y² = x³ + 7 über R, -128 bis 128 y² = x³ + 7 über R, -8 bis 8

Ich kenne die tiefgestellte Notation mit Exponenten nicht. Z subscript: 2^256-2^32-977(Ich lerne das im Laufe der Zeit). Was bedeutet das ... vielleicht "nimm den Mod von ..." oder hat es etwas mit der Definition eines Feldes zu tun, das ich noch nicht verstehe.
Ja, Z modulo 2^256 - 2^32 - 977. Oder anders geschrieben: die ganzen Zahlen modulo 115792089237316195423570985008687907853269984665640564039457584007908834671663. Im vereinfachten (ersten) Diagramm habe ich stattdessen .257 die obigen Zahlen verwendet.
Gibt es eine Möglichkeit, Signaturen zu visualisieren und dass der entsprechende "S" -Wert zwei gültige Werte hat? Vielleicht mit einem anderen Feld? Ich unterhalte die Idee, Menschen auf einer interaktiven Demo-Site über Transaktionsverformbarkeit aufzuklären.
Tatsächlich ist secp256k1 über ein Galois-Feld definiert, nicht über einen Ring aus ganzen Zahlen modulo einer Primzahl. Nun stellt sich heraus, dass das secp256k1-Feld ein Primzahlfeld und daher isomorph zu einem Ring aus ganzen Zahlen modulo einer Primzahl ist, aber dies gilt nicht für alle ECDSA-Kurven – tatsächlich die „sectXXXyZ“-Kurven (für die viel schnellere Hardware existiert als die "secpXXXyZ"-Kurven) kann nicht mit Ringen aus ganzen Zahlen beschrieben werden. Auf dieser Seite finden Sie eine Erklärung, warum jedes endliche Feld eine GF-Darstellung hat, aber nur die Hauptfelder eine Z/pZ-Darstellung haben: en.wikipedia.org/wiki/Finite_field#Statement
Technisch gesehen ist jedes Primzahlfeld ein Galois-Feld. Es gibt tatsächlich SEC-Kurven, die über binären GF(2^n)-Galois-Feldern definiert sind, aber diese hier nicht. Ich bin mir nicht sicher, was Sie hier sagen wollen, die Galois-Darstellung eines solchen Primzahlfelds ist nur GF (p ^ 1).
Verwandte: Ich war auch neugierig, ob es eine Möglichkeit gibt, die Rendezvous-Punkte zu visualisieren, die schwache private Schlüssel bitcoin.stackexchange.com/a/23315/1878 erzeugen , aber ich nehme an, das wäre schwierig oder unmöglich.
@makerofthings7 Diese Treffpunkte sind einfach Unsinn. Sie können sich eine Reihe von "speziellen" Punkten und Transformationen einfallen lassen, die das Auffinden dieser erleichtern, aber es gibt keinen Grund, warum sie wahrscheinlicher sind als andere. Wir versuchen auch nicht aktiv, zum Beispiel sehr niedrige Zahlen für private Schlüssel zu vermeiden - ja, diese sind leichter zu finden, wenn Sie damit beginnen, diese zu knacken, aber da sie nicht wahrscheinlicher als andere generiert werden, warum sollten Sie anfangen? dort?
@pieter du hast geschrieben: "dass 2 punkte der kurve 'schneidet', wird einen dritten schneiden.". Bild 3 im Originalbeitrag scheint eine vertikale Linie zu zeigen, die sich bei P + Q schneidet ... aber anscheinend nicht an einem dritten Punkt. Ich bin nur neugierig, wie die Regel "Wenn 2, dann 3" in ECC angewendet wird.
@carlcrott Du hast Recht - es gibt eine Ausnahme, nämlich gerade vertikale Linien, die sich nur in 2 Punkten schneiden. Dies wird gelöst, indem der Kurve ein virtueller Punkt „im Unendlichen“ hinzugefügt wird, der als neutrales Element dient. Das Ergebnis ist eine mathematische Gruppe.
Da ein endliches Feld nur ein "Umbruch" ist, bin ich sicher, dass wir die ursprüngliche Kurve der reellen Zahlen über einige dieser Punkte in der endlichen Feldversion anpassen können - jene Punkte, an denen kein Umbruch stattgefunden hat.
ausgezeichnete Antwort
Ich bin mir nicht sicher, ob der Kommentar zur Kontinuität mathematisch korrekt ist, obwohl ich denke, was Sie sagen wollen, ist klar. Kontinuität ist eine Eigenschaft, die für eine Funktion definiert ist, was ECs sind (es sei denn, wir wollen den impliziten Funktionssatz und Diagramme verwenden). Darüber hinaus sind diskrete Funktionen (ähnlich wie Kurven über endlichen Körpern) tatsächlich stetig. Vielleicht sind die korrekteren Konzepte, die für eine vollständige Strenge diskutiert werden sollten, verbundene Komponenten oder Glätte. Dieses kleine Detail behindert meiner Meinung nach eine ansonsten qualitativ hochwertige Antwort.
Ich glaube, dass die Kontinuität für Kurven im Allgemeinen gut definiert ist, nicht nur für Funktionen. Aber es gilt nicht in endlichen Körpern, da es keine Metrik gibt, die Entfernungen auf die reellen Zahlen abbildet und die es erlaubt, Punkte beliebig nahe an einem anderen Punkt zu finden. Das heißt, ich wollte nicht ganz mathematisch streng sein und nur darauf hinweisen, dass wir, obwohl keine durchgehenden Linien gezeichnet sind, immer noch eine Tangente usw. berechnen können, indem wir dieselben Formeln anwenden - sie haben einfach nicht die erwartete geometrische Bedeutung in endlichen Feldern, aber die Mathematik funktioniert immer noch.

Sie können das Bitcoin-Dokument https://en.bitcoin.it/wiki/Secp256k1 überprüfen , dort finden Sie einige technische Details über das in Bitcoin verwendete secp256k1.

Unten eine Illustration der elliptischen Kurve des secp256k1 y2 = x3 + 7 über den reellen Zahlen (Plot mit www.desmos.com/calculator/ialhd71we3 )

secp256k1-Plot mit www.desmos.com/calculator/ialhd71we3

im Zusammenhang mit einem endlichen Feld Zp, das das ECC-Erscheinungsbild stark verändert, aber nicht seine zugrunde liegende Gleichung oder spezielle Eigenschaften. Das folgende Bild stellt dieselbe Gleichung in einem endlichen Feld F17 dar (die x- und y-Werte sind ganze Zahlen zwischen 0 und 17).

Elliptische Kurve über F17

und hier über F59 :

Geben Sie hier die Bildbeschreibung ein

Hier finden Sie ein Online-Opensource-Tool https://cdn.rawgit.com/andreacorbellini/ecc/920b29a/interactive/modk-add.html , das Ihnen hilft, den Graphen zu zeichnen und Additionen oder skalare Multiplikationen auf einem EC durchzuführen. ZB mit P+Q über F97 plotten.

Geben Sie hier die Bildbeschreibung ein

Ein weiterer guter Artikel über ECDSA in Bitcoin ist https://github.com/bellaj/Bitcoin_Ethereum_docs/blob/6bffb47afae6a2a70903a26d215484cf8ff03859/ecdsa_bitcoin.pdf

secp256k1 wurde fast nie verwendet, bevor Bitcoin populär wurde, aber es gewinnt jetzt aufgrund seiner mehreren netten Eigenschaften an Popularität. Die am häufigsten verwendeten Kurven haben eine zufällige Struktur, aber secp256k1 wurde auf eine spezielle nicht zufällige Weise konstruiert, die eine besonders effiziente Berechnung ermöglicht. Dadurch ist sie bei ausreichend optimierter Umsetzung oft mehr als 30 % schneller als andere Kurven. Außerdem wurden die Konstanten von secp256k1 im Gegensatz zu den beliebten NIST-Kurven auf vorhersehbare Weise ausgewählt, was die Wahrscheinlichkeit erheblich verringert, dass der Ersteller der Kurve irgendeine Art von Hintertür in die Kurve eingefügt hat.

Um einige Punkte zu verbinden, ist das endliche Feld, auf das Sie sich immer wieder beziehen, auch als "Ordnung" oder "große Primzahl" bekannt, die für das diskrete Log-Problem erforderlich ist?

Da das zugrunde liegende Feld für die elliptische Kurve für secp256k1 F p ist , wobei p = 2 256 – 2 32 – 977 ist, und da p sehr nahe an einer Potenz von 2 liegt, ist es sinnvoll zu versuchen, die elliptische Kurve y 2 = x graphisch darzustellen 3 +7 über dem Feld von 2-adischen Zahlen oder verwandten Ringen. Da wir hier nur endlich Platz zum Posten haben, zeichnen wir einfach die elliptische Kurve über einen Ring der Form Z 2 n . Der Ring der 2-adischen ganzen Zahlen ist die inverse Grenze der Ringe der Form Z 2 n . Daher sind die Ringe Z 2 nkönnen als endliche Annäherungen für den Ring der 2-adischen ganzen Zahlen betrachtet werden. Nun wollen wir die elliptische Kurve so darstellen, dass zwei Punkte, die bezüglich der 2-adischen Metrik nahe beieinander liegen, auch auf der grafischen Darstellung der elliptischen Kurve nahe beieinander liegen.

Sei f:Z 2 n ->{0,...,2 n -1} die Funktion mit f(a 0 2 0 +...+a n-1 2 n-1 )= a n-1 2 0 +...+a 0 2 n-1 wenn a 0 ,...,a n-1 alle Elemente der Menge {0,1} sind. Mit anderen Worten, f kehrt einfach die Bits in der binären Darstellung eines Elements von Z 2 n um . Dann befinden sich die weißen Pixel im folgenden Diagramm genau an den Punkten mit den Koordinaten (f(x),f(y)) mit y 2 = x 3 +7 mod 2 nwobei n = 9. Dieses Bild ist eine Annäherung an das Bild der elliptischen Kurve über dem Ring von 2-adischen ganzen Zahlen.

Geben Sie hier die Bildbeschreibung ein

Da der Körper der komplexen Zahlen isomorph zu jedem Ultraprodukt der algebraischen Abschlüsse endlicher Körper F p durch einen nicht-hauptsächlichen Ultrafilter auf der Menge aller Primzahlen ist, sollte man sich die endlichen Körper als Annäherung an die Menge aller Komplexen vorstellen Zahlen. Darüber hinaus bettet sich das Feld der p-adischen Zahlen in das Feld der komplexen Zahlen ein, sodass man sich die endlichen Felder als Objekte vorstellen kann, die sich einem Feld annähern, das das Feld der p-adischen Zahlen als Teilfeld enthält. Daher ist es angemessen, die Graphen der elliptischen Kurve y 2 = x 3 zu verwenden+7 über den reellen Zahlen, komplexen Zahlen oder sogar den p-adischen Zahlen als Visualisierung für die Felder, die in der Kryptografie mit elliptischen Kurven verwendet werden. Man muss sich nur bewusst machen, dass man zu Visualisierungszwecken in einem anderen Bereich arbeitet.