From 3285479617044ef6d9a5c57e48229e3246b289a4 Mon Sep 17 00:00:00 2001 From: Eol Date: Sat, 9 Mar 2019 18:49:19 +0100 Subject: [PATCH 01/12] Added "Le web plus accessible..." --- memoire.md | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/memoire.md b/memoire.md index a103e80..c6837c5 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 @@ -53,6 +55,23 @@ le fonctionnement du chiffrement TLS. ### Une SmartCard? +### Le Web plus accéssible 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 pulbiques. + +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 sur les PKI @@ -78,3 +97,8 @@ 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)* From 856710536114874e3c8b98d187ac3ac1415eae32 Mon Sep 17 00:00:00 2001 From: Eol Date: Sat, 9 Mar 2019 20:02:43 +0100 Subject: [PATCH 02/12] Added text in "Collision MD5" --- memoire.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/memoire.md b/memoire.md index c6837c5..311925e 100644 --- a/memoire.md +++ b/memoire.md @@ -84,6 +84,18 @@ parler des attaque sur les infrastructures à clé publiques. 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. +Une fonction de hachage - pour être robuste - est sensé ne donner, pour chaque +valeur en entrée différente, qu'une seule valeur en sortie (valeur de hashage). +On dit d'une fonction de hachage cryptographique qu'elle est *résistante aux +collisions* si il est difficile de trouver deux valeurs en entrée pour +lesquelles la valeur en sortie est la même. Si le MD5 est aujourd'hui obsolèthe, +c'est parce que cet algorithme n'est pas résistant aux collisions. + +Si il est possible de produire un message pour lequel la valeur de hashage est +la même que la valeur de hashage d'une clé, il n'est plus necessaire de trouver +la clé et il est possible, par exemple, d'usurper l'identité d'un certificat +en présentant ce message à une autorité de certification. + ## Bibliographie Stéphane Bortzmeyer *[RFC 5280: Internet X.509 Public Key Infrastructure @@ -102,3 +114,5 @@ 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)* From 221b09ab3602b7c85e2dfd82b16faa05e743165f Mon Sep 17 00:00:00 2001 From: Eol <23345063+e-ol@users.noreply.github.com> Date: Sun, 10 Mar 2019 17:14:05 +0100 Subject: [PATCH 03/12] Syntax correction --- memoire.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/memoire.md b/memoire.md index 311925e..3688745 100644 --- a/memoire.md +++ b/memoire.md @@ -84,7 +84,7 @@ parler des attaque sur les infrastructures à clé publiques. 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. -Une fonction de hachage - pour être robuste - est sensé ne donner, pour chaque +Une fonction de hachage - pour être robuste - est censé ne donner, pour chaque valeur en entrée différente, qu'une seule valeur en sortie (valeur de hashage). On dit d'une fonction de hachage cryptographique qu'elle est *résistante aux collisions* si il est difficile de trouver deux valeurs en entrée pour From 45143369121d3a4b5266f8663ce0cdbea5d89109 Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Mon, 11 Mar 2019 22:22:16 +0100 Subject: [PATCH 04/12] Syntax correction --- memoire.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/memoire.md b/memoire.md index 3688745..519cb25 100644 --- a/memoire.md +++ b/memoire.md @@ -55,7 +55,7 @@ le fonctionnement du chiffrement TLS. ### Une SmartCard? -### Le Web plus accéssible aux authentifications par 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 @@ -88,11 +88,11 @@ Une fonction de hachage - pour être robuste - est censé ne donner, pour chaque valeur en entrée différente, qu'une seule valeur en sortie (valeur de hashage). On dit d'une fonction de hachage cryptographique qu'elle est *résistante aux collisions* si il est difficile de trouver deux valeurs en entrée pour -lesquelles la valeur en sortie est la même. Si le MD5 est aujourd'hui obsolèthe, +lesquelles la valeur en sortie est la même. Si le MD5 est aujourd'hui obsolète, c'est parce que cet algorithme n'est pas résistant aux collisions. -Si il est possible de produire un message pour lequel la valeur de hashage est -la même que la valeur de hashage d'une clé, il n'est plus necessaire de trouver +S'il est possible de produire un message pour lequel la valeur de hashage est +la même que la valeur de hashage d'une clé, il n'est plus nécessaire de trouver la clé et il est possible, par exemple, d'usurper l'identité d'un certificat en présentant ce message à une autorité de certification. From 9baca30f894700274c31160d6946a0d22b9ce092 Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Mon, 11 Mar 2019 23:29:53 +0100 Subject: [PATCH 05/12] Add smartcard definition --- memoire.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/memoire.md b/memoire.md index 519cb25..55747e4 100644 --- a/memoire.md +++ b/memoire.md @@ -53,7 +53,28 @@ 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 norre +**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'épaisseur1, + 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... + +### 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é afin de +débloquer le certificat. + +Certaines Smartcard permettent la génération de certificats. ### Le Web plus accessible aux authentifications par certificats @@ -65,7 +86,7 @@ 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 pulbiques. +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, From 3371a9e94d6f456b5c1cd7d7cfcd3378bb800f2b Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Tue, 12 Mar 2019 12:40:17 +0100 Subject: [PATCH 06/12] Update smartcard definition --- memoire.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/memoire.md b/memoire.md index 55747e4..c80e605 100644 --- a/memoire.md +++ b/memoire.md @@ -59,7 +59,7 @@ Maintenant que nous avons parlé de la norme X.509, nous allons parler de norre **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'épaisseur1, + 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, @@ -71,8 +71,9 @@ bancaire... ### 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é afin de -débloquer 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. From 4d90fe150b87d8cc0f04892e3bd3e9fcfa3921ed Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Wed, 13 Mar 2019 23:37:26 +0100 Subject: [PATCH 07/12] Add smartcard schema and update definition --- files/smartcard.svg | 1578 +++++++++++++++++++++++++++++++++++++++++++ memoire.md | 16 +- 2 files changed, 1593 insertions(+), 1 deletion(-) create mode 100644 files/smartcard.svg 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 c80e605..914cd29 100644 --- a/memoire.md +++ b/memoire.md @@ -55,7 +55,7 @@ le fonctionnement du chiffrement TLS. ## Une SmartCard? -Maintenant que nous avons parlé de la norme X.509, nous allons parler de norre +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 @@ -68,6 +68,20 @@ Maintenant que nous avons parlé de la norme X.509, nous allons parler de norre Vous utilisez tous les jours une SmartCard : votre carte SIM, votre carte bancaire... +Les smartcards qui nous intéressent ici contienne effectivement un estace 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 raison évidente de sécurité, tout passe par le système +d'exploitation de la carte. Il en existe une multitude : + + - Java Card + - MULTOS + - OpenPGP Card + ### Création, stockage et utilisation de certificats Dans le cas qui nous intéresse, la carte à puce permet de stocker le certificat From 1561a2febfd1c3504d192c92514d4207e17bc01e Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Wed, 13 Mar 2019 23:58:40 +0100 Subject: [PATCH 08/12] Syntax corrections --- memoire.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/memoire.md b/memoire.md index 914cd29..e662e55 100644 --- a/memoire.md +++ b/memoire.md @@ -68,19 +68,16 @@ Maintenant que nous avons parlé de la norme X.509, nous allons parler de notre Vous utilisez tous les jours une SmartCard : votre carte SIM, votre carte bancaire... -Les smartcards qui nous intéressent ici contienne effectivement un estace de -stockage, un microprocesseur et un coprocesseur pour accélérer les opérations +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 raison évidente de sécurité, tout passe par le système -d'exploitation de la carte. Il en existe une multitude : - - - Java Card - - MULTOS - - OpenPGP Card +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 From 2a85cdff27d0ed7ea5f0673c97edaaf7e1a52875 Mon Sep 17 00:00:00 2001 From: Eol Date: Thu, 14 Mar 2019 20:42:10 +0100 Subject: [PATCH 09/12] Added some attacks --- memoire.md | 78 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 66 insertions(+), 12 deletions(-) diff --git a/memoire.md b/memoire.md index e662e55..c85c2bb 100644 --- a/memoire.md +++ b/memoire.md @@ -58,19 +58,19 @@ le fonctionnement du chiffrement TLS. 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). +> 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. +cryptographiques. ![Fonctionnement d'une smartcard](./files/smartcard.svg) @@ -86,7 +86,7 @@ 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. +Certaines Smartcard permettent la génération de certificats. ### Le Web plus accessible aux authentifications par certificats @@ -107,6 +107,46 @@ 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 d'émanations électromagnétiques + + + +#### 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. + +#### Attaque par faute + + + +#### 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 @@ -125,9 +165,22 @@ lesquelles la valeur en sortie est la même. Si le MD5 est aujourd'hui obsolète c'est parce que cet algorithme n'est pas résistant aux collisions. S'il est possible de produire un message pour lequel la valeur de hashage est -la même que la valeur de hashage d'une clé, il n'est plus nécessaire de trouver -la clé et il est possible, par exemple, d'usurper l'identité d'un certificat -en présentant ce message à une autorité de certification. +la même que la valeur de hashage d'une clé privée, il n'est plus nécessaire de +trouver la clé et il est possible, par exemple, d'usurper l'identité d'un +certificat en présentant ce message à une autorité de certification. + +Trouver un message produisant le même hash qu'un autre message par force brute +n'exploite pas vraiment cette vulnérabilité. Il existe un scénario qui tire +mieux parti de la collision : +1. L'attaquant créé au préalable deux documents, un "légitime", qu'il demandera +à quelqu'un de signer et un autre qui produit le même hash MD5. +2. L'autre partie, une autorité de certification par exemple, l'accepte et signe +son hash MD5. +3. L'attaquant peut envoyer le deuxième document en y joignant la signature du +premier document, prétendant qu'il a été signé par l'autorité de certification. + +Ce scénario a été utilisé, en 2008, par des chercheurs pour créer une fausse +autorité de certification. ## Bibliographie @@ -148,4 +201,5 @@ désormais un standard du web](https://www.cnetfrance.fr/news/vers-la-fin-des-mo 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)* +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)* From dc4a097147e88345999a4de28f1ae00089ada695 Mon Sep 17 00:00:00 2001 From: Eol Date: Thu, 14 Mar 2019 23:06:14 +0100 Subject: [PATCH 10/12] Ended side-channel attacks --- memoire.md | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/memoire.md b/memoire.md index c85c2bb..85649cc 100644 --- a/memoire.md +++ b/memoire.md @@ -123,10 +123,6 @@ 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 d'émanations électromagnétiques - - - #### Analyse de consommation En fonction des opérations résolues par un processeur, sa consommation en @@ -135,9 +131,20 @@ 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 From bdd87bcccfe5e0f7807024b48a66632f672c96f5 Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Sun, 17 Mar 2019 23:54:41 +0100 Subject: [PATCH 11/12] Rework MD5 collisions part --- memoire.md | 73 +++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 23 deletions(-) diff --git a/memoire.md b/memoire.md index 85649cc..1740e42 100644 --- a/memoire.md +++ b/memoire.md @@ -161,33 +161,60 @@ 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. -Une fonction de hachage - pour être robuste - est censé ne donner, pour chaque -valeur en entrée différente, qu'une seule valeur en sortie (valeur de hashage). -On dit d'une fonction de hachage cryptographique qu'elle est *résistante aux -collisions* si il est difficile de trouver deux valeurs en entrée pour -lesquelles la valeur en sortie est la même. Si le MD5 est aujourd'hui obsolète, -c'est parce que cet algorithme n'est pas résistant aux collisions. +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. -S'il est possible de produire un message pour lequel la valeur de hashage est -la même que la valeur de hashage d'une clé privée, il n'est plus nécessaire de -trouver la clé et il est possible, par exemple, d'usurper l'identité d'un -certificat en présentant ce message à une autorité de certification. +[l_md5_2005]:https://eprint.iacr.org/2004/199.pdf +[l_md5_2006]:https://www.win.tue.nl/~bdeweger/CollidingCertificates/ -Trouver un message produisant le même hash qu'un autre message par force brute -n'exploite pas vraiment cette vulnérabilité. Il existe un scénario qui tire -mieux parti de la collision : -1. L'attaquant créé au préalable deux documents, un "légitime", qu'il demandera -à quelqu'un de signer et un autre qui produit le même hash MD5. -2. L'autre partie, une autorité de certification par exemple, l'accepte et signe -son hash MD5. -3. L'attaquant peut envoyer le deuxième document en y joignant la signature du -premier document, prétendant qu'il a été signé par l'autorité de certification. +##### Attaque par collision -Ce scénario a été utilisé, en 2008, par des chercheurs pour créer une fausse -autorité de certification. +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. ## Bibliographie From abcd020ba341298ea4121582ce9eae114e74f754 Mon Sep 17 00:00:00 2001 From: yorick Barbanneau Date: Mon, 18 Mar 2019 01:00:58 +0100 Subject: [PATCH 12/12] Begin padding oracle section --- memoire.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/memoire.md b/memoire.md index 1740e42..5e5f54d 100644 --- a/memoire.md +++ b/memoire.md @@ -212,10 +212,31 @@ 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 +[^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 Stéphane Bortzmeyer *[RFC 5280: Internet X.509 Public Key Infrastructure