Escolar Documentos
Profissional Documentos
Cultura Documentos
Escuela de Matemáticas
Universidad Nacional de Colombia, Sede Medellín
Semestre 2019-02
Parte 1 - Introducción 1
Parte 0 - Programa
Parte 1 - Introducción 2
Programa - General
Nombre: Criptografía y Seguridad (3008082)
Posgrado: Introducción a la Criptografía (3009982)
Trabajo diferenciado para posgrado
Créditos: 4
Horario: Ma y Ju 12:00-14:00 (43-110)
Profesor John Bayron Baena Giraldo
Oficina: 43-205
Horas de asesoría: Mi 12:00-14:00, Ju 14:00-16:00
Correo electrónico: jbbaena@unal.edu.co - favor poner "Cripto 2019" en
el asunto
Web:
https://sites.google.com/a/unal.edu.co/criptografia-y-seguridad-2019-
ii/home
Parte 1 - Introducción 3
Programa - Descripción
En este curso estudiaremos principios de criptografía y
seguridad informática.
Bases matemáticas.
Formalización de seguridad.
Construcciones: sistemas de encripción, firmas digitales y
funciones criptográficas hash.
Seguridad informática: control de acceso, protocolos de
comunicación y seguridad del software.
Parte 1 - Introducción 4
Programa - Prerrequisitos
Prerrequisito: Álgebra Lineal.
Se espera que el estudiante tenga experiencia en
programación y formación matemática.
Todos los cómputos en este curso se deberán hacer
en Python 3.
Parte 1 - Introducción 5
Programa - Bibliografía
Stamp, M. Information Security, principles and practices.
John Wiley & sons, second edition, 2011.
Otros
Katz, J. and Lindell, Y. Introduction to modern cryptography
Boneh, D. and Shoup, V. A Graduate Course in Applied Cryptography,
2017.
Silverman, J. An Introduction to Mathematical Cryptography
Buchmann, J. Introduction to Cryptography.
Menezes, A. J. and Van Oorschot P. C. and Vanstone S. A.. Handbook
of Applied Cryptography. http://cacr.uwaterloo.ca/hac/Scheneir B.
Parte 1 - Introducción 6
Programa
Parcial 1 Total 25
Funciones criptográficas hash y otros
temas de criptografía 3
Parte 1 - Introducción 7
Programa - Evaluación
2 exámenes parciales 50%
Tarea 20%
Proyecto 30%
Los estudiantes de posgrado deben preparar un tema adicional de la
siguiente lista
Seguridad Computacional (ref: Katz, J. and Lindell, Y.)
Computación cuántica
Round 2 candidates, NIST Post-Quantum Cryptography
Differential cryptanalysis
Parte 1 - Introducción 8
Programa - Tareas
El lenguaje de programación para este curso será Python 3. Las tareas
deben presentarse en un notebook de Jupyter. Se recomienda hacer su
instalación, al igual que la de la distribución de Python a usar, a través
de Anaconda.
Para cada problema debe incluir solución, procedimiento completo,
explicación y cuando se requiera realizar algún cómputo, éste se debe
hacer en el mismo notebook, documentando de la mejor forma el código
fuente. Usted debe citar cualquier fuente externa que haya usado para
resolver el problema.
La tarea debe entregarse a la hora en que empieza la clase en la fecha
indicada. A partir de ese momento hay una penalización. La tarea se
califica sobre y = 1 + 4(1.012^-t), donde t es el número de horas tarde.
La tarea puede hacerse en grupos de máximo tres estudiantes.
Un subconjunto de los problemas asignados serán calificados en detalle y
para el resto tan sólo se revisará el cumplimiento.
Comprima su tarea en un archivo con nombre "tarea apellidos.zip". Envíe
por correo su tarea a jbbaena@unal.edu.co. El asunto del correo debe ser
de la forma "cripto 2019 tarea apellidos"
Quien desee practicar inglés, puede entregar las tareas en dicho idioma.
Parte 1 - Introducción 9
Programa - Proyecto
Consiste en desarrollar un proyecto en el tema de su elección.
Los proyectos se pueden hacer en equipos de máximo tres estudiantes. Los
equipos deben estar definidos a más tardar el ¿?.
Cada equipo debe entregar una propuesta a más tardar el ¿?. La propuesta, de
máximo una página, debe exponer el alcance del proyecto, explicar los medios
para lograrlo y presentar bibliografía relevante.
Oportunamente se publicará una lista temas propuestos. Los equipos pueden
trabajar en temas por fuera de esta lista con el consentimiento del profesor.
El proyecto busca profundizar en algún tema relevante al curso. Se espera que
los equipos consulten el tema. Adicionalmente cada equipo debe hacer algún
desarrollo en ese tema. Esto puede ser una implementación, el desarrollo de
algún software, una demostración matemática, ejemplos ilustrativos de un
resultado, un experimento, un caso de estudio, extracción de datos que den
muestra de un fenómeno, entre otros.
La entrega final es el ¿?
Hacia el final del semestre habrá una última sesión en la que nos reunimos para
hacer presentaciones de cada grupo.
Parte 1 - Introducción 10
Parte 1 - Introducción
Parte 1 - Introducción 11
Criptografía
Criptología El arte y ciencia de hacer y romper “códigos secretos”
Criptografía hacer “códigos secretos”
Criptoanálisis romper “códigos secretos”
Cripto todo esto (y más)
Parte 1 - Introducción 12
Cómo hablar cripto
Un esquema de cifrado, cifrador o criptosistema se usa
para cifrar o encriptar el texto plano
El resultado de encripción es texto cifrado
Desciframos (o desencriptamos) texto cifrado para
recuperar el texto plano
Una llave o clave se usa para configurar un criptosistema
Un criptosistema de llave simétrica usa la misma llave para
cifrar y descifrar
Un criptosistema de llave pública usa una llave pública
para cifrar y una llave privada para descifrar
Parte 1 - Introducción 13
Cripto Simétrica como Caja Negra
llave llave
Parte 1 - Introducción 14
Hacia la Criptografía Moderna
La criptografía tiene una rica historia, cuyo primer registro conocido
es de hace 4,000 años (tumba de Khnumhotep II).
La criptografía fue decisiva en la historia. Espartanos (escítala), Julio
César.
Hasta 1960’ la criptografía era el arte de asegurar comunicaciones de
fuerzas militares y gobiernos.
Parte 1 - Introducción 15
Hacia la Criptografía Moderna
No sólo comunicación secreta:
Autenticación de mensajes
Firmas digitales
Protocolos para intercambio de llaves
Protocolos de autenticación
Subastas electrónicas
Voto Electrónico
Dinero electrónico
Blockchain
Parte 1 - Introducción 16
Hacia la Criptografía Moderna
No sólo un arte:
Ciencia multidisciplinaria (matemáticas, computación, incluso psicología)
No sólo para uso de fuerzas militares y gobiernos:
Empresas
ciudadanos
Parte 1 - Introducción 17
Hacia la Criptografía Moderna
La criptografía ha pasado de ser el arte de asegurar comunicaciones
de fuerzas militares a una ciencia que ayuda a asegurar sistemas para
gente del común.
Parte 1 - Introducción 18
El Principio de Kerckhoffs
Suposición básica: Principio de Kerckhoffs
El sistema es completamente conocido para el atacante (todos
los algoritmos)
Únicamente la llave es secreta
¿Por qué hacemos esta suposición?
La experiencia ha demostrada que algoritmos secretos son
débiles cuando son expuestos
Mayor escrutinio
Es más fácil mantener secreta una llave pequeña a un
complejo algoritmo.
Es más fácil cambiar de llave que de algoritmo
Múltiples jugadores requerirían múltiples algoritmos
Parte 1 - Introducción 19
Principios Básicos de la Criptografía
Moderna
Definición de seguridad rigurosa y precisa
Establecer suposiciones de manera precisa
Las construcciones criptográficas deben estar acompañadas por una
prueba de seguridad rigurosa
Parte 1 - Introducción 20
Ejemplo: definamos encripción segura
(simétrica)
Un esquema de encripción es seguro si ningún* adversario:
1. Puede encontrar la llave secreta dado un texto cifrado
2. Puede encontrar el texto plano que corresponde al texto cifrado
3. Puede determinar ningún carácter del texto plano que
corresponde al texto cifrado
4. Puede derivar información relevante acerca del texto plano a
partir del texto cifrado
5. Puede calcular ninguna función del texto plano a partir del texto
cifrado
Parte 1 - Introducción 21
Definición de Seguridad
Definimos lo que es quebrar o romper un criptosistema
¿Cuál es el poder del adversario?
Acciones que puede llevar a cabo
Poder computacional
“Un criptosistema para una tarea dada es seguro si ningún
adversario con un poder dado puede llevar a cabo un
rompimiento especificado”
Nunca asumir nada acerca de la estrategia del adversario
Parte 1 - Introducción 22
Ejemplo
Theorem: There exists a BTE scheme that is secure in the
sense of SN-CPA under the BDDH assumption.
Fuente: R Canetti, S Halevi, J Katz. A Forward-Secure Public-Key
Encryption Scheme
BTE: binary tree encryption
SN-CPA: selective-node chosen-plaintext attacks
BDDH: decisional bilinear Diffie-Hellman aasumption
Parte 1 - Introducción 23
Seguridad Informática
Parte 1 - Introducción 24
Seguridad Informática
Principios y Prácticas
“Muchos aspectos de la seguridad informática no
están aún maduros para hacerles un tratamiento
teórico significativo.” – M. Stamp
Parte 1 - Introducción 25
Seguridad Informática
Funciones de
encripción Confidencialidad
Funciones hash Integridad
Protocolos etc
etc
Parte 1 - Introducción 26
Python 3
Módulo en Python -> PyCryptodome
Website: https://pycryptodome.readthedocs.io/en/latest/index.html
Tutorial: https://nitratine.net/blog/post/python-encryption-and-decryption-
with-pycryptodome/
Parte 1 - Introducción 27