Windows Unlock avec les appareils complémentaires Windows Hello (IoT)

Un appareil complémentaire Windows Hello est un appareil qui peut agir en conjonction avec votre bureau Windows 10 pour améliorer l’expérience d’authentification de l’utilisateur. En utilisant le cadre des appareils complémentaires Windows Hello, un appareil complémentaire peut fournir une expérience riche pour Windows Hello même lorsque la biométrie n’est pas disponible (par exemple, si l’ordinateur de bureau Windows 10 ne dispose pas d’une caméra pour l’authentification faciale ou d’un appareil de lecture d’empreintes digitales, par exemple).

Remarque

L’API pour le cadre des appareils complémentaires Windows Hello est obsolète dans Windows 10, version 2004.

Introduction

Pour obtenir des exemples de code, consultez le référentiel Github du cadre de l’appareil complémentaire Windows Hello.

Cas d’utilisation

Il existe de nombreuses façons dont on peut utiliser le cadre de l’appareil complémentaire Windows Hello pour construire une excellente expérience de déverrouillage de Windows avec un appareil complémentaire. Par exemple, les utilisateurs peuvent :

  • Connecter leur appareil complémentaire au PC via USB, toucher le bouton de l’appareil complémentaire et déverrouiller automatiquement leur PC.
  • Porter dans sa poche un téléphone déjà appairé avec l’ordinateur via Bluetooth. En appuyant sur la barre d’espacement de l’ordinateur, le téléphone reçoit une notification. Il suffit de l’approuver pour que l’ordinateur se déverrouille.
  • Appuyez votre appareil complémentaire sur un lecteur NFC pour déverrouiller rapidement votre PC.
  • Portez un bracelet de fitness qui a déjà authentifié le porteur. En s’approchant de l’ordinateur et en effectuant un geste spécial (comme taper dans les mains), l’ordinateur se déverrouille.

Appareils complémentaires Windows Hello compatibles avec la biométrie

Si l’appareil complémentaire prend en charge la biométrie, dans certains cas, le cadre Windows Biometric peut être une meilleure solution que le cadre Windows Hello pour les appareils complémentaires.

Composants de la solution

Le diagramme ci-dessous décrit les composants de la solution et les personnes responsables de leur mise en place.

Vue d’ensemble du cadre

Le cadre des appareils complémentaires Windows Hello est mis en œuvre sous la forme d’un service fonctionnant sous Windows (appelé Companion Authentication Service dans cet article). Ce service est chargé de générer un jeton de déverrouillage qui doit être protégé par une clé HMAC stockée sur l’appareil complémentaire Windows Hello. Cela garantit que l’accès au jeton de déverrouillage nécessite la présence de l’appareil complémentaire Windows Hello. Pour chaque tuple (PC, utilisateur Windows), il y aura un jeton de déverrouillage unique.

L’intégration avec l’appareil complémentaire Windows Hello nécessite :

  • Une application Windows Hello Universal Windows Platform (UWP) pour l’appareil complémentaire, téléchargée à partir de la boutique d’applications Windows.
  • La possibilité de créer deux clés HMAC 256 bits sur l’appareil complémentaire Windows Hello et de générer des HMAC avec celui-ci (à l’aide de SHA-256).
  • Les paramètres de sécurité du bureau Windows 10 doivent être correctement configurés. Le service d’authentification des complémentaires exigera que ce code PIN soit configuré avant qu’un appareil complémentaire Windows Hello puisse y être branché. Les utilisateurs doivent définir un code PIN via Paramètres > Comptes > Options de connexion.

En plus des applications ci-dessus, l’application de l’appareil complémentaire Windows Hello est responsable de :

  • L’expérience utilisateur et l’image de marque de l’enregistrement initial et de la désinscription ultérieure de l’appareil complémentaire Windows Hello.
  • Exécuter en arrière-plan, détecter l’appareil complémentaire Windows Hello, communiquer avec l’appareil complémentaire Windows Hello ainsi qu’avec le service d’authentification des complémentaires.
  • Gestion des erreurs

Normalement, les appareils complémentaires sont livrés avec une application pour l’installation initiale, comme la configuration d’un bracelet de fitness pour la première fois. La fonctionnalité décrite dans ce document peut faire partie de cette application et une application distincte ne devrait pas être nécessaire.

Signaux d’utilisateur

Chaque appareil complémentaire Windows Hello doit être associé à une application qui prend en charge trois signaux d’utilisateur. Ces signaux peuvent prendre la forme d’une action ou d’un geste.

  • Signal d’intention : Permet à l’utilisateur de montrer son intention de déverrouillage en appuyant, par exemple, sur un bouton de l’appareil complémentaire Windows Hello. Le signal d’intention doit être collecté du côté de l’appareil complémentaire Windows Hello.
  • Signal de présence de l’utilisateur : prouve la présence de l’utilisateur. L’appareil complémentaire Windows Hello peut, par exemple, exiger un code PIN avant de pouvoir être utilisé pour déverrouiller l’ordinateur (à ne pas confondre avec le code PIN de l’ordinateur), ou il peut exiger que l’on appuie sur un bouton.
  • Signal de distinction : distingue clairement le bureau Windows 10 que l’utilisateur souhaite déverrouiller lorsque plusieurs options sont disponibles sur l’appareil complémentaire Windows Hello.

Il est possible de combiner plusieurs de ces signaux d’utilisateur en un seul. Les signaux de présence et d’intention de l’utilisateur doivent être requis à chaque utilisation.

Enregistrement et communication future entre un PC et les appareils complémentaires Windows Hello

Avant qu’un appareil complémentaire Windows Hello puisse être plug-in dans le cadre des appareils complémentaires Windows Hello, il doit être enregistré dans le cadre. L’expérience d’enregistrement appartient entièrement à l’application de l’appareil complémentaire Windows Hello.

La relation entre l’appareil complémentaire Windows Hello et l’appareil de bureau Windows 10 peut être de un à plusieurs (c’est-à-dire qu’un appareil complémentaire peut être utilisé pour de nombreux appareils de bureau Windows 10). Cependant, chaque appareil complémentaire Windows Hello ne peut être utilisé que pour un seul utilisateur sur chaque appareil de bureau Windows 10.

Avant qu’un appareil complémentaire Windows Hello puisse communiquer avec un PC, ils doivent s’accorder sur le transport à utiliser. Ce choix est laissé à l’application de l’appareil complémentaire Windows Hello ; le cadre de l’appareil complémentaire Windows Hello n’impose aucune limitation sur le type de transport (USB, NFC, WiFi, BT, BLE, etc.) ou le protocole utilisé entre l’appareil complémentaire Windows Hello et l’application de l’appareil complémentaire Windows Hello du côté de l’appareil de bureau Windows 10. Il suggère toutefois certaines considérations de sécurité pour la couche transport, comme indiqué dans la section "Exigences de sécurité" du présent document. Il incombe au fournisseur de l’appareil de fournir ces exigences. Le cadre ne les fournit pas pour vous.

