Bitcon1O1

Criptografía Bitcoin, Curvas Elípticas

2022/01/26

La seguridad de Bitcoin se basa en el manejo de llaves públicas y privadas. ECDSA (Elliptical Curve Digital Signing Algorithm por sus siglas en inglés) es la criptografía detrás de las llaves públicas y privadas en Bitcoin. Consiste en la combinación del manejo matemático de las curvas elípticas y los cuerpos finitos para crear ecuaciones que funcionan en un solo sentido, es decir que puedes escoger un número como tu llave privada y derivar, por medio de algoritmos, una llave pública. Sin embargo, la operación inversa que, a partir de una llave pública puedas obtener la llave privada, no es posible.

Curvas Elípticas

Una curva elíptica es la serie de puntos definidos por la siguiente ecuación:

\[y^2=x^3+ax+b \]

Esto excluye a las curvas que no cumplen con lo siguiente

\[4a^3+27b^2=0 \]

En particular Bitcoin esta basado en la criptografía que utiliza la siguiente ecuación denominada secp256k1 :

\[y^2=x^3+7 \]

Esta ecuación es representada por la curva que a continuación se muestra:

Curva elíptica Bitcoin

Curva elíptica Bitcoin

Como vimos, la ecuación original contiene los términos 4a3+b, esto quiere decir que en el caso de la ecuación de Bitcoin a=0 y b=7.

Podemos definir un grupo dentro de las curvas elípticas si:

Las curvas elípticas son útiles por lo que se le denomina adición de puntos, cuando deseamos hacer una operación con dos puntos para obtener un tercer punto sobre la curva. A esta operación se le llama suma, porque comparte varias propiedades que asociamos con la operación de sumar. Por ejemplo, la conmutatividad, si sumamos al punto A con el punto B, es lo mismo que sumar el punto B al punto A.

Si para la suma de los puntos P=(x,y), Q=(x,y) realizamos la proyección de una recta que toca los primero dos puntos, obtendremos un tercer punto (x,y) en donde la curva es tocada por tercera vez, y si este punto lo reflejamos haciendo una inversión sobre el eje de las x, tendremos como resultado el punto -R(x, y) tal y como se muestra en la gráfica siguiente:

Curva adicición

Curva adición Bitcoin

Este método geométrico funciona, pero necesita ser afinado. Particularmente necesitamos resolver las siguientes preguntas:

Curva tangente

Curva tangente Bitcoin

Suma algebraica

Si queremos en algún momento construir un algoritmo para la adición de puntos debemos construir un método algebraico. Eliminemos por lo pronto los casos en los que P+(-P)=0 y en el que P+0=0+P=0 y concentrémonos en los dos casos que quedan: cuando P y Q son distintos y cuando P y Q son iguales.

Si P y Q son distintos, P1=(x1,y1), P2=(x2,y2), P3=(x3,y3), la línea que pasa por ellos tiene una pendiente, esta se calcula de la siguiente forma:

\[m = {yp - yq \over xp - xq} \]

podemos utilizar la pendiente para calcular x3 y una vez que obtengamos x3 podemos calcular y3. P3 puede obtenerse utilizando la siguientes formulas, que se obtienen después de hacer las sustituciones y despejar (no incluimos los cálculos en este post para mantener su tamaño dentro de lo razonable):

\[x3 = s^2-x1-x2 \]

\[y3 = s(x1-x3)-y1 \]

Si P y Q son iguales, P1=(x1,y1), P2=(x1,y1), P3=(x3,y3),en este caso debemos utilizar la tangente al punto, para calcular la pendiente m, recurrimos al cálculo para obtener la derivada de la ecuación de nuestra curva (no incluimos los cálculos en este post para mantener su tamaño dentro de lo razonable):

\[m = {3x1^2 + a \over 2y1} \]

Una vez que utilizamos la pendiente, hacemos las sustituciones y despejamos podemos obtener las formulas (no incluimos los cálculos en este post para mantener su tamaño dentro de lo razonable):

\[x3 = s2-2x1 \]

\[y3 = s(x1 - x3) - y1 \]

Hasta aquí nos hemos concentrado en las características principales de las curvas elípticas, la curva particular que utiliza Bitcoin, así como una perspectiva gráfica y otra algebraica de la adición de puntos, en un próximo post introduciremos el tema de los cuerpos finitos, su relación con las curvas elípticas y veremos como se deriva la llave pública a partir de una llave privada.

Criptografía Bitcoin, Curvas elípticas sobre cuerpos finitos