Archives de catégorie : Identité & accès

Facteur d’authentification

L’authentification dans un système informatique est des opérations les plus essentielles pour la sécurité globale de celui-ci. S’authentifier, c’est prouver qui on est au système. Cela comprend en réalité deux actions, qui ne sont pas que des élucubrations théoriques ni des lubies de chercheurs en sécurité : l’identification et l’authentification. Elles peuvent parfois être réalisées en une seule opération, parfois en deux.

L’identification consiste à donner au système une identité. C’est en fonction de cette identité qu’on aura plus ou moins de droits sur le système, et qu’on pourra mettre en œuvre l’ensemble des mécanismes de protection pour empêcher ou autoriser des actions sur le systèmes (lecture ou modification d’information, exécution de tâches, etc.).

Mais il ne suffit pas de dire qui on est, même en jurant sur la Bible. Ça serait trop facile sinon : je dis que je suis l’administrateur, et hop, j’ai tous les droits. Non, il faut aussi prouver que je suis bien celui que je prétends être ! Il existe plusieurs façons de le faire, plus ou moins sûres. Aucune de ces méthodes ne peut être parfaite, dans ce bas-monde ; chacune peut être plus ou moins sûre, plus ou moins facile à utiliser et malheureusement les méthodes les plus sûres sont souvent les plus pénibles à utiliser.

L’exemple le plus commun est celui du mot de passe : je donne mon identité (le « login ») et je prouve qu’il s’agit de moi en donnant un code secret (le « mot de passe »). Ce secret n’est censé être connu que de l’utilisateur et du système, et c’est cela qui prouve l’identité de l’utilisateur : normalement, seul l’utilisateur connaît ce secret en dehors du système.

Un bon facteur

Le bon facteur d’authentification, du point de vue théorique, est celui qui prouve de façon certainel’identité d’un utilisateur.

Dans un monde parfait, où il n’y aurait aucun malfaisant, où personne ne chercherait à prendre la place d’un autre pour voler des informations ou des valeurs quelconques à autrui, tout irait bien. Au risque de surprendre la plupart des lecteurs, ça n’est pas le cas. Il y a même toute une économie liée à la criminalité informatique, où le vol de session est une étape incontournable pour les attaquants.

Compromission

Donc les criminels vont chercher à usurper votre identité, en s’attaquant aux facteurs d’authentification que vous possédez. Et pour cela il existe différentes techniques, auxquelles nous ne pensons pas forcément.

Prenons l’image d’un coffre-fort : seul celui qui détient la clé peut l’ouvrir. Théoriquement. Mais un voleur peut tenter de vous voler la clé, mais s’il n’y arrive pas, il peut aussi utiliser un chalumeau pour passer en force, écouter le cliquetis du mécanisme pour trouver la combinaison, essayer de retrouver les caractéristiques de la clé pour la reproduire (référence constructeur, prise d’empreintes ou de photos sous différents angles), etc.

Il faut donc partir du principe qu’une compromission de notre facteur d’authentification est toujours envisageable.

Caractéristiques

Un facteur d’authentification doit posséder plusieurs caractéristiques. Il doit notamment être, idéalement :

  1. Discriminant (voire unique) : si tout le monde a le même secret, ou si de trop nombreux utilisateurs ont le même secret, il va devenir difficile d’être certain de l’identité de l’utilisateur puisque plusieurs utilisateurs ont le même secret !
  2. Discriminant (encore) : il faut éviter d’utiliser le même facteur sur plusieurs systèmes. Car si ce facteur est compromis, il faut le changer sur tous les systèmes où on l’utilise.
  3. Difficile à deviner ou à retrouver : même s’il reste secret, un pirate va tenter de retrouver le secret. Il peut par exemple tester tout un tas de combinaisons de mots de passe (au hasard ou méthodiquement) pour tenter de deviner ce fameux secret ; tout est alors une question de temps, de moyen.
  4. Difficile à reproduire : la difficulté dépend du type de facteur. Un mot de passe complexe est difficile à retenir, même si on voit l’utilisateur le taper. La clé d’un coffre-fort est difficile à copier, car il faut disposer de l’original au moins le temps d’en faire la copie.
  5. Répudiable, en cas de compromission : en partant du principe que les criminels ont de l’imagination, il est toujours possible que le facteur d’authentification soit irrémédiablement compromis. Il faut alors pouvoir le modifier.

