9 pontos por GN⁺ 2024-05-03 | 1 comentários | Compartilhar no WhatsApp
  • Um curso online gratuito de criptografia ministrado por Dan Boneh, da Stanford University, com a lista completa de aulas publicada; tarefas oficiais, projetos e exame final são oferecidos no Coursera
  • O material usa também o livro gratuito A Graduate Course in Applied Cryptography, que complementa as aulas com conteúdo mais aprofundado, provas de segurança e exercícios
  • O currículo vai de cifras de fluxo a assinaturas digitais ao longo de 7 semanas, e cada semana está ligada a capítulos do livro, vídeos das aulas e slides
  • Abrange uma ampla variedade de componentes práticos de criptografia, como one-time pad, PRG, DES, AES, MAC, HMAC, TLS 1.2, Diffie-Hellman, RSA, ElGamal e assinaturas baseadas em hash
  • As aulas individuais podem ser assistidas em vídeo no Coursera; para avaliações e certificado, é preciso se inscrever no curso do Coursera

Forma de estudo e material didático

  • É um curso online de criptografia ministrado por Dan Boneh, da Stanford University
  • Todas as aulas do curso gratuito estão organizadas em uma única página
  • Para cursar oficialmente, incluindo tarefas, projetos e exame final, é necessário usar a página do curso no Coursera
  • O livro gratuito é A Graduate Course in Applied Cryptography, de D. Boneh e V. Shoup
    • Ele aborda conteúdos mais aprofundados que as aulas e inclui provas de segurança e muitos exercícios

Semana 1: visão geral do curso e cifras de fluxo

Semana 2: cifras de bloco

Semana 3: integridade de mensagens e hashes resistentes a colisões

Semana 4: criptografia autenticada e armadilhas de implementação

Semana 5: troca de chaves e fundamentos de teoria dos números

Semana 6: criptografia de chave pública

Semana 7: assinaturas digitais

  • A semana 7 corresponde aos capítulos 13–14 do livro e aborda assinaturas digitais e assinaturas baseadas em hash
  • Os slides são oferecidos nos temas Digital signatures e Hash-based signatures

