Поделиться через


Резервное копирование и восстановление зашифрованных файлов

Шифрующая файловая система (EFS) фильтрует открытие зашифрованного файла таким образом, чтобы приложение, открывающее файл, получало доступ к незашифрованной информации, при условии, что у него есть соответствующие учетные данные для доступа к файлу и получения ключа, необходимого для расшифровки файла. Последующие операции чтения в этом файле будут получать незашифрованный текст. Это очень желательно для типичного доступа к зашифрованным файлам и обеспечивает прозрачное шифрование и расшифровку файлов. Однако это препятствует резервному копированию зашифрованных файлов, так как при попытке резервного копирования с помощью стандартных вызовов ввода-вывода файлов, таких как CreateFile, ReadFileи WriteFile, резервные копии файлов будут простой текстовой версией.

Необработанные функции шифрования предоставляются для решения этой проблемы. Приложения резервного копирования — это основной пользователь, предназначенный для этих функций. Функции необработанного шифрования отличаются от других функций файловой системы в функциях открытия, чтения и записи, разрешают доступ к необработанным зашифрованным потокам данных, а также разрешают чтение и запись потока $EFS. Поэтому вызывающий функции необработанного шифрования не нуждается в доступе к криптографическим ключам, расшифровывающим файл. Для использования с приложениями резервного копирования и восстановления доступны следующие необработанные API шифрования:

API необработанного шифрования Описание
OpenEncryptedFileRaw Откройте зашифрованный файл с доступом к данным в зашифрованном формате. Если вызывающий объект не имеет доступа к ключу для файла, вызывающий объект должен SeBackupPrivilege экспортировать зашифрованные файлы или SeRestorePrivilege для импорта зашифрованных файлов.
CloseEncryptedFileRaw Закройте зашифрованный файл, открытый с помощью OpenEncryptedFileRaw
ReadEncryptedFileRaw Чтение зашифрованного файла, оставляющего данные в зашифрованном формате
WriteEncryptedFileRaw Запись зашифрованного файла, оставляющего данные в зашифрованном формате
ImportCallback Обратный вызов, определенный приложением для использования с WriteEncryptedFileRaw
ExportCallback Определяемый приложением обратный вызов для использования с ReadEncryptedFileRaw