Modèle d’interaction avec l’utilisateur

Découverte, installation et premier enregistrement de l’application de l’appareil complémentaire Windows Hello

Le workflow typique d’un utilisateur est le suivant :

  • L’utilisateur configure le code PIN sur chacun des appareils de bureau Windows 10 cibles qu’il souhaite déverrouiller avec cet appareil complémentaire Windows Hello.
  • L’utilisateur exécute l’application de l’appareil complémentaire Windows Hello sur son appareil de bureau Windows 10 pour enregistrer son appareil complémentaire Windows Hello avec l’appareil de bureau Windows 10.

Remarques :

  • Nous recommandons que la découverte, le téléchargement et le lancement de l’application de l’appareil compagnon Windows Hello soient rationalisés et, si possible, automatisés (par exemple, l’application peut être téléchargée dès que l’on appuie sur l’appareil complémentaire Windows Hello sur un lecteur NFC du côté de l’appareil de bureau Windows 10). Cela relève toutefois de la responsabilité de l’appareil complémentaire Windows Hello et de l’application de l’appareil complémentaire Windows Hello.
  • Dans un environnement d’entreprise, l’application de l’appareil complémentaire Windows Hello peut être déployée via MDM.
  • L’application de l’appareil complémentaire Windows Hello est chargée d’afficher à l’utilisateur tout message d’erreur survenant dans le cadre de l’enregistrement.

Protocole d’enregistrement et de désenregistrement

Le diagramme suivant illustre la façon dont l’appareil complémentaire Windows Hello interagit avec Companion Authentication Service pendant l’enregistrement.

Diagramme du flux d’enregistrement.

Deux clés sont utilisées dans notre protocole :

  • Clé de l’appareil (devicekey) : utilisée pour protéger les jetons de déverrouillage dont le PC a besoin pour déverrouiller Windows.
  • La clé d’authentification (authkey) : utilisée pour authentifier mutuellement l’appareil complémentaire Windows Hello et le service d’authentification complémentaire.

La clé de l’appareil et les clés d’authentification sont échangées au moment de l’enregistrement entre l’application de l’appareil complémentaire Windows Hello et l’appareil complémentaire Windows Hello. Par conséquent, l’application Windows Hello companion device et l’appareil complémentaire Windows Hello doivent utiliser un transport sécurisé pour protéger les clés.

Notez également que si le diagramme ci-dessus montre deux clés HMAC générées sur l’appareil complémentaire Windows Hello.Il est également possible pour l’application de les générer et de les envoyer à l’appareil complémentaire Windows Hello pour qu’elles y soient stockées.

Démarrer les flux d’authentification

Il y a deux façons pour l’utilisateur de démarrer le flux d’authentification au bureau Windows 10 en utilisant le cadre de l’appareil complémentaire Windows Hello (c’est-à-dire de fournir un signal d’intention) :

  • Ouvrez le couvercle de l’ordinateur portable, ou appuyez sur la barre d’espacement ou glissez vers le haut sur le PC.
  • Effectuez un geste ou une action du côté de l’appareil complémentaire Windows Hello.

C’est à l’appareil complémentaire Windows Hello de choisir le point de départ. Le cadre de l’appareil complémentaire Windows Hello informera l’application de l’appareil complémentaire lorsque l’option un se produit. Pour la deuxième option, l’application de l’appareil complémentaire Windows Hello doit interroger l’appareil complémentaire pour savoir si l’événement a été capturé. Cela permet de s’assurer que l’appareil complémentaire Windows Hello recueille le signal d’intention avant que le déverrouillage n’ait lieu.

Fournisseur d’informations d’identification de l’appareil complémentaire Windows Hello

Il y a un nouveau fournisseur d’informations d’identification dans Windows 10 qui gère tous les appareils complémentaires Windows Hello.

Le fournisseur d’informations d’identification de l’appareil complémentaire Windows Hello est responsable du lancement de la tâche d’arrière-plan de l’appareil complémentaire via l’activation d’un déclencheur. Le déclencheur est activé la première fois lorsque l’ordinateur se réveille et qu’un écran de verrouillage s’affiche. La deuxième fois, lorsque l’ordinateur entre dans l’interface de connexion et que le fournisseur d’informations d’identification de l’appareil complémentaire Windows Hello est la tuile sélectionnée.

La bibliothèque d’aide pour l’application de l’appareil complémentaire Windows Hello écoutera le changement d’état de l’écran de verrouillage et enverra l’événement correspondant à la tâche d’arrière-plan de l’appareil complémentaire Windows Hello.

S’il existe plusieurs tâches d’arrière-plan pour l’appareil complémentaire Windows Hello, la première tâche d’arrière-plan qui a terminé le processus d’authentification déverrouillera l’ordinateur. Le service d’authentification de l’appareil complémentaire ignore les appels d’authentification restants.

L’expérience du côté de l’appareil complémentaire Windows Hello est détenue et gérée par l’application de l’appareil complémentaire Windows Hello. L’appareil complémentaire Windows Hello n’a aucun contrôle sur cette partie de l’expérience utilisateur. Plus précisément, le fournisseur d’authentification compagnon informe l’application de l’appareil complémentaire Windows Hello (via son application d’arrière-plan) des changements d’état dans l’interface de connexion (par exemple, l’écran de verrouillage vient de s’abaisser, ou l’utilisateur vient de désactiver l’écran de verrouillage en appuyant sur la barre d’espacement), et il incombe à l’application de l’appareil complémentaire Windows Hello de construire une expérience autour de cela (par exemple, lorsque l’utilisateur appuie sur la barre d’espacement et désactive l’écran de déverrouillage, il commence à chercher l’appareil via la clé USB).

Le cadre de l’appareil complémentaire Windows Hello fournira un stock de textes et de messages d’erreur (localisés) parmi lesquels l’application de l’appareil complémentaire Windows Hello pourra choisir. Ces messages seront affichés en haut de l’écran de verrouillage (ou dans l’interface utilisateur de connexion). Pour plus de détails, reportez-vous à la section Gestion des messages et des erreurs.

Protocole d’authentification

