diff --git a/files/smartcard.svg b/files/smartcard.svg
new file mode 100644
index 0000000..7dce2d4
--- /dev/null
+++ b/files/smartcard.svg
@@ -0,0 +1,1578 @@
+
+
diff --git a/memoire.md b/memoire.md
index a103e80..5e5f54d 100644
--- a/memoire.md
+++ b/memoire.md
@@ -7,7 +7,9 @@ Depuis toujours, l'authentification sur des systèmes informatique est
principalement régie par l'utilisation du couple identifiant / mot de passe.
C'est pourtant un facteur d'identification peu fiables : utilisation du même mot
de passe pour plusieurs - voir tous les - services, mot de passe faible, progrès
-technique rendant leur cassage plus efficaces etc.
+technique rendant leur cassage plus efficaces etc. Dans un communiqué de presse
+du W3C et de l'Alliance FIDO, "les mots de passe volés, faibles ou par défaut
+sont à l'origine de 81% des atteintes à la protection des données".
Il existe des solution pour pallier cette faiblesse, avec notamment
l'introduction d'un ou plusieurs autres facteurs d'authentification (TOTP, SMS
@@ -22,7 +24,7 @@ en œuvre et tenter d'exposer ses limites.
La norme X.509 régissant les formats les format pour les certificats à clé
publique. Elle est définie par l'Union Internationale des Télécommunications et
-établie :
+établie :
- Le **format de certificat**
- La **liste de révocation** des certificats
@@ -38,8 +40,8 @@ et une partie privée. Ces certificats peuvent assurer plusieurs rôles
### PKI - Infrastructure à clefs publiques
-Une infrastructure à clefs publique est un ensemble d'éléments, qu'ils soient
-humain, matériels ou logiciels destinés à gérer les clefs publiques des
+Une infrastructure à clefs publiques est un ensemble d'éléments, qu'ils soient
+humain, matériels ou logiciels, destinés à gérer les clefs publiques des
utilisateurs d'un système.
Cette infrastructure est utilisée pour créer, gérer, distribuer et révoquer des
@@ -51,10 +53,107 @@ Sur Internet, les différentes autorités de certifications assurent les rôles
PKI : Elle fournissent l'infrastructure pour gérer les certificats permettant
le fonctionnement du chiffrement TLS.
-### Une SmartCard?
+## Une SmartCard?
+
+Maintenant que nous avons parlé de la norme X.509, nous allons parler de notre
+**startcard**. D'après Wikipedia ([source](l_sc-wiki)) :
+
+> Une carte à puce est une carte en matière plastique, voire en papier ou en
+> carton, de quelques centimètres de côté et moins d'un millimètre d'épaisseur,
+> portant au moins un circuit intégré capable de contenir de l'information. Le
+> circuit intégré (la puce) peut contenir un microprocesseur capable de traiter
+> cette information, ou être limité à des circuits de mémoire non volatile et,
+> éventuellement, un composant de sécurité (carte mémoire).
+
+Vous utilisez tous les jours une SmartCard : votre carte SIM, votre carte
+bancaire...
+
+Les smartcards qui nous intéressent ici contiennent un espace de stockage, un
+microprocesseur et un coprocesseur pour accélérer les opérations
+cryptographiques.
+
+
+
+Comme vous pouvez le voir, il n'y a pas de connexion directe entre les contacts
+et la mémoire. Pour des raisons évidente de sécurité, tout passe par le système
+d'exploitation de la carte. Il en existe une multitude (JavaCard Operating
+System, MULTOS, OpenPGP Card, Gnuk etc.)
+
+### Création, stockage et utilisation de certificats
+
+Dans le cas qui nous intéresse, la carte à puce permet de stocker le certificat
+et de l'utiliser. Lors de son utilisation, un code PIN sera demandé, le
+certificat contenu pourra alors être utilisé pour s'authentifier, signer ou
+chiffrer.
+
+Certaines Smartcard permettent la génération de certificats.
+
+### Le Web plus accessible aux authentifications par certificats
+
+Aujourd'hui, l'un des principaux défauts de l'authentification par certificats,
+c'est qu'elle n'est pas déployée largement : seul un petit nombre de services
+l'utilisent.
+
+Cependant, supporté par le constat que les mots de passe perdent
+en efficacité, le standard WebAuthn (pour Web Authentication) a récemment été
+créé et publiée par le W3C. Ce standard définit une API destinée aux
+navigateurs, aux applications web et aux autres plateformes nécessitant une
+authentification forte basée sur clés publiques.
+
+Les grands du Web ont déjà ont déjà mit en place le support de WebAuthn sur
+leurs outils : Windows 10, Android, Google Chrome, Mozilla Firefox,
+Microsoft Edge et Safari. L'apparition de ce standard va sans aucun doute
+encourager une adoption plus large de ce type d'authentification.
## Attaque sur les smartcard
+### Attaques par canal auxiliaire
+
+Les attaques par canal auxiliaire regroupe les attaques qui tentent d'exploiter
+des failles sur l'implémentation des procédures de sécurité plutôt que sur les
+procédures elles-mêmes. Voici une liste de types d'attaques par canal
+auxiliaire sur lesquels on va s'attarder car elles touchent les smartcard :
+
+#### Attaque par sondage
+
+Particulièrement invasive, elle consiste à détériorer suffisamment une puce pour
+avoir un accès physique aux bus et y lire les bits qui y passent. Il est à noter
+que cette attaque est très difficile à mettre en place car elle nécessite du
+matériel de pointe (oscilloscope très précis,
+chronométrage du passage des bits...), de la rigueur et de la précision sur la
+détérioration de la puce, etc.
+
+#### Analyse de consommation
+
+En fonction des opérations résolues par un processeur, sa consommation en
+énergie diffère. En étudiant les variations d'énergie utilisée par un lecteur de
+cartes, il est possible de trouver des indices sur la clé privée, sur un
+échantillon suffisant. Aujourd'hui, cette attaque peut être aisément
+contrecarrée en apposant du bruit sur le circuit ou en le blindant.
+
+#### Analyse d'émanations électromagnétiques
+
+Semblable à l'Analyse de consommation, à ceci prêt qu'on ne s'attache pas, cette
+fois ci à, l'énergie consommée mais au rayonnement électromagnétique émis par un
+appareil. A l'instar de la consommation en énergie, le rayonnement n'est pas
+le même en fonction des opérations exécutées par le terminal. L'étude du
+rayonnement thermique peut s'apparenter à une analyse d'émanations
+électromagnétiques.
+
+#### Attaque par faute
+
+Le principe ici est de provoquer des erreurs pour que le système réagisse de
+manière inhabituelle sur les opérations de chiffrement et laisse des indices
+sur la clé de chiffrement.
+
+#### Attaque temporelle
+
+Le temps que met un algorithme à s'exécuter donne parfois des indices sur la
+constitution d'une clé entrée en paramètre dans cet algorithme, comme le nombre
+de bits à 1. A elle seule, cette attaque ne donne pas beaucoup d'informations,
+mais elle peut être combinée avec d'autres attaques pour en augmenter son
+efficacité.
+
### Attaques sur les PKI
Même si elle ne touchent pas directement les smartcard, Il est intéressant de
@@ -62,8 +161,81 @@ parler des attaque sur les infrastructures à clé publiques.
#### Collision MD5
-Le MD5 (pour Message Digest 5) est une fonction de hachage cryptographique
-permettant d'obtenir l'empreinte d'un fichier / d'une chaine de caractères.
+Le MD5 (pour Message Digest 5) est un algorithme de hachage cryptographique
+permettant d'obtenir l'empreinte d'un fichier / d'une chaine de caractères. Elle
+a été inventée par Ronald Rivets en 1991 pour succéder à MD4.
+
+Il doit être considéré comme obsolète depuis 1996, années de découverte d'une
+faille dans l'algorithme ouvrant la voie à des collisions. En 2004 une équipe de
+chercheurs chinois menés par la mathématicienne Wang Xiaoyun [démontre la
+faisabilité][l_md5_2005] d'une collision complète. Mais cette attaque n'est pas
+encore suffisamment sophistiquée pour être utilisée sur un cas concret. Wang,
+Lenstra et de Wegner feront la [démonstration de leur attaque][l_md5_2006] sur
+deux certificats X.509 différents ayant la même signature MD5 en 2006.
+
+[l_md5_2005]:https://eprint.iacr.org/2004/199.pdf
+[l_md5_2006]:https://www.win.tue.nl/~bdeweger/CollidingCertificates/
+
+##### Attaque par collision
+
+Une attaque par collision est menée sur une fonction de hashage cryptographique
+afin trouver deux entrées différentes donnant lieux au même résultat. Comme la
+plupart des fonctions de signature électronique le font sur le hash d'un
+document plutôt que sur le document lui-même. Ainsi s'il est possible de
+produire deux documents avec le même hash, leurs signatures sera strictement
+la même. Il suffit alors d'envoyer à l'autorité de certification le document
+légitime et copier la signature obtenue sur le document frauduleux.
+
+##### Attaque par collision avec préfixe choisi
+
+Dans le cadre de certificats, les choses se compliquent un peu : c'est
+l'autorité de certification qui génère le certificat en fonction des
+informations contenues dans le CSR. L'attaquant doit alors manipuler les données
+contenues dans le CSR qu'il envoie et y intégrer des blocs de collision pour
+annuler les différences entre les hashes du certificats obtenu et celui forgé.
+Il va jouer sur le préfixe du CSR, d'où le nom de l'attaque.
+
+Ce type d'attaque n'est cependant pas aisé, l'attaquant devra anticiper
+certaines informations qui seront intégrées dans le certificat produit par
+l'autorité. Certaines pourront être influencées comme le champ CN, d'autres
+récupérées sur d'autre certificats signés par la même autorité (le contenu des
+champs *issuer* par exemple) et enfin d'autres devront être
+"devinées"[^n_devinees] (numéro de série du certificat et date d'expiration)
+
+[Une telle attaque a été démontrée][l_md5_2008] en décembre 2008 par une équipe
+de chercheurs menée par Sotirov et Stevens. Ils ont ainsi pu obtenir un
+certificat à même de signer n'importe quel autres certificats et reconnu par les
+principaux navigateurs de l'époque.
+
+Une technique similaire a été utilisée par le malware *Flame* découvert en 2012.
+Il usurpait une signature de code Microsoft pour se propager au travers de
+Windows Update.
+
+[l_md5_2008]:https://www.win.tue.nl/hashclash/rogue-ca/
+[^n_devinees]:Prédites serait plus adapté, dans l'attaque menée par Sotirov et
+Stevens, l'équipe de chercheurs a réussi prédire ces deux éléments en étudiant le
+fonctionnement de l'autorité de certification utilisée.
+
+### Attaque par oracle de padding
+
+Ce type d'attaque a été mené avec succès sur différents périphériques
+cryptographiques par un équipe de recherche internationale. Leurs travaux a
+donne lieu ã une publication en avril 2012.
+
+Ils on pu ainsi extraire les clefs privées de la plupart des périphériques
+disponibles sur le marché quel que soit leurs marques.
+
+#### fonctionnement de cette attaque.
+
+##### Fonctionnement du chiffrement par bloc
+
+Avant de rentrer plus en détail dans le fonctionnement de l'attaque par oracle
+de padding, il est nécessaire d'expliquer le fonctionnement du chiffrement par
+bloc. Il exxiste une multitude de chiffrement par bloc, nous resterons sur le
+mode CBC *Cipher Block Chaining*.
+
+
+
## Bibliographie
@@ -78,3 +250,11 @@ Pixis *[Padding oracle](https://beta.hackndo.com/padding-oracle/)*
Romain Bardou, Riccardo Focardi, Yusuke Kawamoto, Lorenzo Simionato, Graham Steel, et al..
*Efficient Padding Oracle Attacks on Cryptographic Hardware.* [Research Report] RR-7944, 2012,
pp.19.
+
+Marc Zaffagni *[CNETfrance.fr : Vers la fin des mots de passe ? WebAuthn est
+désormais un standard du web](https://www.cnetfrance.fr/news/vers-la-fin-des-mots-de-passe-webauthn-est-desormais-un-standard-du-web-39881531.htm)*
+
+W3C *[Web Authentication: An API for accessing Public Key Credentials](https://www.w3.org/TR/webauthn)*
+
+Wikipedia *[Attaque de collisions](https://fr.wikipedia.org/wiki/Attaque_de_collisions)*,
+*[Attaque par canal auxiliaire](https://fr.wikipedia.org/wiki/Attaque_par_canal_auxiliaire)*