Qu’est-ce que l’authentification forte par jeton (token) ?

L’authentification forte par jeton s’appuie sur un protocole qui permet à un utilisateur de recevoir un jeton d’accès unique après avoir confirmé son identité. L’utilisateur bénéficie alors, pendant toute la durée de vie du jeton, d’un accès à l’application ou au site web pour lequel le jeton lui a été accordé. Il n’a ainsi plus besoin de saisir ses identifiants à chaque fois qu’il ouvre la même page web ou application, ou utilise toute autre ressource protégée par le même jeton.

Les jetons d’authentification fonctionnent à la manière d’un ticket d’entrée à validité limitée : ils accordent un accès en continu pendant leur durée de validité. Dès que l’utilisateur se déconnecte ou quitte l’application, le jeton est invalidé.

L’authentification forte par jeton est différente des mécanismes traditionnels basés sur un mot de passe ou un serveur. Les jetons constituent un deuxième niveau de sécurité et offrent aux administrateurs un contrôle accru sur l’ensemble des actions et opérations.

L’utilisation de jetons demande toutefois quelques connaissances en matière de codage. La plupart des développeurs se forment rapidement aux nouvelles techniques, mais la courbe d’apprentissage n’en est pas moins exigeante.

Rentrons maintenant dans le vif du sujet, et voyons si les jetons peuvent répondre à vos besoins et à ceux de votre entreprise. 

Bref historique des jetons d’authentification

L’authentification et l’autorisation sont deux concepts différents et néanmoins liés. Avant les jetons d’authentification, les mots de passe et les serveurs étaient la norme. On s’appuyait sur des méthodes traditionnelles pour garantir que seules les personnes habilitées pouvaient accéder à certains éléments à des moments précis. Ces méthodes n’étaient toutefois pas toujours efficaces.

Prenons l’exemple des mots de passe, qui impliquent généralement le processus suivant :

  • Génération manuelle. L’utilisateur invente une combinaison de lettres, de chiffres et de symboles.
  • Mémoire. L’utilisateur doit garder en mémoire cette combinaison unique.
  • Répétition. Chaque fois que l’utilisateur accède à une application ou à un site web, il doit saisir son mot de passe.

Le vol de mot de passe reste un phénomène courant. L’un des premiers cas répertoriés remonte d’ailleurs à 1962. Comme les gens ont du mal à se souvenir de tous leurs mots de passe, ils ont souvent recours à différentes astuces, parmi lesquelles :

  • Les noter. Conserver des mots de passe sur des bouts de papier épars est une véritable bombe à retardement en termes de sécurité.
  • Les réutiliser. Les gens ont tendance à utiliser le même mot de passe pour plusieurs services ou solutions. Si l’un d’entre eux est compromis, de nombreux comptes peuvent devenir vulnérables.
  • Les modifier légèrement. L’utilisateur change à peine une lettre ou un chiffre lorsqu’il est invité à modifier un mot de passe.

Les mots de passe nécessitent également d’être authentifiés par un serveur. Chaque fois qu’un utilisateur se connecte, l’ordinateur crée un enregistrement pour cette opération. La mémoire nécessaire ne fait donc qu’augmenter avec le temps.

Le principe de l’authentification par jeton est différent.

Dans ce cas, un service auxiliaire contrôle une requête du serveur. Une fois la vérification effectuée, le serveur émet un jeton et répond à la requête.

L’utilisateur peut avoir un mot de passe à retenir, mais le jeton offre une autre forme d’accès bien plus difficile à dérober ou à contourner. L’enregistrement de la session ne prend quant à lui aucune place sur le serveur. 

Trois types de jeton d’authentification

Tous les jetons d’authentification ont pour objet d’autoriser l’accès, mais chaque type a ses spécificités.

Les plus courants sont :

  • Les jetons par connexion : clés, disques, lecteurs et autres supports physiques connectés à un système pour en permettre l’accès. Si vous avez un jour utilisé un périphérique USB ou une carte à puce pour vous connecter à un système, vous avez déjà utilisé un jeton par connexion.
  • Les jetons sans contact : le terminal est suffisamment proche du serveur pour établir une connexion, mais sans contact physique. Le projet de bague biométrique de Microsoft en est un bon exemple.
  • Les jetons à distance : le terminal est capable de communiquer avec le serveur sur de très longues distances, même s’il n’entre jamais en contact avec un autre dispositif. S’il vous est arrivé d’utiliser votre téléphone dans le cadre d’une authentification à deux facteurs, vous avez déjà utilisé ce type de jeton.