Une fois que la tâche d’arrière-plan associée à une application pour appareil complémentaire Windows Hello est déclenchée, elle est chargée de demander à l’appareil complémentaire Windows Hello de valider une valeur HMAC calculée par le service d’authentification complémentaire et d’aider à calculer deux valeurs HMAC :

  • Validate Service HMAC = HMAC(authentication key, service nonce || device nonce || session nonce).
  • Calculez le HMAC de la clé de l’appareil avec un nombre aléatoire.
  • Calculez le HMAC de la clé d’authentification avec la première valeur HMAC concaténée avec un nonce généré par le service d’authentification complémentaire.

La deuxième valeur calculée est utilisée par le service pour authentifier l’appareil et empêcher les attaques par rejeu dans la chaîne de transport.

Diagramme du flux d’enregistrement mis à jour.

Gestion du cycle de vie

Enregistrez-vous une fois, utilisez partout

Sans serveur backend, les utilisateurs doivent enregistrer leur appareil complémentaire Windows Hello avec chaque appareil de bureau Windows 10 séparément.

Un fournisseur d’appareils complémentaires ou un OEM peut mettre en œuvre un service Web pour itinérer l’état d’enregistrement sur les ordinateurs de bureau ou les appareils mobiles Windows 10 de l’utilisateur. Pour plus de détails, consultez la section Service d’itinérance, de révocation et de filtrage.

Gestion des PIN

Avant de pouvoir utiliser un appareil complémentaire, un code PIN doit être configuré sur l’appareil de bureau Windows 10. Cela permet à l’utilisateur de disposer d’une sauvegarde au cas où son appareil complémentaire Windows Hello ne fonctionnerait pas. Le code PIN est quelque chose que Windows gère et que les applications ne voient jamais. Pour le modifier, l’utilisateur accède à Paramètres > Comptes > Options de connexion.

Gestion et stratégie

Les utilisateurs peuvent supprimer un appareil complémentaire Windows Hello d’un ordinateur de bureau Windows 10 en exécutant l’application de l’appareil complémentaire Windows Hello sur cet appareil de bureau.

Les entreprises ont deux options pour contrôler le cadre de l’appareil complémentaire Windows Hello :

  • Activer ou désactiver la fonctionnalité.
  • Définir la liste des appareils complémentaires Windows Hello autorisés à l’aide de Windows app locker.

Le cadre des appareils complémentaires Windows Hello ne prend en charge aucun moyen centralisé de tenir l’inventaire des appareils complémentaires disponibles, ni aucune méthode pour filtrer davantage les instances d’un type d’appareil complémentaire Windows Hello qui sont autorisées (par exemple, seuls les appareils complémentaires dont le numéro de série est compris entre X et Y sont autorisés). Les développeurs d’applications peuvent toutefois créer un service pour fournir une telle fonction. Pour plus de détails, consultez la section Service d’itinérance, de révocation et de filtrage.

Révocation

Le cadre de l’appareil complémentaire Windows Hello ne prend pas en charge la suppression d’un appareil complémentaire d’un appareil de bureau Windows 10 spécifique à distance. Au lieu de cela, les utilisateurs peuvent retirer l’appareil complémentaire Windows Hello via l’application de l’appareil complémentaire Windows Hello s’exécutant sur cet ordinateur de bureau Windows 10.

Les fournisseurs d’appareils complémentaires, cependant, peuvent construire un service pour fournir une fonctionnalité de révocation à distance. Pour plus de détails, consultez la section Services d’itinérance, de révocation et de filtrage.

Services d’itinérance et de filtrage

Les fournisseurs d’appareils complémentaires peuvent mettre en œuvre un service Web qui peut être utilisé pour les scénarios suivants :

  • Un service de filtrage pour les entreprises : Une entreprise peut limiter l’ensemble des appareils complémentaires Windows Hello qui peuvent fonctionner dans leur environnement à quelques appareils sélectionnés d’un fournisseur spécifique. Par exemple, l’entreprise Contoso pourrait commander 10 000 appareils complémentaires de modèle Y auprès du fournisseur X et s’assurer que seuls ces appareils fonctionneront dans le domaine Contoso (et aucun autre modèle d’appareil du fournisseur X).
  • Inventaire : Une entreprise peut déterminer la liste des appareils complémentaires existants utilisés dans un environnement d’entreprise.
  • Révocation en temps réel : Si un employé signale que son appareil complémentaire est perdu ou volé, le service Web peut être utilisé pour révoquer cet appareil.
  • Itinérance : Un utilisateur ne doit enregistrer son appareil complémentaire qu’une seule fois et celui-ci fonctionne sur tous ses ordinateurs de bureau et Mobile Windows 10.

La mise en œuvre de ces fonctionnalités nécessite que l’application de l’appareil complémentaire Windows Hello effectue une vérification auprès du service Web au moment de l’enregistrement et de l’utilisation. L’application de l’appareil complémentaire Windows Hello peut optimiser les scénarios de connexion en cache, en exigeant par exemple que la vérification auprès du service Web n’ait lieu qu’une fois par jour (au prix d’un allongement du délai de révocation jusqu’à un jour).

Modèle d’API de l’appareil complémentaire Windows Hello

Vue d’ensemble

Une application pour appareil complémentaire Windows Hello doit contenir deux composants : une application en avant-plan avec une interface utilisateur responsable de l’enregistrement et du désenregistrement de l’appareil, et une tâche d’arrière-plan qui gère l’authentification.

Le flux API global est le suivant :

  1. Enregistrer l’appareil complémentaire Windows Hello
    • Assurez-vous que l’appareil se trouve à proximité et interrogez ses capacités (si nécessaire).
    • Générez deux clés HMAC (soit du côté de l’appareil complémentaire, soit du côté de l’application).
    • Appelez RequestStartRegisteringDeviceAsync (Demande de démarrage de l’enregistrement de l’appareil).
    • Appelez FinishRegisteringDeviceAsync (Finir l’enregistrement de l’appareil).
    • Assurez-vous que l’application de l’appareil complémentaire Windows Hello stocke les clés HMAC (si elles sont prises en charge) et que l’application de l’appareil complémentaire Windows Hello se débarrasse de ses copies.
  2. Enregistrez votre tâche d’arrière-plan
  3. Attendez le bon événement dans la tâche d’arrière-plan
    • WaitingForUserConfirmation : Attendez cet événement si l’action/le geste de l’utilisateur du côté de l’appareil complémentaire Windows Hello est nécessaire pour démarrer le flux d’authentification.
    • CollectingCredential : Attendre cet événement si l’appareil complémentaire Windows Hello dépend de l’action/du geste de l’utilisateur côté PC pour démarrer le flux d’authentification (par exemple, en appuyant sur la barre d’espace).
    • Autre déclencheur, comme une carte à puce : Veillez à demander l’état actuel de l’authentification pour appeler les bonnes API.
  4. Tenez l’utilisateur informé des messages d’erreur ou des étapes suivantes requises en appelant ShowNotificationMessageAsync. N’appelez cette API qu’une fois qu’un signal d’intention a été recueilli.
  5. Déverrouillez
    • Assurez-vous que les signaux d’intention et de présence de l’utilisateur ont été recueillis
    • Appelez StartAuthenticationAsync.
    • Communiquez avec l’appareil complémentaire pour effectuer les opérations HMAC requises.
    • Appeler FinishAuthenticationAsync
  6. Désenregistrer un appareil complémentaire Windows Hello lorsque l’utilisateur en fait la requête (par exemple, s’il a perdu son appareil complémentaire).
    • Enumérer l’appareil complémentaire Windows Hello pour l’utilisateur connecté via FindAllRegisteredDeviceInfoAsync
    • Désenregistrez-le à l’aide de UnregisterDeviceAsync

