본문 바로가기

윈도우 일반

보안 삭제란 무엇이며 보안 삭제 프로그램은 파일과 공간을 어떻게 삭제할까?





윈도우의 기본적인 파일 삭제 방식과 보안 삭제의 의미

윈도우와 같은 운영체제들은 기본적으로 파일을 삭제하면 실제 파일은 삭제하지 않고, 해당 파일에 대한 메타데이터만을 삭제하는 방식을 사용하고 있습니다. 사실 이러한 삭제 방식은 과거는 물론 현재까지도 저장 매체의 주류를 이루고 있는 자기장(Magnetic Field)을 이용한 자기 디스크 방식 저장 매체들의 특성에 맞춘 것이라고 할 수 있습니다. 참고로 이러한 방식의 저장 매체에는 대표적으로 플로피 디스크(FDD)와 하드 디스크(HDD)가 있습니다.

이러한 FDD, HDD 같은 자기 디스크 방식의 저장 매체들은 익히 알다시피 굉장히 오랜 시간을, 그리고 거의 표준에 가까울 정도로 널리 컴퓨터의 주요 보조 저장 장치로써 사용됐습니다. [사실 오랜 시간 그것을 대체할만한 다른 방식의 저장 매체도 없었고...] 그래서 윈도우와 같은 운영체제들이 이러한 자기 디스크 방식의 저장 매체에 맞춰 삭제 알고리즘을 정한 것은 어쩌면 당연한 것일지도 모르겠습니다. 아무튼, 이러한 자기 디스크 방식의 저장 매체는 덮어쓰기(Overwrite)가 가능하다는 특징이 있습니다.


이미 다른 글에서도 했던 이야기이지만 그냥 다시 한 번 정리하도록 하겠습니다. 먼저 파일 시스템은 파일을 관리할 때 실제 파일과 함께 해당 파일에 대한 정보를 담고 있는 메타데이터(Metadata)를 두어 관리합니다. 이러한 메타데이터에는 해당 파일이 실제로 디스크의 어느 위치에 기록되어 있는지, 파일의 크기는 얼마인지, 이름은 무엇인지, 누구에게 접근 권한이 있는지 등 해당 파일을 관리하는데에 필요한 모든 정보를 담고 있습니다. 즉, 어떠한 파일에 접근(Access)하기 위해선 반드시 해당 파일에 대한 메타데이터가 필요합니다.



그럼 반대로 어떠한 파일에 대한 메타데이터가 사라지면? 즉, 어떠한 파일의 메타데이터를 삭제하면? 해당 파일은 디스크 상에 존재하지 않는 것으로 처리됩니다. 즉, 메타데이터가 삭제되면 파일도 삭제된 것으로 처리가 되고, 고로 해당 파일이 존재하던 디스크 공간도 빈 공간으로 인식이 되는 겁니다. [실제 파일이 디스크에 남아 있든 말든 상관없이]


그럼 여기에서 파일을 삭제하는데에 아래의 두 가지 방식을 생각해볼 수 있습니다.

1. 메타데이터와 함께 실제 파일도 삭제.
2. 실제 파일은 그대로 놔두고 메타데이터만 삭제.


이 중에서 윈도우와 같은 운영체제들이 선택한 방식은 실제 파일은 그대로 두고 메타데이터만을 삭제하는 두 번째 방식입니다.



그럼 왜 실제 파일은 그대로 놔두고 메타데이터만 삭제하는 것일까요? 그건 크게 두 가지 범주로 나눠서 생각해볼 수 있습니다.

첫 째, 디스크의 성능을 위해서 그랬습니다. 일반적으로 컴퓨터와 저장 매체에서는 0 으로 가득차 있는 상태를 비워진 상태로 봅니다. 그래서 어떠한 데이터를 삭제한다는 것은 해당 데이터 영역을 모두 0 으로 기록한다는 것을 의미합니다. 즉, 우리에겐 어떠한 파일을 저장하거나 삭제하는 거지만, 컴퓨터와 저장 매체에겐 저장(특정 데이터를 Write) 과정이나 삭제(0 으로 Write) 과정이나, 어차피 다 똑같은 Write 과정일 뿐인 거죠.

만약 파일을 삭제할 때 메타데이터 뿐만 아니라 실제 파일까지 삭제(파일의 공간을 모두 0 으로 기록)한다면? 파일을 삭제하는데에 파일을 저장할 때와 동일한 시간이 걸리는 문제가 발생하게 됩니다. 즉, 1GB 의 파일을 저장하는데에 1분이 걸린다면, 1GB 의 파일을 삭제하는데에도 똑같이 1분이 걸리는 것이죠. 즉, 이러한 방식은 디스크의 전체적인 성능에 큰 부담을 주게 됩니다.

