Ir al contenido principal

Criptografía (CCXC): Criptografía de curva elíptica (ECC)

Tal y como nos cuenta wikipedia, la Criptografía de Curva Elíptica (ECC, por las siglas en inglés de 'Elliptic curve cryptography') es una variante de la criptografía asimétrica o de clave pública basada en las matemáticas de las curvas elípticas y se emplea para implementar algunos de los criptosistemas de este tipo ya existentes.

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 = (x2y2) dos puntos de una curva elíptica ('E'); la suma de ambos puntos, P + Q, será un tercer punto de la curva R = (x3y3) 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 = (x1y1) un punto de una curva elíptica ('E'); el resultado de 2 * P = P + P será otro punto de la curva = (x2y2) 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 = (x2y2), 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 elementoscurvas 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 sentidomuy 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.

Para finalizar, decir que la Criptografía de Curva Elíptica (ECC), como en el caso de todos los algoritmos de criptografía asimétrica o de clave pública, encuentra como principales áreas de aplicación las correspondientes al cifrado de información, la firma digital y el intercambio de claves, para cada una de las cuales hay diferentes estándares que utilizan curvas elípticas: 'Integrated Encryption Scheme(ECIES) para cifrado, 'Elliptic Curve Digital Signature Algorithm' (ECDSA) para firma digital y 'Elliptic-curve Diffie-Hellman' (ECDH) para intercambio de claves, pero también se utiliza, por ejemplo, en la tecnología 'blockchain', por lo que es de aplicación a otros muy diversos campos, tales como: las criptomonedas, el voto electrónicoetc.

Por ejemplosecp256k1 es el tipo de curva elíptica utilizada como curva ECDSA en el modelo criptográfico de Bitcoin:

Quizás también te interese:

Comentarios

Entradas populares de este blog

Criptografía (I): cifrado Vigenère y criptoanálisis Kasiski

Hace unos días mi amigo Iñaki Regidor ( @Inaki_Regidor ), a quien dedico esta entrada :), compartió en las redes sociales un post titulado "Criptografía: el arte de esconder mensajes"  publicado en uno de los blogs de EiTB . En ese post se explican ciertos métodos clásicos para cifrar mensajes , entre ellos el cifrado de Vigenère , y , al final del mismo, se propone un reto consistente en descifrar un mensaje , lo que me ha animado a escribir este post sobre el método Kasiski  para atacar un cifrado polialfabético ( conociendo la clave descifrar el mensaje es muy fácil, pero lo que contaré en este post es la forma de hacerlo sin saberla ). El mensaje a descifrar es el siguiente: LNUDVMUYRMUDVLLPXAFZUEFAIOVWVMUOVMUEVMUEZCUDVSYWCIVCFGUCUNYCGALLGRCYTIJTRNNPJQOPJEMZITYLIAYYKRYEFDUDCAMAVRMZEAMBLEXPJCCQIEHPJTYXVNMLAEZTIMUOFRUFC Como ya he dicho el método de Vigenère es un sistema de sustitución polialfabético , lo que significa que, al contrario que en un sistema de

Criptografía (XXIII): cifrado de Hill (I)

En este post me propongo explicar de forma comprensible lo que he entendido sobre el cifrado de Hill , propuesto por el matemático Lester S. Hill , en 1929, y que se basa en emplear una matriz como clave  para cifrar un texto en claro y su inversa para descifrar el criptograma correspondiente . Hay tres cosas que me gustan de la criptografía clásica, además de que considero que ésta es muy didáctica a la hora de comprender los sistemas criptográficos modernos: la primera de ellas es que me "obliga" a repasar conceptos de matemáticas aprendidos hace mucho tiempo y, desgraciadamente, olvidados también hace demasiado tiempo, y, por consiguiente, que, como dice  Dani , amigo y coautor de este blog, me "obliga" a hacer "gimnasia mental"; la segunda es que, en la mayoría de las ocasiones, pueden cifrarse y descifrase los mensajes, e incluso realizarse el criptoanálisis de los criptogramas, sin más que un simple lápiz y papel, es decir, para mi es como un pasat

¿Qué significa el emblema de la profesión informática? (I)

Todas o muchas profesiones tienen un emblema que las representa simbólicamente y en el caso de la  informática: " es el establecido en la resolución de 11 de noviembre de 1977  para las titulaciones universitarias superiores de informática, y  está constituido por una figura representando en su parte central  un  núcleo toroidal de ferrita , atravesado por  hilos de lectura,  escritura e inhibición . El núcleo está rodeado por  dos ramas : una  de  laurel , como símbolo de recompensa, y la otra, de  olivo , como  símbolo de sabiduría. La  corona  será la  de la casa real  española,  y bajo el escudo se inscribirá el acrónimo de la organización. ". Veamos los diferentes elementos tomando como ejemplo el emblema del COIIE/EIIEO (Colegio Oficial de Ingenieros en Informática del País Vasco/ Euskadiko Informatikako Ingeniarien Elkargo Ofiziala ) . Pero no sólo el COIIE/EIIEO adopta el emblema establecido en dicha resolución, sino que éste se adopta también como im