Si la clé de notre coffre-fort était volée, ou si on suspectait qu’elle ait pu être reproduite, il conviendrait alors de changer la serrure du coffre et le jeu de clé pouvant l’ouvrir. Idem pour un mot de passe. Et si on a utilisé la même clé sur plusieurs coffres, l’opération sera à répéter sur chacun des coffres.

Usage

Il est rare qu’un facteur d’authentification soit parfait. En pratique, c’est même impossible. Il faut souvent confronter ses caractéristiques au cas d’usage envisagé, pour voir s’il convient et s’il couvre les risques redoutés. Par exemple, dans un cadre bancaire, il est important de pouvoir répudier un facteur d’authentification, pour éviter qu’un malfaiteur puisse passer sans fin des opérations à son bénéfice depuis votre compte.

Multiplication des facteurs

Un bon moyen de pallier à certaines faiblesses d’un facteur consiste à lui ajouter un second facteur d’authentification.

Biométrie

Voir aussi Le doigt dans l’œil de la biométrie (nextinpact.com).

La biométrie n’est pas, selon moi, adaptée aux processus informatiques. Point final. Et je ne parle même pas des problèmes d’implémentation1… Alors pourquoi ça a le vent en poupe ?

  • Parce qu’il existe désormais des dispositifs grand public, comme sur les smartphones ;
  • Parce que c’est confortable ;
  • Parce que ça donne un faux sentiment de sécurité ;
  • Parce que le marketing crie plus fort que la sécurité.

Alors pourquoi on nous en vend autant ? Parce qu’on peut en vendre, justement. Avant on ne pouvait pas, car les lecteurs biométriques étaient trop chers. Maintenant qu’ils sont bon marché, on profite de leur prétendue sécurité, issue probablement de l’image véhiculée par le cinéma de science fiction.

Continuer la lecture →

FIDO

FIDO est une alliance créée (en 2012) à l’origine par PayPal et quelques autres acteurs afin d’essayer d’établir un protocole d’authentification sans mot de passe.

Dès 2013, Google, Yubico et NXP1 s’y joignent pour répondre à une problématique forte chez Google de lutte contre le phishing. Pour cela, l’industrie avait besoin d’un standard pour une authentification « forte », et très vite l’idée d’un facteur matériel a été présentée par ces acteurs, avec un protocole ouvert et donc utilisable par tous.

L’acronyme FIDO correspond à Fast IDentity Online, ce qui souligne bien l’orientation web des protocoles. Les grandes étapes historiques de cette alliance sont ici.

FIDO « 1 »

Le besoin initial était de renforcer l’authentification sur des services web ; il était donc naturel d’introduire un second facteur en complément du mot de passe. Fin 2014, les normes FIDO UAF et FIDO U2F sont publiées simultanément.

Premiers protocoles

UAF

UAF correspond à Universal Authentication Framework, qui propose un protocole d’authentification sans mot de passe, à base de cryptographie.

U2F

U2F est la norme concernant le second facteur d’authentification, ou Universal 2nd Factor en anglais, également à base de cryptographie.

A quoi ça sert ?

Grâce à ces normes, on garantit la valeur de l’authentification puisqu’on sait comment cette dernière est établie. Garantir ne signifie pas que l’authentification est parfaite mais qu’on en connaît les mécanismes, et qu’on peut ainsi gérer correctement le risque associé.

Certification

