Primeros pasos

Instalación

Para instalar la última versión de ccepy, simplemente ejecute:

pip install ccepy

pip se encuentra ya instalado por defecto en las últimas distribuciones de python. Si no es su caso, aquí se explica como instalar pip.

Uso

Una vez instalado ccepy, para utilizarlo basta importarlo y usar las distintas funciones o clases presentes.

Por ejemplo, dada la curva elíptica definida por la ecuación \(y^2 = x^3 + 2 x + 3\) sobre el cuerpo finito de 97 elementos \(\mathbb{F}_{97}\), el siguiente trozo de código calcula la suma \((0, 10) + (3, 6)\):

>>> from ccepy.curvas_elipticas import curva_eliptica_sobre_Fq
>>> E = curva_eliptica_sobre_Fq(a=2, b=3, p=97)
>>> E(0, 10) + E(3, 6)
(85,71)

O por otro lado, supongamos que quiere simular el protocolo Diffie-Hellman de intercambio de llaves utilizando como parámetros de dominio la curva elíptica \(y^2 = x^3 + 324 x + 1287\) definida sobre \(\mathbb{F}_{3851}\) y el subgrupo generado por el punto \(P = (0, 10)\) de orden \(8\).

>>> from ccepy.curvas_elipticas import curva_eliptica_sobre_Fq
>>> from ccepy.esquemas_criptograficos import ECDH
>>> # definimos los parámetros de dominio
>>> E = curva_eliptica_sobre_Fq(a=324, b=1287, p=3851)
>>> P = E(920, 303)
>>> orden_P = 8
>>> # definimos los participantes
>>> alicia = ECDH(E, P, orden_P)
>>> bob = ECDH(E, P, orden_P)
>>> # la pareja de llaves se genera automáticamente y aleatoriamente
>>> alicia.llave_publica
(2373,2607)
>>> alicia.llave_privada
2
>>> alicia.calcula_secreto_compartido(bob.llave_publica)
1136
>>> bob.calcula_secreto_compartido(alicia.llave_publica)
1136

Puede encontrar la funcionalidad completa de esta programa estructurada en los siguientes módulos:

aritmetica_elemental Aritmética elemental con enteros y polinomios.
cuerpos_finitos Cuerpos finitos.
curvas_elipticas Aritmética con curvas elípticas.
esquemas_criptograficos Esquemas criptográficos con curvas elípticas.
listado_curvas_elipticas Listado de curvas elípticas.

Le recomendamos que lea la documentación de cada módulo en este orden para aprender totalmente a usar ccepy.