Enregistrement et désenregistrement

L’enregistrement nécessite deux appels API au service d’authentification complémentaire : RequestStartRegisteringDeviceAsync et FinishRegisteringDeviceAsync.

Avant d’effectuer l’un de ces appels, l’application de l’appareil complémentaire Windows Hello doit s’assurer que l’appareil complémentaire Windows Hello est disponible. Si l’appareil complémentaire Windows Hello est chargé de générer les clés HMAC (clés d’authentification et d’appareil), l’application de l’appareil complémentaire Windows Hello doit également demander à l’appareil complémentaire de les générer avant d’effectuer l’un des deux appels susmentionnés. Si l’application de l’appareil complémentaire Windows Hello est responsable de la génération des clés HMAC, elle doit le faire avant d’effectuer les deux appels ci-dessus.

En outre, dans le cadre du premier appel API (RequestStartRegisteringDeviceAsync), l’application de l’appareil complémentaire Windows Hello doit décider de la capacité de l’appareil et être prête à la transmettre dans le cadre de l’appel API ; par exemple, si l’appareil complémentaire Windows Hello prend en charge le stockage sécurisé des clés HMAC. Si la même application pour appareil complémentaire Windows Hello est utilisée pour gérer plusieurs versions du même appareil complémentaire et que ces capacités changent (ce qui nécessite une interrogation de l’appareil pour décider), nous recommandons que cette interrogation ait lieu avant que le premier appel à l’API ne soit effectué.

La première API (RequestStartRegisteringDeviceAsync) renverra une poignée utilisée par la seconde API (FinishRegisteringDeviceAsync). Le premier appel à l’enregistrement lancera l’invite PIN pour s’assurer que l’utilisateur est présent. Si aucun code PIN n’est défini, cet appel échouera. L’application de l’appareil complémentaire Windows Hello peut également demander si le code PIN est configuré ou non via l’appel KeyCredentialManager.IsSupportedAsync. L’appel RequestStartRegisteringDeviceAsync peut également échouer si la stratégie a désactivé l’utilisation de l’appareil complémentaire Windows Hello.

Le résultat du premier appel est renvoyé via l’énumération SecondaryAuthenticationFactorRegistrationStatus :

{
	Failed = 0, 		// Something went wrong in the underlying components
	Started,     		// First call succeeded
	CanceledByUser,  	// User cancelled PIN prompt
	PinSetupRequired,	// PIN is not set up
	DisabledByPolicy,	// Companion device framework or this app is disabled
}

Le second appel (FinishRegisteringDeviceAsync) termine l’enregistrement. Dans le cadre du processus d’enregistrement, l’application de l’appareil complémentaire Windows Hello peut stocker les données de configuration de l’appareil complémentaire auprès du service d’authentification de l’appareil complémentaire. La taille de ces données est limitée à 4K. Ces données seront disponibles pour l’application de l’appareil complémentaire Windows Hello au moment de l’authentification. Ces données peuvent être utilisées, par exemple, pour se connecter à l’appareil complémentaire Windows Hello, comme une adresse MAC, ou si l’appareil complémentaire Windows Hello n’a pas de stockage et que l’appareil complémentaire veut utiliser le PC pour le stockage, alors les données de configuration peuvent être utilisées. Notez que toute donnée sensible stockée dans le cadre des données de configuration doit être chiffrée avec une clé que seul l’appareil complémentaire Windows Hello connaît. En outre, étant donné que les données de configuration sont stockées par un service Windows, l’application de l’appareil complémentaire Windows Hello peut y accéder, quel que soit le profil de l’utilisateur.

L’application de l’appareil complémentaire Windows Hello peut appeler AbortRegisteringDeviceAsync pour annuler l’enregistrement et transmettre un code d’erreur. Le service d’authentification complémentaire journalise l’erreur dans les données de télémétrie. Un bon exemple pour cet appel serait lorsque quelque chose ne va pas avec l’appareil complémentaire Windows Hello et qu’il ne peut pas terminer l’enregistrement (par exemple, il ne peut pas stocker les clés HMAC ou la connexion BT a été perdue).

L’application de l’appareil complémentaire Windows Hello doit fournir une option permettant à l’utilisateur de désenregistrer son appareil complémentaire Windows Hello depuis son bureau Windows 10 (par exemple, s’il a perdu son appareil complémentaire ou s’il a acheté une version plus récente). Lorsque l’utilisateur sélectionne cette option, l’application de l’appareil complémentaire Windows Hello doit appeler UnregisterDeviceAsync. Cet appel de l’application Windows Hello pour appareil complémentaire déclenchera le service d’authentification de l’appareil complémentaire pour supprimer toutes les données (y compris les clés HMAC) correspondant à l’Id d’appareil spécifique et à l’AppId de l’application de l’appelant du côté PC. Cet appel API ne tente pas de supprimer les clés HMAC du côté de l’application de l’appareil complémentaire Windows Hello ou de l’appareil complémentaire. Cette tâche est laissée à l’application de l’appareil complémentaire Windows Hello.

L’application de l’appareil complémentaire Windows Hello est responsable de l’affichage de tout message d’erreur survenant lors des phases d’enregistrement et de désenregistrement.

using System;
using Windows.Security.Authentication.Identity.Provider;
using Windows.Storage.Streams;
using Windows.Security.Cryptography;
using Windows.UI.Popups;

namespace SecondaryAuthFactorSample
{
	public class DeviceRegistration
	{

