
Classes de protection des données
Lorsqu’un nouveau fichier est créé sur des appareils prenant en charge la protection des données, une classe lui est attribuée par l’app dont il est issu. Chaque classe utilise des règles différentes pour déterminer quand les données sont accessibles. Les classes et règles de base sont décrites dans les sections qui suivent. Les ordinateurs Mac avec puce Apple ne prennent pas en charge la classe D (Aucune protection) et une limite de sécurité est établie autour des opérations de connexion et de déconnexion (et non pas de verrouillage et de déverrouillage, comme sur les iPhone et les iPad).
Classe | Type de protection |
---|---|
Classe A : Protection complète | NSFileProtectionComplete |
Classe B : Protection complète sauf si des données sont ouvertes | NSFileProtectionCompleteUnlessOpen |
Classe C : Protection complète jusqu’à la première authentification de l’utilisateur Remarque : macOS utilise une clé de volume pour recréer les caractéristiques de la protection offerte par FileVault. | NSFileProtectionCompleteUntilFirstUserAuthentication |
Classe D : Aucune protection Remarque : Non pris en charge sous macOS. | NSFileProtectionNone |
Protection complète
NSFileProtectionComplete : La clé de classe est protégée par une clé obtenue à partir du code ou du mot de passe de l’utilisateur, et de l’UID de l’appareil. Peu après que l’utilisateur a verrouillé l’appareil (10 secondes, quand le réglage Exiger le mot de passe est réglé sur « immédiatement »), la clé de classe déchiffrée est détruite, ce qui rend inaccessibles toutes les données de cette classe jusqu’à ce que l’utilisateur entre de nouveau son code ou déverrouille l’appareil (s’y connecte) avec Optic ID, Face ID ou Touch ID.
Sur les appareils sous macOS, peu après la déconnexion du dernier utilisateur, la clé de classe déchiffrée est détruite, rendant toutes les données de cette classe inaccessibles jusqu’à ce qu’un utilisateur entre de nouveau son code ou se connecte à l’appareil avec Touch ID.
Protection complète sauf si des données sont ouvertes
NSFileProtectionCompleteUnlessOpen : Cette classe permet l’écriture de fichiers lorsque l’appareil est verrouillé ou lorsque l’utilisateur s’est déconnecté. Le téléchargement en arrière-plan d’une pièce jointe à un courriel en est un bon exemple. La technologie utilisée est la cryptographie asymétrique à courbe elliptique (ECDH avec Curve25519). La clé par fichier habituelle est protégée par une clé obtenue au moyen d’un protocole d’échange Diffie‑Hellman à une passe décrit dans la publication spéciale 800‑56A du NIST.
La clé publique éphémère de l’échange est stockée avec la clé par fichier enveloppée. La méthode de dérivation de clé est la concaténation (solution approuvée 1), décrite dans la section 5.8.1 de la même publication. AlgorithmID est omis. PartyUInfo et PartyVInfo correspondent respectivement à la clé publique éphémère et à la clé publique statique. La fonction de hachage utilisée est SHA256. À la fermeture du fichier, la clé par fichier est effacée de la mémoire. Pour rouvrir le fichier, le secret partagé est recréé à l’aide de la clé privée de la classe « Protection complète sauf si des données sont ouvertes » et de la clé publique éphémère du fichier, lesquelles servent à débloquer la clé par fichier, qui peut alors déchiffrer le fichier.
Sur les appareils sous macOS, la partie privée de NSFileProtectionCompleteUnlessOpen est accessible aussi longtemps qu’un utilisateur est connecté ou authentifié sur le système.
Protection complète jusqu’à la première authentification de l’utilisateur
NSFileProtectionCompleteUntilFirstUserAuthentication : Cette classe fonctionne de la même façon que la « Protection complète », sauf que la clé de classe déchiffrée n’est pas effacée de la mémoire lorsque l’appareil est verrouillé ou lorsque l’utilisateur s’est déconnecté. Cette classe offre des propriétés semblables au chiffrement complet du disque sur les ordinateurs de bureau et protège les données des attaques comprenant un redémarrage. Elle est attribuée par défaut à toutes les données d’apps tierces non attribuées à une classe de protection des données.
Sur les appareils sous macOS, cette classe utilise une clé de volume qui est accessible tant que le volume est monté et qui fonctionne exactement comme FileVault.
Aucune protection
NSFileProtectionNone : Cette clé de classe n’est protégée que par l’UID et est entreposée dans le stockage effaçable. Puisque toutes les clés requises pour déchiffrer les fichiers dans cette classe sont entreposées sur l’appareil, le seul avantage que présente ce type de chiffrement est l’effacement à distance rapide. Les fichiers auxquels aucune classe de protection des données n’est attribuée sont quand même stockés sous forme chiffrée, comme toutes les données sur les iPhone, iPad et Apple Vision Pro.
Ceci n’est pas pris en charge sous macOS.
Remarque : Sur les appareils sous macOS, en ce qui concerne les volumes qui ne correspondent pas à un système d’exploitation démarré, toutes les classes de protection des données restent accessibles tant que le volume est monté. La classe de protection des données par défaut est NSFileProtectionCompleteUntilFirstUserAuthentication. La fonctionnalité de la clé par domaine est disponible pour Rosetta 2 et les apps natives.