Featured image of post Windows Hello for Business under the hood

Windows Hello for Business under the hood

Windows Hello est une solution permettant de se connecter à un appareil Windows avec des données biométriques ou un code PIN à la place d’un mot de passe. On parle de solution passwordless. Windows Hello for business est la version permettant de s’intégrer dans l’écosystème de l’entreprise avec la suite Microsoft entra. Dans cette article, je vous propose de découvrir non pas comment le configurer mais plutôt quels sont les mécanismes sous jacents utilisés.

Prérequis pour l’appareil

Windows Hello for business requiert plusieurs prérequis. Premièrement une version Windows Pro ou entreprise. Ensuite, l’équipement doit disposer d’un TPM; une puce matérielle intégrée à la carte mère qui permet de générer et de stocker des clés cryptographiques. Depuis 2016, la plupart des desktops et laptops en possède.

Fonctionnement

Etape 1: Entra ID Join

La première étape importante se produit lors de la jonction avec entra ID (que ce soit directement auprès d’entra ou en hybrid join). Vous pouvez comparer cette étape à celle de joindre un PC dans un domaine dans le monde Active directory (en simplifiant bien sûr).

Pendant le processus de jonction, le TPM de l’équipement génère une clé symétrique en AES256; la Device Transport Key (DTK dans la suite de l’article). Celle-ci est ensuite exportée et chiffrée dans l’enclave sécurité (zone de stockage protégé par le TPM) et est ensuite envoyée et stockée dans le tenant Entra. Cette clé sera utilisé dans la suite du processus.

Lorsque le processus de jonction est réalisé avec succès, Entra retourne à l’équipement un identifiant unique; le Device ID.

Le schéma ci-dessous résume le processus (TPM et enclave securisé sont confondus pour faciliter la lecture):

Enregistrement de l’équipement dans Entra ID

Etape 2: enregistrement de l’utilisateur pour windows Hello sur l’appareil

Lors de la première connexion de l’utilisateur à l’équipement, celui-ci doit lancer un processus d’inscription de Windows Hello for entreprise. L’inscription est non seulement propre à l’utilisateur mais surtout à l’équipement. En d’autres termes, si un même utilisateur possède plusieurs équipement (par exemple un Desktop et un laptop), il devra réaliser l’inscription sur chacun d’entre eux.

Dans cette phase d’inscription, le TPM commence par générer une paire de clés asymétriques (clé privée/clé publique). La clé publique est renvoyée ainsi qu’une attestation. Je rentrerai pas dans les détails des attestations, retenez simplement qu’il s’agit d’une donnée cryptographique permettant de prouver que la clé publique a bien été généré par le TPM. La clé publique et l’attestation sont envoyées au tenant Entra.

La clé privée, quant à elle ne sort jamais du TPM (elle est marqué comme non exportable), et son usage est désormais conditionné à la saisie d’un PIM ou de données biométriques (empreinte digitale, reconnaissance faciale) spécifié pendant le processus d’inscription.

Le schéma ci-dessous résume le processus (TPM et enclave securisé sont confondus pour faciliter la lecture):

Enregistrement de l’utilisateur dans windows Hello for business sur un équipement

A ce stade nous avons:

  • Un Device-ID qui identifie de manière unique l’équipement dans le tenant entra
  • Une Device Transport Key (DTK) stocké à la fois dans l’enclave sécurisé par le TPM de l’équipement et le tenant entra ID
  • Une paire de clés asymétriques dont la clé privée est stockée exclusivement dans le TPM de l’équipement et la clé publique est connue du tenant Entra ID

Voyons maintenant ce qui se passe lors de la connexion

Etape 3: connexion de l’utilisateur sur l’équipement avec Windows Hello

L’utilisateur commence par fournir son PIN ou ses données biométriques. Le Windows Hello for Business Credential Provider* déclenche une session d’authentification TPM vérifie si elles sont exactes (précision la vérification est effectuée en local). Si oui, l’usage de la clé privée générée à l’étape précédente est autorisée.