		public void async OnRegisterButtonClick()
		{
			//
			// Pseudo function, the deviceId should be retrieved by the application from the device
			//
			string deviceId = await ReadSerialNumberFromDevice();

			IBuffer deviceKey = CryptographicBuffer.GenerateRandom(256/8);
			IBuffer mutualAuthenticationKey = CryptographicBuffer.GenerateRandom(256/8);

			SecondaryAuthenticationFactorRegistration registrationResult =
				await SecondaryAuthenticationFactorRegistration.RequestStartRegisteringDeviceAsync(
					deviceId,  // deviceId: max 40 wide characters. For example, serial number of the device
					SecondaryAuthenticationFactorDeviceCapabilities.SecureStorage |
						SecondaryAuthenticationFactorDeviceCapabilities.HMacSha256 |
						SecondaryAuthenticationFactorDeviceCapabilities.StoreKeys,
					"My test device 1", // deviceFriendlyName: max 64 wide characters. For example: John's card
					"SAMPLE-001", // deviceModelNumber: max 32 wide characters. The app should read the model number from device.
					deviceKey,
					mutualAuthenticationKey);

			switch(registerResult.Status)
			{
			case SecondaryAuthenticationFactorRegistrationStatus.Started:
				//
				// Pseudo function:
				// The app needs to retrieve the value from device and set into opaqueBlob
				//
				IBuffer deviceConfigData = ReadConfigurationDataFromDevice();

				if (deviceConfigData != null)
				{
					await registrationResult.Registration.FinishRegisteringDeviceAsync(deviceConfigData); //config data limited to 4096 bytes
					MessageDialog dialog = new MessageDialog("The device is registered correctly.");
					await dialog.ShowAsync();
				}
				else
				{
					await registrationResult.Registration.AbortRegisteringDeviceAsync("Failed to connect to the device");
					MessageDialog dialog = new MessageDialog("Failed to connect to the device.");
					await dialog.ShowAsync();
				}
				break;

			case SecondaryAuthenticationFactorRegistrationStatus.CanceledByUser:
				MessageDialog dialog = new MessageDialog("You didn't enter your PIN.");
				await dialog.ShowAsync();
				break;

			case SecondaryAuthenticationFactorRegistrationStatus.PinSetupRequired:
				MessageDialog dialog = new MessageDialog("Please setup PIN in settings.");
				await dialog.ShowAsync();
				break;

			case SecondaryAuthenticationFactorRegistrationStatus.DisabledByPolicy:
				MessageDialog dialog = new MessageDialog("Your enterprise prevents using this device to sign in.");
				await dialog.ShowAsync();
				break;
			}
		}

		public void async UpdateDeviceList()
		{
			IReadOnlyList<SecondaryAuthenticationFactorInfo> deviceInfoList =
				await SecondaryAuthenticationFactorRegistration.FindAllRegisteredDeviceInfoAsync(
					SecondaryAuthenticationFactorDeviceFindScope.User);

			if (deviceInfoList.Count > 0)
			{
				foreach (SecondaryAuthenticationFactorInfo deviceInfo in deviceInfoList)
				{
					//
					// Add deviceInfo.FriendlyName and deviceInfo.DeviceId into a combo box
					//
				}
			}
		}

		public void async OnUnregisterButtonClick()
		{
			string deviceId;
			//
			// Read the deviceId from the selected item in the combo box
			//
			await SecondaryAuthenticationFactorRegistration.UnregisterDeviceAsync(deviceId);
		}
	}
}

Authentification

L’authentification nécessite deux appels API au service d’authentification complémentaire : StartAuthenticationAsync et FinishAuthencationAsync.

Le premier appel API renvoie une poignée utilisée par le second appel API. Le premier appel renvoie, entre autres, un nombre aléatoire qui, une fois concaténé avec d’autres éléments, doit faire l’objet d’un HMAC avec la clé de l’appareil stockée sur l’appareil complémentaire Windows Hello. Le deuxième appel renvoie les résultats du HMAC avec la clé de l’appareil et peut potentiellement aboutir à une authentification réussie (c’est-à-dire que l’utilisateur verra son bureau).

La première initiation API (StartAuthenticationAsync) peut échouer si la stratégie a désactivé l’appareil complémentaire Windows Hello après l’enregistrement initial. Elle peut également échouer si l’appel API a été effectué en dehors des états WaitingForUserConfirmation ou CollectingCredential (plus d’informations à ce sujet plus loin dans cette section). Elle peut également échouer si une application d’appareil complémentaire non enregistrée l’appelle. La liste Enum SecondaryAuthenticationFactorAuthenticationStatus résume les résultats possibles :

{
	Failed = 0, 					// Something went wrong in the underlying components
	Started,
	UnknownDevice,    				// Companion device app is not registered with framework
	DisabledByPolicy, 				// Policy disabled this device after registration
	InvalidAuthenticationStage,		// Companion device framework is not currently accepting
									// incoming authentication requests
}

Le deuxième appel API (FinishAuthencationAsync) peut échouer si le nombre aléatoire qui a été fourni lors du premier appel est expiré (20 secondes). L’énumération SecondaryAuthenticationFactorFinishAuthenticationStatus indique les résultats possibles.

{
	Failed = 0, 	// Something went wrong in the underlying components
	Completed,   	// Success
	NonceExpired,   // Nonce is expired
}

La synchronisation de deux appels d’API (StartAuthenticationAsync et FinishAuthencationAsync) doit s’aligner sur la façon dont l’appareil complémentaire Windows Hello collecte les signaux d’intention, de présence de l’utilisateur et de désambiguïsation (voir Signaux de l’utilisateur pour plus de détails). Par exemple, le deuxième appel ne doit pas être soumis tant que le signal d’intention n’est pas disponible. En d’autres termes, le PC ne doit pas être déverrouillé si l’utilisateur n’en a pas exprimé l’intention. Pour que cela soit plus clair, supposons que la proximité Bluetooth soit utilisée pour déverrouiller l’ordinateur, un signal d’intention explicite doit être collecté, sinon, dès que l’utilisateur passera devant son ordinateur en allant à la cuisine, l’ordinateur se déverrouillera. En outre, le nombre aléatoire renvoyé lors du premier appel est limité dans le temps (20 secondes) et expirera après une certaine période. Par conséquent, le premier appel ne doit être effectué que lorsque l’application Windows Hello pour appareil complémentaire dispose d’une bonne indication de la présence de l’appareil complémentaire, par exemple lorsque l’appareil complémentaire est inséré dans le port USB ou qu’il est appuyé sur le lecteur NFC. Avec Bluetooth, il faut veiller à ne pas affecter la batterie de l’ordinateur ni les autres activités Bluetooth en cours à ce moment-là lors de la vérification de la présence de l’appareil complémentaire Windows Hello. De même, si un signal de présence de l’utilisateur doit être fourni (par exemple, en tapant le code PIN), il est recommandé que le premier appel d’authentification ne soit effectué qu’après la collecte de ce signal.

