암호화된 파일의 백업 및 복원

EFS(파일 시스템 암호화)는 파일에 액세스하고 파일의 암호를 해독하는 데 필요한 키를 얻을 수 있는 적절한 자격 증명이 있는 경우 파일을 연 애플리케이션이 암호화되지 않은 정보에 액세스할 수 있는 방식으로 암호화된 파일의 열기를 필터링합니다. 이 파일에 대한 후속 읽기 작업은 암호화되지 않은 텍스트를 생성합니다. 따라서 암호화된 파일에 대한 일반적인 액세스에 매우 바람직하며 파일의 암호화 및 암호 해독을 투명하게 유지합니다. 그러나 CreateFile, ReadFileWriteFile과 같은 표준 파일 I/O 호출을 사용하여 백업을 시도하는 경우 백업된 파일이 일반 텍스트 버전이 되기 때문에 암호화된 파일의 백업을 방해합니다.

이 문제를 해결하기 위해 원시 암호화 함수가 제공됩니다. 주로 백업 애플리케이션에서 이 함수를 사용합니다. 원시 암호화 함수는 열기, 읽기 및 쓰기 함수가 원시 암호화된 데이터 스트림에 대한 액세스를 허용하고 $EFS 스트림의 읽기/쓰기도 허용한다는 점에서 다른 파일 시스템 함수와 다릅니다. 따라서 원시 암호화 함수의 호출자는 파일의 암호를 해독하는 암호화 키에 액세스할 필요가 없습니다. 백업 및 복원 애플리케이션에 사용할 수 있는 원시 암호화 API는 다음과 같습니다.

원시 암호화 API 설명
OpenEncryptedFileRaw 암호화된 형식의 데이터에 대한 액세스 권한으로 암호화된 파일을 엽니다. 호출자가 파일에 대한 키에 액세스할 수 없는 경우 호출자가 암호화된 파일을 내보내려면 SeBackupPrivilege가 필요하고 암호화된 파일을 가져오려면 SeRestorePrivilege가 필요합니다.
CloseEncryptedFileRaw OpenEncryptedFileRaw로 연 암호화된 파일을 닫습니다.
ReadEncryptedFileRaw 암호화된 파일을 읽고 데이터를 암호화된 형식으로 유지합니다.
WriteEncryptedFileRaw 암호화된 파일을 쓰고 데이터를 암호화된 형식으로 유지합니다.
ImportCallback WriteEncryptedFileRaw에서 사용할 애플리케이션 정의 콜백입니다.
ExportCallback ReadEncryptedFileRaw에서 사용할 애플리케이션 정의 콜백입니다.