• No results found

Si bien los algoritmos implementados en este trabajo son correctos matemáticamente, hay ciertas consideraciones prácticas a la hora de implementar algoritmos criptográficos que no se han tenido en cuenta.

Mientras que en los algoritmos criptográficos el atacante solo dispone de los datos presentados en el mismo, en la realidad las implementaciones presentan la posibilidad de realizar side channel attacks.

Estos se basan en información obtenida de la implementación, como el tiempo que se tarda en cifrar o descifrar un mensaje o la presencia en memoria de datos que puedan comprometer el algoritmo. Otra consideración es que, si bien el código implementado es muy útil a la hora de familiarizarse con los algoritmos, en ningún caso debe utilizarse para firmar o cifrar nada de real valor, ya que no es

trivial garantizar que la implementación sea resistente a la gran cantidad de ataques existentes en la actualidad.

Cabe mencionar que en los últimos años se han descubierto ataques a las curvas elípticas definidas sobre los cuerpos Fpn con n >1 [4]. Esto ha hecho que en la práctica se utilicen casi exclusivamente las curvas sobreZp y en ciertos casos sobreF2m, este último debido a razones de eficiencia, ya que los polinomios sobre Z2[x]se pueden representar como arrays binarios (los únicos coeficientes posibles en Z2 son 0 y 1). La idea con la que queremos dejar al lector es que escoger las curvas es una materia muy delicada, y lo correcto es utilizar las especificadas en los estándares o de análisis de expertos como los expuestos en [8]. Si el usuario desea cifrar o firmar mensajes, se recomienda utilizar herramientas diseñadas para ello que hayan sido probadas extensivamente. Como ejemplo, muchos de los algoritmos presentados en este trabajo se pueden encontrar implementadas en software como GnuPG3

Para el uso de criptografía asimétrica en aplicaciones, existen bindings a librerías criptográficas estan-

darizadas como OpenSSL4 para C o Bouncy Castle5 para Java.

Para más información sobre las consideraciones prácticas de los algoritmos se recomienda consultar [8]. 3 Más información enhttps://gnupg.org 4https://www.openssl.org 5 https://www.bouncycastle.org

Conclusiones

En este trabajo hemos tratado los fundamentos matemáticos detrás de los sistemas criptográficos actuales. Asimismo, hemos implementado una librería criptográfica que permite razonar sobre los algoritmos de manera sencilla, aportándonos las herramientas necesarias para poder implementar otros algoritmos de curvas elípticas. Ello nos permite comprender su funcionamiento, pudiendo examinar el comportamiento de todos los algoritmos paso por paso. De este modo, la librería nos ayuda a comprender los algoritmos criptográficos utilizados en la actualidad, ya que las implementaciones reales tienen una complejidad mucho más alta debido a la necesidad de tener en cuenta los posibles ataques mencionados en [16, Chapter 6] y [4].

Además, la librería nos permite crear curvas elípticas sobre los cuerpos finitos, estudiar su comporta- miento e incluso realizar gráficos de las curvas elípticas (si se definen sobre los cuerpos Zp). El código

empleado para crear los gráficos como los vistos en las figuras 2.2 o 2.6 se ha implementado con el código de nuestra librería, lo que es un ejemplo de las capacidades de la misma.

Finalmente, el proyecto implementa unas primitivas matemáticas que permiten ampliar el proyecto en diferentes ámbitos, con diferentes algoritmos criptográficos u otras aplicaciones basadas en grupos o cuerpos finitos.

Trabajos futuros

A lo largo de este trabajo hemos desarrollado la base matemática necesaria para la implementación de curvas elípticas de manera didáctica. Sin embargo, se han dejado varias líneas de trabajo futuro para una posible expansión de este trabajo. Las presentamos a continuación:

Modificar la implementación para poder definir curvas elípticas en forma de Mont-

gomery o de Edwards:Actualmente el proyecto solo implementa las curvas elípticas con forma

de Weierstrass. Sin embargo, en las implementaciones reales de criptografía de curvas elípticas se utilizan también las formas mencionadas anteriormente por su resistencia a ataques de timing,

entre otras propiedades que se pueden consultar en [8]. Sería de interés abstraer la estructura de curvas elípticas para admitir diferentes formas en la ecuación, y utilizar las ecuaciones de ley de grupo correspondientes a cada una.

