Pour les appareils exécutant Android 13 ou version ultérieure, Android est compatible avec l'approche d'authentification Trust on First Use (TOFU) (RFC7435), qui permet aux utilisateurs de faire confiance à un réseau d'entreprise (EAP) en installant l'autorité de certification racine utilisée par le serveur et en définissant son nom de domaine dans un réseau enregistré. TOFU permet à l'appareil d'obtenir une clé publique non authentifiée lorsqu'un utilisateur se connecte pour la première fois à un réseau d'entreprise et de conserver la clé pour les connexions ultérieures.
Arrière-plan
Contrairement aux réseaux personnels qui ne nécessitent qu'un mot de passe, les réseaux d'entreprise utilisent l'authentification par infrastructure à clé publique (PKI), qui nécessite que le client préinstalle des certificats. Sous Android 11 ou version antérieure, les utilisateurs peuvent sélectionner l'option Ne pas valider pour le certificat d'autorité de certification du serveur dans les paramètres réseau, ce qui permet de contourner la validation du certificat côté serveur. Toutefois, pour renforcer la sécurité et se conformer à la spécification WPA R2, Android 12 a introduit une exigence de validation du certificat de serveur pour les réseaux d'entreprise. Cette exigence supplémentaire a constitué un obstacle pour les utilisateurs, car ils doivent installer un certificat d'autorité de certification pour ces réseaux. Le TOFU permet aux utilisateurs de se connecter à un réseau d'entreprise basé sur la PKI en acceptant simplement son autorité de certification racine.
Comportement de la fonctionnalité
Les appareils compatibles avec TOFU affichent le comportement suivant lorsqu'un utilisateur se connecte à un réseau d'entreprise qui ne dispose pas d'une clé publique authentifiée déjà installée.
Se connecter à un nouveau réseau via le sélecteur Wi-Fi
Sélectionnez un nouveau réseau d'entreprise dans l'outil de sélection du Wi-Fi.
L'appareil affiche une boîte de dialogue (figure 1) pour confirmer si le réseau est approuvé.
Appuyez sur Oui, se connecter pour accepter la connexion réseau ou sur Non, ne pas se connecter pour la refuser.
Si vous appuyez sur Oui, se connecter, l'appareil configure automatiquement les paramètres de sécurité, se connecte au réseau et active la connexion automatique pour le réseau.
Si vous appuyez sur Non, ne pas connecter, l'appareil se déconnecte du réseau et la connexion automatique est désactivée pour le réseau.
Figure 1 : Boîte de dialogue de la fonctionnalité TOFU
Se connecter à un réseau existant lorsque la connexion automatique est activée
Lorsque vous vous connectez à un réseau d'entreprise pour lequel la connexion automatique est activée, mais qui ne dispose pas d'un certificat d'autorité de certification valide, l'appareil se connecte automatiquement, puis affiche une notification persistante (non ignorable).
Appuyez sur la notification.
L'appareil affiche une boîte de dialogue (figure 1) pour confirmer si le réseau est approuvé.
Appuyez sur Oui, se connecter pour accepter la connexion réseau ou sur Non, ne pas se connecter pour la refuser.
Si vous appuyez sur Oui, se connecter, l'appareil configure automatiquement les paramètres de sécurité, se connecte au réseau et active la connexion automatique pour le réseau.
Si vous appuyez sur Non, ne pas connecter, l'appareil se déconnecte du réseau et la connexion automatique est désactivée pour le réseau.
Implémentation
Pour prendre en charge la fonctionnalité TOFU, implémentez les HAL du demandeur fournis dans le projet Android Open Source (AOSP) sur /hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant
.
Les API publiques suivantes sont disponibles dans Android 13 pour les applications:
WifiManager#isTrustOnFirstUseSupported()
: indique si l'appareil est compatible avec TOFU.WifiEnterpriseConfig#enableTrustOnFirstUse(boolean)
: active TOFU.WifiEnterpriseConfig#isTrustOnFirstUseEnabled()
: indique si le TOFU est activé.
Validation
Pour valider l'implémentation du TOFU sur votre appareil, utilisez les tests suivants:
- CTS:
CtsWifiTestCases
- VTS:
VtsHalWifiSupplicantStaNetworkTargetTest