Comment sécurisé l'activation de la 2FA ?

Par @jbnahan69
Grille fermée par une chaîne rouillé et un cadenas
https://www.pxfuel.com/en/desktop-wallpaper-ewmxi

Après avoir passé en revu quelques techniques de contournement de la double authentification, voyons comment ajouter l'activation de la double authentification de façon la plus sûre possible.

Quelque soit la méthode de double authentification utilisée, l'activation et la désactivation est une action dangereuse pour le compte de l'utilisateur.

Activé par la mauvaise personne après la corruption du compte, rend le compte inaccessible au propriétaire légitime.

 

Que faire avant la double authentification ?

Bien en amont de la mise en place de la double authentification, vous devez pouvoir lister toutes les sessions actives pour chaque utilisateur avec la capacité de fermer une session côté serveur.

Une  session peut être une session utilisant un cookie de session, ou un token OAuth utilisé pour les API ou même un token fixe.

 

La procédure d'activation de la double authentification

Lorsqu'un utilisateur souhaite activer la double authentification, le compte de l'utilisateur doit répondre à certain critère:

  • Le compte doit être activé
  • L'adresse courriel doit être validé
  • Le mot de passe doit être défini

Le dernier critère peut paraître étrange, mais cela élimine les comptes utilisant l'authentification tierce (Google, Facebook, Apple...) qui ne sont pas éligible à cette double authentification.

Pour accéder à la page d'activation de la double authentification, l'utilisateur doit être connecté à son compte et la première chose à lui demander son mot de passe et le vérifier côté serveur. De cette façon, vous êtes sûr que la personne réalisant l'action dispose déjà du mot de passe.

L'activation passe par le choix de la méthode de double authentification. A vous de choisir quelle option proposer.

Une fois l'option choisie, il est nécessaire de réaliser une première vérification de double authentification pour s'assurer que tout fonctionne bien. Une fois cette vérification réalisée la méthode est réputée valide mais non encore active.

Avant d'activer la méthode de double authentification sur le compte de l'utilisateur, il est nécessaire de vérifier l'existence des codes de récupération du compte.

Si les codes existent déjà, l'activation de la double authentification peut être réalisée.

Les codes de récupération

Les codes de récupération permettent la connexion à un compte sans utiliser la double authentification. Pour chaque utilisateur, l'application génère plus d'une dizaine de codes aléatoires (et cryptographiquement fiable) qui sont fournis en clair à l'utilisateur une seule fois (l'utilisateur doit les conserver de façon sécurisé).

Ensuite, ils sont stockés dans l'application comme un mot de passe. C'est à dire haché par un algorithme bien configuré !

Lors de leur utilisation, le code fourni par l'utilisateur sera également haché puis comparé aux codes stockés. 

Lors de la validation de l'un des codes de récupération, ce code est réputé inutilisable et doit être détruit.

Une fois les codes de récupération stockés de façon sécurisée, l'activation de la double authentification peut être effectuée sur le compte.

Activation définitive de la double authentification

Une fois toutes les étapes d'activation réalisées, il est temps de s'assurer que tout accès au compte est légitime. Pour cela toutes les sessions connues sont fermées, les token OAuth et les token fixe sont révoqués.

Dans le cas où une session inconnue existerait encore, la réponse systématique serait la fermeture de la session. Un cookie de session inconnu ou un token inconnu doit être considéré comme un identifiant de session invalide même avant l'usage de la double authentification.

Même sur la session ayant activé la double authentification, la session doit être fermée. L'utilisateur devra ouvrir de nouvelle session sur tous ces appareils en passant l'étape de la double authentification.

Les tokens OAuth seront également re-générés pour les applications ayant accès aux données de l'utilisateur.

Souvent le plus gênant, c'est le changement des tokens fixes pour les API. Mais ça vaut le coup ! Car seules les applications qui sont réellement utilisées auront un nouveau token.

Conclusion

Même si la fonctionnalité semble facile à mettre en œuvre, penser à tous les petits détails est très important et en oublier un peut ouvrir une faille de sécurité même s'il semble anodin.

Pour ceux qui souhaitent se lancer dans l'aventure, je suis à votre disposition pour vous aider lors des différentes étapes de la mise en œuvre de cette fonctionnalité.

Author avatar
Jean-Baptiste Nahan

Consultant Expert Web, j'aide les entreprises ayant des difficultés avec leur projet Web (PHP, Symfony, Sylius).

@jbnahan69 | Macintoshplus | Linkedin | JB Dev Labs