Backup e restauração de arquivos criptografados

O EFS (Encrypting File System) filtra a abertura de um arquivo criptografado de forma que o aplicativo que abriu o arquivo obtenha acesso às informações não criptografadas, desde que tenha as credenciais adequadas para acessar o arquivo e obter a chave necessária para descriptografar o arquivo. As operações de leitura subsequentes neste arquivo produzirão texto não criptografado. Isso é muito desejável para o acesso típico a arquivos criptografados e mantém a criptografia e a descriptografia dos arquivos transparentes. No entanto, isso dificulta o backup de arquivos criptografados, pois se o backup for tentado com as chamadas de E/S de arquivo padrão, como CreateFile, ReadFile e WriteFile, o backup dos arquivos será a versão de texto sem formatação.

As funções de criptografia brutas são fornecidas para resolver esse problema. Os aplicativos de backup são um usuário primário destinado a essas funções. As funções de criptografia brutas diferem de outras funções do sistema de arquivos nas funções abertas, de leitura e de gravação que permitem acesso aos fluxos de dados criptografados brutos e também permitem a leitura/gravação do fluxo de $EFS. Portanto, o chamador das funções de criptografia brutas não precisa de acesso às chaves criptográficas que descriptografam o arquivo. As seguintes APIs de criptografia bruta estão disponíveis para uso com aplicativos de backup e restauração:

API de Criptografia Bruta Descrição
OpenEncryptedFileRaw Abra um arquivo criptografado com acesso a dados em formato criptografado. Se o chamador não tiver acesso à chave do arquivo, o chamador precisará de SeBackupPrivilege para exportar arquivos criptografados ou SeRestorePrivilege para importar arquivos criptografados.
CloseEncryptedFileRaw Fechar um arquivo criptografado aberto com OpenEncryptedFileRaw
ReadEncryptedFileRaw Ler um arquivo criptografado deixando seus dados em formato criptografado
WriteEncryptedFileRaw Gravar um arquivo criptografado deixando seus dados em formato criptografado
ImportCallback Retorno de chamada definido pelo aplicativo para uso com WriteEncryptedFileRaw
ExportCallback Retorno de chamada definido pelo aplicativo para uso com ReadEncryptedFileRaw