« Authentification deux facteurs » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Ligne 57 : Ligne 57 :
'''Authentifieur de type Time-based One-Time-Password TOTP'''
'''Authentifieur de type Time-based One-Time-Password TOTP'''


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 HOTP 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 de la création de code, dans son calcul pour générer le code. Cet 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ée à partir de l'heure ou le code est généré.


Cette algorithme est composé de trois paramètres:
Cet algorithme est composé de trois paramètres:
- une fonction de hachage
- une fonction d'hachage (par défaut SHA1)
- une clé secret K
- une clé secrète K
- une longueur de chaine D
- 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 10^D. Ceci nous donne notre token.
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 10^D. Ceci nous donne notre token.


//(HMAC fonction de SHA1)
//(HMAC fonction de SHA1)
Ligne 74 : Ligne 74 :
Sbits = tronquer(X)
Sbits = tronquer(X)


//(dec transforme Sbits en valeur décimal)
//(dec transforme Sbits en valeur décimale)


T = dec(Sbits) mod 10^D
T = dec(Sbits) mod 10^D
Ligne 80 : Ligne 80 :




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.
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 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 confirmer notre identité et on peut ainsi accéder au service.


= Utilité =
= Utilité =

Version du 25 novembre 2018 à 20:28

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.


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:

  - mémoriel:  ce sont ceux dont on doit se souvenir comme par exemple un mot de passe avec son nom d'utilisateur associé 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é.
  - physique:  ce que l'on est, notre voix ou encore nos empreintes biométriques.

On parle d'authentification simple lorsqu'on utilise qu'un seul élément pour s'identifier, le plus répandu étant le mot de passe, c'est rapide mais pas suffisamment sécurisé. On a alors pensé à ajouter un autre élément de préférence appartenant à un autre facteur pour apporter plus de sécurité. On parle d'authentification forte, mais aussi d'authentification à deux facteurs.

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.

PremierFacteur.jpg

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 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

Première version

On est dans un schéma d'authentification qui est souvent associer avec le premier. C'est un facteur de type matériel.

DeuxièmeFacteurV1.jpg

L'utilisateur souhaite accéder à un service. Pour ce faire il se connecte au service avec un nom d'utilisateur. 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 a son service.


Deuxième version

C'est un facteur de type matériel. Mais c'est un autre fonctionnement qui tend a se répandre de plus en plus.

DeuxièmeFacteurV2.jpg

Lorsque l'utilisateur va créer un compte il va se servir d'un token ou d'un 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 qui a générer. 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 HOTP 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 de la création de code, dans son calcul pour générer le code. Cet 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é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 10^D. Ceci nous donne notre token.

//(HMAC fonction de SHA1)

X= HMAC(K,CT)

//(tronquer va prendre 31 bits à partir de X)

Sbits = tronquer(X)

//(dec transforme Sbits en valeur décimale)

T = dec(Sbits) mod 10^D


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 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 confirmer notre identité et on peut ainsi accéder au service.

Utilité

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 authentification à 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 :

CB.png

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.

Domaine professionnel

Question d'accès :

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.).


Un autre point concernant l'accès concerne les réseaux privés, qui peuvent contenir des données sensibles pour l'entreprise.

En ligne

Contenu fréquemment utilisés :

Compte Google

Google Authenticator.png

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.

Steam Guard.png
De même, Blizzard utilise une authentification par une application mobile.

Authenticator Battlenet.png

Sources

  - https://www.lemagit.fr/definition/Authentification-a-double-facteur
  - https://en.wikipedia.org/wiki/Time-based_One-time_Password_algorithm