L’authentification, la gestion d’identité, et le contrôle d’accès en général : ça a l’air si simple ! Une adresse email, un mot de passe, et ça marche !
Oui … mais non. Quand on commence à gérer ce genre de problématique, on voit rapidement qu’il y a beaucoup de choses à prendre en compte. Comment stocke-t-on les mots de passe correctement ? L’intègre au système du client est-elle possible ? Comment gérer les droits des utilisateurs ?
Afin de répondre à toutes ces questions, je vous propose de faire un petit tour d’horizon au travers d’une petite série d’articles, afin de voir ces différents aspects le mieux possible, et faire quelques démonstrations. Mais d’abord, une revue rapide des concepts fondamentaux de l’authentification !
Table des matières
Qu’est-ce que la gestion d’identité ?
La gestion d’identité, c’est gérer les différents individus qui vont utiliser un système, et savoir quels vont être leurs droits. C’est un concept central en termes de sécurité. La gestion d’identité concerne, par exemple :
- le recensement des différents individus
- la mise en place les droits (via le système de rôles et de groupes tel que RBAC par exemple)
- la mise en place les moyens d’authentification nécessaires
- les protocoles de sécurités annexes (bannissement, reporting, etc.).
La gestion d’identité est aussi intimement liée au contrôle d’accès.
Voici quelques exemples parlants de contrôle d’accès :
- Lorsque vous souhaitez rentrer chez vous, vous utilisez une clé et/ou un code pour l’alarme. Vous supposez que seuls ceux qui sont autorisés peuvent faire de même.
- Les accréditations de l’armée, avec les dossiers confidentiels, secrets défense, etc. En fonction de l’accréditation de chacun, les accès aux documents et aux lieux sont différents.
La gestion d’identité, c’est un sujet vaste, mais qui a pour point principal la vérification de l’identité d’une personne afin de lui attribuer des autorisations. Et on retrouve cela dans le concept du AAA.
Le concept du AAA
En anglais, l’acronyme AAA (ne pas confondre avec AAAAA …) permet de bien entrevoir la base de la gestion d’identité :
- Authentication (authentification) : avant toute chose, pour gérer une identité, il faut s’assurer de l’identité en question. Je peux déclarer que je suis X : c’est de l’identification. Mais qu’est-ce qui le prouve? L’authentification, c’est justement les moyens que l’on met en place pour tenter de s’assurer que la personne est bien celle qu’elle prétend être. Ces moyens peuvent être multiples, et plus ou moins efficaces / contournables. Le plus connu est le mot de passe. Un exemple concret est la carte d’identité ou votre passeport, permettant de vous authentifier via votre photo.
- Authorization (autorisation) : une fois que la personne est authentifiée, on lui délivre des droits d’accès sur plusieurs zones / applications de votre système d’information. Pour reprendre l’exemple précédent, c’est comme si le gardien d’un manoir, après vous avoir authentifié via votre passeport, vous donnait un jeu de clés vous permettant d’accéder aux pièces auxquelles vous avez accès.
- Accounting (traçabilité) : la dernière étape consiste à surveiller (par le biais de journaux / logs notamment) l’activité d’une personne sur le système. Savoir comment la personne s’est connectée, et quelles sont les actions d’administration qu’elle a pu effectuer. Le but n’est pas de tracer une personne à des fins marketing, mais bien au contraire de protéger le système. Par exemple, si une personne se met à supprimer énormément de données à une heure impromptue, c’est peut-être une attaque, et cela permet de lever une alerte et de bloquer temporairement le compte.
Et du coup, ça sert à quoi?
La gestion d’identité donc, c’est en partie répondre à ces questions :
- Qui souhaite accéder au système?
- Comment se connecte-t-il?
- Quand et depuis où se connecte-t-il?
- A quoi a-t-il droit?
On va d’abord se concentrer sur la première étape : l’authentification et ses concepts. Par la suite, nous aborderons des exemples concrets d’application sur l’authentification. Vous pouvez aussi retrouver des exemples d’utilisation dans la liste de mes sources, rappelées en fin d’article.
Les différentes formes d’authentification
Nous avons vu que l’authentification, c’est ce qui permet de confirmer la phase d’identification, de prouver l’identité qu’on a donnée à la base. Pour cela, il existe évidemment plusieurs moyens que l’on peut demander à la personne afin de confirmer son identité.
- Ce qu’il sait : C’est le moyen le plus communément utilisé. On le retrouve sur les ordinateurs et les sites avec le mot de passe, ou sur les cartes bancaires et les téléphones avec le code PIN par exemple.
- Ce qu’il a : Cette méthode est courante depuis quelques années grâce aux banques. Si vous effectuez des achats par carte bancaire, vous avez probablement déjà eu des codes de vérifications de votre banque envoyés à votre téléphone (3-D secure). Ce process est justement utilisé pour que votre banque vous authentifie grâce à ce que vous possédez. On va aussi parler, par ce biais, des cartes à puce, badges, ou encore des clés de sécurité telle que les clés Yubico.
- Ce qu’il est : on est ici sur la méthode la plus fiable, mais aussi la plus complexe à utiliser et la moins courante. On parle ici de tout ce qui est authentification biométrique. Les exemples sont légion : lecteur d’empreinte (police, téléphone, PC, …), analyse de l’iris ou de la rétine, forme du visage (avec Windows Hello par exemple)
Du coup, quelle méthode d’authentification utiliser?
C’est la grande question : quelle est la meilleure? Chaque méthode a ses faiblesses qui peuvent être gênantes :
- Ce que l’on sait : ça se devine. On le répétera jamais assez, votre mot de passe est votre faiblesse. Les mots de passe courts et/ou trop simples peuvent se deviner par bruteforce. Même sans parler de brute force, il est possible de deviner votre mot de passe par attaque par dictionnaire. Je ne parle même pas de la simplicité des codes PIN, et des fameux post-it. Et dans tous les cas, même si vous utilisez un mot de passe fort et aléatoire avec par exemple un gestionnaire de mot de passe, il est possible que ce mot de passe soit récupéré lors d’attaque de phishing ou autre.
- Ce que l’on a : un téléphone, ou une clé, malheureusement ça se vole, « s’emprunte », ou se copie. L’avantage cependant, c’est qu’un pirate doit avoir physiquement accès à ce que vous avez (donc collègue, « amis », ou quelqu’un qui vous a vraiment ciblé). C’est donc plus dur de se faire attaquer, mais c’est souvent plus cher aussi (par exemple, une clé de sécurité peut coûter entre 50 et 100€).
- Ce que l’on est : là, on commence à être sur une protection difficile à voler. A part dans les films, on voit rarement quelqu’un se faire couper le doigt pour activer le lecteur d’empreinte de sa machine. Cependant, si ce type de technique marche plutôt bien, il faut être équipé d’un capteur pour en bénéficier. De plus, un bon capteur est souvent onéreux, et il existe parfois quelques loupés, comme dans le cas de Windows Hello et la webcam.
Le gestionnaire de mot de passe
C’est un peu l’outil de base lorsqu’on parle de sécurité de l’authentification. C’est pratique, très efficace, pas cher (souvent, l’offre « personnel » est gratuite, et seul le partage de mot de passes en famille ou entreprise devient payant). Les acteurs connus sont par exemple Lastpass ou Nordpass, bien que beaucoup d’autres éditeurs mettent en avant leurs solutions.
Les points positifs :
- Très facile d’utilisation (s’intègre sur vos navigateurs, mobile, etc.)
- Très sécurisé (Lastpass vous explique dans cet article comment ils garantissent votre sécurité et votre vie privée)
- Ça simplifie la vie (vous ne retenez plus qu’un mot de passe complexe ! Et vous avez chacun de vos sites / applications protégés par un mot de passe complexe ET différent)
- Ca permet même de savoir où vous en êtes d’un point de vue sécurité (est-ce que votre mot de passe pour ce service est compromis? est-ce que vous utilisez des mots de passe simples? est-ce que vous avez bien des mots de passe différents pour chaque service?)
Les contres :
- Ça vous demande d’apprendre à utiliser un nouveau service. Mais à moins que vous n’utilisiez le même mot de passe partout (auquel cas, cet article n’est pas forcement le plus adapté pour vous), alors je pense que le gain d’énergie à avoir X mots de passe complexe différents sans pattern sur chaque service est largement rentabilisé !
Qu’est-ce que le passwordless?
Le passwordless est un terme que l’on entend de plus en plus, et pour cause : les méthodes d’authentification basées sur ce que l’on possède et/ou ce que l’on est se démocratisent ! Ainsi, il est de plus en plus facile de demander ce type d’authentification, plutôt qu’un mot de passe. On reprend l’exemple de Windows Hello pour les machines, mais il est aussi possible de parler de FIDO2 et WebAuthn pour les applications web par exemple. Avec le passwordless, il est possible de se connecter à votre site préféré en branchant simplement une clé accrochée à votre porte-clé, sans enregistrer le mot de passe et/ou la session sur la machine. La sécurité est souvent bien plus forte, et plus simple, notamment avec des utilisateurs qui ont tendance à privilégier un mot de passe simple et commun à l’ensemble des sites.
L’authentification biométrique
L’authentification biométrique est devenue très présente ces dernières années, notamment sur les téléphones portables. Un index suffit souvent à déverrouiller nos appareils !
Si ce type d’authentification est simple d’utilisation, et très efficace, elle peut aussi être sujette à des problèmes de faux positifs ou de faux négatifs en fonction de la qualité du capteur. Aussi, on a souvent une méthode d’authentification de « backup », qui elle, peut être facilement faillible. Il faut donc particulièrement vigilant sur l’ensemble des méthodes d’authentifications utilisées, et notamment quels sont les moyens de « contournement » lorsque la méthode d’authentification privilégiée est indisponible (oublie, perte, vol…).
OTP (one time password) VS clé FIDO
Le One Time Password (ou OTP) est quelque chose de très fréquent de nos jours, notamment depuis le paiement en ligne avec 3d secure. Il permet de renforcer la sécurité par la vérification de la présence de l’utilisateur à côté de son appareil. Mais c’est souvent une solution couteuse à implémenter, car elle demande l’envoi d’un SMS à chaque fois.
Suite à cela, une nouvelle méthode par OTP est apparue : l’OTP par application. Plusieurs solutions existent, notamment chez Google ou Microsoft. Elle permet d’enregistrer pour chacun des services désirés un certificat de sécurité, qui permettra de générer un code d’authentification unique toutes les 30 secondes. Ce code sera utilisé pour s’authentifier, et garantit donc que l’utilisateur cherchant à se connecter à bien son téléphone à porté de main (tout du moins, s’il n’a pas transmis le QRCode ou les codes de récupérations du certificat de sécurité ..).
Le problème de ce type de solution, c’est qu’on a un certificat différent, et donc un code différent, pour chaque couple compte / service enregistré sur le téléphone. Aussi, quand on est vigilant à la sécurité et qu’on active l’OTP sur chaque site, on arrive rapidement à une liste importante à gérer …
Aussi, la troisième solution est la clé de sécurité, déjà présentée dans l’article sur le protocole de sécurité FIDO. L’avantage de ce type d’appareil, c’est qu’il gère en interne l’ensemble des certificats, et est capable de restituer le bon automatiquement. Lorsqu’on commence à multiplier les services, c’est un excellent avantage. Le principal problème est qu’à l’heure actuelle, encore très peu de service propose l’utilisation de ce protocole. Mais l’adoption de WebAuthN comme standard, et la prise en compte de plus en plus importante de l’importance de la sécurité font que le protocole connait un fort essor.
L’authentification multi-facteurs (MFA)
Après tout ce qu’on a dit, on serait tenté de dire que la meilleure solution, ça reste le biométrique. Ce n’est pas faux, mais ce n’est pas toujours évident. Et surtout, c’est insuffisant.
Dans la mesure du possible, vous devez combiner les méthodes d’authentification. C’est le principe du MFA (Multi-Factor Authentication). Cela consiste à demander à l’utilisateur d’utiliser au moins 2 méthodes pour d’authentifier (on parle alors de 2FA).
Attention : il est crucial que les méthodes soient différentes afin de ne pas présenter les mêmes risques d’être compromises !
Le schéma ci-dessous est un modèle de maturité proposée sur la sécurité de l’authentification des utilisateurs, en fonction des moyens mis en place. Comme on l’a vu dans cet article, un des points important et facile à mettre en place est l’adoption d’un gestionnaire de mot de passe, notamment car le mot de passe reste tout de même une base importante. Une des raisons est que beaucoup de solutions ne proposent pas encore le MFA, ou en tout cas, pas tous les types de MFA souhaité.
Une fois la solution mise en place, c’est l’adoption de MFA par clé de sécurité, ou à minima OTP, qui doit être privilégiée.
Attention 2 : L’utilisation de la 2FA basés sur une app ou un SMS protège plutôt bien d’un certain nombre d’attaques, mais gardez en tête qu’un des risques est de se faire voler son token de session comme dans l’explication de cette attaque par Microsoft. La mise en place d’une authentification forte ne doit pas abaisser notre vigilance !