DOD 5220.22-M 보안 삭제 기능
사이트 설명 번역 추신(크록3ai 더 길게 생각하기 )
Windows NT/2000(Win2K)의 C2 준수 기능 중 하나는 객체 재사용 보호를 구현한다는 것입니다. 이는 애플리케이션이 파일 공간이나 가상 메모리를 할당할 때, Windows NT/2K가 제공하는 리소스에 이전에 저장된 데이터를 볼 수 없음을 의미합니다. Windows NT는 메모리를 0으로 채우고, 파일이 배치된 디스크의 섹터를 0으로 채운 후에 애플리케이션에 이러한 리소스를 제공합니다. 그러나 객체 재사용은 파일이 삭제되기 전에 파일이 차지하는 공간을 0으로 채워야 한다는 것을 요구하지 않습니다. 이는 Windows NT/2K가 운영 체제가 시스템 리소스에 대한 접근을 제어한다는 가정 하에 설계되었기 때문입니다. 그러나 운영 체제가 활성화되지 않은 상태에서는 원시 디스크 편집기와 복구 도구를 사용하여 운영 체제가 할당 해제한 데이터를 보고 복구할 수 있습니다. Win2K의 암호화 파일 시스템(EFS)으로 파일을 암호화할 때도, 새로운 암호화된 파일 버전이 생성된 후에 파일의 원래 암호화되지 않은 데이터가 디스크에 남아 있습니다.
삭제된 파일과 EFS로 암호화한 파일이 복구로부터 안전하도록 보장하는 유일한 방법은 보안 삭제 애플리케이션을 사용하는 것입니다. 보안 삭제 애플리케이션은 삭제된 파일의 디스크 데이터를 덮어쓰는 기술을 사용하여, 약하게 삭제된 파일을 드러내는 자기 매체의 패턴을 읽는 복구 기술을 사용해도 디스크 데이터가 복구 불가능하도록 만듭니다. SDelete(보안 삭제)는 그러한 애플리케이션입니다. SDelete를 사용하여 기존 파일을 안전하게 삭제할 수 있을 뿐만 아니라, 디스크의 할당되지 않은 부분에 존재하는 파일 데이터(이미 삭제하거나 암호화한 파일 포함)를 안전하게 지울 수 있습니다. SDelete는 국방부의 지우기 및 소독 표준 DOD 5220.22-M을 구현하여, SDelete로 삭제된 파일 데이터는 영원히 사라진다는 확신을 줍니다. 단, SDelete는 파일 데이터는 안전하게 삭제하지만, 자유 디스크 공간에 있는 파일 이름은 삭제하지 않습니다.
SDelete는 Windows 명령줄에서 실행되는 유틸리티로, 파일이나 디렉터리를 안전하게 삭제하거나 논리 디스크의 여유 공간을 정리하는 데 사용됩니다. 와일드카드 문자(예: *, ?)를 파일 또는 디렉터리 지정에 사용할 수 있어 유연한 처리가 가능합니다. 아래에서 SDelete의 사용법과 작동 원리를 한국어로 자세히 설명하겠습니다.
사용법
SDelete는 Windows 명령 프롬프트에서 다음 형식으로 실행됩니다:
bash
복사
sdelete [-p passes] [-r] [-s] [-q] [-f] <파일 또는 디렉터리 [...]> sdelete [-p passes] [-q] [-z|-c] <드라이브 문자 [...]> sdelete [-p passes] [-q] [-z|-c] <물리 디스크 번호 [...]>
사용법
SDelete는 Windows 명령 프롬프트에서 다음 형식으로 실행됩니다:
bash
복사
sdelete [-p passes] [-r] [-s] [-q] [-f] <파일 또는 디렉터리 [...]> sdelete [-p passes] [-q] [-z|-c] <드라이브 문자 [...]> sdelete [-p passes] [-q] [-z|-c] <물리 디스크 번호 [...]>
매개변수 설명
매개변수 | 설명 |
---|---|
-c | 디스크의 여유 공간을 정리합니다. |
-f | 문자만 포함된 인수를 디스크가 아닌 파일/디렉터리로 강제 처리합니다. 경로 구분자(/, \)나 파일 확장자가 포함된 경우 필요하지 않습니다. |
-p <횟수> | 덮어쓰기 횟수를 지정합니다. 기본값은 1입니다. |
-q | 조용한 모드(실행 중 메시지 출력을 최소화). |
-r | 읽기 전용 속성을 제거합니다. |
-s | 하위 디렉터리를 재귀적으로 처리합니다. |
-z | 여유 공간을 0으로 채웁니다(가상 디스크 최적화에 유용). |
-nobanner | 시작 배너와 저작권 메시지를 표시하지 않습니다. |
사용 시 주의사항
드라이브 문자를 지정할 때는 D:처럼 :를 포함해야 합니다.
디스크를 정리하려면 해당 디스크에 볼륨이 없어야 합니다.
사용 예시
특정 파일 삭제
bash
복사
sdelete -p 3 -q secret.txt
secret.txt 파일을 3번 덮어쓰기로 안전하게 삭제하며, 조용한 모드로 실행합니다.
디렉터리와 하위 항목 삭제
bash
복사
sdelete -s -r private_folder
private_folder와 그 하위 디렉터리를 재귀적으로 삭제하며, 읽기 전용 속성도 제거합니다.
드라이브 여유 공간 정리
bash
복사
sdelete -z D:
D: 드라이브의 여유 공간을 0으로 채웁니다.
SDelete 작동 원리
SDelete는 단순한 파일 삭제뿐만 아니라 NTFS에서 관리되는 압축, 암호화, 스파스 파일과 디스크 여유 공간을 안전하게 정리하는 데 특화되어 있습니다. 그 작동 방식을 단계별로 설명합니다.
1. 일반 파일 삭제
특별한 속성이 없는 파일은 간단하게 처리됩니다. SDelete는 파일을 보안 패턴으로 덮어쓰며, 기본적으로 1번 덮어쓰기를 수행합니다(-p로 횟수 조정 가능). 이 과정으로 파일 내용이 복구 불가능하게 됩니다.
2. 압축, 암호화, 스파스 파일 처리
NTFS는 이러한 파일을 16클러스터 블록 단위로 관리합니다. 프로그램이 이런 파일에 쓰기를 시도하면:
NTFS는 새 데이터를 저장할 새 디스크 공간을 할당합니다.
새 데이터가 기록된 후, 기존 클러스터를 해제합니다.
이 방식 때문에 단순 덮어쓰기로는 기존 데이터를 삭제할 수 없습니다. SDelete는 이를 해결하기 위해:
조각 모음 API를 활용해 파일 데이터가 위치한 클러스터를 정확히 파악합니다.
디스크를 원시 액세스로 열고 해당 클러스터를 덮어씁니다.
3. 여유 공간 정리
FAT와 NTFS는 여유 공간을 직접 지정할 방법을 제공하지 않습니다. SDelete는 이를 간접적으로 처리합니다:
최대 크기 파일 할당
SDelete는 캐시되지 않은 파일 I/O를 사용해 가능한 한 큰 파일을 생성합니다. 이는 NT 파일 시스템 캐시가 불필요한 데이터로 오염되지 않도록 합니다.
섹터(512바이트) 단위로 정렬되므로, 남는 공간이 생길 수 있습니다.
남은 공간 채우기
캐시된 파일 I/O로 또 다른 큰 파일을 만들어 남은 공간을 채웁니다.
보안 덮어쓰기
두 파일 모두 보안 패턴으로 덮어써 이전 여유 공간을 정리합니다.
4. NTFS MFT 정리
NTFS 드라이브에서는 MFT(마스터 파일 테이블)의 여유 공간도 처리해야 합니다:
MFT 레코드는 보통 1KB 크기이며, 모든 파일/디렉터리는 최소 1개의 레코드를 가집니다.
작은 파일은 MFT 레코드 안에 저장되고, 큰 파일은 외부 클러스터에 할당됩니다.
SDelete는 MFT 레코드 크기에 맞는 파일을 반복 생성하며, 더 이상 파일을 만들 수 없을 때까지 모든 여유 레코드를 채웁니다.
5. 파일 이름 덮어쓰기
삭제 대상 파일의 이름을 안전하게 지우기 위해:
파일 이름을 26번 변경하며, 각 문자를 순차적인 알파벳으로 대체합니다(예: foo.txt → AAA.AAA → BBB.BBB 등).
6. 여유 공간 내 파일 이름 처리 한계
SDelete는 디스크 여유 공간 정리 시 파일 이름을 안전하게 삭제하지 않습니다. 이유는:
파일 이름은 디렉터리 구조에 저장되며, 삭제된 이름이 포함된 여유 공간은 다른 파일에 할당할 수 없습니다.
SDelete는 이 공간을 직접 조작하거나 덮어쓸 방법이 없습니다.
이상 번역 내용
안전한 하루 돼세요 ~
사용 하기
https://learn.microsoft.com/en-us/sysinternals/downloads/sdelete