반면 메타데이터는 매우 소용량의 정보입니다. 그래서 이러한 메타데이터만을 삭제하는 방식을 사용하게 되면, 파일의 삭제 작업이 디스크의 전체적인 성능에 별다른 영향을 주지 않는 장점이 있습니다. 이것이 바로 윈도우와 같은 운영체제가 메타데이터만을 삭제하는 파일 삭제 방식을 사용하게 된 가장 큰 이유입니다.

둘 째, 파일 삭제 과정에서 굳이 실제 파일을 삭제하지 않아도, 해당 파일 공간은 빈 공간으로 인식이 되고(실제론 그렇지 않더라도), 해당 공간은 새로운 파일을 기록하는데에 실제 빈 공간과 마찬가지로 동일하게 사용됩니다. 결국 삭제된 파일의 잔재들은 새로 저장되는 다른 파일들에 의해 덮어씌워지면서 자동으로 사라지게 됩니다. 그러니 어차피 사용하다보면 자동으로 사라질 거 굳이 미리 삭제할 필요가 없는 거죠. 즉, 애써 두 번 작업할 필요가 없다는 겁니다.

또한 지금까지 굉장히 오랜 시간을 주류로 사용되어 온 자기 디스크 방식의 저장 매체들은 기본적으로 덮어쓰기가 가능하며, 이러한 덮어쓰기 작업이 쓰기 작업과 성능상의 차이가 없다는 것도 매우 중요하게 작용하였습니다. 즉, 자기 디스크 방식의 저장 매체들은 빈 공간에 새 파일을 저장하나(Write), 기존 파일의 잔재가 있는 공간에 새 파일을 저장하나(Overwrite), 성능상에 차이가 없는 거죠. 그래서 삭제되어 남겨진 파일의 잔재들이 앞으로의 디스크 성능에도 영향을 주지 않기에 이러한 삭제 방식을 사용할 수 있었던 겁니다.

참고로 플래시 메모리 방식의 SSD 는 덮어쓰기가 불가능하고, 플래시 메모리의 구조상 삭제하지 않고 남겨두었던 파일의 잔재들이 SSD 의 성능을 떨어트리는 주요한 문제로 작용하게 됩니다. 그래서 SSD 에선 이 문제를 해결하기 위해 윈도우와 같은 운영체제에서 파일을 삭제하면, SSD 자체적으로 실제 파일도 함께 삭제하는 TRIM 기능이 추가되게 됩니다.

SSD 의 특성과 TRIM 기능의 이해, 자동 TRIM(트림) 기능의 작동 여부 확인과 설정 방법


정리하자면 윈도우와 같은 운영체제가 단순히 메타데이터만을 삭제하는 파일 삭제 방식을 사용하게 된 것은, 비록 실제 파일은 한 동안 디스크에 고스란히 남겠지만 그렇게 해도 아무런 문제 없이 파일이 삭제된 것으로 인식되고 성능상 더 좋았으며, 이러한 파일의 잔재들이 예전부터 그리고 지금까지도 주류로 사용되고 있는 자기 디스크 방식의 저장 매체에선 앞으로의 디스크 성능에도 영향을 미치지 않았기 때문입니다. 즉, 이러한 파일 삭제 방식은 자기 디스크라는 저장 매체의 특성에 맞춘 방식인 것이죠. [과연 SSD 가 HDD 보다 먼저 나왔다면 윈도우가 이러한 파일 삭제 방식을 사용했을까요?]


하지만 이러한 파일 삭제 방식을 사용하면 TRIM 과 같은 자동 삭제 기능이 없는 HDD 류의 기존 저장 장치들은 결국엔 다른 새로운 파일에 의해 덮어씌워지기 전까지는 디스크에 실제 파일이 고스란히 남아 있게 된다는 문제가 있습니다. 그래서 새로운 파일로 덮어씌워지기 전까진 언제든지 파일 복구 프로그램을 통해 삭제했던 파일들을 복구해낼 수 있는 보안적인 측면에서 보면 굉장히 큰 문제가 발생하게 됩니다. (소프트웨어 방식의 파일 복구)

더불어 HDD 와 같은 자기 디스크 방식의 저장 매체에선 디스크를 분해하여 플래터 표면에 기록된 데이터의 자기장을 분석하여 기존의 데이터를 찾아낼 수 있는 가능성까지 존재하고 있습니다. (하드웨어 방식의 파일 복구)