Dans ces trois scénarios, l’utilisateur est celui qui doit initier le processus d’authentification, en saisissant un mot de passe ou en répondant à une question. Toutefois, même s’il remplit ces étapes préliminaires sans aucun problème, l’accès ne pourra lui être accordé sans l’intervention d’un jeton d’accès. 

L’authentification par jeton en quatre étapes simples

Si vous mettez en place un système d’authentification par jeton, les identifiants des utilisateurs ne seront vérifiés qu’une seule fois. Ils bénéficieront en contrepartie d’un jeton qui leur garantit un accès continu pendant une période que vous définissez vous-même.

La procédure se déroule de la manière suivante :

  • Requête : l’utilisateur demande l’accès à un serveur ou à une ressource protégée. Cela peut passer par une connexion via un mot de passe ou tout autre procédé de votre choix.
  • Vérification : le serveur détermine si l’accès doit ou non être accordé à cette personne. Cela peut consister à vérifier la combinaison nom d’utilisateur/mot de passe, ou bien à utiliser n’importe quel autre procédé de votre choix.
  • Génération d’un jeton : le serveur communique avec le terminal d’authentification, qu’il s’agisse d’une bague, d’une clé, d’un téléphone ou de tout autre dispositif. Une fois la vérification effectuée, le serveur émet un jeton et l’envoie à l’utilisateur.
  • Stockage : le navigateur de l’utilisateur conserve le jeton pendant toute la durée nécessaire.

Si l’utilisateur essaie d’accéder à une autre section du serveur, le jeton communique à nouveau avec le serveur. L’accès est alors autorisé ou refusé en fonction des caractéristiques du jeton.

Ce sont les administrateurs qui définissent les limites applicables aux jetons. Il est ainsi possible de créer des jetons à usage unique qui sont immédiatement détruits lorsque l’utilisateur se déconnecte ou bien de programmer la destruction automatique d’un jeton après une certaine durée.

Token Based Authentication

Une variante particulière : les jetons d’authentification JSON Web Token (JWT)

Dans la mesure où le nombre d’utilisateurs qui se connectent à des systèmes à partir d’applications web et mobiles ne fait qu’augmenter, les développeurs doivent pouvoir s’appuyer sur une méthode d’authentification sécurisée et adaptée à ces plateformes.

Face à cette difficulté, de nombreux développeurs optent pour les jetons JSON Web Token (JWT) pour leurs applications.

JWT est une norme ouverte qui permet une communication sûre et sécurisée entre deux parties. Les données sont vérifiées à l’aide d’une signature numérique et, si elles sont transmises via le protocole HTTP, elles restent protégées grâce au chiffrement.
 

Les jetons JWT se caractérisent par trois composants importants :

  1. En-tête : définit le type de jeton et l’algorithme de signature utilisé.
  2. Données utiles : spécifient l’émetteur du jeton, sa date d’expiration, etc.
  3. Signature : vérifie que le message n’a pas été modifié pendant son transit.

Ces différents éléments sont reliés par programmation. Le produit fini ressemble plus ou moins à ceci.

Ne vous laissez pas impressionner par le code JSON. Ce type de notation est courant lorsque les entités cherchent à échanger des données, et vous trouverez quantité de tutoriels pour vous aider. Si l’utilisation des jetons JSON vous intéresse, mais que vous n’avez jamais essayé ce langage, une ressource comme celle-ci pourrait vous être utile.

Avantages et inconvénients des jetons JWT

Les jetons JWT offrent de nombreux avantages.

  • Taille : les jetons écrits dans ce code sont minuscules et peuvent donc transiter rapidement entre deux entités.
  • Simplicité : les jetons peuvent être générés quasiment n’importe où, et ils n’ont pas besoin d’être vérifiés sur votre serveur.
  • Contrôle : vous pouvez définir les éléments auxquels un utilisateur a le droit d’accéder, pendant combien de temps et quelles actions il peut réaliser pendant cette période.

Il existe toutefois quelques inconvénients potentiels.

  • Clé unique : les jetons JWT reposent sur une clé unique. Si cette clé est compromise, le système tout entier devient vulnérable.
  • Complexité : ces jetons ne sont pas faciles à comprendre. Si un développeur ne possède pas de solides connaissances en matière d’algorithmes de signature cryptographique, il pourrait par inadvertance mettre tout le système en danger.
  • Limites : il n’est pas possible d’envoyer les messages automatiquement à tous les clients ni de gérer les clients côté serveur.