La structure de l’appareil complémentaire Windows Hello aide l’application de l’appareil complémentaire Windows Hello à décider en toute connaissance de cause quand effectuer les deux appels susmentionnés en fournissant une image complète de la position de l’utilisateur dans le flux d’authentification. L’appareil complémentaire Windows Hello fournit cette fonction en envoyant une notification de changement d’état de verrouillage à la tâche d’arrière-plan de l’application.

flux de l’appareil complémentaire

Les détails de chacun de ces états sont les suivants :

State Description
WaitingForUserConfirmation Cet événement de notification de changement d’état est déclenché lorsque l’écran de verrouillage s’abaisse (par exemple, l’utilisateur a appuyé sur Windows + L). Nous vous recommandons de ne pas demander de messages d’erreur relatifs à la difficulté de trouver un appareil dans cet état. En général, nous recommandons de n’afficher les messages que lorsque le signal d’intention est disponible. L’application Windows Hello pour appareil complémentaire doit effectuer le premier appel API pour l’authentification dans cet état si l’appareil complémentaire recueille le signal d’intention (par exemple, appuyer sur le lecteur NFC, appuyer sur un bouton de l’appareil complémentaire ou un geste spécifique, comme taper des mains), et si la tâche d’arrière-plan de l’application Windows Hello pour appareil complémentaire reçoit l’indication de l’appareil complémentaire que le signal d’intention a été détecté. Dans le cas contraire, si l’application de l’appareil complémentaire Windows Hello s’appuie sur le PC pour lancer le flux d’authentification (en demandant à l’utilisateur de balayer l’écran de déverrouillage vers le haut ou en appuyant sur la barre d’espace), l’application de l’appareil complémentaire Windows Hello doit attendre l’état suivant (CollectingCredential).
CollectingCredential Cet événement de notification de changement d’état est déclenché lorsque l’utilisateur ouvre son ordinateur portable, appuie sur une touche de son clavier ou fait défiler l’écran de déverrouillage. Si l’appareil complémentaire Windows Hello s’appuie sur les actions ci-dessus pour commencer à collecter le signal d’intention, alors l’application de l’appareil complémentaire Windows Hello doit commencer à le collecter (par exemple, via une fenêtre contextuelle sur l’appareil complémentaire demandant si l’utilisateur souhaite déverrouiller l’ordinateur). C’est le bon moment pour fournir des cas d’erreur si l’application Windows Hello pour appareil complémentaire a besoin que l’utilisateur fournisse un signal de présence sur l’appareil complémentaire (comme la saisie du code PIN sur l’appareil complémentaire Windows Hello).
SuspendingAuthentication Lorsque l’application de l’appareil complémentaire Windows Hello reçoit cet état, cela signifie que le service d’authentification complémentaire a cessé d’accepter les requêtes d’authentification.
CredentialCollected Cela signifie qu’une autre application de l’appareil complémentaire Windows Hello a appelé la deuxième API et que le service d’authentification des compagnons vérifie ce qui a été soumis. À ce stade, le service d’authentification complémentaire n’accepte pas d’autres requêtes d’authentification, à moins que la requête actuellement soumise ne passe pas la vérification. L’application de l’appareil complémentaire Windows Hello doit rester à l’écoute jusqu’à ce que l’état suivant soit atteint.
CredentialAuthenticated Cela signifie que la demande d’authentification soumise a fonctionné. credentialAuthenticated contient l’identifiant de l’appareil complémentaire Windows Hello qui a réussi. L’application de l’appareil complémentaire Windows Hello doit s’assurer de vérifier si l’appareil qui lui est associé est le gagnant. Si ce n’est pas le cas, l’application Windows Hello doit éviter d’afficher des applications après l’authentification (comme un message de réussite sur l’appareil complémentaire ou peut-être une vibration sur cet appareil). Notez que si l’identifiant soumis n’a pas fonctionné, l’état passera à l’état CollectingCredential.
StoppingAuthentication L’authentification a réussi et l’utilisateur a vu le bureau. Il est temps d’arrêter la tâche d’arrière-plan. Avant de quitter la tâche d’arrière-plan, désenregistrez explicitement le gestionnaire StageEvent. Cela permettra à la tâche d’arrière-plan de se terminer rapidement.

Les applications de l’appareil complémentaire Windows Hello ne doivent appeler les deux API d’authentification que dans les deux premiers états. Les applications de l’appareil complémentaire Windows Hello doivent vérifier pour quel scénario cet événement est déclenché. Il y a deux possibilités : déverrouillage ou post-déverrouillage. Actuellement, seul le déverrouillage est pris en charge. Dans les prochaines versions, les scénarios de post-déverrouillage pourront être pris en charge. L’énumération SecondaryAuthenticationFactorAuthenticationScenario capture ces deux options :

{
	SignIn = 0,      	// Running under lock screen mode
	CredentialPrompt, 	// Running post unlock
}

Exemple de code complet :

using System;
using Windows.Security.Authentication.Identity.Provider;
using Windows.Storage.Streams;
using Windows.Security.Cryptography;
using System.Threading;
using Windows.ApplicationModel.Background;

namespace SecondaryAuthFactorSample
{
	public sealed class AuthenticationTask : IBackgroundTask
	{
		private string _deviceId;
		private static AutoResetEvent _exitTaskEvent = new AutoResetEvent(false);
		private static IBackgroundTaskInstance _taskInstance;
		private BackgroundTaskDeferral _deferral;

		private void Authenticate()
		{
			int retryCount = 0;

			while (retryCount < 3)
			{
				//
				// Pseudo code, the svcAuthNonce should be passed to device or generated from device
				//
				IBuffer svcAuthNonce = CryptographicBuffer.GenerateRandom(256/8);

				SecondaryAuthenticationFactorAuthenticationResult authResult = await
					SecondaryAuthenticationFactorAuthentication.StartAuthenticationAsync(
						_deviceId,
						svcAuthNonce);
				if (authResult.Status != SecondaryAuthenticationFactorAuthenticationStatus.Started)
				{
					SecondaryAuthenticationFactorAuthenticationMessage message;
					switch (authResult.Status)
					{
						case SecondaryAuthenticationFactorAuthenticationStatus.DisabledByPolicy:
							message = SecondaryAuthenticationFactorAuthenticationMessage.DisabledByPolicy;
							break;
						case SecondaryAuthenticationFactorAuthenticationStatus.InvalidAuthenticationStage:
							// The task might need to wait for a SecondaryAuthenticationFactorAuthenticationStageChangedEvent
							break;
						default:
							return;
					}

					// Show error message. Limited to 512 characters wide
					await SecondaryAuthenticationFactorAuthentication.ShowNotificationMessageAsync(null, message);
					return;
				}

				//
				// Pseudo function:
				// The device calculates and returns sessionHmac and deviceHmac
				//
				await GetHmacsFromDevice(
					authResult.Authentication.ServiceAuthenticationHmac,
					authResult.Authentication.DeviceNonce,
					authResult.Authentication.SessionNonce,
					out deviceHmac,
					out sessionHmac);
				if (sessionHmac == null ||
					deviceHmac == null)
				{
					await authResult.Authentication.AbortAuthenticationAsync(
						"Failed to read data from device");
					return;
				}

				SecondaryAuthenticationFactorFinishAuthenticationStatus status =
					await authResult.Authentication.FinishAuthencationAsync(deviceHmac, sessionHmac);
				if (status == SecondaryAuthenticationFactorFinishAuthenticationStatus.NonceExpired)
				{
					retryCount++;
					continue;
				}
				else if (status == SecondaryAuthenticationFactorFinishAuthenticationStatus.Completed)
				{
					// The credential data is collected and ready for unlock
					return;
				}
			}
		}

