En el algoritmo ECDSA, la clave privada de Bitcoin es supuestamente un punto en el gráfico (¿o lo es?). Pero la clave privada es un solo número entero, y no las coordenadas x, y. ¿Es el entero, por sí mismo, el valor x o el valor y? Si es x, entonces ¿cuál es y? Si es y, entonces, ¿cuál es x?
La operación básica de la curva elíptica es la suma de puntos. La operación de aplicar esta suma repetidamente se llama multiplicación escalar de un punto por un número entero.
La clave privada es el 'escalar', el punto que se multiplica es el punto 'Generador', el resultado es la clave pública.
La multiplicación escalar es básicamente una suma repetida. Multiplicar el punto Generador por 5 significa: calcular G+G+G+G+G.
Calcula esto calculando primero G2= G+G, luego G4=G2+G2, luego G5=G4+G.
La fórmula para la curva utilizada por los cálculos de bitcoin es la siguiente:
y^2 == x^3 + 7 ( mod p )
dóndep = 2^256 - 2^32 - 977
un punto (x,y) está en la curva si coincide con la ecuación anterior
La adición de curvas se visualiza mejor geométricamente
imagen de certicom
La criptografía de curva elíptica no utiliza valores de punto flotante para sus coordenadas, todos los cálculos se realizan en números enteros módulo un primo grande (mencionado anteriormente, llamado p). Pero el método para calcular la suma de 2 puntos sigue siendo el mismo.
Sume los puntos P1=(x1,y1) y P2=(x2,y2), dando como resultado Psum= (xsum, ysum)
slope = (y1-y2)/(x1-x2)
xsum = slope^2 - (x1+x2)
ysum = slope*(x1-xsum)-y1
si P1 y P2 son el mismo punto, la fórmula de suma anterior implicaría una división por cero, por lo que se necesita una fórmula diferente para calcular P+P
slope = 3 * x^2 / (2*y)
xdbl = slope^2 - 2*x
ydbl = slope *(x-xdbl)-y
G
Para ECDSA se eligió un punto generador .
La clave privada es solo un número entero, nómbrelo k
. La clave pública es el punto generador agregado a sí mismo k
varias veces. En otras palabras, multiplicado por k
.
Si elige imprudentemente su clave privada, digamos 1, su clave pública sería igual al punto generador, esta dirección: 1EHNa6Q4Jz2uvNExL497mE43ikXhwF6kZm
Como puede ver, incluso se usó recientemente.
Lo que hace que ECDSA sea un sistema criptográfico útil es que es fácil calcular una clave pública a partir de una clave privada, pero no al revés. Otra forma de expresar esto es que la multiplicación es fácil, pero no existe un algoritmo de división (fácil) en una curva elíptica.
Ver esta esencia para un ejemplo en python
n
en el documento SEC 2), exclusivo.La clave pública es un punto, la clave privada es un número entero de 256 bits. Sin embargo, en realidad no almacenamos el punto como x, y como parte de la clave pública, almacenamos x y el signo de y para ahorrar espacio.
Felipe Voloch
Mío
Felipe Voloch