Pourquoi essayer les jetons d’authentification ?

Vous avez évalué votre stratégie actuelle et estimez que tout fonctionne à merveille. Alors pourquoi devriez-vous inclure quand même les jetons d’authentification dans vos systèmes ? Tout simplement parce que les développeurs qui sautent le pas bénéficient d’avantages significatifs.

Les jetons d’authentification sont ainsi une solution idéale pour les administrateurs de systèmes qui :

  • Accordent souvent des accès temporaires. Votre base d’utilisateurs varie en fonction des heures, des dates ou d’événements particuliers ? Accorder et supprimer des accès de manière répétée est donc particulièrement laborieux, et le recours aux jetons peut dans ce cas s’avérer très utile.

    C’est une approche qui conviendrait parfaitement aux administrateurs de bibliothèques universitaires en ligne, par exemple.

  • Nécessitent un accès granulaire. Votre serveur accorde l’accès en fonction de propriétés de document spécifiques, et non en fonction de propriétés utilisateurs. Les mots de passe ne permettent pas une approche aussi fine.

    Imaginez que vous gériez un journal en ligne. Votre objectif est que tout le monde puisse lire et commenter un seul document, et pas les autres. Cela serait possible à l’aide de jetons.

  • Sont une cible privilégiée des cyberpirates. Votre serveur contient des documents sensibles dont la divulgation porterait un grave préjudice à votre entreprise. Un simple mot de passe n’offrira pas une protection suffisante, mais un équipement matériel pourrait offrir un degré de protection supplémentaire.

Il existe de nombreux autres cas d’usage des jetons d’authentification, mais cette courte liste devrait déjà vous donner matière à réflexion. Et plus vous penserez aux avantages potentiels, plus il y a de chances que vous sautiez le pas.

Bonnes pratiques en matière de jetons d’authentification

Les jetons d’authentification n’ont d’autre objectif que d’améliorer vos protocoles de sécurité et de protéger votre serveur. Leur efficacité dépend toutefois de votre capacité à créer des processus qui tiennent compte du facteur sécurité.

Vos jetons d’authentification devraient ainsi être :

  • Privés. Les utilisateurs ne doivent pas pouvoir partager leurs jetons d’authentification physiques ou se les prêter entre départements. Tout comme ils ne communiqueraient pas leurs mots de passe, il est important qu’ils ne se transmettent pas entre eux un quelconque autre composant de votre système de sécurité.
  • Sûrs. La communication entre le jeton et votre serveur doit être sécurisée par une connexion HTTPS. Le chiffrement est une condition essentielle à la sécurité des jetons.
  • Testés. Testez régulièrement les jetons pour garantir que votre système est à la fois sûr et opérationnel. Si vous identifiez un problème, corrigez-le dans les plus brefs délais.
  • Adaptés. Choisissez le bon type de jeton pour votre cas d’usage spécifique. Par exemple, les jetons JWT ne sont pas les plus appropriés pour un fonctionnement en sessions. Ils peuvent également représenter un coût important, et les risques de sécurité liés à leur interception sont impossibles à éradiquer. Veillez à toujours utiliser les bons outils en fonction de vos objectifs.

Ne prenez pas à la légère vos décisions en matière de jetons d’authentification. Faites les recherches nécessaires, renseignez-vous auprès de vos homologues et mettez tout en œuvre pour la réussite de votre entreprise.

Nous sommes là pour vous aider

Alors que nous cherchons à toujours mieux sécuriser l’accès à nos domiciles et à nos bureaux, il est tout aussi important de mettre en place des mécanismes comme l’authentification par token ou jeton, et ce, afin de garantir que seules les personnes habilitées aient accès à nos ressources numériques.

Découvrez comment Okta peut vous aider à mieux sécuriser votre environnement.

Références

The World’s First Computer Password? It Was Useless Too. (Janvier 2012). Wired.

Microsoft Says This Magic Ring Could Make Passwords Obsolete. (Juin 2020). Small Business Trends.

JSON Web Token. (Mai 2015). Internet Engineering Task Force.

MWorking With JSON. Mozilla.

Security Token. Citi.

Security Token Definition. (Juin 2020). Investopedia.

Two-Factor Authentication. (Février 2020). Explain That Stuff.

When Are Tokens Securities? Some Questions from the Perplexed. (Décembre 2018). Harvard Law School Forum on Corporate Governance

Vous souhaitez en savoir plus ?

Okta Adaptive MFA est la première étape pour adopter une approche sans mot de passe.