Authentification deux facteurs
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 3 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
On est dans le schéma classique qui est aussi le moyen le plus répandu pour s'authentifier. C'est un facteur de type mémoriel.
L'utilisateur va s'authentifier en rentrant son username et le password associé auprès du service auquel il souhaite accéder. Le service va alors faire passer le password dans une fonction de hachage et l'envoyé au serveur dudit service. Le serveur va alors comparer le password qui a 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
Première version
On est dans un schéma d'authentification qui est souvent associé au premier. C'est un facteur de type matériel.
L'utilisateur souhaite accéder à un service. Pour ce faire il se connecte au service avec un username. Le serveur va alors créer un code, suite de chiffres et/ou lettres, générer aléatoirement et qui va être valide durant un certain temps. Il va ensuite l'envoyer à l'utilisateur via un moyen choisis par ce même utilisateur lors de la création de compte. L'utilisateur va alors recevoir ce code via mail/SMS ou encore avec une notification sur une application mobile avec le choix de valider la connexion ou non. L'utilisateur va alors rentrer le code ou accepter la notification pour se connecter à son service.
Deuxième version
C'est un facteur de type matériel. Mais c'est un autre fonctionnement qui tend à se répandre de plus en plus.
Lorsque l'utilisateur va créer un compte il va se servir d'un token ou d'une application mobile, qu'il va synchroniser avec le serveur du service pour générer toujours le même code au même moment. 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. 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 qu'il a généré. Si c'est le cas l'utilisateur peut alors 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'entreprise proposant un authentificateur/token. On a donc , avec temps 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
On se sert donc dans un premier temps du premier facteur d'authentification mémorielle qui sert à 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 le bon mot de passe associé au compte, 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 confirmer notre identité et on peut ainsi 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ériel 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 a 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 authentification 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.
Utilité
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