9 puntos por GN⁺ 2024-05-03 | 1 comentarios | Compartir por WhatsApp
  • 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

Semana 2: cifrados de bloque

Semana 3: integridad de mensajes y hash resistente a colisiones

Semana 4: cifrado autenticado y trampas de implementación

Semana 5: intercambio de claves y fundamentos de teoría de números

Semana 6: criptografía de clave pública

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

 
GN⁺ 2024-05-03
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...

    • De acuerdo. Me encantaron 155, 255, 251 del profesor Boneh, y durante años fue uno de mis docentes favoritos.
      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.

    • Yo también tomé ese curso en Coursera hace unos años y fue excelente.
      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.

    • Empecé a leer Real-World Cryptography de David Wong porque quería entender mejor la criptografía para escribir con más confianza programas que usen protocolos existentes.
      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.
    • Hay que tener cuidado con las capacidades que crees obtener de un sistema nuevo. Los desarrolladores de software a menudo reciben, sin darse cuenta, varios sieverts de radiación de novedad, y puede que no hayan asentado lo suficiente la teoría aburrida.
      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.
    • Busca en Google Cryptographic Right Answers. Hay varios artículos, y la mayor parte de lo que encuentres suele coincidir en líneas generales.
      Ej.: https://gist.github.com/tqbf/be58d2d39690c3b366ad o https://www.latacora.com/blog/2018/04/03/cryptographic-right...
    • Lo que necesitas quizá sea un libro como Cryptography Engineering: Design Principles and Practical Applications.
      Es de Bruce Schneier, Niels Ferguson y Tadayoshi Kohno.
    • La composición segura definitivamente se trata en este curso. No se habla solo de los detalles de RSA; claro que hay clases relacionadas con eso, pero también se cubre qué propiedades de seguridad satisfacen distintos primitivos y cómo combinarlos de forma segura.
      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/

  • Criptografía de clave pública
    Es todo RSA. ¿No podrían los tutoriales de criptografía incluir ya algo de criptografía de curva elíptica?

    • Quizá estemos viendo cosas distintas, pero en el enlace aparece cifrado ElGamal, que está basado en logaritmos discretos.
      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/