Ampliar el banco de pruebas de los algoritmos criptográficos: Actualmente las únicas

pruebas realizadas sobre la implementación de los algoritmos son de la corrección de los mismos. Sería de interés ampliar estas pruebas de manera que haya una comprobación más exhaustiva de la corrección de los algoritmos.

Añadir otros algoritmos criptográficos:En el trabajo actual se encuentran implementados

los algoritmos de Massey-Omura, ElGamal de cifrado y de firma y ECDSA. Sin embargo, sería de interés también el implementar algún criptosistema híbrido como ECIES[16, Chapter 6.7] para demostrar el cifrado de mensajes de texto.

Implementar los algoritmos de ataque al logaritmo discreto: Podría ser de interés el

implementar algoritmos como los vistos en el capítulo 3 en los que se muestre paso por paso los cálculos que va realizando el algoritmo sobre los cuerpos. Esto ampliaría la función didáctica de la librería a la explicación de los posibles ataques al logaritmo discreto.

Añadir una función que nos proporcione las propiedades de una curva elíptica: En

línea con el carácter didáctico del trabajo, seria de interés implementar una función resumen en la que, dada una curva elíptica, nos devuelva datos de interés sobre la misma. De este modo, algunos de los análisis que podría realizar serían devolver sus coeficientes, la forma en la que se ha expresado la curva, si la curva es supersingular, su número de puntos...

Añadir una representación más eficiente para los cuerpos F2n: Los cuerpos F2n se re-

presentan por los restos de dividir por un polinomio irreducible en Z2[x]. Estos coeficientes son

únicamente unos y ceros, por lo que la aritmética del cuerpo se puede implementar de forma muy eficiente para este tipo de cuerpos utilizando las operaciones primitivas de los circuitos electróni- cos como (la suma es simplemente una operación XOR de los coeficientes). Sería de interés que, si el usuario solicita el cuerpo F2n, el tipo de datos y operaciones que se utilicen sean estas y no las más genéricas válidas para cuerpos con un cuerpo primo distinto deZ2.

[1] Barker, E., Barker, W., Burr, W., Polk, W., and Smid, M. Recommendation for key management part 1: General (revision 3). NIST special publication 800, 57 (2012), 1–147.

[2] Bezanson, J., Edelman, A., Karpinski, S., and Shah, V. B. Julia: A fresh approach to numerical computing. SIAM review 59, 1 (2017), 65–98.

[3] Dorronsoro, J., and Hernández, E. Números, grupos y anillos. No. 512.7 D6. 1996.

[4] Galbraith, S. D., and Gaudry, P. Recent progress on the elliptic curve discrete logarithm problem. Designs, Codes and Cryptography 78, 1 (2016), 51–72.

[5] Gallagher, P. Digital signature standard (dss). Federal Information Processing Standards Publications, volume FIPS (2013), 186–3.

[6] Gao, S., and Panario, D. Tests and constructions of irreducible polynomials over finite fields. InFoundations of computational mathematics. Springer, 1997, pp. 346–361.

[7] Hutzler, N."first ring isomorphism theorem."From MathWorld–A Wolfram Web Resource. Last visited on 22/05/2019.

[8] J. Bernstein, D., and Lange, T. Safecurves: choosing safe curves for elliptic-curve crypto- graphy. https://safecurves.cr.yp.toÚltimo Acceso: 2019-05-31.

[9] Judson, T. Abstract algebra: Theory and applications, 2018.

[10] Lidl, R., and Niederreiter, H. Finite fields (encyclopedia of mathematics and its applica- tions), 1983.

[11] Lochter, M., and Merkle, J. Elliptic curve cryptography (ecc) brainpool standard curves and curve generation. Tech. rep., 2010.

[12] Lübeck, F. Conway polynomials, 2019. http://www.math.rwth-aachen.de/~Frank.Luebeck/

data/ConwayPol/index.htmlÚltimo Acceso: 2019-06-24.

[13] Navarro, G. Un Curso de Álgebra. Universidad de Valencia, 2002.

[14] Silverman, J. H. The arithmetic of elliptic curves, vol. 106. Springer Science & Business Media, 2009.

[15] Spivak, M. Calculus, publish or perish. Inc., Houston (1980).

[16] Washington, L. C. Elliptic curves: number theory and cryptography. Chapman and Hall/CRC, 2003.