« Authentification deux facteurs » : différence entre les versions
mAucun résumé des modifications |
|||
(40 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= Introduction = |
= Introduction = |
||
L'authentification pour un service est un processus permettant au système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité aux services de ce système. |
L'authentification pour un service est un processus permettant au système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité aux services de ce système. On peut voir ce processus dans le domaine de la banque avec la signature par exemple. On va ici l'aborder dans le domaine informatique. |
||
'''Définition''': |
'''Définition''': un facteur d'authentification est un moyen de permettre à un service/logiciel de vérifier l'identité de l'utilisateur. |
||
On peut différencier |
On peut différencier trois types de facteurs différent: |
||
Les facteurs mémoriels : ils correspondent à ce dont on doit se souvenir, par exemple un couple 'username / password', ou la réponse à une question secrète. |
|||
- matériel: ce qu'on possède comme par exemple une application sur un téléphone, ou encore un code envoyé par SMS a un numéro donné. |
|||
Les facteurs matériels : ils caractérisent ce que l'on possède, comme par exemple un téléphone (qui va contenir une application ou recevoir un SMS) ou un token. |
|||
- physique: ce que l'on est, notre voix ou encore nos empreintes biométriques. |
|||
Les facteurs physiques : ils s'appliquent à ce que l'on est, ce qui peut correspondre à notre voix ou nos empreintes biométriques. |
|||
Lorsqu'on utilise un seul élément pour s'identifier (le plus répandu étant le couple 'username / password'), on parle d'authentification simple. C'est une authentification rapide, mais insuffisamment sécurisé. |
|||
Pour apporter plus de sécurité, il a été pensé le fait d'ajouter un autre facteur (de préférence appartenant à un autre type). |
|||
On parle |
On parle ainsi d'authentification forte, mais aussi d'authentification à deux facteurs (2FA en anglais). |
||
= Fonctionnement = |
= Fonctionnement = |
||
Ligne 17 : | Ligne 23 : | ||
==Premier Facteur== |
==Premier Facteur== |
||
Nous sommes dans le schéma classique qui est aussi le moyen le plus répandu pour s'authentifier. Il s'agit d'un facteur de type mémoriel. |
|||
[[Fichier:PremierFacteur.jpg]] |
[[Fichier:PremierFacteur.jpg]] |
||
L'utilisateur va s'authentifier en rentrant son username |
L'utilisateur va s'authentifier en rentrant son username / password auprès du service auquel il souhaite accéder. |
||
Le service va |
Le service va faire passer le password dans une fonction de hachage et l'envoyer au serveur dudit service, qui va le comparer avec celui qui a été enregistré lors de la création du compte, et, s'ils correspondent, l'utilisateur accèdera au service. |
||
Le serveur va alors comparé le password qui à enregistré lors de la création de compte avec celui qu'il vient de recevoir. |
|||
Si le password correspond, l'utilisateur accède au service. |
|||
==Deuxième Facteur== |
==Deuxième Facteur== |
||
Ligne 30 : | Ligne 34 : | ||
===Première version=== |
===Première version=== |
||
Nous sommes dans un schéma d'authentification qui est souvent associé au premier. Il s'agit d'un facteur de type matériel. |
|||
[[Fichier:DeuxièmeFacteurV1.jpg]] |
[[Fichier:DeuxièmeFacteurV1.jpg]] |
||
L'utilisateur souhaite accéder à un service |
L'utilisateur souhaite accéder à un service, auquel il se connecte avec son username / password. |
||
Le serveur va alors créer un code, suite de chiffres et |
Le serveur va alors créer un code, une suite de chiffres et de lettres généré aléatoirement, qui va être valide pendant une durée limitée (moins d'une heure). |
||
Il va ensuite l'envoyer à l'utilisateur via un moyen choisis par |
Il va ensuite l'envoyer à l'utilisateur via un moyen choisis au préalable : par mail, par SMS, ou avec une notification provenant d'une application mobile. |
||
Ainsi, l'utilisateur va rentrer le code ou accepter la notification pour se connecter au service. |
|||
L'utilisateur va alors rentrer le code ou accepter la notification pour se connecter a son service. |
|||
===Deuxième version=== |
===Deuxième version=== |
||
C |
C'est un autre fonctionnement qui tend à se répandre de plus en plus, car il est plus sécurisé que celui vu dans la première version. Il s'agit toujours d'un facteur de type matériel. |
||
[[Fichier:DeuxièmeFacteurV2.jpg]] |
[[Fichier:DeuxièmeFacteurV2.jpg]] |
||
Lorsque l'utilisateur va créer un compte il va |
Lorsque l'utilisateur va créer un compte sur un service, il va relier un token ou une application mobile avec le serveur du service. |
||
Cette liaison a pour but qu'un code synchronisé soit généré, ce qui va permettre l'authentification de l’utilisateur lors d'une connexion future. |
|||
L'utilisateur souhaite alors accéder au service. Le service va alors demander à l'utilisateur le code, suite de chiffres et/ou lettres, qui est valable sur une courte durée. |
|||
Ce code est un code valide pendant une durée limitée (~20 secondes), qui va régulièrement être re-généré. |
|||
L'utilisateur va alors se servir de son token/application mobile, récupérer le code et ensuite le rentrer sur le service. |
|||
Le service va alors demander au serveur si le code est bien le même qui a générer. |
|||
Ainsi, quand l'utilisateur souhaite accéder au service, il devra récupérer le code sur le dispositif synchronisé. |
|||
Si c'est le cas l'utilisateur peut alors utiliser le service. |
|||
Le service va donc demander à son serveur si le code est valide, et si c'est le cas, l'utilisateur peut utiliser le service. |
|||
'''Authentifieur de type Time-based One-Time-Password TOTP''' |
'''Authentifieur de type Time-based One-Time-Password TOTP''' |
||
[[Fichier:Time-limited one time password.gif]] |
|||
C'est une extension de l'algorithme One-Time-Password HOTP qui a pour but de générer un code à usage unique. Cette algorithme est plus sécurisé car il prend en compte l'heure de la création de code, dans son calcul pour générer le code. Cette algorithme est utilisé par beaucoup d'entreprise proposant un authentificateur/token. On a donc TOTP valeur(K) = HOTP valeur(K,temps) , avec temps une valeur déterminé à partir de l'heure ou le code est généré. |
|||
C'est une extension de l'algorithme One-Time-Password OTP ( qui a pour but de générer un code à usage unique. Cet algorithme est plus sécurisé, car il prend en compte l'heure dans son calcul pour générer le code. Cet algorithme est utilisé par beaucoup d'entreprises proposant un authentifieur/token. On a donc <math>TOTP valeur(K) = OTP valeur(K,temps)</math> , avec <math>temps</math> une valeur déterminée à partir de l'heure ou le code est généré. |
|||
On se sert donc dans un premier temps du premier facteur d'authentification mémoriel qui sers à indiquer au service à quel compte on souhaite se connecte et ensuite le mot de passe qui permet de réaliser une première vérification. Si l'entité entre les bonnes données, le service va alors passer à la seconde authentification pour confirmer l'identité de l'entité. On va soit recopier le code reçu par mail/texto ou encore accepter la notification ou recopier la valeur du token. Le service va alors confirmez notre identité et on peut ainsi accéder au service. |
|||
Cet algorithme est composé de trois paramètres : |
|||
= Utilité = |
|||
- une fonction d'hachage (par défaut SHA1) |
|||
- une clé secrète K |
|||
- une longueur de chaine D |
|||
On commence d'abord par la génération d'un HMAC-SHA1 à partir de K et CT (compteur de temps). Ensuite, on en extrait une chaine de 31 bits avant de générer un token, on prend ces bits convertis en décimal auquel on applique le modulo <math>10^D</math>. Ceci nous donne notre token. |
|||
<math>X= HMAC(K,CT) </math> HMAC fonction de SHA1 |
|||
<math>Sbits = tronquer(X) </math> tronquer va prendre 31 bits à partir de X |
|||
<math>T = dec(Sbits)</math> <math>mod</math> <math>10^D</math> dec transforme Sbits en valeur décimale |
|||
==Combinatoire== |
|||
Lors de l'accès à un service, un utilisateur va d'abord entrer le premier facteur d'authentification, le facteur mémoriel, qui sert à indiquer au service à quel compte il souhaite se connecter. |
|||
Si il entre le mot de passe associé au compte, le service va enchaîner sur la seconde authentification afin de confirmer l'authenticité de l'utilisateur. |
|||
En respectant la procédure vue ci-dessus (première ou deuxième version), avec l'utilisation du second facteur d'authentification, le facteur matériel, l'identité sera confirmée et l'utilisateur pourra accéder au service. |
|||
= Exemples d'utilisations = |
= Exemples d'utilisations = |
||
Ligne 68 : | Ligne 90 : | ||
Les choses qui peuvent se séparer en étapes dissociables comprennent généralement plusieurs facteurs. |
Les choses qui peuvent se séparer en étapes dissociables comprennent généralement plusieurs facteurs. |
||
Il y a énormément d'exemple possibles contenant des |
Il y a énormément d'exemple possibles contenant des authentifications à multiples facteurs, que ce soit au sein de la vie courante, dans un domaine professionnel, ou même sur internet. |
||
==Vie courante== |
==Vie courante== |
||
'''Domaine bancaire |
'''Domaine bancaire''' |
||
Par exemple, lorsqu'on va retirer des sous sur un distributeur, on utilise deux facteurs : |
Par exemple, lorsqu'on va retirer des sous sur un distributeur, on utilise deux facteurs : |
||
[[Fichier:CB.png]] |
[[Fichier:CB.png]] |
||
La carte bleue est la version |
La carte bleue est la version matérielle des facteurs, et le code en est la version mémorielle. |
||
Si on ne possède pas ces deux facteurs, il est impossible de retirer de l'argent. |
Si on ne possède pas ces deux facteurs, il est impossible de retirer de l'argent. |
||
==Domaine professionnel== |
|||
Un autre exemple dans le domaine bancaire est la gestion des coffres-forts, qui fait intervenir de multiples facteurs : |
|||
'''Question d'accès :''' |
|||
Avant l'ouverture, il faut des papiers d'identités, ce qui correspond à un facteur matériel, et potentiellement physique avec la photo. |
|||
Dans un milieu professionnel, pour pouvoir accéder à un bâtiment il faut très souvent avoir un badge, qui est au préalable enregistré : il s'agit du premier facteur, qui est matériel. |
|||
Ensuite, l'ouverture nécessite deux clés : Une que l'on possède, et une que la Banque possède. |
|||
Le fait de rencontrer ses collègues peut être considéré comme un facteur physique, car une personne n'étant pas employée ne sera pas reconnue. |
|||
Ces deux clés correspondent à deux autres facteurs matériels. |
|||
==Domaine professionnel== |
|||
Enfin, l'accès a son poste de travail peut contenir plusieurs autres facteurs (clé de casier, mot de passe d’ordinateur, etc.). |
|||
'''Question d'accès''' |
|||
''Accès à un bâtiment :'' |
|||
Dans un milieu professionnel, pour pouvoir accéder à un bâtiment il faut très souvent avoir un badge, qui est au préalable enregistré : il s'agit du premier facteur, qui est matériel. |
|||
Le fait de rencontrer ses collègues peut être considéré comme un facteur physique, car une personne n'étant pas employée ne sera pas reconnue. |
|||
Enfin, l'accès à son poste de travail peut contenir plusieurs autres facteurs (clé de casier, mot de passe d’ordinateur, etc.). |
|||
Un autre point concernant l'accès concerne les réseaux privés, qui peuvent contenir des données sensibles pour l'entreprise. |
|||
''Accès à un réseau :'' |
|||
===En ligne=== |
|||
Pour accéder à un réseau privé, qui peut contenir des données sensibles ou internes à l'entreprise, on peut avoir besoin de passer une authentification supplémentaire, qui va utiliser un token ou un logiciel prévu a cet effet. |
|||
'''Contenu fréquemment utilisés :''' |
|||
[[Fichier:Token.png|300px]] |
|||
==En ligne== |
|||
'''Contenu fréquemment utilisés''' |
|||
Lorsqu'on s'identifie à un Compte Google, il est possible d'ajouter le Google Authenticator, un mécanisme supplémentaire qui va envoyer un code par SMS, renforçant ainsi la sécurité du compte. |
|||
[[Fichier:Google Authenticator.png|300px]] |
|||
Compte Google |
|||
[[Fichier:Google Authenticator.png]] |
|||
'''Plateformes de jeux vidéos''' |
'''Plateformes de jeux vidéos''' |
||
Du fait du grand nombre d'utilisateurs des plateformes en lignes, elles se sécurisent au mieux possibles, et notamment via des |
Du fait du grand nombre d'utilisateurs des plateformes en lignes, elles se sécurisent au mieux possibles, et notamment via des authentifications multiples : |
||
Par exemple, Steam possède un mécanisme de sécurité qui va demander un code d'accès unique généré sur une application tiers. |
|||
[[Fichier:Steam Guard.png|300px]] |
|||
De même, Blizzard utilise une authentification par une application mobile. |
|||
[[Fichier:Authenticator Battlenet.png|300px]] |
|||
= Intérêts, problèmes potentiels= |
|||
==Sécurité== |
|||
L'intérêt principal de la mise en place d'un système d'authentification à multiples facteurs (MFA en anglais) est le gain important de sécurité, car pour chaque ajout de facteur sur un système, on va renforcer ses défenses. |
|||
La contrepartie à l'ajout de sécurité est le temps qui va être utilisé pour valider les étapes de sécurités. |
|||
Malgré l'augmentation de la sécurité, les systèmes MFA ne sont évidemment pas infaillible, il existe plusieurs façons de les craquer ou de les contourner. |
|||
Par exemple, l'interception des SMS envoyés, la lecture des cookies, ou l'option de récupération de mot de passe sont diverses méthodes permettant d'infiltrer un système MFA. |
|||
==Simplicité & Accessibilité== |
|||
Pour valider l'authentification avec les facteurs, il n'y a pas besoin de valider beaucoup d'étapes, les facteurs étant généralement accessibles. |
|||
Cette accessibilité est favorisée par l'utilisation du dispositif matériel (téléphone ou token), qui est facilement transportable et permet donc de générer le code à partir de n'importe quel emplacement. |
|||
Cependant, l'utilisation d'un tel dispositif engendre des problèmes (notamment la perte, l'endommagement, ou son oubli) qui peuvent provoquer l'incapacité à produire le facteur, et donc une erreur dans la procédure d’authentification à plusieurs facteurs. |
|||
= Sources = |
= Sources = |
||
- [https://korben.info/authentification-double-facteur-2fa.html https://korben.info/authentification-double-facteur-2fa.html] |
|||
- [https://www.wired.com/story/two-factor-authentication-apps-authy-google-authenticator/ https://www.wired.com/story/two-factor-authentication-apps-authy-google-authenticator/] |
|||
- [https://www.lemagit.fr/definition/Authentification-a-double-facteur https://www.lemagit.fr/definition/Authentification-a-double-facteur] |
- [https://www.lemagit.fr/definition/Authentification-a-double-facteur https://www.lemagit.fr/definition/Authentification-a-double-facteur] |
||
- [https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm] |
- [https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm] |
Dernière version du 25 novembre 2018 à 23:48
Introduction
L'authentification pour un service est un processus permettant au système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité aux services de ce système. On peut voir ce processus dans le domaine de la banque avec la signature par exemple. On va ici l'aborder dans le domaine informatique.
Définition: un facteur d'authentification est un moyen de permettre à un service/logiciel de vérifier l'identité de l'utilisateur.
On peut différencier trois types de facteurs différent:
Les facteurs mémoriels : ils correspondent à ce dont on doit se souvenir, par exemple un couple 'username / password', ou la réponse à une question secrète. Les facteurs matériels : ils caractérisent ce que l'on possède, comme par exemple un téléphone (qui va contenir une application ou recevoir un SMS) ou un token. Les facteurs physiques : ils s'appliquent à ce que l'on est, ce qui peut correspondre à notre voix ou nos empreintes biométriques.
Lorsqu'on utilise un seul élément pour s'identifier (le plus répandu étant le couple 'username / password'), on parle d'authentification simple. C'est une authentification rapide, mais insuffisamment sécurisé.
Pour apporter plus de sécurité, il a été pensé le fait d'ajouter un autre facteur (de préférence appartenant à un autre type).
On parle ainsi d'authentification forte, mais aussi d'authentification à deux facteurs (2FA en anglais).
Fonctionnement
Premier Facteur
Nous sommes dans le schéma classique qui est aussi le moyen le plus répandu pour s'authentifier. Il s'agit d'un facteur de type mémoriel.
L'utilisateur va s'authentifier en rentrant son username / password auprès du service auquel il souhaite accéder. Le service va faire passer le password dans une fonction de hachage et l'envoyer au serveur dudit service, qui va le comparer avec celui qui a été enregistré lors de la création du compte, et, s'ils correspondent, l'utilisateur accèdera au service.
Deuxième Facteur
Première version
Nous sommes dans un schéma d'authentification qui est souvent associé au premier. Il s'agit d'un facteur de type matériel.
L'utilisateur souhaite accéder à un service, auquel il se connecte avec son username / password. Le serveur va alors créer un code, une suite de chiffres et de lettres généré aléatoirement, qui va être valide pendant une durée limitée (moins d'une heure). Il va ensuite l'envoyer à l'utilisateur via un moyen choisis au préalable : par mail, par SMS, ou avec une notification provenant d'une application mobile. Ainsi, l'utilisateur va rentrer le code ou accepter la notification pour se connecter au service.
Deuxième version
C'est un autre fonctionnement qui tend à se répandre de plus en plus, car il est plus sécurisé que celui vu dans la première version. Il s'agit toujours d'un facteur de type matériel.
Lorsque l'utilisateur va créer un compte sur un service, il va relier un token ou une application mobile avec le serveur du service. Cette liaison a pour but qu'un code synchronisé soit généré, ce qui va permettre l'authentification de l’utilisateur lors d'une connexion future. Ce code est un code valide pendant une durée limitée (~20 secondes), qui va régulièrement être re-généré.
Ainsi, quand l'utilisateur souhaite accéder au service, il devra récupérer le code sur le dispositif synchronisé. Le service va donc demander à son serveur si le code est valide, et si c'est le cas, l'utilisateur peut utiliser le service.
Authentifieur de type Time-based One-Time-Password TOTP
C'est une extension de l'algorithme One-Time-Password OTP ( qui a pour but de générer un code à usage unique. Cet algorithme est plus sécurisé, car il prend en compte l'heure dans son calcul pour générer le code. Cet algorithme est utilisé par beaucoup d'entreprises proposant un authentifieur/token. On a donc , avec une valeur déterminée à partir de l'heure ou le code est généré.
Cet algorithme est composé de trois paramètres :
- une fonction d'hachage (par défaut SHA1) - une clé secrète K - une longueur de chaine D
On commence d'abord par la génération d'un HMAC-SHA1 à partir de K et CT (compteur de temps). Ensuite, on en extrait une chaine de 31 bits avant de générer un token, on prend ces bits convertis en décimal auquel on applique le modulo . Ceci nous donne notre token.
HMAC fonction de SHA1
tronquer va prendre 31 bits à partir de X
dec transforme Sbits en valeur décimale
Combinatoire
Lors de l'accès à un service, un utilisateur va d'abord entrer le premier facteur d'authentification, le facteur mémoriel, qui sert à indiquer au service à quel compte il souhaite se connecter. Si il entre le mot de passe associé au compte, le service va enchaîner sur la seconde authentification afin de confirmer l'authenticité de l'utilisateur. En respectant la procédure vue ci-dessus (première ou deuxième version), avec l'utilisation du second facteur d'authentification, le facteur matériel, l'identité sera confirmée et l'utilisateur pourra accéder au service.
Exemples d'utilisations
Les choses qui peuvent se séparer en étapes dissociables comprennent généralement plusieurs facteurs.
Il y a énormément d'exemple possibles contenant des authentifications à multiples facteurs, que ce soit au sein de la vie courante, dans un domaine professionnel, ou même sur internet.
Vie courante
Domaine bancaire
Par exemple, lorsqu'on va retirer des sous sur un distributeur, on utilise deux facteurs :
La carte bleue est la version matérielle des facteurs, et le code en est la version mémorielle.
Si on ne possède pas ces deux facteurs, il est impossible de retirer de l'argent.
Un autre exemple dans le domaine bancaire est la gestion des coffres-forts, qui fait intervenir de multiples facteurs :
Avant l'ouverture, il faut des papiers d'identités, ce qui correspond à un facteur matériel, et potentiellement physique avec la photo. Ensuite, l'ouverture nécessite deux clés : Une que l'on possède, et une que la Banque possède. Ces deux clés correspondent à deux autres facteurs matériels.
Domaine professionnel
Question d'accès
Accès à un bâtiment :
Dans un milieu professionnel, pour pouvoir accéder à un bâtiment il faut très souvent avoir un badge, qui est au préalable enregistré : il s'agit du premier facteur, qui est matériel. Le fait de rencontrer ses collègues peut être considéré comme un facteur physique, car une personne n'étant pas employée ne sera pas reconnue. Enfin, l'accès à son poste de travail peut contenir plusieurs autres facteurs (clé de casier, mot de passe d’ordinateur, etc.).
Accès à un réseau :
Pour accéder à un réseau privé, qui peut contenir des données sensibles ou internes à l'entreprise, on peut avoir besoin de passer une authentification supplémentaire, qui va utiliser un token ou un logiciel prévu a cet effet.
En ligne
Contenu fréquemment utilisés
Lorsqu'on s'identifie à un Compte Google, il est possible d'ajouter le Google Authenticator, un mécanisme supplémentaire qui va envoyer un code par SMS, renforçant ainsi la sécurité du compte.
Plateformes de jeux vidéos
Du fait du grand nombre d'utilisateurs des plateformes en lignes, elles se sécurisent au mieux possibles, et notamment via des authentifications multiples :
Par exemple, Steam possède un mécanisme de sécurité qui va demander un code d'accès unique généré sur une application tiers.
De même, Blizzard utilise une authentification par une application mobile.
Intérêts, problèmes potentiels
Sécurité
L'intérêt principal de la mise en place d'un système d'authentification à multiples facteurs (MFA en anglais) est le gain important de sécurité, car pour chaque ajout de facteur sur un système, on va renforcer ses défenses.
La contrepartie à l'ajout de sécurité est le temps qui va être utilisé pour valider les étapes de sécurités.
Malgré l'augmentation de la sécurité, les systèmes MFA ne sont évidemment pas infaillible, il existe plusieurs façons de les craquer ou de les contourner.
Par exemple, l'interception des SMS envoyés, la lecture des cookies, ou l'option de récupération de mot de passe sont diverses méthodes permettant d'infiltrer un système MFA.
Simplicité & Accessibilité
Pour valider l'authentification avec les facteurs, il n'y a pas besoin de valider beaucoup d'étapes, les facteurs étant généralement accessibles.
Cette accessibilité est favorisée par l'utilisation du dispositif matériel (téléphone ou token), qui est facilement transportable et permet donc de générer le code à partir de n'importe quel emplacement.
Cependant, l'utilisation d'un tel dispositif engendre des problèmes (notamment la perte, l'endommagement, ou son oubli) qui peuvent provoquer l'incapacité à produire le facteur, et donc une erreur dans la procédure d’authentification à plusieurs facteurs.
Sources
- https://korben.info/authentification-double-facteur-2fa.html - https://www.wired.com/story/two-factor-authentication-apps-authy-google-authenticator/ - https://www.lemagit.fr/definition/Authentification-a-double-facteur - https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm