La criptografía es un instrumento indispensable para proteger la información en los sistemas informáticos. Este curso explica el funcionamiento interno de los primitivos criptógrafos y cómo utilizarlos correctamente. Los estudiantes aprenderán a razonar sobre la seguridad de las construcciones criptográficas y cómo aplicar estos conocimientos a las aplicaciones del mundo real. El curso comienza con una discusión detallada de cómo dos partes que tienen una clave secreta compartida pueden comunicarse con seguridad cuando un poderoso adversario escucha a escondidas y manipula el tráfico. Examinaremos muchos protocolos desplegados y analizaremos los errores en los sistemas existentes. La segunda mitad del curso discute las técnicas de clave pública que permiten a dos o más partes generar una clave secreta compartida. Cubriremos la teoría de números relevante y discutiremos la encriptación de clave pública, firmas digitales y protocolos de autenticación. Hacia el final del curso cubriremos temas más avanzados como el conocimiento cero, los protocolos distribuidos como las subastas seguras, y una serie de mecanismos de privacidad. A lo largo del curso los estudiantes estarán expuestos a muchos problemas abiertos y emocionantes en el campo.
El curso incluirá trabajos escritos y laboratorios de programación. El curso es autónomo, sin embargo, será útil para tener una comprensión básica de la teoría de la probabilidad discreta.
- ¿Recibiré una declaración de logros después de completar esta clase? Sí. Los estudiantes que completen con éxito la clase recibirán una declaración de logros firmada por el instructor.
- ¿Cuál es el formato de la clase? La clase consistirá en videos de conferencias, que se dividen en pequeños trozos, normalmente entre ocho y doce minutos cada uno. Algunos de ellos pueden contener preguntas de prueba integradas. También habrá pruebas independientes que no son parte de las video conferencias, y tareas de programación. Habrá aproximadamente dos horas de contenido de vídeo por semana.
- ¿Qué conocimientos de programación se necesitan para el curso? El curso incluye tareas de programación y algunos conocimientos de programación serán útiles. Sin embargo, repartiremos mucho código de inicio que ayudará a los estudiantes a completar las tareas. También señalaremos los recursos en línea que pueden ayudar a los estudiantes a encontrar los conocimientos necesarios.
- ¿Qué conocimientos matemáticos se necesitan para el curso? El curso es mayormente autocontenido, sin embargo algún conocimiento de probabilidad discreta será útil. El artículo de los wikibooks sobre probabilidad discreta debería dar suficientes antecedentes.