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 « Keychain-access-groups », « application-identifier » et « application-group » 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 l’Apple Developer Program 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 l’Apple Developer Program.

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

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

LDAP, CalDAV, CardDAV

Après le premier déverrouillage

Comptes Mail

Après le premier déverrouillage

Comptes Microsoft Exchange ActiveSync

Après le premier déverrouillage

Jetons des comptes de réseau social

Après le premier déverrouillage

Mots de passe VPN

Après le premier déverrouillage

Mots de passe Wi‑Fi

Après le premier déverrouillage

Mot de passe de partage à domicile

Lorsque l’appareil est déverrouillé

Signets Safari

Lorsque l’appareil est déverrouillé

Mots de passe 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

Jeton du service de notifications Push d’Apple (APN)

Non itinérant en toute circonstance

Clés Bluetooth

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 après le déverrouillage de FileVault. 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, iPadOS 15 ou les versions ultérieures;

  • est un certificat (pas une identité);

  • est une identité référencée par l’identifiant 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/Utilities. 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.

Date de publication : 19 décembre 2024
Morty Proxy This is a proxified and sanitized view of the page, visit original site.
Ces renseignements étaient-ils utiles?
Limite de caractères : 250
La limite maximale de caractères est de 250.
Merci de vos commentaires.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.