1 comentários

 
GN⁺ 2024-05-03
Comentários no Hacker News
  • Quando eu era estudante em Stanford, CS255 Intro to Cryptography foi uma das minhas disciplinas favoritas, e Dan era um professor realmente excelente.
    Se quiser mais materiais de aulas de segurança de Stanford, também recomendo CS253 Web Security (https://web.stanford.edu/class/cs253/). Para deixar claro, fui eu que criei essa disciplina, e CS356 Topics in Computer and Network Security (https://cs356.stanford.edu/) também é boa.
    Os vídeos de CS253 estão aqui: https://www.youtube.com/playlist?list=PL1y1iaEtjSYiiSGVlL1cH...

    • Concordo. Gostei muito das disciplinas 155, 255, 251 do professor Boneh, e ele foi um dos meus professores favoritos por muitos anos.
      Ele é extremamente talentoso e explica conceitos muito bem.
  • Alguns anos atrás, fiz o curso de criptografia online desse professor e achei muito bom.
    Mesmo tendo formação em matemática, depois de fazer o curso percebi que não queria me tornar criptógrafo profissional, e só isso já foi um resultado bem valioso.
    Brincadeiras à parte, gostei muito da forma como sistemas criptográficos eram analisados como um jogo contra o diabo, tentando distinguir bytes criptografados de uma sequência aleatória de bits.

    • Eu também fiz esse curso no Coursera alguns anos atrás, e foi excelente.
      A conclusão é: não crie sua própria criptografia, porque fazer isso direito é difícil. É uma visão bem cínica, mas acabou reduzindo um pouco meu interesse em me aprofundar mais.
  • É um curso excelente. Mas a estimativa de conclusão de 23 horas pode variar bastante dependendo da familiaridade prévia com o tema.
    É bom se preparar e ajustar o ritmo levando isso em conta.

  • Parece bom, mas eu gostaria que houvesse material que abordasse, do ponto de vista de quem pratica, como usar bibliotecas de criptografia, em vez de começar pela matemática.
    Não preciso conhecer a estrutura interna do RSA; preciso saber como combiná-lo com outros blocos básicos de forma segura para construir um sistema com as propriedades que quero.

    • Comecei a ler Real-World Cryptography, de David Wong, para entender melhor criptografia e escrever programas que usam protocolos existentes com mais confiança.
      Estou em cerca de três quartos do livro e satisfeito. Ele trata a matemática de forma leve, mas entra um pouco nela, e parece voltado a pessoas que se sentem desconfortáveis em usar algo sem entender o funcionamento interno, mas que não precisam de fato trabalhar na implementação interna.
      Sinto que, graças ao livro, aprendi o suficiente para conseguir combinar primitivas em protocolos que, à primeira vista, se comportam como pretendido. Ao mesmo tempo, também aprendi que há muitas sutilezas capazes de quebrar completamente um protocolo, que combinações de primitivas podem criar fraquezas inesperadas, e que até pessoas que entendem muito mais de criptografia do que eu criam protocolos quebrados a partir de primitivas seguras.
      Talvez não seja o livro que você estava procurando, mas, se a ideia é entender criptografia em vez de projetar a sua própria, acho um bom livro.
    • É preciso ter cuidado com as capacidades que você acha que pode obter em um sistema novo. Desenvolvedores de software muitas vezes estão, sem perceber, recebendo vários sieverts de dose de radiação de novidade, e talvez não tenham consolidado teoria chata o suficiente.
      Por exemplo, se você usar libsodium exatamente da mesma forma que outros 100 desenvolvedores já usaram com sucesso, tudo bem. Mas, com algumas etapas muito pequenas e sutis, você acaba sintetizando um novo sistema criptográfico sem perceber. Uma tentativa de criar um sistema de mensagens seguras com primitivas do libsodium é um exemplo disso.
      É preciso aprender muita teoria. Isso é importante.
    • Pesquise Cryptographic Right Answers no Google. Há alguns textos, e a maior parte do que você encontrar geralmente concorda entre si.
      Exemplos: https://gist.github.com/tqbf/be58d2d39690c3b366ad ou https://www.latacora.com/blog/2018/04/03/cryptographic-right...
    • O que você precisa talvez seja um livro como Cryptography Engineering: Design Principles and Practical Applications.
      É de Bruce Schneier, Niels Ferguson e Tadayoshi Kohno.
    • Composição segura é definitivamente abordada nesse curso. Ele não fala apenas dos detalhes do RSA — embora, claro, também haja aulas relacionadas —, mas também das propriedades de segurança satisfeitas por várias primitivas e de como combiná-las de forma segura.
      Uma grande parte da criptografia moderna consiste em descobrir composições seguras.
  • Neste thread, muita gente parece interessada em aprender criptografia com foco prático, sem teoria. Nesse caso, vale conferir cryptopals.com, do MVP do HN tptacek.

  • Se você quiser praticar esse tipo de conteúdo em formato de CTF, recomendo https://cryptohack.org/. É um site excelente.

  • É um curso excelente e teve um papel importante no crescimento da minha carreira.
    Também vale notar que Dan Boneh é consultor da equipe de pesquisa da a16z crypto[1] e cria muito conteúdo relacionado a blockchain com eles[2].
    [1]: https://a16zcrypto.com/research/
    [2]: https://a16zcrypto.com/team/dan-boneh/

  • criptografia de chave pública
    É tudo RSA. Será que os tutoriais de criptografia não poderiam começar a incluir um pouco de criptografia de curvas elípticas?

    • Talvez estejamos vendo coisas diferentes, mas no link aparece criptografia ElGamal, que é baseada em logaritmo discreto.
      Implementações modernas usam curvas elípticas, e historicamente provavelmente se usavam logaritmos discretos em subgrupos de corpos de grandes números primos. O curso também aborda assinaturas BLS, que são inteiramente baseadas em curvas elípticas.
      Em geral, qualquer coisa cuja segurança dependa de logaritmo discreto pode ser implementada com curvas elípticas. Mas, em uma aula introdutória de criptografia, na maioria dos casos o que se precisa é de um grupo de ordem prima, e curvas elípticas também podem, em geral, ser tratadas como grupos de ordem prima em caixa-preta, então isso é considerado um detalhe de implementação.
      Assinaturas BLS são uma exceção. Elas exigem emparelhamentos bilineares, o que requer um tipo especial de curva elíptica, não apenas um grupo de ordem prima em caixa-preta simples.
      Há muitos truques de geometria algébrica excelentes que podem ser feitos com curvas elípticas, mas esse tipo de conteúdo dificilmente apareceria em uma aula introdutória de criptografia, e talvez seja difícil encontrá-lo até mesmo em qualquer disciplina de ciência da computação.
  • Alguém ainda esperando o curso Cryptography II do Coursera?

  • O livro que ele coescreveu, A Graduate Course in Applied Cryptography, foi muito útil para mim.
    https://toc.cryptobook.us/