Curso en línea de criptografía de Dan Boneh (2017)
(crypto.stanford.edu)- Curso gratuito en línea de criptografía impartido por Dan Boneh de Stanford University, con la lista completa de clases publicada y las tareas, proyectos y examen final oficiales disponibles en Coursera
- Se utiliza junto con el libro gratuito A Graduate Course in Applied Cryptography, que complementa las clases con contenido más profundo, pruebas de seguridad y ejercicios
- El plan de estudios se extiende por 7 semanas, desde cifrados de flujo hasta firmas digitales, y cada semana se vincula con capítulos del libro, videos de las clases y diapositivas
- Cubre ampliamente componentes prácticos de criptografía como one-time pad, PRG, DES, AES, MAC, HMAC, TLS 1.2, Diffie-Hellman, RSA, ElGamal y firmas basadas en hash
- Las clases individuales pueden verse en video por Coursera, y si se necesita evaluación y certificación, hay que inscribirse en el curso de Coursera
Modalidad del curso y material
- Es un curso en línea de criptografía impartido por Dan Boneh de Stanford University
- Todas las clases del curso gratuito están organizadas en una sola página
- Para tomarlo oficialmente, incluyendo tareas, proyectos y examen final, hay que usar la página del curso en Coursera
- El libro gratuito es A Graduate Course in Applied Cryptography de D. Boneh y V. Shoup
- Trata temas más profundos que las clases e incluye pruebas de seguridad y muchos ejercicios
Semana 1: visión general del curso y cifrados de flujo
- La semana 1 corresponde a los capítulos 2–3 del libro y cubre la visión general del curso, fundamentos de probabilidad discreta y cifrados de flujo
- Las diapositivas se ofrecen con los temas Introduction y Stream ciphers
- Clases principales:
- Course overview: 10 min
- What is cryptography: 15 min
- History of cryptography: 18 min
- Discrete probability (crash course): 18 min
- Information theoretic security and the one-time pad: 18 min
- Stream ciphers and pseudorandom generators: 19 min
- Attacks on stream ciphers and the one-time pad: 23 min
- Real-world stream ciphers: 19 min
- PRG security definition: 24 min
- Semantic security: 15 min
Semana 2: cifrados de bloque
- La semana 2 corresponde a los capítulos 4–5 del libro y cubre cifrados de bloque y cómo usarlos
- Las diapositivas se ofrecen con los temas Block ciphers y Using block ciphers
- Clases principales:
- What are block ciphers: 16 min
- The Data Encryption Standard (DES): 21 min
- Exhaustive search attacks: 19 min
- More attacks on block ciphers: 16 min
- The AES block cipher: 13 min
- Block ciphers from PRGs: 11 min
- Review: PRPs and PRFs: 11 min
- Modes of operation: one-time key: 7 min
- Security for many-time key (CPA security): 22 min
- Modes of operation: many-time key (CBC): 16 min
- Modes of operation: many-time key (CTR): 9 min
Semana 3: integridad de mensajes y hash resistente a colisiones
- La semana 3 corresponde a los capítulos 6–8 del libro y cubre códigos de autenticación de mensajes (MAC), resistencia a colisiones y HMAC
- Las diapositivas se ofrecen con los temas Message integrity y Collision resistant hashing
- Clases principales:
- Message authentication codes: 15 min
- MACs based on PRFs: 9 min
- CBC-MAC and NMAC: 19 min
- MAC padding: 8 min
- PMAC and Carter-Wegman MAC: 15 min
- Generic birthday attack: 14 min
- The Merkle-Damgard paradigm: 11 min
- Constructing compression functions: 8 min
- HMAC: 7 min
- Timing attacks on MAC verification: 8 min
Semana 4: cifrado autenticado y trampas de implementación
- La semana 4 corresponde al capítulo 9 del libro y cubre cifrado autenticado y trampas al usar sistemas criptográficos
- Las diapositivas se ofrecen con los temas Authenticated encryption y Odds and ends
- Clases principales:
- Active attacks on CPA-secure encryption: 12 min
- Definitions: 5 min
- Chosen ciphertext attacks: 12 min
- Constructions from ciphers and MACs: 20 min
- Case study: TLS 1.2: 17 min
- CBC padding attacks: 14 min
- Attacking non-atomic decryption: 9 min
- Key derivation: 13 min
- Deterministic encryption: 14 min
- Deterministic encryption: SIV and wide PRP: 20 min
- Tweakable encryption: 14 min
- Format preserving encryption: 12 min
Semana 5: intercambio de claves y fundamentos de teoría de números
- La semana 5 corresponde al capítulo 10 del libro y cubre el problema del intercambio de claves y fundamentos de teoría de números
- Las diapositivas se ofrecen con los temas Basic key exchange y Crash course in number theory
- Clases principales:
- Trusted 3rd parties: 11 min
- Merkle puzzles: 11 min
- The Diffie-Hellman protocol: 19 min
- Public-key encryption: 10 min
- Notation: 14 min
- Fermat and Euler: 18 min
- Modular e'th roots: 17 min
- Arithmetic algorithms: 12 min
- Intractable problems: 18 min
Semana 6: criptografía de clave pública
- La semana 6 corresponde a los capítulos 11–12 del libro y cubre permutaciones trapdoor, RSA y criptografía de clave pública basada en Diffie-Hellman
- Las diapositivas se ofrecen con los temas Trapdoor permutation y Diffie-Hellman
- Clases principales:
- Definitions and security: 15 min
- Constructions: 10 min
- The RSA trapdoor permutation: 17 min
- PKCS1: 21 min
- Is RSA a one-way function?: 16 min
- RSA in practice: 13 min
- The ElGamal public-key system: 19 min
- ElGamal security: 13 min
- ElGamal variants with better security: 10 min
- A unifying theme: 11 min
- Farewell for now: 5 min
Semana 7: firmas digitales
- La semana 7 corresponde a los capítulos 13–14 del libro y cubre firmas digitales y firmas basadas en hash
- Las diapositivas se ofrecen con los temas Digital signatures y Hash-based signatures
1 comentarios
Opiniones en Hacker News
Cuando era estudiante en Stanford, CS255 Intro to Cryptography era una de mis materias favoritas, y Dan era un profesor realmente excelente.
Si quieren más material de clases de seguridad de Stanford, también recomiendo CS253 Web Security (https://web.stanford.edu/class/cs253/). Para ser transparente, esa materia la creé yo; CS356 Topics in Computer and Network Security (https://cs356.stanford.edu/) también está bien.
Los videos de CS253 están aquí: https://www.youtube.com/playlist?list=PL1y1iaEtjSYiiSGVlL1cH...
Tiene muchísimo talento y explica muy bien los conceptos.
Hace unos años tomé el curso de criptografía en línea de este profesor y fue muy bueno.
Incluso teniendo formación en matemáticas, después de tomar esa clase me di cuenta de que no quería convertirme en criptógrafo profesional, y eso por sí solo fue una ganancia bastante buena.
Bromas aparte, disfruté mucho la forma de analizar los criptosistemas como un juego contra el diablo, intentando distinguir bytes cifrados de una secuencia aleatoria de bits.
La conclusión es: no inventes tu propia criptografía, porque hacerlo bien es difícil. Es bastante cínico, pero me quitó parte del entusiasmo por profundizar más.
Es un curso excelente. Dicho eso, la estimación de 23 horas para completarlo puede variar mucho según tu dominio previo del tema.
Conviene prepararse y regular el ritmo teniendo eso en cuenta.
Se ve bien, pero me gustaría que hubiera material que, en vez de empezar por las matemáticas, tratara desde la perspectiva de un profesional cómo usar bibliotecas criptográficas.
No necesito conocer la estructura interna de RSA, sino cómo combinarlo de forma segura con otros primitivos para construir un sistema con las propiedades que quiero.
Voy como por tres cuartas partes y estoy satisfecho. Trata las matemáticas de forma ligera, aunque entra un poco en ellas, y parece un libro pensado para gente a la que le incomoda usar algo sin entender cómo funciona por dentro, pero que en realidad no necesita trabajar implementando los detalles internos.
Siento que el libro me enseñó lo suficiente como para poder combinar primitivos y armar protocolos que, al menos en apariencia, funcionen como se pretende. Al mismo tiempo, también aprendí que hay muchos detalles sutiles que pueden romper por completo un protocolo, que combinar primitivos puede crear debilidades inesperadas, y que incluso personas que saben muchísimo más de criptografía que yo construyen protocolos rotos usando primitivos seguros.
Quizá no sea el libro que buscas, pero si no quieres diseñar criptografía tú mismo sino entenderla, me parece un buen libro.
Por ejemplo, si usas libsodium exactamente de la misma forma en que otros 100 desarrolladores ya lo han hecho con éxito, está bien. Pero con unos pocos pasos muy pequeños y sutiles, sin darte cuenta terminas sintetizando un nuevo criptosistema. Un intento de construir un sistema de mensajería segura con los primitivos de libsodium es un ejemplo de eso.
Hay que aprender mucha teoría. Es importante.
Ej.: https://gist.github.com/tqbf/be58d2d39690c3b366ad o https://www.latacora.com/blog/2018/04/03/cryptographic-right...
Es de Bruce Schneier, Niels Ferguson y Tadayoshi Kohno.
Una gran parte de la criptografía moderna consiste en encontrar composiciones seguras.
En este hilo parece que mucha gente está interesada en un aprendizaje práctico de criptografía sin teoría. Para esos casos, conviene ver cryptopals.com, de tptacek, MVP de HN.
Si quieren practicar este tipo de contenido en formato CTF, recomiendo https://cryptohack.org/. Es un sitio excelente.
Es un curso excelente y tuvo un papel importante en mi crecimiento profesional.
También vale la pena notar que Dan Boneh es asesor del equipo de investigación de a16z crypto[1] y que produce mucho contenido relacionado con blockchain junto con ellos[2].
[1]: https://a16zcrypto.com/research/
[2]: https://a16zcrypto.com/team/dan-boneh/
Las implementaciones modernas usan curvas elípticas, e históricamente se habría usado el logaritmo discreto en subgrupos de un cuerpo primo grande. Además, también cubre firmas BLS, que están basadas por completo en curvas elípticas.
En general, cualquier cosa cuya seguridad dependa de logaritmos discretos puede implementarse con curvas elípticas. Pero en una clase introductoria de criptografía, la mayoría de las veces lo que se necesita es un grupo de orden primo, y las curvas elípticas en gran medida pueden tratarse como un grupo de orden primo de caja negra, así que se las considera un detalle de implementación.
Las firmas BLS son la excepción. Necesitan emparejamientos bilineales, y eso requiere un tipo especial de curva elíptica, no un simple grupo de orden primo de caja negra.
Hay muchos excelentes trucos de geometría algebraica que se pueden hacer con curvas elípticas, pero casi no aparecerán en una clase introductoria de criptografía y quizá sean difíciles de ver incluso en cualquier curso de ciencias de la computación.
¿Alguien más sigue esperando el curso Cryptography II de Coursera?
El libro que coescribió, A Graduate Course in Applied Cryptography, me resultó muy útil.
https://toc.cryptobook.us/