En bonus, une certification peut ainsi être réalisée sur les dispositifs concernés : en utilisant un dispositif FIDO, on sait donc parfaitement comment ce dernier fonctionne. Par la suite, les travaux concernant la certification vont continuer pour suivre l’évolution des technologies et l’accompagner.

La suite

Des travaux viendront compléter ces premières normes, en standardisant les échanges via Bluetooth et NFC, en incluant la biométrie, etc.

FIDO2

En 2016, l’alliance poursuit son travail avec un objectif ambitieux, à savoir créer une norme reconnue pour l’authentification forte sur internet (sur le web).

Pour cela, l’alliance pouvait se baser sur les travaux de la première norme et en 2018 le protocole fut intégré comme candidate recommandation par le W3C, ouvrant la porte à la reconnaissance en tant que standard international de ce qui était en train de devenir FIDO2.

FIDO2 vs. webAuthn

FIDO2 est un ensemble de spécifications, comprenant deux parties :

  • webAuthn qui est une ensemble de spécifications du W3C, dont le but est d’établir des standards pour le Web ;
  • CATP qui est un ensemble de spécifications de l’alliance FIDO décrivant un protocole d’authentification entre un client et un dispositif d’authentification communiquant via USB, Bluetooth ou NFC.

Les avantages selon FIDO

Sécurité

Sécurité

FIDO utilise un mécanisme cryptographique pour assurer l’authentification à un site. Chaque authentifiant est unique pour chaque site, le secret ne quittant jamais le dispositif FIDO.

Facilité d’utilisation

Facilité d’utilisation

La facilité d’utilisation provient du dispositif FIDO lui-même, qui gère la partie cryptographique avec le site web. L’authentification sur le dispositif lui-même peut être celui que le client désire (parmi ce qui existe), et est réalisée localement, sans échange avec le serveur web.

Types d’authentification pris en charge

FIDO versions 1 et 2 permettent plusieurs types d’authentification, en combinant les différentes possibilités. En ce ce qui concerne FIDO2 :

  • Un seul facteur : identité + identifiant (« credential ») FIDO2
  • Second facteur (complément du 1er) : identité + mot de passe + identifiant FIDO2
  • Un seul facteur, sans mot de passe : clé cryptographique (« resident key ») FIDO2 stockée sur le dispositif FIDO2
  • Deux facteurs (MFA) « sans mot de passe » : clé cryptographique FIDO2 + code PIN

Les dispositifs FIDO2 sont également rétro-compatibles avec l’authentification FIDO U2F :

  • Un seul facteur : identité + identifiant FIDO U2F
  • Second facteur: identité + mot de passe + identifiant FIDO2 U2F

Points clés

  • Les identifiants FIDO2 sont basés sur une paire de clé cryptographique de type asymétrique.
  • Le fournisseur d’identité (« identity provider », ou IdP) valide l’identité de l’utilisateur et associe une clé publique FIDO2 à un compte utilisateur (phase d’enregistrement, souvent appelée improprement enrolement en français).
  • L’identifiant (« credential ») FIDO2 peut être généré sur un support matériel (clé physique, smartphone, PC portable…) ou par logiciel, selon la politique choisie.
  • L’authentification utilise une clé cryptographique liée au dispositif d’authentification et, en option, un autre facteur qui peut être de type « ce que je sais » (code PIN) ou « ce que je suis » (biométrie). Cet identifiant complémentaire (PIN ou biométrie) n’est pas diffusé entre les dispositifs d’authentification et n’est pas partagé avec aucun serveur. Il est stocké uniquement sur le dispositif d’authentification.
  • La clé privée de l’utilisateur (de la paire de clé asymétrique) ne quitte jamais le dispositif d’authentification. Le serveur d’authentification ne conserve que la clé publique associée au compte de l’utilisateur durant la phase d’enregistrement.
  • La saisie du code PIN, la présentation de la biométrie, ou l’appui sur le bouton présent sur le dispositif sert à débloquer la clé privée afin de signer cryptographiquement les données envoyées au fournisseur d’identité dans l’assertion. Les données signées contiennent également l’indication d’utilisation ou non d’un code PIN ou de la biométrie. La demande d’authentification se poursuit à partir du moment que le fournisseur d’identité a vérifié l’assertion d’authentification.

