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 @@ + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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. + +![Fonctionnement d'une smartcard](./files/smartcard.svg) + +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)*