3c TIC: Investigación y pensamiento crítico. ISSN: 2254-3376
14 15
el consiguiente aumento en rendimiento. Además de la ya consabida capacidad de reducción de las
secuencias de 1s, para el caso de construir una operación contra un escalar, partiendo de esa primera
operación algebraica. Este tipo de cálculos son muy utilizados en distintos campos y especialmente en el
mundo de la Criptografía (Die-Hellman, pp. 644–654).
Dicho esto, se entenderá que la operación de multiplicación escalar es planteada como una sucesión
de sumas y/o restas entre puntos de la curva elíptica, entendidas éstas últimas, las restas, al estar en un
contexto modular, como sumas por el inverso aditivo. Y además, en todas ellas la modularidad nos será
transparente, por apoyarnos en las implementaciones de primitivas modulares referenciadas (Ayuso,
pp. 222-229, 255-221, 28-41, 1-12): multiplicación, inverso, adición, sustracción… Todas ellas a su vez
inspiradas en el algoritmo de Booth.
2. MÉTODOS
En este apartado, lo primero que haremos será dar la implementación de la operación de grupo
dentro de una curva elíptica: suma y resta de puntos (Cassels, 1966, pp. 193–29). Más concretamente,
como decíamos, se dará una versión usando las implementaciones que se describen en la referencia
bibliográca titulada: ‘Booth algorithm in modular exponentiation operations’ (Ayuso, 2017, pp. 1-12), tanto
de las suma y resta modular entre enteros (Ayuso, 2015, pp. 222-229), como las de multiplicación
(Ayuso, 2015, pp. 255-221) e inverso modular (Ayuso, 2016, pp. 28-41). De hecho, se hará referencia
a ellas exactamente con el mismo nombre con el que son usadas en dichas publicaciones.
Aun así, previamente se tendrá que exponer algo de código para alcanzar el algoritmo de la
operación de grupo, Figura 1, de una forma limpia y entendible, de cara a construir la operación de
multiplicación escalar, que es la que realmente interesa y se está tratando en el presente documento.
La primera operación descrita para facilitar el algoritmo nal se trata de una que calcularía el
resultado de multiplicar un entero por él mismo, y luego triplica el resultado; es decir, t por t por 3,
módulo m, sería: