0 / 5
슬랙 공간(Slack Space)
디스크는 섹터 단위로만 읽고 쓴다. 파일 시스템은 그보다 큰 클러스터 단위로 파일에 자리를 내준다. 파일 크기가 클러스터 크기의 배수로 딱 떨어지는 일은 드물어서, 파일의 마지막 클러스터에는 파일 데이터가 차지하지 않는 자리가 남는다. 이 자리가 슬랙 공간이다.
예: 640B짜리 보고서.txt도 클러스터 하나(2048B)를 통째로 받는다. 파일 데이터 뒤로 1408B가 남는다.
1 / 5
클러스터 할당
파일 시스템이 보고서.txt에 클러스터 하나(섹터 4개, 2048B)를 내주고, 파일 시스템 기록에 이름과 크기 640B를 적는다. 이 클러스터는 예전에 지운 파일이 쓰던 자리다. 파일을 지우면 파일 시스템은 그 자리를 비었다고 표시만 하고 내용은 지우지 않는다. 그래서 네 섹터에는 아직 지운 파일의 내용이 남아 있다.
2 / 5
파일 데이터 쓰기
보고서.txt의 내용 640B를 클러스터 앞에서부터 쓴다. 섹터 1(512B)을 꽉 채우고, 나머지 128B는 섹터 2 앞쪽에 쓴다.
3 / 5
램 슬랙: 섹터 2의 나머지 384B
디스크는 섹터 단위로만 쓸 수 있어서 섹터 2도 통째로 쓴다. 파일 데이터 128B 뒤에 남는 384B는 운영체제가 0으로 채운다. 이 384B가 램 슬랙이고, 섹터 슬랙이라고도 한다. 예전 운영체제가 이 자리를 메모리(RAM)에 있던 내용으로 채워서 이런 이름이 붙었다.
4 / 5
드라이브 슬랙: 쓰지 않은 섹터 3·4
파일 데이터가 섹터 2에서 끝났으므로 섹터 3·4에는 아무것도 쓰지 않는다. 0으로 채우지도 않아서 지운 파일의 내용 1024B가 그대로 남는다. 이 부분이 드라이브 슬랙이다.
5 / 5
슬랙 공간 1408B
할당받은 2048B 가운데 파일 데이터는 640B뿐이다. 나머지 1408B(램 슬랙 384B와 드라이브 슬랙 1024B)가 슬랙 공간이다. 운영체제는 파일 시스템 기록에 적힌 크기 640B까지만 읽기 때문에, 파일을 열어도 그 뒤는 보이지 않는다.
1 / 3
숨길 자리 찾기
공격자가 보고서.txt의 마지막 클러스터에서 드라이브 슬랙(섹터 3·4, 1024B)을 찾는다. 이 클러스터는 보고서.txt에 할당돼 있으므로, 보고서.txt를 지우거나 고치지 않는 한 다른 파일이 이 자리를 덮어쓰지 않는다.
2 / 3
섹터에 직접 쓰기
공격자가 섹터를 직접 쓰는 도구로 고객 명단을 섹터 3·4에 쓴다. 파일을 저장하는 일반적인 방법을 거치지 않았으므로 파일 시스템 기록은 바뀌지 않는다.
3 / 3
보이지 않는 채 남기
파일 시스템 기록의 크기는 그대로 640B다. 보고서.txt를 열면 원래 내용만 보이고, 파일 목록이나 남은 디스크 용량도 달라지지 않는다. 그래서 숨긴 데이터는 눈에 띄지 않는다.
1 / 3
파일이 끝나는 곳 확인
조사관이 파일 시스템 기록에서 보고서.txt의 크기 640B를 확인한다. 클러스터에서 파일 데이터는 640B까지다.
2 / 3
클러스터 끝까지 읽기
디스크 이미지에서 640B 뒤부터 클러스터 끝(2048B)까지 1408B를 마저 읽는다. 파일을 열어서는 볼 수 없는 슬랙 공간이다.
3 / 3
남은 내용 찾기
램 슬랙 384B는 0으로 채워져 있어 남은 정보가 없다. 드라이브 슬랙 1024B에서는 지운 파일의 내용 일부가 나온다. 누군가 데이터를 숨겼다면 그것도 이 자리에서 나온다.