Sécurité des implémentations pour la cryptographie
Page personnelle
Recherche
Enseignement
Présentation du cours
La cryptographie est un élément clef de la sécurité numérique. Son utilisation permet la mise en oeuvre de systèmes complexes dont les propriétés de sécurité reposent de façon prouvée sur des problèmes reconus comme difficiles.
Néanmoins, ces garanties obtenues dans des modèles théoriques se retrouvent rapidement mises à mal lors de la mise en œuvre concrète de ces systèmes. Les mauvaises configurations, les erreurs d'implémentation ou la présence de canaux auxiliaires non pris en compte dans le modèle de la preuve rendent la grande majorité des systèmes sécurisés vulnérables bien que cryptographiquement surs d'un point de vue théorique.
Ce cours a pour objectif de mettre en lumière la complexité de la mise en œuvre de la cryptographie dans un cas d'usage réel. Il aborde différentes vulnérabilités pouvant être induites par une mauvaise implémentation de la cryptographie et apporte des principes et bonnes pratiques permettant de limiter ces erreurs. Pour cela, tous les aspects de la réalisation d'un système sécurisé sont balayés en partant d'un point de vue système et en descendant jusqu'aux détails d'implémentation des primitives cryptographiques sur un composant.
Quelques planches d'introduction.
Version imprimable des planches du cours.
Évaluation
L'évaluation comportera
- 1/2 une suite de questions ouvertes liées au cours sur Moodle
- 1/2 sur les TPs (1 compte-rendu au moins)
Travaux Pratiques
Afin de pouvoir profiter au mieux des séances de TP, veuillez vérifier que vous avez à disposition un PC vérifiant les conditions suivantes.
- Vous avez les droits pour ouvrir un port série vers un équipement branché via le port USB.
- Python 3 est installé avec ses packages serial, numpy et matplotlib.
CM 1 (29.09.2022)
Architecture système
(
planches).
CM 2 (29.09.2022)
Architecture produit et APIs de sécurité
(
planches).
CM 3 (06.10.2022)
Attaques non-cryptographiques
(
planches).
CM 4 (06.10.2022)
Attaques cryptographiques distantes
(
planches).
CM 5 (13.10.2022)
Attaques physiques non invasives
(
planches).
CM 6 (10.11.2022)
Attaques physiques invasives
(
planches).
TP 0 (13.10.2022)
Vérification des configurations et test des cibles
Les TPs seront utiliserons deux cibles qu'il faudra connecter en
USB. Ce TP a pour objectif de vérifier le fonctionnement et d'effectuer
une première prise en main.
TP 1 (G1: 10.11.2022 , G2: 20.10.2022)
API: compréhension en boîte noire
TP 2 (G1: 17.11.2022 , G2: 27.10.2022)
API: attaques en boîte noire
TP 3 (G1: 17.11.2022 , G2: 27.10.2022)
API: attaques en boîte blanche
TP 4 (G1: 24.11.2022 , G2: 10.11.2022)
PIN: attaque timing
TP 5 (G1: 24.11.2022 , G2: 17.11.2022)
PIN: attaque timing side-channel et temps constant
TP 6 (G1: 01.12.2022 , G2: 24.11.2022)
DPA: observations de base
TP 7 (G1: 01.12.2022 , G2: 01.12.2022)
DPA: attaque sur le STM32F3
TP 8 (G1: 08.12.2022 , G2: 08.12.2022)
CPA: observations de base
TP 9 (G1: 08.12.2022 , G2: 15.12.2022)
CPA: attaque sur le STM32F3