Você está na página 1de 27

Criptografía y Seguridad

John Bayron Baena Giraldo*

Escuela de Matemáticas
Universidad Nacional de Colombia, Sede Medellín
Semestre 2019-02

* Diapositivas construidas y gentilmente cedidas por el


profesor Daniel Cabarcas

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

Tema Clases Tema Clases


Introducción 1 Autenticación 2
Criptografía clásica 2 Autorización 1
Confidencialidad Perfecta 1 Protocolos de autenticación 3
Criptografía de clave simétrica 4 Blockchain 2
Criptografía de clave pública 4 Parcial 2

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

Alice, a Trudy, t Bob, b

llave llave

Texto Cifrar descifrar Texto


plano plano
Texto cifrado

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

 Ej. Bob cliente de Alice’s


Online Bank (AOB)
 Preocupaciones:  Más allá
 Privacidad o Confidencialidad o Software
 Integridad de datos  Defectos
 Autenticación  Malware
 No repudiación o Factor humano
 Disponibilidad
 Autorización

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

 Este curso describe varias herramientas criptográficas usadas para


proveer seguridad informática

 Funciones de
encripción  Confidencialidad
 Funciones hash  Integridad

 Firmas digitales  Autenticación

 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/

 Dejar de usar PyCrypto. Usar pycryptodome en su lugar:


 https://blog.sqreen.com/stop-using-pycrypto-use-pycryptodome/
 https://github.com/oduwsdl/ipwb/issues/303

 Cryptodome posee una amplia compatibilidad con PyCrypto.

 A Programmer’s Introduction to Mathematics https://pimbook.org/

Parte 1 - Introducción 27

Você também pode gostar