- Cours gratuit de cryptographie en ligne animé par Dan Boneh de Stanford University, avec la liste complète des leçons publiée, tandis que les devoirs officiels, les projets et l’examen final sont proposés sur Coursera
- Le manuel gratuit A Graduate Course in Applied Cryptography est utilisé en parallèle ; il approfondit le contenu du cours et complète celui-ci avec des preuves de sécurité et des exercices
- Le programme s’étend sur 7 semaines, des chiffres de flux aux signatures numériques, chaque semaine étant reliée aux chapitres du manuel, aux vidéos de cours et aux diapositives
- Le cours couvre largement des briques cryptographiques pratiques comme le one-time pad, les PRG, DES, AES, les MAC, HMAC, TLS 1.2, Diffie-Hellman, RSA, ElGamal et les signatures fondées sur le hachage
- Les leçons individuelles peuvent être visionnées via les vidéos Coursera, et il faut s’inscrire au cours Coursera si l’on souhaite une évaluation et une certification
Modalités de suivi et manuel
- Il s’agit d’un cours de cryptographie en ligne animé par Dan Boneh de Stanford University
- L’ensemble des leçons du cours gratuit est réuni sur une seule page
- Pour suivre officiellement le cours, y compris les devoirs, les projets et l’examen final, il faut passer par la page du cours Coursera
- Le manuel gratuit est A Graduate Course in Applied Cryptography de D. Boneh et V. Shoup
- Il traite les sujets plus en profondeur que le cours et inclut des preuves de sécurité ainsi que de nombreux exercices
Semaine 1 : aperçu du cours et chiffres de flux
- La semaine 1 correspond aux chapitres 2–3 du manuel et couvre un aperçu du cours, les bases de la probabilité discrète et les chiffres de flux
- Des diapositives sont proposées sur les thèmes Introduction et Stream ciphers
- Principales leçons :
- 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
Semaine 2 : chiffres par blocs
- La semaine 2 correspond aux chapitres 4–5 du manuel et couvre les chiffres par blocs ainsi que leurs modes d’utilisation
- Des diapositives sont proposées sur les thèmes Block ciphers et Using block ciphers
- Principales leçons :
- 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
Semaine 3 : intégrité des messages et hachage résistant aux collisions
- La semaine 3 correspond aux chapitres 6–8 du manuel et couvre les codes d’authentification de message (MAC), la résistance aux collisions et HMAC
- Des diapositives sont proposées sur les thèmes Message integrity et Collision resistant hashing
- Principales leçons :
- 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
Semaine 4 : chiffrement authentifié et pièges d’implémentation
- La semaine 4 correspond au chapitre 9 du manuel et couvre le chiffrement authentifié ainsi que les pièges liés à l’usage des systèmes cryptographiques
- Des diapositives sont proposées sur les thèmes Authenticated encryption et Odds and ends
- Principales leçons :
- 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
Semaine 5 : échange de clés et bases de théorie des nombres
- La semaine 5 correspond au chapitre 10 du manuel et couvre le problème de l’échange de clés et les bases de la théorie des nombres
- Des diapositives sont proposées sur les thèmes Basic key exchange et Crash course in number theory
- Principales leçons :
- 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
Semaine 6 : cryptographie à clé publique
- La semaine 6 correspond aux chapitres 11–12 du manuel et couvre les permutations à trappe, RSA et la cryptographie à clé publique fondée sur Diffie-Hellman
- Des diapositives sont proposées sur les thèmes Trapdoor permutation et Diffie-Hellman
- Principales leçons :
- 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
Semaine 7 : signatures numériques
- La semaine 7 correspond aux chapitres 13–14 du manuel et couvre les signatures numériques ainsi que les signatures fondées sur le hachage
- Des diapositives sont proposées sur les thèmes Digital signatures et Hash-based signatures
1 commentaires
Avis sur Hacker News
Quand j’étais étudiant à Stanford, CS255 Intro to Cryptography faisait partie de mes cours préférés, et Dan était vraiment un excellent enseignant.
Si vous voulez davantage de supports de cours de Stanford sur la sécurité, je recommande aussi CS253 Web Security (https://web.stanford.edu/class/cs253/). Pour être transparent, c’est moi qui ai créé ce cours, et CS356 Topics in Computer and Network Security (https://cs356.stanford.edu/) est bien aussi.
Les vidéos de CS253 sont ici : https://www.youtube.com/playlist?list=PL1y1iaEtjSYiiSGVlL1cH...
Il est très talentueux et explique remarquablement bien les concepts.
J’ai suivi son cours en ligne de cryptographie il y a quelques années, et il était excellent.
Même avec un bagage en maths, ce cours m’a fait comprendre que je ne voulais pas devenir cryptographe professionnel, ce qui était déjà une découverte assez utile.
Blague à part, j’ai vraiment apprécié la façon d’analyser les systèmes cryptographiques comme un jeu contre le diable, où l’on essaie de distinguer des octets chiffrés d’une suite de bits aléatoires.
La conclusion : ne faites pas votre propre crypto, parce qu’il est difficile de le faire correctement. C’est assez cynique, mais cela a quelque peu freiné mon envie d’approfondir le sujet.
Excellent cours. Cela dit, l’estimation de 23 heures pour le terminer peut beaucoup varier selon votre niveau préalable sur le sujet.
Mieux vaut en tenir compte, se préparer et adapter son rythme.
Ça a l’air bien, mais j’aimerais trouver des ressources qui, sans commencer par les maths, abordent l’utilisation des bibliothèques de cryptographie du point de vue d’un praticien.
Je n’ai pas besoin de connaître la structure détaillée de RSA ; j’ai besoin de savoir comment le combiner en toute sécurité avec d’autres primitives pour construire un système ayant les propriétés voulues.
J’en suis à peu près aux trois quarts et j’en suis satisfait. Les maths sont abordées légèrement, mais il y en a un peu ; le livre semble destiné aux personnes qui sont mal à l’aise d’utiliser ces outils sans comprendre leur fonctionnement interne, sans pour autant avoir besoin de travailler sur leur implémentation interne.
Grâce à ce livre, j’ai l’impression d’en avoir appris assez pour pouvoir assembler des primitives afin de construire des protocoles qui, en apparence, se comportent comme prévu. En même temps, j’ai aussi appris qu’il existe beaucoup de subtilités capables de casser complètement un protocole, que la combinaison de primitives peut créer des faiblesses inattendues, et que même des gens bien meilleurs que moi en crypto peuvent construire des protocoles cassés avec des primitives sûres.
Ce n’est peut-être pas le livre que vous cherchez, mais si vous voulez comprendre la crypto plutôt que concevoir vous-même des systèmes, je pense que c’est un bon livre.
Par exemple, si vous utilisez libsodium exactement de la même façon que 100 autres développeurs l’ont déjà fait avec succès, tout va bien. Mais avec quelques étapes très petites et subtiles, vous vous retrouvez sans vous en rendre compte à synthétiser un nouveau système cryptographique. Tenter de construire un système de messagerie sécurisée avec les primitives de libsodium en est un exemple.
Il faut apprendre beaucoup de théorie. C’est important.
Exemples : https://gist.github.com/tqbf/be58d2d39690c3b366ad ou https://www.latacora.com/blog/2018/04/03/cryptographic-right...
Il est signé Bruce Schneier, Niels Ferguson et Tadayoshi Kohno.
Une grande partie de la cryptographie moderne consiste à trouver des compositions sûres.
Dans ce fil, beaucoup de gens semblent intéressés par un apprentissage pratique de la cryptographie sans théorie. Dans ce cas, il faut regarder cryptopals.com, par le MVP HN tptacek.
Si vous voulez vous entraîner à ce genre de choses sous forme de CTF, je recommande https://cryptohack.org/. C’est un excellent site.
C’est un excellent cours, qui a joué un rôle important dans ma progression professionnelle.
Il est aussi intéressant de noter que Dan Boneh est conseiller auprès de l’équipe de recherche a16z crypto[1], et qu’il produit beaucoup de contenus liés à la blockchain avec eux[2].
[1]: https://a16zcrypto.com/research/
[2]: https://a16zcrypto.com/team/dan-boneh/
Les implémentations modernes utilisent les courbes elliptiques ; historiquement, on utilisait probablement le logarithme discret dans des sous-groupes de grands corps premiers. Le cours traite aussi des signatures BLS, qui reposent entièrement sur les courbes elliptiques.
En général, tout ce dont la sécurité dépend du logarithme discret peut être implémenté avec des courbes elliptiques. Mais dans un cours d’introduction à la cryptographie, ce dont on a surtout besoin est un groupe d’ordre premier, et les courbes elliptiques peuvent généralement être traitées comme une boîte noire fournissant un tel groupe ; on les considère donc comme un détail d’implémentation.
Les signatures BLS font exception. Elles nécessitent un appariement bilinéaire, ce qui exige un type particulier de courbe elliptique plutôt qu’un simple groupe d’ordre premier en boîte noire.
Il existe beaucoup de superbes astuces de géométrie algébrique réalisables avec les courbes elliptiques, mais elles apparaîtront rarement dans un cours d’introduction à la cryptographie, et peut-être même dans aucun cours d’informatique.
Quelqu’un attend encore le cours Cryptography II sur Coursera ?
Son livre coécrit A Graduate Course in Applied Cryptography m’a été très utile.
https://toc.cryptobook.us/