Gestion des fichiers et répertoires chiffrés

Un programmeur ou un utilisateur peut marquer un répertoire ou un fichier comme chiffré. Un fichier marqué chiffré est chiffré par le système de fichiers NTFS à l’aide du pilote de chiffrement actuel. Si, à une date ultérieure, le fichier est marqué comme non chiffré, il est déchiffré et laissé dans un état de texte brut (non sécurisé).

Les répertoires ne sont pas chiffrés eux-mêmes. Au lieu de cela, par défaut, dans un répertoire « chiffré », tous les nouveaux fichiers du répertoire sont chiffrés lors de la création. Un utilisateur doit spécifiquement modifier le status d’un nouveau fichier pour le déchiffrer si l’utilisateur ne souhaite pas que le fichier soit chiffré. Un répertoire chiffré est visible. Pour rendre un répertoire inaccessible aux autres utilisateurs, utilisez les méthodes standard de contrôle d’accès.

Les fonctions de chiffrement ne peuvent pas être utilisées avec l’API sauvegarde.

Pour chiffrer un nouveau fichier, utilisez la fonction CreateFile avec l’indicateur FILE_ATTRIBUTE_ENCRYPTED . Pour chiffrer un fichier existant, utilisez la fonction EncryptFile . Tous les flux de données du fichier sont chiffrés. Si le fichier est déjà chiffré, EncryptFile ne fait rien, mais retourne une valeur différente de zéro, ce qui indique la réussite. Si le fichier est compressé, EncryptFile le décompose avant de le chiffrer.

Pour déchiffrer un fichier chiffré, utilisez la fonction DecryptFile . Si le fichier n’est pas chiffré, DecryptFile ne fait rien, mais retourne une valeur différente de zéro indiquant la réussite.

La fonction EncryptionDisable désactive ou active le chiffrement du répertoire indiqué et des fichiers qu’il contient. Cela n’affecte pas le chiffrement des sous-répertoires situés sous le répertoire indiqué.

Pour récupérer le status de chiffrement d’un fichier, utilisez la fonction FileEncryptionStatus. Vous pouvez également appeler la fonction GetFileAttributes et examiner l’indicateur FILE_ATTRIBUTE_ENCRYPTED dans la valeur de retour.

CopyFile et CopyFileEx tentent de chiffrer le fichier de destination avec les clés utilisées dans le chiffrement du fichier source. Si cela ne peut pas être effectué, les deux fonctions tentent de chiffrer le fichier de destination avec les clés par défaut. Si ces deux méthodes ne peuvent pas être effectuées, CopyFile et CopyFileEx échouent avec une erreur ERROR_ENCRYPTION_FAILED . Si vous souhaitez que CopyFileEx termine l’opération de copie même lorsque le fichier de destination ne peut pas être chiffré, incluez l’indicateur COPY_FILE_ALLOW_DECRYPTED_DESTINATION dans la valeur du paramètre dwCopyFlags dans votre appel à CopyFileEx.