그래서 이러한 소프트웨어 방식의 파일 복구를 방지하기 위해 파일 삭제시 메타데이터는 물론 실제 파일도 함께 삭제하는 프로그램들이 등장하게 됩니다. 더불어 이러한 프로그램들은 디스크를 분해하여 자기장을 분석하는 방식의 파일 복구도 방지하기 위해 실제 파일을 삭제할 때 단순히 0 으로 채우는 제로필 뿐만 아니라 특정한 알고리즘을 통해 다량의 덮어쓰기를 진행하는 삭제 방식도 함께 지원을 하게 됩니다. 또한 삭제의 대상도 현재 파일 뿐만 아니라 기존에 이미 삭제된 파일의 흔적까지 제거하기 위해, 빈 공간 또는 드라이브나 디스크의 전체 공간을 대상으로 하기도 하죠.

이렇게 파일의 메타데이터 뿐만 아니라 실제 파일까지 완전히 삭제하는 것을 보안 삭제(안전 삭제, 완전 삭제)라고 합니다.



이러한 보안 삭제는 따로 이러한 삭제 방식을 지원하는 프로그램을 통해 진행하게 됩니다. 참고로 이러한 일반적인 보안 삭제 프로그램들의 덮어쓰기 보안 삭제 방식은 자기 디스크 저장 매체들의(HDD, FDD 등) 구조와 특성에 맞추어져 있습니다.

그렇다면 이러한 보안 삭제란 것은 정확하게 어떠한 방식으로 이루어지는 걸까요?

※ SSD 와 보안 삭제

새로운 플래시 메모리 방식의 SSD 나 USB 플래시 메모리에서는 이러한 일반적인 방식의 보안 삭제 프로그램은 사용하지 않는 것이 좋습니다. 특히나 SSD 의 경우 자동 TRIM 기능이 지원되는 운영체제에서(윈도우의 경우 7 이상) 사용하는 경우 파일을 삭제하면 TRIM 기능에 의해 자동으로 실제 파일도 삭제가 되기 때문에, 따로 다른 프로그램을 통해 보안 삭제 작업을 진행할 필요가 전혀 없습니다. [자동 TRIM 을 지원하지 않더라도 SSD 관리 프로그램에서 수동 TRIM 기능을 지원하며 보안 삭제를 원한다면 이를 사용하면 됩니다.]

또한 플래시 메모리는 자기 디스크와는 다르게 기존 데이터의 흔적을 찾아낸다는 것이 불가능에 가까운 것으로 알고 있습니다. 즉, 플래시 메모리는 셀을 비워버리면 끝난다고 보시면 됩니다. [그래서 SSD 관리 프로그램에서 제공하는 보안 삭제 기능도 단순히 셀을 비우는 방식입니다.] 또한 SSD 의 구조적인 특성상 특정한 알고리즘을 통해 다량의 덮어쓰기를 진행하는 보안 삭제 작업을 진행한다고 할 지라도 흔히 예상하는 것처럼 덮어쓰기가 되지 않습니다. 이에 대한 내용은 아래의 글에서 좀 더 자세하게 설명하고 있습니다.


아무튼, 그러니 SSD 에서는 자동 TRIM 기능이 작동 중이라면 보안 삭제를 전혀 신경 쓸 필요가 없고, 자동 TRIM 기능이 작동하지 않더라도 SSD 관리 프로그램에서 제공하는 수동 TRIM 기능을 통해 기존 파일들의 흔적을 삭제할 수 있으며, SSD 전체의 데이터를 모두 보안 삭제하고자 할 때는 SSD 전체의 소자를 전부 비워주는 SSD 관리 프로그램에서 제공하는 전용의 보안 삭제 기능을 사용하셔야 합니다.

또한 USB 플래시 메모리의 경우 USB 플래시 메모리에 특화된 전용의 보안 삭제 프로그램들이 따로 존재하고 있습니다. 그러니 USB 플래시 메모리는 일반적인 보안 삭제 프로그램이 아닌 USB 플래시 메모리 전용의 보안 삭제 프로그램들을 사용하시는 것이 좋습니다.









보안 삭제는 어떻게 진행될까?

1. 파일 보안 삭제의 작업 방식

일단 아래와 같은 파일이 하나 있습니다.




이걸 윈도우의 기본 방식대로 삭제하면 아래와 같겠죠?



이게 바로 일반 삭제입니다. 하지만 이렇게 파일을 삭제하면 앞에서 이야기한 것과 같이 단순히 메타 데이터만을 삭제했을 뿐 실제 파일의 내용은 고스란히 남아있기 때문에 파일 복구 프로그램을 통해 삭제한 파일을 원상태 그대로 복구할 수 있는 문제가 있습니다.