L’équipement via le credential provider contacte Entra ID pour demander une nonce cryptographique (nombre aléatoire utilisable qu’une fois). Entra ID en génère une valide 5 minutes et le lui renvoi. Le Credential Provider demande au TPM de l’équipement de signer la nonce avec la clé privée. La nonce signée ainsi que le Device ID est envoyée à Entra.

Entra ID vérifie la validité de la signature grâce à la connaissance de la clé publique qui lui a été transmise pendant l’étape d’inscription. Si la signature est valide, Entra génère et retourne à l’équipement un Primary Refresh Token (PRT) ainsi qu’une clé de session tous les deux chiffrées avec la Device Transport Key (DTK) . Le PRT et la clé de sessions sont stockés sur le disque de l’utilisateur (dans un windows vault).

Le schéma ci-dessous résume le processus (TPM et enclave securisé sont confondus pour faciliter la lecture):

Authentification de l’utilisateur via Windows Hello For Business

Etape 4: accès aux applications

Lorsque l’utilisateur souhaite accéder à une application protégée par entra (par exemple, un site sharepoint), celle-ci lui demande un token. Le credential provider demande au TPM de déchiffrer le Primary Refresh Token (PRT) avec la Device Transport Key (DTK) puis l’envoi à Entra ID. Si celui-ci est valide, Entra génère un token que l’utilisateur pourra utiliser pour accéder à l’application.

Si le token est envoyé en clair à entra (dans une session TLS pour protéger des attaques MITM), pourquoi avoir retourné ce token chiffré par la DTK à l’étape précédente ? En fait, l’objectif est de s’assurer que l’équipement qui souhaite utiliser le PRT est bien celui qui l’a généré. Si un attaquant arrivait à subtiliser le PRT sur le disque, il ne pourrait l’utiliser sans avoir à compromettre également le TPM de l’équipement (qui contient la DTK avec lequel le PRT est chiffré). Bien que cela reste possible, cela demande souvent un accès physique à la puce TPM. Grâce à ce processus, entra s’assure de l’incapacité de réutiliser le PRT sur un autre équipement.

Le schéma ci-dessous résume le processus (TPM et enclave securisé sont confondus pour faciliter la lecture):

SSO avec Windows Hello For Business

Etape 5: renouvellement et revocation

Renouvellement

Le PRT a une durée de vie restreinte. Pour le renouveler l’équipement va tous simplement renvoyer le PRT chiffré avec la DTK. Entra ID lui retourne alors un nouveau PRT toujours chiffré avec le DTK.

Révocation

Imaginons que l’équipement a été volé et que l’attaquant est en capacité de déverrouiller l’usage de la clé privée (ce qui est, je trouve, assez plausible si la protection est un PIN). L’attaquant serait alors en capacité d’accéder à l’équipement et d’accéder aux applications protégés par Entra. Pour révoquer l’accès, il suffit de révoquer l’équipement dans entra. Le Device-ID devient alors invalide. Le PRT contenant le device-id, entra sera en capacité de le rejeter en cas de demande de jeton d’accès à une application

Conclusion

Par la combinaison de mécanisme cryptographiques et de l’usage d’une puce physique (le TPM), windows Hello for business est une solution d’authentification passwordless apportant un niveau de sécurité supérieur à l’usage d’un password (qui peut facilement être subtilisé via une attaque de phishing par exemple). Bien sùr, aucune solution n’est inviolable: L’usage d’un TPM de mauvaise qualité (qui pour le coup ne mérite plus trop son appellation de TPM), l’accès physique au TPM et des connaissances peuvent permettre de subtiliser la DTK. Sensibiliser les utilisateurs à une alerte précoce en cas de vol de leur équipement et leur désactivation à la moindre suspicion de compromission est primordiale.

J’espère que cet article vous aura plus

*Image d’illustration du post générée via Firefly

Généré avec Hugo
Thème Stack conçu par Jimmy