Hello ?

Sources

Sujets connexes

Authentification web

A regarder :

  1. La théorie, l’alliance
  2. Principes, programmes, working Groups
  3. L’architecture
  4. Sécurité du stockage
  5. Versus biométrie
  6. Inter-opérabilité
  7. Développements, API

Attaques 2FA

Autres ressources

Mot de passe

Le mot de passe est un élément extrêmement sensible dans la chaîne de la sécurité. C’est le point faible le plus souvent rencontré et, forcément, le plus souvent utilisé pour les piratages et les actes malveillants. Il ne sert à rien de sécuriser sa connexion SSH si vous laissez un mot de passe faible…

Continuer la lecture →

OAuth

OAuth est un protocole d’authentification permettant de déléguer l’authentification à un service web responsable du compte utilisateur. Il est décrit dans une RFC, la RFC6749.

Comme SAML, le jeton envoyé au service où on veut s’identifier est validé par un procédé cryptographique de signature. Ici, le format est JWT (JSON Web Token), à base de JSON puisque XML était déjà ringard, avant d’être réinventé (en moins bien) en tant que JSON.

L’autorisation est accordée sur un scope précis : il s’agit des actions qu’on peut appeler, comme lire les informations d’un client, les modifier, les supprimer, etc. Cette autorisation est destinée à une audience (= la cible, application ou API) précise, pour une durée déterminée.

Processus

Le client final doit passer par plusieurs étapes (et plusieurs acteurs) avant d’accéder à la ressource.

  1. Il demande au propriétaire de la ressource (resource owner), qui indique si le client est autorisé ou pas à accéder à la ressource demandée.
  2. Avec cette autorisation, le client demande à un serveur d’authentification un jeton d’accès aux ressources souhaitées.
  3. Enfin, avec le jeton d’accès fourni par le serveur d’authentification, il accède à la ressource demandée.

Tout ceci est spécifié dans la RFC6749.

Sources et informations

Voir aussi

IAM

Quelques définitions

Afin d’avoir les idées claires, voici quelques définitions aidant à appréhender la structuration d’une gestion de droits informatiques. Il est également utile d’être à l’aise avec la notion de DICP.

  • Un rôle est un ensemble d’habilitations nécessaires à un type d’utilisation d’une ressource.
  • Un rôle applicatif est un rôle propre à une (et une seule) application.
  • Un profil est un ensemble de rôles, souvent regroupés par métier.
  • L’habilitation est le droit d’effectuer une action sur une ressource, souvent associée à un périmètre (temporel, fonctionnel, géographique). C’est le niveau « unitaire ».

Pour une gestion claire, les rôles ne devraient être liés qu’à des profils, lesquels correspondent généralement à une fonction exercée au sein d’une organisation.

Principes de base

  • Identifier les systèmes et données sensibles
  • Limiter les accès à privilèges
  • Contrôler les utilisateurs et les systèmes

Document de référence

Voir aussi

  • SAML v2.0
  • OAuth 2.0
  • OpenID et OpenID Connect
  • XACML (eXtensible Access Control Markup Language), langage permettant de définir :
    • des autorisations ou des contrôles d’accès basés sur des attributs,
    • des contrôles d’accès à des points de décision (PDP, Policy Decision Point) puis de les transmettre à des points d’application (PEP, Policy Enforcement Point).
  • SCIM (System for Cross-domain Identity Management), système d’échanges de données, d’attributs, entre systèmes externes.

XACML permet par exemple de définir les droits d’un utilisateur chez un fournisseur cloud à partir de son IAM interne.