Antes que nada, decir que sigo empeñado en compartir lo que voy aprendiendo sobre criptología de la forma más comprensible que pueda y esperando no equivocarme demasiado al contarlo, pero en este caso no sé si voy a ser capaz; la criptografía moderna tiene una profunda base matemática que supera con creces mi capacidad y talento (tal y como suelo decir, poco en ambos casos).
Por tanto, fruto de ese empeño y de mi propia incapacidad, voy a evitar entrar en mayores profundidades matemáticas y a centrarme en lo que he entendido sobre el uso de estas curvas en la criptografía, pero en este caso es inevitable un breve barniz matemático antes de entrar en materia.
La curva elíptica cuya gráfica sirve para ilustrar este post está definida sobre los números reales, es decir, los infinitos puntos que la forman tienen como coordenadas número reales.
Las curvas elípticas tienen propiedades que las hacen idóneas para su uso en la criptografía: son curvas suaves, es decir, no presentan vértices ("picos"), no se cortan a sí mismas y presentan simetría respecto al eje de abcisas.
Las operaciones sobre puntos de las curvas elípticas son:
1.- La suma de puntos: sean P = (x1, y1) y Q = (x2, y2) dos puntos de una curva elíptica ('E'); la suma de ambos puntos, P + Q, será un tercer punto de la curva R = (x3, y3) que se puede obtener de la siguiente manera:
1.1.- Se traza una recta secante entre los dos puntos de 'E' a sumar, en nuestro caso 'P' y 'Q'.
1.2.- Se busca el tercer punto de corte de la recta secante con 'E'.
1.3.- La suma de ambos puntos, P + Q, es el punto simétrico respecto al eje de abcisas del tercer punto de corte.
¿Qué pasa si no hay un tercer punto de corte en 'E' y la línea se pierde en el infinito? Pues en ese caso se dice que el tercer punto de corte es un punto situado en el infinito, 𝒪, y que P + Q = 𝒪.
𝒪 es el elemento neutro para la suma, es decir: P + 𝒪 = P.
2.- La multiplicación escalar: esta operación es la base de la Criptografía de Curva Elíptica (ECC) y consiste en multiplicar un escalar ('k' ) por un punto. Si 'P' es un punto de la curva: k * P = P + P + P...+ P (suma 'k' veces de 'P').
Por ejemplo: sea P = (x1, y1) un punto de una curva elíptica ('E'); el resultado de 2 * P = P + P será otro punto de la curva Q = (x2, y2) que se puede obtener de la siguiente manera:
2.1.- Se traza la recta tangente al punto 'P'.
2.2.- Se busca el segundo punto de corte de la recta tangente con 'E'.
2.3.- Q = 2 * P = P + P = (x2, y2), es el punto simétrico respecto al eje de abcisas del segundo punto de corte.
Dicho lo anterior, en criptografía se usan las curvas elípticas definidas sobre cuerpos finitos, es decir, curvas que tienen un número finito de puntos cuyas coordenadas son números enteros, lo que proporciona la posibilidad de realizar los cálculos sobre los puntos de forma eficiente y evita los errores de redondeo que podrían producirse con números reales. Habitualmente, se suelen definir las curvas elípticas sobre un cuerpo finito del tipo ℤp, que tienen un número primo de elementos; curvas definidas por la siguiente ecuación:
y2 mod p = (x3 + ax + b) mod p
Al definir la curva elíptica sobre un cuerpo finito se obtiene algo que se asemeja poco o nada a la representación gráfica de la curva sobre números reales, más bien tiene el aspecto de un conjunto de puntos aleatorios, pero todavía se puede observar la simetría:
Y ya tenemos todo listo para empezar a utilizar la Criptografía de Curva Elíptica (ECC): la curva elíptica definida sobre un cuerpo finito y la operación de multiplicación escalar sobre un punto de ésta. Es decir, dicho de forma muy resumida, se trata de multiplicar un punto de esta curva ('P') por un escalar ('k' ) hasta obtener un nuevo punto de la curva ('Q'), y nadie podrá saber, aún conociendo la curva empleada, el punto de partida y el punto final, cuál es el escalar utilizado ('k'), que será la clave privada.
Es decir, al igual que en todos los algoritmos de criptografía asimétrica o de clave pública, la Criptografía de Curva Elíptica (ECC) basa su seguridad en la utilización de una función de un solo sentido; muy fácil de resolver en un sentido, pero muy difícil de revertir; en el caso de la Criptografía de Curva Elíptica (ECC) se trata del problema de logaritmo discreto de curva elíptica (PLDCE).
Las ventajas de la Criptografía de Curva Elíptica (ECC) frente a los criptosistemas anteriores de criptografía asimétrica o de clave pública, tales como RSA o ElGamal, serían su rapidez, la posibilidad de utilizar claves más cortas y su escalabilidad, todo ello con un nivel de seguridad equivalente.
Por ejemplo, secp256k1 es el tipo de curva elíptica utilizada como curva ECDSA en el modelo criptográfico de Bitcoin:
Comentarios
Publicar un comentario