Sauvegarde et restauration de fichiers chiffrés

Le système efs (Encrypting File System) filtre l’ouverture d’un fichier chiffré de telle sorte que l’application qui a ouvert le fichier ait accès aux informations non chiffrées, à condition bien sûr qu’elle dispose des informations d’identification appropriées pour accéder au fichier et obtenir la clé nécessaire pour déchiffrer le fichier. Les opérations de lecture suivantes sur ce fichier donnent du texte non chiffré. Cela est très souhaitable pour l’accès classique aux fichiers chiffrés, et maintient le chiffrement et le déchiffrement des fichiers transparents. Toutefois, cela empêche la sauvegarde des fichiers chiffrés, car si la sauvegarde est tentée avec les appels d’E/S de fichier standard tels que CreateFile, ReadFile et WriteFile, les fichiers sauvegardés seront la version en texte brut.

Les fonctions de chiffrement brutes sont fournies pour résoudre ce problème. Les applications de sauvegarde sont un utilisateur principal destiné à ces fonctions. Les fonctions de chiffrement brutes diffèrent des autres fonctions de système de fichiers en ce que les fonctions d’ouverture, de lecture et d’écriture permettent d’accéder aux flux de données chiffrées brutes et d’autoriser la lecture/écriture du flux $EFS. Par conséquent, l’appelant des fonctions de chiffrement brutes n’a pas besoin d’accéder aux clés de chiffrement qui déchiffrent le fichier. Les API de chiffrement brutes suivantes peuvent être utilisées avec les applications de sauvegarde et de restauration :

API de chiffrement brut Description
OpenEncryptedFileRaw Ouvrez un fichier chiffré avec accès aux données au format chiffré. Si l’appelant n’a pas accès à la clé du fichier, l’appelant a besoin de SeBackupPrivilege pour exporter des fichiers chiffrés ou de SeRestorePrivilege pour importer des fichiers chiffrés.
CloseEncryptedFileRaw Fermez un fichier chiffré ouvert avec OpenEncryptedFileRaw
ReadEncryptedFileRaw Lire un fichier chiffré en laissant ses données au format chiffré
WriteEncryptedFileRaw Écrire un fichier chiffré en laissant ses données au format chiffré
ImportCallback Rappel défini par l’application pour une utilisation avec WriteEncryptedFileRaw
ExportCallback Rappel défini par l’application pour une utilisation avec ReadEncryptedFileRaw