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

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
 
(59 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. 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 savoir qui est l'utilisateur actuellement.


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


'''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:
== Fonctionnement ==
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é.
'''Premier Facteur'''


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

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.


[[Fichier:PremierFacteur.jpg]]
[[Fichier: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.


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'''
==Deuxième Facteur==


Première version:
===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.
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. Pour ce faire il se connecte au service avec un nom d'utilisateur.
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/ou lettres, générer aléatoirement et qui va être valide durant un certain temps.
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 ce même utilisateur lors de la création de compte.
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.
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.
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===


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]]
Deuxième version:


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.
C'est un facteur de type matériel. Mais c'est un autre fonctionnement qui tend a se répandre de plus en plus.
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é.
[[Fichier:DeuxièmeFacteurV2.jpg]]
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'''

[[Fichier:Time-limited one time password.gif]]

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


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 <math>10^D</math>. Ceci nous donne notre token.

<math>X= HMAC(K,CT) </math> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HMAC fonction de SHA1

<math>Sbits = tronquer(X) </math> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tronquer va prendre 31 bits à partir de X

<math>T = dec(Sbits)</math>&nbsp;<math>mod</math>&nbsp;<math>10^D</math> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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 :

[[Fichier:CB.png]]
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.
[[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]]


'''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.
[[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.
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.


== Utilité ==


==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.
== Exemples ==




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.


== Conclusion ==
= 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://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.

PremierFacteur.jpg

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.

DeuxièmeFacteurV1.jpg

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.

DeuxièmeFacteurV2.jpg

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

Time-limited one time password.gif

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 :

   CB.png

   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.

   Token.png

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.

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

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

   Authenticator Battlenet.png

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