그래서 파일을 삭제하기 전에 먼저 파일의 내용을 전부 0x00 과 같은 의미 없는 데이터로 덮어쓴 후 삭제합니다.



매우 단순하게 처리했지만 이게 바로 보안 삭제입니다. 간단하죠? 위의 예시는 보안 삭제 중 가장 널리 사용되는 제로필(전체를 0 bit 로 가득 채움)이라는 삭제 방식입니다. 보안 삭제 프로그램의 자세한 삭제 알고리즘에 따라 다르지만, 기본은 이렇게 작업하는 것입니다. 이렇게 하면 설령 파일이 복구되더라도 아무런 의미가 없는 쓰레기 파일이 복구가 되는 것이죠.



여기에 더해 파일을 삭제하기 전 파일의 이름까지 의미 없는 다른 이름으로 수정하기도 하며, 아예 MFT 나 파일 할당 테이블 영역을 수정하여 이러한 파일이 존재했었다는 흔적까지 제거하기도 합니다. 그런데 이렇게 단순하게 한 번의 덮어쓰기만을 진행하면 자기 디스크 방식의 저장 매체에선 그 흔적을 추적하여 전체 또는 일부 데이터를 복구할 수 있는 가능성이 있습니다. 그래서 그러한 흔적까지 의미 없는 데이터로 채우기 위해 여러 번의 덮어쓰기를 진행하는 방식이 많이 사용됩니다.

일례로 DoD 5220-22.M 의 E 작업은 [0x00 덮어쓰기 -> OxFF 덮어쓰기 -> Random 데이터로 덮어쓰기] 라는 3 단계 덮어쓰기의 알고리즘을 가지고 있죠. 그래서 해당 알고리즘을 통해 파일을 삭제하면 아래와 같은 작업 과정을 거쳐 파일을 삭제하는 것입니다.



간단하죠? 실제로 해당 알고리즘을 사용하는 SDelete.exe 를 통해 파일을 삭제하면 아래와 같은 결과를 얻을 수 있습니다.




보시면 아시겠지만 SDelete.exe 는 파일의 데이터를 덮어쓰기한 후 파일의 이름도 ZZZZZ.ZZZ 와 같이 의미 없는 이름으로 바꿔주는 추가적인 작업을 진행하는 것을 알 수 잇습니다. 아무튼, 해당 파일은 복구가 되더라도 아무런 의미가 없게 되는 것이죠. 여기에 더해 좀 더 기능이 강력한 보안 삭제 프로그램들은 이러한 파일이 존재했었다는 흔적까지 제거해주기도 합니다.






2. 빈 공간 보안 삭제의 작업 방식

파일은 그렇다 치더라도 그렇다면 이미 삭제된 파일들의 흔적을 제거하는 빈 공간 보안 삭제는 어떻게 작업이 이루어지는 것일까요? 딱히 대상을 특정 지을 수 있는 상황도 아닌데 말이죠.

빈 공간을 보안 삭제하는 것은 사실 매우 간단합니다. 바로 현재 빈 공간 전체 크기 만큼의 임시 파일을 생성한 후 해당 파일을 보안 삭제하는 겁니다. 이 때 임시 파일은 우선 아무런 내용 없이 생성한 후, 해당 드라이브의 빈 공간이 모두 소진될 때까지 해당 임시 파일에 지정한 알고리즘으로 데이터를 계속 채워나가는 방식이 주로 사용됩니다. 즉, 임시 파일의 덩치가 점점 커지면서(데이터가 계속 기록되면서) 결국엔 빈 공간에 남아 있던 파일의 잔재들을 덮치는(?) 방식으로 처리를 하는 거죠. 그 외 나머지 내용은 파일을 보안 삭제할 때와 동일합니다.


그럼 실제로 SDelete.exe 를 통해 빈 공간을 제로필 해보도록 하겠습니다.



빈 공간 보안 삭제를 마치고 파일 복구 프로그램을 통해 살펴 보면 아래와 같이 해당 드라이브의 빈 공간의 크기와 동일한 파일이 하나 생성되었다가 삭제된 것을 볼 수 있습니다. [나머지 파일들은 SDelete 가 MFT 영역을 정리하면서 생긴 파일들입니다.] 제로필로 작업을 진행하였기 때문에 해당 파일의 내용은 0x00 으로 가득차 있는 것을 확인할 수 있습니다.



