Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniería
Proyecto 1
Estudiantes: Cruz Villegas Karime
Asignatura: Criptografìa
Clave: 2930
Grupo: 02
Semestre: 2022-2
Introducción
La seguridad informática es la protección de los sistemas informáticos y los datos
que son almacenados en nuestro servidor, y, por supuesto, también los datos de acceso.
Por otro lado, también utilizamos numpy y matplotlib para poder realizar las
gráficas adecuadamente.
● ChaCha20:
Figura 5. Es necesario extraer los datos de la lista cifrada, como el nonce, el texto
cifrado, la llave guardada anteriormente.
● AES-EBC
Figura 9. Para cifrar es necesario hacer un relleno para alinear el texto en claro, así
como el tamaño del bloque ingresado.
● AES-GCM
Figura 14. Para este algoritmo necesitamos ingresar un encabezado o header, indicamos
que vamos a utilizar AES con su respectiva llave y el “modo” GCM.
Figura 15. Ciframos utilizando cifrado digestivo el texto plano, junto con tag.
● RSA-OAEP:
● RSA-PSS:
● Algoritmos de SHA
Figura 29. Va haciendo una actualización del hash, con los datos que se le pasaron, en
este caso con el vector inicial
NOTA: Se hace la misma implementación para cada una de las versiones de SHA, solo
cambia el nombre en la librería.
Figura 34.- Verificación de la firma con la llave pública dada la firma, el mensaje y un
algoritmo de hash.
Sin embargo, no podíamos utilizar cualquier mensaje para encriptar, o firmar o hacer
hash, teníamos la restricción para RSA que el mensaje no puede ser más largo que su
llave, y como son de 2048 bits o 256 bytes, entonces los vectores creados los realizamos
inferiores a esta cifra. La propia librería toma como límite 215 bytes para RSA por lo
que creamos una serie de mensajes de diferentes longitudes hasta 212.
Está claro que en el día a día los algoritmos trabajan con textos más largos, sin
embargo, eso significaba realizar el algoritmo varias veces para un mismo mensaje, que
a grandes rasgos sería realizar el algoritmo para varios mensajes diferentes que tienen
sentido entre sí, por lo que nos limitamos a eso y creamos una cantidad considerable de
vectores. Los mostrados se utilizaron para todos los algoritmos, son 13 y van desde los 5
bytes hasta los 212 bytes.
Para la ejecución usamos 130 vectores, donde se repiten cada 13 veces ya que
son los que tenemos ingresados, hicimos esto para no tener que ingresar 130 vectores
diferente o crear vectores aleatorios que no tendrían ningún significado para nosotros y
que en términos reales nunca o casi nunca sucederían y tratamos de tener algo más
factible en nuestros vectores. Además, el uso de 130 vectores no es solamente para
realizar 10 cada vector, sino que, dependiendo de la bibliografía estadística que se
consulte, 127 muestras se considera suficiente para considerar un muestreo adecuado y
se redondeo a 130, aunque en ocasiones obtenemos varios resultados de ejecución de 0
segundos , eliminamos los valores de ejecución de 0 de la lista con la siguiente línea de
código de acuerdo a su respectivo algoritmo:
Figura 41 , tiempos 0
Con ayuda de las gráficas del tiempo de ejecución y de los promedios podemos concluir
lo siguiente:
Evidencia
Repositorio:
https://github.com/GombVF/Cripto
Conclusiones
Cruz Villegas Karime
El proyecto me sirvió para tener un contacto más cercano con estos algoritmos, aunque
fueron revisados en clase no es lo mismo ver la teoría de estos, la cual es muy útil para
comprender su funcionamiento, a utilizarlos, ya que podemos ver las necesidades reales de
estos, ya sea generar una llave aleatoria con un tamaño específico, devolver el texto cifrado de
una forma específica para que la persona a la que le fue enviado pueda descifrarlo de la forma
más fácil, conocer los tiempos de ejecución para conocer cuál es el algoritmo más eficiente,
dentro de esta eficiencia equilibrar también la seguridad que te puede proporcionar, ya que por
tardar un poco más pero siendo más robusto y difícil de romper pueda valer más la pena a que
te dé el resultado más rápido.
Referencias
● Eijs, H. (5 de 2 de 2022). API documentation. Recuperado el 23 de 4 de 2022, de
pycryptodome: https://www.pycryptodome.org/en/latest/src/api.html
● Individual Contributors. (2021). Welcome to pyca/cryptography.io. Recuperado El 23 de
4 de 2022, de cryptography:
https://cryptography.io/en/latest/hazmat/primitives/asymmetric/ec/?
highlight=ecdsa#key-loading