		public void OnAuthenticationStageChanged(
			object sender,
			SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs args)
		{
			// The application should check the args.StageInfo.Stage to determine what to do in next. Note that args.StageInfo.Scenario will have the scenario information (SignIn vs CredentialPrompt).

			switch(args.StageInfo.Stage)
			{
			case SecondaryAuthenticationFactorAuthenticationStage.WaitingForUserConfirmation:
				// Show welcome message
				await SecondaryAuthenticationFactorAuthentication.ShowNotificationMessageAsync(
					null,
					SecondaryAuthenticationFactorAuthenticationMessage.WelcomeMessageSwipeUp);
				break;

			case SecondaryAuthenticationFactorAuthenticationStage.CollectingCredential:
				// Authenticate device
				Authenticate();
				break;

			case SecondaryAuthenticationFactorAuthenticationStage.CredentialAuthenticated:
				if (args.StageInfo.DeviceId = _deviceId)
				{
					// Show notification on device about PC unlock
				}
				break;

			case SecondaryAuthenticationFactorAuthenticationStage.StoppingAuthentication:
				// Quit from background task
				_exitTaskEvent.Set();
				break;
			}

			Debug.WriteLine("Authentication Stage = " + args.StageInfo.AuthenticationStage.ToString());
		}

		//
		// The Run method is the entry point of a background task.
		//
		public void Run(IBackgroundTaskInstance taskInstance)
		{
			_taskInstance = taskInstance;
			_deferral = taskInstance.GetDeferral();

			// Register canceled event for this task
			taskInstance.Canceled += TaskInstanceCanceled;

			// Find all device registred by this application
			IReadOnlyList<SecondaryAuthenticationFactorInfo> deviceInfoList =
				await SecondaryAuthenticationFactorRegistration.FindAllRegisteredDeviceInfoAsync(
					SecondaryAuthenticationFactorDeviceFindScope.AllUsers);

			if (deviceInfoList.Count == 0)
			{
				// Quit the task silently
				return;
			}
			_deviceId = deviceInfoList[0].DeviceId;
			Debug.WriteLine("Use first device '" + _deviceId + "' in the list to signin");

			// Register AuthenticationStageChanged event
			SecondaryAuthenticationFactorRegistration.AuthenticationStageChanged += OnAuthenticationStageChanged;

			// Wait the task exit event
			_exitTaskEvent.WaitOne();

			_deferral.Complete();
		}

		void TaskInstanceCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
		{
			_exitTaskEvent.Set();
		}
	}
}

Inscrire une tâche en arrière-plan

Lorsque l’application Windows Hello pour appareil complémentaire enregistre le premier appareil complémentaire, elle doit également enregistrer son composant de tâche d’arrière-plan qui transmettra les informations d’authentification entre l’appareil et le service d’authentification de l’appareil complémentaire.

using System;
using Windows.Security.Authentication.Identity.Provider;
using Windows.Storage.Streams;
using Windows.ApplicationModel.Background;

namespace SecondaryAuthFactorSample
{
	public class BackgroundTaskManager
	{
		// Register background task
		public static async Task<IBackgroundTaskRegistration> GetOrRegisterBackgroundTaskAsync(
			string bgTaskName,
			string taskEntryPoint)
		{
			// Check if there's an existing background task already registered
			var bgTask = (from t in BackgroundTaskRegistration.AllTasks
						  where t.Value.Name.Equals(bgTaskName)
						  select t.Value).SingleOrDefault();
			if (bgTask == null)
			{
				BackgroundAccessStatus status =
					BackgroundExecutionManager.RequestAccessAsync().AsTask().GetAwaiter().GetResult();

				if (status == BackgroundAccessStatus.Denied)
				{
					Debug.WriteLine("Background Execution is denied.");
					return null;
				}

				var taskBuilder = new BackgroundTaskBuilder();
				taskBuilder.Name = bgTaskName;
				taskBuilder.TaskEntryPoint = taskEntryPoint;
				taskBuilder.SetTrigger(new SecondaryAuthenticationFactorAuthenticationTrigger());
				bgTask = taskBuilder.Register();
				// Background task is registered
			}

			bgTask.Completed += BgTask_Completed;
			bgTask.Progress += BgTask_Progress;

			return bgTask;
		}
	}
}

Erreurs et messages

L’appareil complémentaire Windows Hello est chargé de fournir à l’utilisateur un retour d’information sur la réussite ou l’échec de la connexion. Le cadre de l’appareil complémentaire Windows Hello fournira un stock de textes et de messages d’erreur (localisés) que l’application de l’appareil complémentaire Windows Hello pourra choisir. Ces messages seront affichés dans l’interface utilisateur de connexion.

erreur de l’appareil complémentaire

Les applications de l’appareil complémentaire Windows Hello peuvent utiliser ShowNotificationMessageAsync pour afficher des messages à l’utilisateur dans le cadre de l’interface utilisateur de connexion. Appelez cette API lorsqu’un signal d’intention est disponible. Notez qu’un signal d’intention doit toujours être collecté du côté de l’appareil complémentaire Windows Hello.

Il existe deux types de messages : les messages d’orientation et les messages d’erreur.

Les messages d’orientation sont conçus pour montrer à l’utilisateur comment démarrer le processus de déverrouillage. Ces messages sont présentés à l’utilisateur une seule fois sur l’écran de verrouillage, lors de la première inscription de l’appareil, et ne sont plus jamais affichés à cet endroit. Ces messages continueront à s’afficher sous l’écran de verrouillage.

