En Sage, una curva elíptica siempre está especificada por los coeficientes de una ecuación de Weierstrass expresada en su forma larga: \(E:y^2=x^2+Ax^2+Bx+C\text{;}\) escrita de la forma:
\begin{equation*}
y^2 + a_1 xy + a_3 y = x^3 + a_2 x^2 + a_4 x + a_6\text{.}
\end{equation*}
Hay varias formas de construir una curva elíptica: usando coeficientes de Weierstrass, o por las etiquetas de bases de datos de Curvas Eípticas (como la de John Cremona) y otras.
NotaA.5.1.Gráfica de una Curva Elíptica.
Curva Elíptica en \(\mathbb{R}^2\text{,}\) con dos puntos resaltados: uno de valores enteros y otro de valores racionales.
NotaA.5.2.Curva Elíptica en cuerpo finito.
Curva elíptica \(y^2=x^3-3x+1 \pmod{8761}\text{,}\) graficada sobre cuerpo finito \({\mathbb{F}^{*}}_{8761}\text{.}\)
NotaA.5.3.Períodos Reticulares.
La clase EllipticCurve, contiene la función period_lattice(), que devuelve una lista de dos elementos, correspondientes a los dos períodos reticulares. Estos valores son calculados internamente por Sage utilizando métodos específicos de la teoría de funciones elípticas y la aritmética compleja asociada a las curvas elípticas. La función basis() se usa para obtener la base asociada a los períodos reticulares.
NotaA.5.4.Encriptación RSA.
Supongamos que queremos enviar un mensaje RSA —letra por letra— : “CIUDAD DE CUMANA”. Y nuestras claves privada y pública son: \(e=50253\) y \(d
= 27917\text{;}\) provenientes de los números primos: \(p = 251\) y \(q = 260\text{,}\) donde \(n = p \times q = 67519\text{;}\) con \(\varphi(67519)=67000\)
NotaA.5.5.Gráfica de la Complejidad Computacional.
Complejidad exponencial y subexponencial asociada con la factorización entera en RSA>, en contraste con la eficiencia temporal polinómica de las operaciones de multiplicación escalar en curvas elípticas.