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.