Curso online de criptografia de Dan Boneh (2017)
(crypto.stanford.edu)- 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
- A semana 1 corresponde aos capítulos 2–3 do livro e aborda a visão geral do curso, fundamentos de probabilidade discreta e cifras de fluxo
- Os slides são oferecidos nos temas Introduction e Stream ciphers
- Principais aulas:
- 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: cifras de bloco
- A semana 2 corresponde aos capítulos 4–5 do livro e aborda cifras de bloco e formas de usar cifras de bloco
- Os slides são oferecidos nos temas Block ciphers e Using block ciphers
- Principais aulas:
- 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: integridade de mensagens e hashes resistentes a colisões
- A semana 3 corresponde aos capítulos 6–8 do livro e aborda códigos de autenticação de mensagens (MAC), resistência a colisões e HMAC
- Os slides são oferecidos nos temas Message integrity e Collision resistant hashing
- Principais aulas:
- 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: criptografia autenticada e armadilhas de implementação
- A semana 4 corresponde ao capítulo 9 do livro e aborda criptografia autenticada e armadilhas no uso de sistemas criptográficos
- Os slides são oferecidos nos temas Authenticated encryption e Odds and ends
- Principais aulas:
- 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: troca de chaves e fundamentos de teoria dos números
- A semana 5 corresponde ao capítulo 10 do livro e aborda o problema de troca de chaves e fundamentos de teoria dos números
- Os slides são oferecidos nos temas Basic key exchange e Crash course in number theory
- Principais aulas:
- 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: criptografia de chave pública
- A semana 6 corresponde aos capítulos 11–12 do livro e aborda permutações trapdoor, RSA e criptografia de chave pública baseada em Diffie-Hellman
- Os slides são oferecidos nos temas Trapdoor permutation e Diffie-Hellman
- Principais aulas:
- 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: 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
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...
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.
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.
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.
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.
Exemplos: https://gist.github.com/tqbf/be58d2d39690c3b366ad ou https://www.latacora.com/blog/2018/04/03/cryptographic-right...
É de Bruce Schneier, Niels Ferguson e Tadayoshi Kohno.
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/
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/