
Protection des données du trousseau
De nombreuses apps doivent traiter des mots de passe et d’autres petits fragments de données confidentielles, comme des clés et des jetons de connexion. Le trousseau offre un moyen sûr de stocker ces éléments. Les systèmes d’exploitation Apple utilisent divers mécanismes pour appliquer les garanties associées aux différentes classes de protection du trousseau. Sur les appareils sous macOS, la protection des données n’est pas directement utilisée pour appliquer ces garanties.
Aperçu
Les éléments du trousseau sont chiffrés avec deux clés AES-256-GCM distinctes : une clé de table (métadonnées) et une clé par rangée (clé secrète). Les métadonnées du trousseau (tous les attributs autres que kSecValue) sont chiffrées avec la clé de métadonnées pour accélérer les recherches, et la valeur secrète (kSecValueData) est chiffrée avec la clé secrète. La clé de métadonnées est protégée par le Secure Enclave, mais elle est mise en cache dans le processeur d’application afin de permettre les interrogations rapides du trousseau. La clé secrète requiert toujours un aller‑retour par le Secure Enclave.
Le trousseau utilise une base de données SQLite stockée sur le système de fichiers. Il n’y a qu’une seule base de données, et le démon securityd
détermine les éléments du trousseau auxquels chaque processus ou app peut accéder. Les API d’accès au trousseau envoient des appels au démon, lequel interroge les autorisations « groupes d’accès au trousseau », « identifiant d’application » et « groupe d’applications » de l’app. Au lieu de limiter l’accès à un seul processus, les groupes d’accès permettent de partager les éléments du trousseau entre les apps.
Les éléments du trousseau ne peuvent être partagés qu’entre les apps du même développeur. Pour partager des éléments du trousseau, les apps tierces utilisent des groupes d’accès portant un préfixe qui leur est alloué par le programme Apple pour les développeurs dans leurs groupes d’applications. L’obligation d’utiliser un préfixe et le caractère unique du groupe d’applications sont contrôlés par la signature du code, les profils d’approvisionnement et le programme Apple pour les développeurs.
Les données du trousseau sont protégées à l’aide d’une structure de classes similaire à celle utilisée pour la protection des données des fichiers. Ces classes présentent des comportements équivalents aux classes de protection des données des fichiers, mais les clés et les fonctions qu’elles utilisent sont différentes.
Disponibilité | Protection des données des fichiers | Protection des données du trousseau | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Lorsque l’appareil est déverrouillé | NSFileProtectionComplete | kSecAttrAccessibleWhenUnlocked | |||||||||
Lorsque l’appareil est verrouillé | NSFileProtectionComplete UnlessOpen | ||||||||||
Après le premier déverrouillage | NSFileProtectionComplete UntilFirstUserAuthentication | kSecAttrAccessibleAfterFirstUnlock | |||||||||
Toujours | NSFileProtectionNone | kSecAttrAccessibleAlways | |||||||||
Code activé | kSecAttrAccessibleWhen PasscodeSetThisDeviceOnly |
Les apps qui font appel à des services d’actualisation en arrière‑plan peuvent utiliser la classe kSecAttrAccessibleAfterFirstUnlock pour les éléments du trousseau qui doivent être accessibles lors des mises à jour en arrière‑plan.
La classe kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly se comporte comme la classe kSecAttrAccessibleWhenUnlocked, mais n’est disponible que si un code est configuré pour l’appareil. Cette classe n’existe que dans le conteneur de clés du système. Ces éléments :
ne se synchronisent pas avec le trousseau iCloud;
ne sont pas sauvegardés;
ne sont pas inclus dans les conteneurs de clés de l’autorité de séquestre.
Si le code est supprimé ou réinitialisé, les éléments sont rendus inutilisables par l’effacement des clés de classe.
D’autres classes du trousseau ont un pendant « Cet appareil uniquement », qui est toujours protégé par l’UID quand il est copié à partir de l’appareil lors d’une sauvegarde, ce qui le rend inutilisable s’il est restauré sur un autre appareil. Apple a pris soin de trouver un juste équilibre entre sécurité et convivialité en choisissant les classes du trousseau qui varient en fonction du type d’informations sécurisées et en définissant quand elles sont requises par iOS, iPadOS et visionOS.
Protections des classes de données du trousseau
Les protections des classes mentionnées ci-dessous sont imposées pour les éléments du trousseau.
Élément | Accessible |
---|---|
Mots de passe Wi‑Fi | Après le premier déverrouillage |
Comptes Mail | Après le premier déverrouillage |
Comptes Microsoft Exchange ActiveSync | Après le premier déverrouillage |
Mots de passe VPN | Après le premier déverrouillage |
LDAP, CalDAV, CardDAV | Après le premier déverrouillage |
Jetons des comptes de réseau social | Après le premier déverrouillage |
Clés de chiffrement des notifications Handoff | Après le premier déverrouillage |
Jeton iCloud | Après le premier déverrouillage |
Clés iMessage | Après le premier déverrouillage |
Mot de passe de partage à domicile | Lorsque l’appareil est déverrouillé |
Mots de passe Safari | Lorsque l’appareil est déverrouillé |
Signets Safari | Lorsque l’appareil est déverrouillé |
Sauvegarde par le Finder ou iTunes | Non itinérant lorsque l’appareil est déverrouillé |
Certificats VPN | Après le premier déverrouillage, non itinérant |
Clés Bluetooth® | Non itinérant en toute circonstance |
Jeton du service de notifications Push d’Apple (APN) | Non itinérant en toute circonstance |
Certificats et clé privée iCloud | Non itinérant en toute circonstance |
NIP de la carte SIM | Non itinérant en toute circonstance |
Jeton Localiser | Toujours |
Messagerie | Toujours |
Sous macOS, tous les éléments du trousseau installés par les profils de configuration sont toujours disponibles. Sous iOS, iPadOS et visionOS, les éléments du trousseau installés par un profil de configuration ont une accessibilité différente en fonction de leur type, de la façon dont ils sont référencés et du moment où ils ont été installés. Par défaut, les éléments du trousseau installés à l’aide de profils de configuration sont disponibles après le premier déverrouillage et non itinérant. Cependant, un élément du trousseau installé par un profil de configuration est toujours disponible s’il :
a été installé avant la mise à niveau vers iOS 15 ou iPadOS 15 ou des versions ultérieures;
est un certificat (pas une identité);
est une identité référencée par l’
IdentityCertificateUUID
dans une entitécom.apple.mdm
Contrôle de l’accès au trousseau
Les trousseaux peuvent utiliser des listes de contrôle d’accès (ACL, Access Control List) pour définir des règles précisant les conditions d’accessibilité et d’authentification. Les éléments peuvent établir des conditions nécessitant la présence de l’utilisateur en spécifiant qu’ils ne sont accessibles que si celui‑ci s’authentifie à l’aide d’Optic ID, de Face ID ou de Touch ID, ou en saisissant le code ou le mot de passe de l’appareil. Il est aussi possible de limiter l’accès aux éléments en indiquant que l’inscription Optic ID, Face ID ou Touch ID n’a pas changé depuis l’ajout de l’élément. Cette limite contribue à empêcher un assaillant d’ajouter sa propre empreinte digitale dans le but d’accéder à un élément du trousseau. Les listes ACL sont évaluées à l’intérieur du Secure Enclave et ne sont transmises au noyau que si les conditions définies sont remplies.
Architecture du trousseau sous macOS
macOS donne accès au trousseau pour stocker de façon pratique et sécurisée les noms d’utilisateur et les mots de passe, les identités numériques, les clés de chiffrement et les notes sécurisées. Le trousseau est accessible par l’app Trousseaux d’accès dans /Applications/Utilitaires/. Grâce à lui, l’utilisateur n’a pas à saisir d’informations d’identification, ni même à les mémoriser. Un premier trousseau par défaut est créé pour chaque utilisateur du Mac, et il est possible d’en ajouter d’autres pour des besoins précis.
En plus de compter sur les trousseaux d’utilisateur, macOS fait appel à plusieurs trousseaux système pour consigner les éléments d’authentification qui ne sont pas liés à un utilisateur, comme les informations d’identification réseau et les identités d’infrastructure à clés publiques (ICP). Un de ces trousseaux, Racines du système, est immuable et contient les certificats des autorités de certification racine d’ICP Internet pour permettre l’exécution de tâches courantes telles que les services bancaires et les transactions en ligne. De même, l’utilisateur peut déployer des certificats de l’autorité de certification fournis à l’interne aux ordinateurs Mac gérés pour contribuer à la validation de sites et de services internes.