Les messages d’erreur sont toujours affichés et le seront après qu’un signal d’intention a été fourni. Étant donné qu’un signal d’intention doit être recueilli avant d’afficher des messages à l’utilisateur, et que l’utilisateur ne fournira cette intention qu’en utilisant l’un des appareils complémentaires Windows Hello, il ne doit pas y avoir de situation où plusieurs appareils complémentaires Windows Hello se disputent l’affichage des messages d’erreur. Par conséquent, l’appareil complémentaire Windows Hello ne maintient pas de file d’attente. Lorsqu’un appelant demande un message d’erreur, celui-ci est affiché pendant 5 secondes et toutes les autres requêtes d’affichage d’un message d’erreur au cours de ces 5 secondes sont abandonnées. Une fois les 5 secondes écoulées, un autre appelant a la possibilité d’afficher un message d’erreur. Nous interdisons à tout appelant de brouiller la chaîne d’erreur.

Les messages d’orientation et d’erreur sont les suivants. Le nom de l’appareil est un paramètre transmis par l’application de l’appareil complémentaire dans le cadre de ShowNotificationMessageAsync.

Assistance

  • « Balayez vers le haut ou appuyez sur la barre d’espacement pour vous connecter avec nom de l’appareil »
  • « Configuration de votre appareil complémentaire. Veuillez patienter ou utiliser une autre option de connexion. »
  • « Appuyez sur Nom de l’appareil sur le lecteur NFC pour vous connecter ».
  • « Recherche de Nom d’appareil ... »
  • « Branchez Nom de l’appareil sur un port USB pour vous connecter ».

Erreurs

  • « Voir Nom de l’appareil pour les instructions de connexion ».
  • « Activez le Bluetooth pour utiliser Nom de l’appareil pour vous connecter ».
  • « Activez la NFC pour utiliser Nom de l’appareil pour vous connecter ».
  • « Connectez-vous à un réseau Wi-Fi pour utiliser Nom de l’appareil pour vous connecter ».
  • « Appuyez à nouveau sur nom de l’appareil »
  • « Votre entreprise empêche la connexion avec Nom de l’appareil. Utilisez une autre option de connexion ».
  • « Appuyez sur Nom de l’appareil pour vous connecter ».
  • « Posez votre doigt sur Nom de l’appareil pour vous connecter »
  • « Faites glisser votre doigt sur Nom de l’appareil pour vous connecter ».
  • « Impossible de se connecter avec Nom de l’appareil. » Utilisez une autre option de connexion ».
  • « Une erreur est survenue. Utilisez une autre option de connexion, puis configurez à nouveau Nom de l’appareil. »
  • « Veuillez réessayer. »
  • « Dites votre phrase d’authentification vocale dans nom de l’appareil »
  • « Prêt à se connecter avec le nom de l’appareil ».
  • « Utilisez d’abord une autre option de connexion, puis vous pourrez utiliser Nom de l’appareil pour vous connecter. »

Enumération des appareils enregistrés

L’application de l’appareil complémentaire Windows Hello peut énumérer la liste des appareils complémentaires enregistrés via l’appel FindAllRegisteredDeviceInfoAsync. Cette API prend en charge deux types de requêtes définis par l’énum SecondaryAuthenticationFactorDeviceFindScope :

{
	User = 0,
	AllUsers,
}

La première portée renvoie la liste des appareils pour l’utilisateur connecté. La seconde renvoie la liste de tous les utilisateurs de ce PC. La première portée doit être utilisée au moment de la désinscription pour éviter de désinscrire l’appareil complémentaire Windows Hello d’un autre utilisateur. La seconde doit être utilisée au moment de l’authentification ou de l’enregistrement : au moment de l’enregistrement, cette énumération peut aider l’application à éviter d’essayer d’enregistrer deux fois le même appareil complémentaire Windows Hello.

Notez que même si l’application n’effectue pas cette vérification, le PC le fait et refusera que le même appareil complémentaire Windows Hello soit enregistré plus d’une fois. Au moment de l’authentification, l’utilisation de l’étendue AllUsers permet à l’application de l’appareil compagnon Windows Hello de prendre en charge le flux d’utilisateurs : connecter l’utilisateur A lorsque l’utilisateur B est connecté (cela nécessite que les deux utilisateurs aient installé l’application de l’appareil compagnon Windows Hello, que l’utilisateur A ait enregistré ses appareils complémentaires sur le PC et que le PC soit sur l’écran de verrouillage (ou l’écran de connexion)).

Besoins de sécurité

Le service d’authentification complémentaire fournit les protections de sécurité suivantes.

  • Un logiciel malveillant sur un appareil de bureau Windows 10 s’exécutant en tant qu’utilisateur moyen ou conteneur d’application ne peut pas utiliser l’appareil complémentaire Windows Hello pour accéder aux clés d’identification de l’utilisateur (stockées dans le cadre de Windows Hello) sur un PC de manière silencieuse.
  • Un utilisateur malveillant sur un appareil de bureau Windows 10 ne peut pas utiliser l’appareil complémentaire Windows Hello qui appartient à un autre utilisateur sur cet appareil de bureau Windows 10 pour obtenir un accès silencieux à ses clés d’identification utilisateur (sur le même appareil de bureau Windows 10).
  • Un logiciel malveillant sur l’appareil complémentaire Windows Hello ne peut pas obtenir un accès silencieux aux clés d’identification de l’utilisateur sur un appareil de bureau Windows 10, y compris en exploitant des fonctionnalités ou du code développés spécifiquement pour le cadre de l’appareil complémentaire Windows Hello.
  • Un utilisateur malveillant ne peut pas déverrouiller un appareil de bureau Windows 10 en capturant le trafic entre l’appareil complémentaire Windows Hello et l’appareil de bureau Windows 10 et en le rejouant ultérieurement. L’utilisation du nonce, de la clé d’authentification et du HMAC dans notre protocole garantit la protection contre une attaque par rejeu.
  • Un logiciel malveillant ou un utilisateur malveillant sur un PC rouge ne peut pas utiliser l’appareil complémentaire Windows Hello pour accéder au PC de l’utilisateur honnête. Cela est possible grâce à l’authentification mutuelle entre le service d’authentification complémentaire et l’appareil complémentaire Windows Hello par l’utilisation d’authkey et de HMAC dans notre protocole.

La clé pour atteindre les protections de sécurité énumérées ci-dessus est de protéger les clés HMAC contre l’accès non autorisé et de vérifier la présence de l’utilisateur. Plus précisément, le protocole doit répondre aux exigences suivantes

  • Fournir une protection contre le clonage de l’appareil complémentaire Windows Hello.
  • assurer une protection contre l’écoute clandestine lors de l’envoi des clés HMAC au PC au moment de l’enregistrement
  • S’assurer que le signal de présence de l’utilisateur est disponible