간단하죠? 이 때 말한 것과 같이 작업에 임시 파일을 생성한 후 해당 파일에 계속 데이터를 기록해 덩치를 키우는 방식이기 때문에, 작업 중간 해당 드라이브의 여유 공간이 점차 줄어드는 현상이 발생하게 됩니다. 작업의 방식상 원래 그런 것이고, 작업이 모두 완료되면 해당 임시 파일은 삭제되어 드라이브가 다시 원래의 용량으로 되돌아가기 때문에 이게 뭔가하고 놀라실 필요는 없습니다.




파일이나 빈 공간 외에도 프로그램에 따라 드라이브 전체 공간을 대상으로 하거나, 디스크 전체 공간, 디스크 내 특정 영역을 대상으로 보안 삭제를 진행하는 것을 지원하기도 합니다. 이럴 땐 위에서 이야기한 어떠한 파일이나 임시 파일을 이용하는 것이 아닌 해당 디스크의 섹터 영역에 직접 지정한 알고리즘의 데이터를 기록하는 방식을 사용하게 됩니다. 대상이 파일에서 섹터로 바뀌었고, 그 범위가 굉장히 넓을 뿐 어쨌든 기본적인 절차는 파일을 대상으로 한 위의 작업과 동일하다고 보시면 됩니다.

이것이 바로 일반적인 보안 삭제 프로그램들이 파일, 빈 공간, 드라이브, 디스크, 특정 영역을 보안 삭제하는 방법입니다.








덮어쓰기 방식 외의 보안 삭제 방법들

그렇다면 보안 삭제에는 이러한 덮어쓰기 방식 밖에 없을까요? 뭐 꼭 그렇지만은 않습니다. 보안 삭제에는 암호화를 통한 방식도 존재합니다. 즉, 원하는 대상을 암호화한 후 삭제하고, 암호화 키 또한 폐기시키면 그것이 바로 보안 삭제가 되는 것이죠.

일례로 특정 볼륨 전체를 비트락커를 통해 암호화한 후 해당 볼륨을 강제로 지워버리는 방식을 들 수 있습니다.






깔끔하죠? 이후 암호화를 해제할 수 있는 키를 최종적으로 폐기하면 되는 것이죠. 참고로 이렇게 비트락커를 통해 디스크 전체를 암호화한 후 폐기하는 방식은 마이크로소프트에서도 디스크를 폐기하는 하나의 방식으로 권장하고 있을 정도입니다. [그만큼 암호화에 자신이 있다는 소리겠죠.] 뭐 꼭 예제로 든 비트락커 뿐만 아니라 다른 충분히 신뢰할 수 있는 안전성이 증명된 다른 암호화 프로그램을 사용하여도 좋습니다.

아무튼, 이러한 암호화를 통한 방식은 덮어쓰기 방식을 사용하기가 난감한 저장 매체에서 사용하기에 좋습니다.

※ 물리적인 방식의 보안 삭제

사실 이 내용은 현재의 글과는 좀 맞지 않는 부분이 있는데요. 지금까지 이야기한 소프트웨어적인 방식 외에도 물리적으로 데이터를 처리하는 보안 삭제 방식도 있습니다. 먼저 자기 디스크 방식의 저장 매체들을 위한 사실상의 끝판왕 겪인 디가우징이 있습니다. 디가우징이란 디가우저란 장비를 이용하여 디스크를 강력한 자기장에 노출시켜 플래터의 자기 흐름 자체를 파괴시키는 방법입니다. 다량의 디스크를 폐기할 때 빠르고 간편하기 때문에 기관이나 기업과 같은 곳에서 많이 사용되는 방식입니다. 참고로 이러한 디가우징 작업을 거친 하드 디스크는 훌륭한 벽돌이 됩니다. 즉, 더이상 사용할 수 없게 되는 것이죠. 사실상의 폐기입니다.

강력한 자기장의 힘으로!!!




그리고 보안 삭제계의 최종 보스인 저장 매체의 물리적인 파괴, 분쇄, 용해도 있습니다. 좀 무식하지만 가장 확실한 방법의 보안 삭제라고 할 수 있습니다. 제가 예전에 농담으로 한 번 말한 것 같은데, 아놀드가 터미네이터 2 에서 괜히 그 뜨거운 용광로에 엄지손가락 치켜세우며 퐁당 한 게 아니라는 거죠. 이러면 데이터고 나발이고 어떻게 복구할 건데?

그래 지워라~ 난 녹인다!



어떻게 간단하게 보안 삭제란 무엇이고, 이러한 보안 삭제를 지원하는 프로그램들이 파일 및 공간을 어떻게 삭제하는 것인지 설명해보았는데 도움이 되셨는지 모르겠네요. 이번 글은 여기까지 하도록 하겠습니다. 이상입니다. ^^