이 글은 과거 커뮤니티에서 SDelete 유틸에 대한 코멘트들 중 제로필(zero fill, zero filling) 작업과 DOD 5220.22-M 알고리즘을 통한 와이핑(Wipe, Wiping) 작업에 대한 이야기들이 나왔을 때 정확하게 데이터 삭제 유틸리티들이 사용하는 제로필과 DOD 5220.22-M 이 무엇인지 더불어 두 삭제 방식과 함께 많이 쓰이는 Peter Gutmann 의 삭제 방식이 무엇인지를 정리했던 글입니다.



휴지통의 미스테리

제로필이고 뭐고 일단 파일의 삭제에 대해서 이야기 해 보도록 하죠. 윈도우에서 파일 삭제하면 가장 먼저 무엇이 떠오르시나요? 아마 많은 분들이 윈도우의 휴지통을 떠올리실 겁니다.

파일 삭제하면 나지!



컴퓨터에 능숙한 사용자들은 휴지통이 무엇인지 정확하게 이해하고 계시겠지만 모르시는 분들도 많을거라 생각합니다. 그럼 휴지통이란 정확하게 무엇일까요? 쉽게 휴지통이란 특수한 폴더라고 할 수 있습니다. 윈도우에서 파일을 삭제하면 아래와 같은 메시지가 뜨죠.

넌 지금 파일을 삭제하는 게 아니야~ 휴지통이라는 좀 특별한 폴더로 옮기는 것 뿐이라고!



이는 파일을 삭제하는 것이 아닌 휴지통이라는 곳으로 이동을 시키겠다는 의미입니다. 즉, 삭제도 뭐도 아니라는 것이지요. 다만 휴지통이라는 곳은 일반적인 폴더들과는 다르게 특별한 기능이 있을 뿐입니다. 그게 뭐냐 하면 폴더의 용량이 일정 이상 되면 용량에 맞춰서 오래된 파일부터 실제로 파일을 삭제하는 기능이 있는 것이죠.

즉, 휴지통을 통한 파일의 삭제라는 것은 파일을 삭제하는 것이 아니라 우선 다른 곳으로 이동시키는 것 뿐 입니다.




운영체제의 파일 삭제 방법

이제 실제로 운영체제에서 파일을 삭제하는 것에 대해서 이야기를 해 보겠습니다.

진짜로 파일을 완전하게 삭제하는 거야?



파일은 디스크에 저장이 됩니다. 그리고 디스크의 어느 위치(섹터)에 파일이 저장되어 있는지 등의 정보를 파일 시스템이 기록하고 관리하죠. 그래서 윈도우는 해당 파일을 읽을 때 먼저 파일 시스템의 기록을 살펴보고 디스크에서 실제 파일의 위치로 이동하여 파일을 확인하고 읽습니다.



간단하게 이야기하죠. 윈도우가 이야기하는 파일의 영구적인 삭제는 디스크에 저장된 실제 파일은 그대로 두고 파일 시스템에 저장된 파일에 대한 기록만 제거하여 실제 데이터(파일)과의 연결을 끊는 것에 불과합니다.

왜 그럴까요? 일단 속도 때문에 그렇습니다. 새로운 파일을 저장하는 작업에는 많은 시간이 소요되죠? 근데 파일을 삭제하는 것은 순식간입니다. 파일 시스템에서 해당 기록만 지우면 되거든요. 근데 파일 시스템에 기록을 지우는 것 뿐만 아니라 실제로 해당 파일로 찾아가서 파일을 지우는 작업을 하게 되면, 파일을 삭제하는 데에도 저장할 때 처럼 많은 시간이 소요 됩니다. 왜냐하면 파일 삭제란 것도 어차피 기존 파일의 공간을 모두 0 으로 기록하는 저장 과정이기 때문이죠.

그리고 굳이 실제 파일을 삭제하지 않아도 새로운 파일을 저장하면 기존의 파일이 저장되어 있던 공간 위에 덮어쓰이면서 기존의 파일에 대한 데이터는 자연스럽게 사라집니다. 운영체제 입장에서는 애써 두 번 일 할 필요가 없는 것이죠.

이러한 방식은 저장 매체의 입장에서도 좋습니다.어떠한 저장 매체들은 수명을 가지고 있고 과도하게 파일의 기록 작업을 진행하면 수명이 줄어들기도 합니다.[SSD 에 사용되는 플래시 메모리는 몇 번의 재기록까지만 보장한다는 재기록 가능 횟수가 있죠]우리에게는 파일을 없애는 삭제지만 디스크와 같은 저장 매체의 입장에서는 이러한 삭제도 말했다시피 0 으로 기록하는 저장 과정일 뿐입니다. 디스크의 입장에서 보자면 삭제란 개념은 없습니다. 오직 끊임없이 새로운 데이터를 저장할 뿐이죠.

이러한 연유와 속도적인 이점으로 운영체제는 실제 디스크(저장 매체)에서 파일을 삭제하지 않고 파일 시스템에서 파일의 기록만 지우는 것입니다.




파일 복구 프로그램의 등장

이러한 윈도우 또는 기타 운영체제들의 단순한 파일 삭제 방식으로 인해 나온 프로그램들이 있습니다.

이미 말했다시피 파일을 읽을 땐 [파일 시스템에서 파일이 저장된 위치 확인-> 해당 위치로 이동하여 파일 읽기] 라는 과정을 거칩니다. 그런데 삭제된 파일들은 파일 시스템에 정보가 없죠. 하지만 실제 파일은 아직 재기록 작업이 이루어지지 않았다면 고스란히 남아 있습니다.

그래서 파일 시스템을 통해 검색하지 않고 실제 디스크의 모든 공간을 훑으면서 일일히 파일을 찾아 내는 겁니다. 그럼 새로운 파일이 덧 씌워져서 진짜로 사라져버린 파일을 제외한 아직 온전하게 남아있는 파일들을 찾아 낼 수 있겠죠? 이렇게 찾은 파일들의 정보를 파일 시스템에 기록해주면 해당 파일은 다시 사용할 수 있게 복구되는 것이죠.

이러한 프로그램들이 바로 우리가 흔히 보는파일 복구 프로그램들입니다.

대표적인 파일 복구 프로그램 - Final Data



파일 복구 프로그램들은 파일이 삭제된 후 재기록 작업이 이루어지지 않은 공간의 파일들은 복구할 수 있지만 이미 재기록 작업이(새로운 파일로 덧 씌워진) 일어난 공간의 파일들은 복구할 수 없습니다. 그래서 삭제한 파일을 온전히 복구하고 싶다면 절대로 새로운 파일을 기록(복사)하지 말라고 하는 겁니다.

이 때 재기록 작업이란 디스크에서 발생하는 모든 데이터 기록 작업을 의미합니다. 새로운 파일이 기록되는 것은 물론 삭제를 위해 0 으로 가득 채우는 것 또한 재기록 작업이죠.




파일 완전 삭제 프로그램의 등장

윈도우 또는 기타 운영체제들의 이러한 단순한 파일 삭제 방식으로 인해 나온 프로그램들이 또 있습니다.

파일을 삭제할 때 운영체제의 단순한 방식을 따르지 않고 프로그램 자체적으로 파일 시스템의 기록을 삭제하면서 동시에 디스크에 기록된 실제 파일 공간으로 이동하여 파일 위에 새로운 데이터를[보통 0 으로 재기록] 기록해 버리는 프로그램입니다.

이러한 프로그램들이 바로 파일 완전 삭제 프로그램입니다. 즉, 운영체제에서 파일을 무성의하게 삭제해서 파일 복구 프로그램을 통해 복구할 수 있으니까 이걸 원천 봉쇄하기 위해 기존 데이터 위에 새로운 데이터를 기록하여 삭제해 버리는 겁니다.[그것이 0 이든 무엇이든]


이러한 파일 완전 삭제 프로그램의 기능은크게 두 가지 유형으로 나뉩니다.

가장 먼저 애초에 파일을 삭제할 때마다 해당 작업을 진행하는 기능입니다. 즉, 개별적인 파일 또는 폴더 단위에서 애초에 파일을 완전히 삭제하는 작업을 함으로써 복구를 방해하는 것이죠. 여기에 가장 널리 애용되는 대표적인 프로그램으로 행정병들의 영원한 친구 BCWipe 가 있습니다. 그 외에 많은 시스템 관리 유틸에서 파일 완전 삭제 기능을 제공하기도 합니다.

군대 행정실의 보물 - BCWipe



다음으로 이미 운영체제 차원에서 파일의 삭제 작업이 완료 된 디스크의 빈 공간 또는 아예 그냥 디스크의 전체 공간을 대상으로 삭제 작업을 진행하는 기능이 있습니다. 즉, 개별적인 파일이나 폴더가 아닌 디스크나 파티션 단위에서 해당 공간 전체를 대상으로 완전 삭제 작업을 진행하는 것이죠.

대표적인 프로그램 또는 기능으로는 일반 포맷 작업[빠른 포맷 아님], DiskPart 의 Clean All 작업, SDelete 등이 있습니다.

간편한 공간 삭제 기능을 포함한 안전 삭제 프로그램 - SDelete





제로필(Zero fill)

파일 또는 공간의 완전 삭제로 가장 간편한 것이 바로 포맷(Format) 입니다. 물론 요즘 흔히 사용되는 빠른 포맷이 아닌 파티션의 모든 공간을 0 으로 재기록하는 일반 포맷 작업만 해당합니다. 포맷을 하면 파티션의 모든 공간을 0 으로 기록하기 때문에 프로그램을 통해서는 파일의 복구가 불가능합니다.

대다수의 공간 완전 삭제 프로그램이나 기능들도 현재 파일 시스템에 데이터가 존재하고 있다고 기록되지 않은 빈 공간만을 대상으로 하거나 디스크 전체 공간을 대상으로 하는 등 좀 더 편리하거나 넓은 범위를 대상으로 할 뿐 실질적인 작업은 일반 포맷과 동일한 작업을 수행한다고 생각하면 됩니다.[특별한 알고리즘을 적용하지 않는 경우일 때]


이렇듯 파일 또는 공간을 0 으로 재기록하는 작업을 제로필(zero fill, zero filling) 작업이라고 부릅니다. 아래는 이러한 제로필 작업의 삭제 알고리즘입니다.

이 때 모든 공간은 지정한 공간(파일, 빈 공간, 파티션 전체, 디스크 전체) 에 따라 달라집니다.

1. 모든 공간을 0x00 데이터로 덮어씁니다.


위에서 이야기 했듯이 이렇게 재기록 작업이 이루어지면 이러한 단순한 제로필 작업이라고 할 지라도 프로그램을 통해서는 절대로 파일을 복구할 수 없습니다. 즉, 일반적인 가정에서는 일반 포맷 작업만 해 주더라도 데이터가 복구되어 유출되거나 할 일은 거의 없다는 것이지요.

지금까지의 이야기가 바로 컴퓨터와 프로그램의 차원에서 즉, 디지털의 관점에서 이야기한 것입니다. 이제 새로운 이야기를 해 보도록 하죠.




디지털로 안 돼? 그럼 아날로그로 해! - 재기록된 공간의 흔적을 찾다.

상대방의 디스크를 입수하여 데이터를 빼내려고 보니 이미 재기록 작업이 완료되어 있습니다.위에서 설명한 것과 같은 이유로 프로그램(디지털) 차원에서는 해결할 방법이 없습니다. 그런데 이 데이터를 반드시 입수해야 합니다. 그래서 연구를 시작 합니다.

"디지털로 안 되면 원시적인 아날로그로 해결 해!!!"

그래서 취한 방법이 바로 디스크를 뜯어 직접 분석하는 것입니다. 분야가 디지털에서 아날로그로 바뀐 것이지요. 그리곤 어떠한 방법을 통해 드디어 데이터를 입수합니다. 이 어떠한 방법이란 무엇일까요?


디스크가 데이터를 어떻게 기록하고 읽는 것인지 구조를 보겠습니다.



이렇게 디스크는 자성체의 두 극 R 과 N 을 통해 0 과 1 을 구현합니다. 이를 통해 원하는 데이터를 기록하고 읽는 것이죠. 아날로그인 자성을 이용하여 디지털 정보를 구축하는 것입니다.

복잡한 이야기는 걷어 치우고 아날로그인 R 이나 N 은 완벽하지 않습니다. R 의 이상적인 완전한 상태의 값을 +10 으로 하고 이를 디지털 1 로 읽으며 N 의 이상적인 완전한 상태의 값을 -10 으로 하고 이를 디지털 0 으로 읽는다고 합시다.

아날로그인 모든 것이 그러하듯 이러한 R 과 N 은 반드시 완벽하게 이상적인 +10 과 -10 의 값을 가지지 않습니다. R 이 +9 값을 가질 수 있고 N 이 -11 값을 가질 수도 있는 것이죠. 그래서 디스크는 이러한 오차까지 모두 생각하여 오차 허용 범위 내에서는 +10 이든 +9 든 디지털 1 로 처리합니다.

그런데 이러한 R 과 N 이 완벽하게 +10 과 -10 을 가지지 못하는데에 큰 영향을 미치는 것이 바로 해당 자성체가 가지고 있던 이전의 R 과 N 값 입니다. 즉, 기존에 R 값을(+10) 가지고 있던 자성체에 새로운 데이터인 N 값을(-10) 기록하면 기존 R 값의 영향으로 새로운 N 이 완벽하게 -10 을 가지지 못하고 -9 와 같은 값을 가지게 되는 것이죠. 이러한 미묘한 차이가 발생하게 되지만 디스크의 입장에서는 앞에서 말한 것과 같이 오차 허용 범위 내에 드는 것이기 때문에 정상적으로 0 과 1 의 디지털 정보로 변환하여 읽을 수 있는 것이죠. 대충 무슨 이야기인지 아시겠죠?

"그래! 이거야! 그냥 모든 자성체의 R 과 N 값을 정확하게 파악하고 분석하는 거야!"

물론 프로그램만으로는 이러한 작업이 불가능 합니다. 그래서 이러한 작업을 할 수 있는 전문적인 장비를 개발하고 디스크를 뜯어서 해당 장비에 넣은 후 실제로 디스크의 자성체에 현재 기록되어 있는 R 과 N 의 정확한 값을 읽어버리는 것이죠. 그랬더니 아래와 같은 값이 나왔습니다.

+11.1 -8.9 +9.1 -11.1 +10.9 -9.1

이를 원래 디스크에서 읽는 방식대로 자성체의 아날로그 값을 해석하고 읽으면 아래와 같습니다.

실제 아날로그 값
+11.1
-8.9
+9.1
-11.1
+10.9
-9.1
이상적인 아날로그 값
+10
-10
+10
-10
+10
-10
디지털 값
1
0
1
0
1
0
해석된 정보
범인은 철수입니다.


이제 실제 아날로그 값과 이상적인 아날로그 값을(원래 해당 자성체가 가졌어야 할 값) 비교 분석하여 아래와 같은 놀라운 결과를 도출해 냅니다.

실제 아날로그 값
+11.1
-8.9
+9.1
-11.1
+10.9
-9.1
이상적인 아날로그 값
+10
-10
+10
-10
+10
-10
두 값의 차이
+1.1
+1.1
-0.9
-1.1
+0.9
+0.9
차이를 다시 증폭한 아날로그 값
+11
+11
-9
-11
+9
+9
도출해낸 디지털 값
1
1
0
0
1
1
해석된 정보
사실은 영희지롱~


현재 디스크에 기록된 데이터는 101010 이라는 데이터지만 이를 디스크라는 물리적인 차원에서 정밀하게 분석하면 이전에 기록된 데이터인 110011 을 찾아낼 수 있다는 것입니다. 범인이 철수에서 영희로 바뀌는 놀라운 순간이죠.


물론 위의 내용은 쉬운 이해를 위해 작업을 굉장히 단순화 시킨 것입니다. 하지만 기본적인 이론은 위와 같습니다. 이러한 것을 실제로 구현하기 위해 원래 값에서 다른 값으로 바뀔 때 얼마 만큼의 변화가 일어나는지 등은 수 많은 실험과 연구를 통해 데이터를 축적하고 분석하였겠죠.

그리고 작업을 보셔서 아시겠지만 차이를 찾아내고 이를 증폭하여 원하는 값을 얻어내는 것이기 때문에 이러한 작업을 무한정 반복하여 계속 원하는 데이터를 뽑아낼 수는 없습니다. 이러한 작업에는 분명 한계가 있는 것이죠.




데이터 삭제 알고리즘의 발전

이렇게 기술적으로 디스크를 물리적으로 분석하면 현재의 데이터에서 예전의 데이터를 복구할 수 있다는 것을 알게 되었습니다.렇다면 이러한 결과가 나오면서 든 생각은 무엇이었을까요?

"내가 할 수 있는 것은 남도 할 수 있다"

즉, 내가 상대의 데이터를 빼낼 수 있다면 상대도 충분히 동일한 방식으로 내 데이터를 빼낼 수 있다는 것입니다. 역으로 내 자신이 위험에 처하게 된 처지에 놓이게 된 것이죠.

내가 겨눈 총구는 반대로 나에게로 되돌아 온다.



데이터를 한 번 덧 씌우는 것만으로는 기존의 데이터를 완벽하게 삭제 할 수 없다는 것을 알았으니 이제 이러한 기술을 사용하더라도 데이터를 복구할 수 없도록 하는 삭제 작업이 필요하게 되었습니다. 상대의 정보를 캐내는 것도 중요하지만 역시나 내 정보가 유출되어선 안 되는 것이니까요.

즉, 위와 같은 기술을 가지고 있고 실제로 장비를 운영할 수 있는 단체에게는[특히 군이나 정보 기관과 같은 단체에게는] 더이상 단순한 제로필이나 한 번의 데이터 덮어쓰기가 완벽한 해결책이 되지 못할 가능성이 있다는 것을 실질적으로 파악한 것이죠. 다만 다행인 것은 위에서 이야기 했지만 데이터의 흔적을 찾아 들어가는 것에는 분명 한계가 있다는 것입니다.

그러면 어떻게 하면 될까요? 바로 데이터의 흔적을 찾을 수 있는 한계치를 넘어서게 재기록 작업을 진행하면 됩니다. 다만 이러한 재기록 작업이 실제 디스크 공간에서 좀 더 많은 공간에 골고루 완벽하게 이루어지게 하는 것이죠. 어떤 공간은 많은 양의 재기록이 되었는데 다른 공간은 한 두 번만 재기록 되었다면? 일부 내용이 유출될 수도 있으니까요. 이로써 수많은 기관과 군에서 보다 정교하게 골고루 모든 공간을 처리하기 위한 데이터 삭제 알고리즘들이 대거 튀어나오게 됩니다.




DoD 5220.22-M(DoD 5200.22-STD) 삭제 알고리즘

이러한 삭제 알고리즘으로 가장 대표적이며 가장 널리 사용되는 것이 바로 DoD 5220.22-M(또는 DoD 5200.28-STD) 삭제 알고리즘 입니다.

사실 DoD 5220.22-M(DoD 5200.28-STD) 은 어떤 프로그램이나 알고리즘을 지칭하는 것이 아닙니다. DoD 5220.22-M 이란 DoD(Department of Defense) 가 의미하듯 미 국방부의 보안 문서 번호를 의미합니다.[DoD 5200.28-STD 가 좀 더 상위 문서로 보이는데 아무튼 파일 완전 삭제 프로그램에서 이야기하는 DoD 5220.22-M 과 DoD 5200.28-STD 는 같은 작업을 의미합니다. 이하 DoD 5220.22-M 으로 통일]

반갑네 친구! 부끄럽지만 취미로 지구 방위대를 운영중인 미 국방부라네!



많은 프로그램에서 사용하는 DoD 5220.22-M 이란 미 국방부의 DoD 5220.22-M 보안 문서에 따라 데이터 재기록 작업을 통해 위에서 설명한 장비를 통해서도 데이터를 복구할 수 없게끔 삭제하는 것을 의미합니다. 프로그램에 따라 같은 DoD 5220.22-M 방식이더라도 7 번의 데이터 재기록 작업을 진행하는 경우도 있고 좀 더 간결한 3 번의 데이터 재기록 작업을 진행하는 경우도 있습니다. 아무튼 여러번의 데이터 재기록 작업을 통해 흔적을 통한 복구를 원천 차단하는 것이지요.

해당 문서에서 데이터 파괴에 대한 부분을 추려보면 아래와 같습니다.[DoD 5220.22-M 문서에서 8-306 항목을 찾아보세요. 이미지로 제공하는 것은 GDisk 문서에서 Hard disk 부분만 간추려 놓은 표를 가져온 것입니다. DoD 5220.22-M 문서에도 동일한 항목이 있으니 같은 내용입니다.]


Clearing and Sanitization Matrix
a. Degauss with a Type I degausser
b. Degauss with a Type II degausser.
c. Overwrite all addressable locations with a single character.
d. Overwrite all addressable locations with a character, its complement, then a random character and verify.
THIS METHOD IS NOT APPROVED FOR SANITIZING MEDIA THAT CONTAINS TOP SECRET INFORMATION.
e. Overwrite all addressable locations with a character, its complement, then a random character.
f. Each overwrite must reside in memory for a period longer than the classified data resided.
g. Remove all power to include battery power.
h. Overwrite all locations with a random pattern, all locations with binary zeros, all locations with binary ones.
i. Perform a full chip erase as per manufacturer's data sheets.
j. Perform i above, then c above, a total of three times.
k. Perform an ultraviolet erase according to manufacturer's recommendation.
l. Perform k above, but increase time by a factor of three.
m. Destroy - Disintegrate, incinerate, pulverize, shred, or melt.
n. Destruction required only if classified information is contained.
o. Run five pages of unclassified text (font test acceptable).
p. Ribbons must be destroyed. Platens must be cleaned.
q. Inspect and/or test screen surface for evidence of burned-in information. If present, the cathode ray tube must be
destroyed.

심심풀이로 읽어보는 DoD 5200.28-STD 와 DoD 5220.22-M 문서

- DoD 5200.28-STD : d520028.pdf
- DoD 5220.22-M : d522022m.pdf
- GDisk disk wipe specifications: DoDwipe.pdf


보통 거의 모든 파일 완전 삭제 프로그램에서 DoD 5220.22-M 이라고 하면 3 번 또는 7 번의 재기록 작업을 수행하게 됩니다. 보통 아래와 같은 형식을 가지고 있죠.

DoD 5220.22-M : 3 번의 재기록
DoD 5220.22-M (E) : 3 번의 재기록
DoD 5220.22-M (ECE) : 7 번의 재기록


이러한 차이는 Clearing and Sanitization Matrix 에 규정된 작업 방식에 따라 이를 섞어서 사용하기 때문입니다.

D 작업 : 특정한 데이터 한 번, 그것을 보완하는 데이터 한 번, 임의의 랜덤한 데이터 한 번, 그리고 확인. [3 pass]
H 작업 : 임의의 랜덤한 데이터 한 번, 0(0x00) 으로 한 번, 1(0xFF) 로 한 번. [3 pass]
E 작업 : 특정한 데이터 한 번, 그것을 보완하는 데이터 한 번, 임의의 랜덤한 데이터 한 번. [3 pass (E)]
C 작업 : 임의의 단일 문자 데이터로 한 번. [1 pass (C)]
ECE 작업 : E 작업 한 번, C 작업 한 번, E 작업 한 번 [7 pass(3+1+3) (ECE)]


일반적으로 파일 완전 삭제 프로그램에서 DoD 5220.22-M 라고 표기되고 7 pass 라고 되어 있다면 DoD 5220.22-M (ECE) 를 의미하는 것입니다. 3 pass 라고 되어 있으면 E 또는 D, H 작업을 의미하는 것이구요.


아무튼, 이처럼 DoD 5220.22-M 은 프로그램에 따라 조금씩 알고리즘을 적용하는 방식이 다른데요. 아래는 대표적인 파일 완전 삭제 프로그램인 BCWipe 에서 사용하는 알고리즘 입니다. (ECE 작업)

BCWipe 기준(이 때 모든 공간은 디스크에서 해당 파일이 기록되어 있는 공간을 의미)

1. 모든 공간을 0xD3 데이터로 덮어씁니다.
2. 모든 공간을 0x2C 데이터로 덮어씁니다.
3. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
4. 모든 공간을 임의의 단일 문자 데이터로 덮어씁니다.
5. 모든 공간을 0x95 데이터로 덮어씁니다.
6. 모든 공간을 0x6A 데이터로 덮어씁니다.
7. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.


그런데 아래는 좀 다른 경우로 고스트로 유명한 시만텍사의 디스크 관리 툴인 GDisk 에서 사용하는 DoD 5220.22-M 전체 디스크(또는 파티션)공간 삭제 알고리즘입니다. (D 작업 x 6)

GDisk 기준(이 때 모든 공간은 디스크에서 주소를 지정할 수 있는 모든 위치(섹터)를 의미)

1. 모든 공간을 0x35 데이터로 덮어씁니다.
2. 모든 공간을 0xCA 데이터로 덮어씁니다.
3. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
4. 모든 공간을 Verify Sectors 명령을 통해 문제가 없는지 검증 합니다.

이 작업을 총 6 번 동일하게 수행합니다.


이렇듯 DoD 5220.22-M 은 특정한 알고리즘을 제공하는 것이 아니라 어떠한 방법으로 데이터를 삭제할 것이지 그 방법들을 기술한 문서이기 때문에 프로그램에 따라 어떤 작업들을 채용할 것인지 어떤 데이터를 사용할 것인지 등이 나눠지고 이로 인해 같은 DoD 5220.22-M 이라고 표기된 작업이더라도 세부적인 알고리즘이나 내용은 달라질 수 있는 것입니다.

다른 글에서도 이야기한 적이 있는데요. DoD 5220.22-M 에서의 M 작업은 디스크의 물리적인 소각, 분쇄, 용해를 의미합니다. 데이터 삭제계의 최종 보스라고 할 수 있죠.[m. Destroy - Disintegrate, incinerate, pulverize, shred, or melt.]

너희들은 열심히 지워라. 난 그냥 녹일련다... 스스로 데이터 삭제의 최고봉을 시전 중인 아놀드 주지사~






Peter Gutmann 삭제 알고리즘

DoD 5220.22-M 다음으로 많이 사용되는 삭제 알고리즘이 바로 Peter Gutmann 삭제 알고리즘 입니다. Peter Gutmann 은 과학자로(Computer Scientist) 사람 이름입니다. 해당 알고리즘을 고안한 사람으로 고안자의 이름을 그대로 알고리즘 이름으로 사용한 것이죠.

Peter Gutmann 삭제 알고리즘은 보통 사용되는 DoD 5220.22-M 방식에 비해 한 단계 더 나아가서 데이터의 삭제에 총 35 번의 재기록 작업을 수행합니다. 이러한 Peter Gutmann 삭제 알고리즘은 삭제 알고리즘에 대한 정보가 명확하게 규정되어 있습니다.

아래는 Peter Gutmann 이 고안한 삭제 알고리즘입니다.

모든 프로그램에서 동일합니다. 이 때 모든 공간은 지정한 공간에 따라 달라집니다

01. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
02. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
03. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
04. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
05. 모든 공간을 0x55 데이터로 덮어씁니다.
06. 모든 공간을 0xAA 데이터로 덮어씁니다.
07. 모든 공간을 세 바이트 씩 나눠 0x92, 0x49, 0x24 데이터로 덮어씁니다.
08. 모든 공간을 세 바이트 씩 나눠 0x49, 0x24, 0x92 데이터로 덮어씁니다.
09. 모든 공간을 세 바이트 씩 나눠 0x24, 0x92, 0x49 데이터로 덮어씁니다.
10. 모든 공간을 0x00 데이터로 덮어씁니다.
11. 모든 공간을 0x11 데이터로 덮어씁니다.
12. 모든 공간을 0x22 데이터로 덮어씁니다.
13. 모든 공간을 0x33 데이터로 덮어씁니다.
14. 모든 공간을 0x44 데이터로 덮어씁니다.
15. 모든 공간을 0x55 데이터로 덮어씁니다.
16. 모든 공간을 0x66 데이터로 덮어씁니다.
17. 모든 공간을 0x77 데이터로 덮어씁니다.
18. 모든 공간을 0x88 데이터로 덮어씁니다.
19. 모든 공간을 0x99 데이터로 덮어씁니다.
20. 모든 공간을 0xAA 데이터로 덮어씁니다.
21. 모든 공간을 0xBB 데이터로 덮어씁니다.
22. 모든 공간을 0xCC 데이터로 덮어씁니다.
23. 모든 공간을 0xDD 데이터로 덮어씁니다.
24. 모든 공간을 0xEE 데이터로 덮어씁니다.
25. 모든 공간을 0xFF 데이터로 덮어씁니다.
26. 모든 공간을 세 바이트 씩 나눠 0x92, 0x49, 0x24 데이터로 덮어씁니다.
27. 모든 공간을 세 바이트 씩 나눠 0x49, 0x24, 0x92 데이터로 덮어씁니다.
28. 모든 공간을 세 바이트 씩 나눠 0x24, 0x92, 0x49 데이터로 덮어씁니다.
29. 모든 공간을 세 바이트 씩 나눠 0x6D, 0xB6, 0xDB 데이터로 덮어씁니다.
30. 모든 공간을 세 바이트 씩 나눠 0xB6, 0xDB, 0x6D 데이터로 덮어씁니다.
31. 모든 공간을 세 바이트 씩 나눠 0xDB, 0x6D, 0xB6 데이터로 덮어씁니다.
32. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
33. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
34. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
35. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.


대충 보시면 최대한 0 과 1 이 반복적으로 기록되도록 작업하여 흔적을 없애기 위해 노력하였다는 것을 알 수 있습니다. 솔직히 이정도면 진짜로 기존 데이터의 흔적은 찾아낼 수 없다고 봐야죠. 단 삭제하는데에 시간이 정말 오래 걸릴 뿐 입니다.


이렇게 가장 많이 사용되는 DoD 5220.22-M 이나 Peter Gutmann 알고리즘 외에도 각 국가나 기관마다 사용하는 다양한 삭제 알고리즘들이 있습니다. 어떤 데이터를 어떻게 덮어 씌우는가가 다를 뿐 재기록 작업을 통해 복구가 불가능하도록 만든다는 기본은 동일하죠.[Peter Gumann 이 양반은 정말로 디스크가 뽀개지는 한이 있더라도 복구할테면 복구해 봐 수준으로 재기록 작업을 왕창하는 것이죠. 재기록 횟수에 제한이 있는 SSD와 같은 플래시 메모리류의 저장 장치에서는 사용하지 않으시는 게 좋습니다. ^^; 수명 줄어드는 소리가...]




이제는 안전 불감증을 없애야 할 시대

이제 사용자는 단순하게 파일을 삭제하면 언제든지 복구되어 유출될 수 있다는 사실을 인지하고 있어야 합니다. 실제로 자신이 사용하던 하드 디스크를 간단하게 빠른 포맷을 통해 포맷만 한 후(또는 간단히 파티션만 제거한 후), 모든 데이터가 사라졌을거란 믿음을 가지고 중고로 처분했는데, 구매자가 호기심에 파일 복구 프로그램을 실행한 결과 파일들이 복구가 되어 개인의 소중한 정보가 노출되는 경우가 심심찮게 있습니다.

만약 이러한 사용자가 빠른 포맷과 일반 포맷의 차이를 알고 제로필 작업을 진행하는 일반 포맷 작업만이라도 해 주었다면 이러한 일이 발생하였을까요? 아마 아니었을 겁니다.


정보가 곧 돈이고 목숨인 기업과 기관, 군의 경우 이미 이러한 문제를 심각하게 인식하여 파일을 지울 때는 꼭 완전 삭제를 지원하는 프로그램을 통해 파일을 삭제하고, 유실될 수 있는 저장 장치는 꼭 암호화하여 가지고 다니는 것이 일반적인 모습이 되었습니다.


이제는 가정에서도 자신이 사용하던 저장 장치를 타인에게 양도(판매) 할 때는 이러한 유출의 위험성을 인식하고, DoD 5220.22-M 이나 Peter Gutmann 과 같은 정교한 삭제 알고리즘을 통해 삭제하는것까지는 무리더라도 최소한 제로필(일반 포맷)작업은 하여, 불순한 의도를 가진 양수자(구매자)가 파일 복구 프로그램을 통해 자신의 파일을 복구하지 못하도록 예방하는 것은 필수라고 할 수 있습니다.

만약 자신의 데이터가 정말로 중요하거나 절대 유출되어서는 안 되거나 경찰이나 국정원에서 왠지 내 디스크를 노리고 있다는 느낌이 든다면[무슨 짓을 했길레?] 단순한 제로필 뿐만 아니라 DoD 5220.22-M 이나 Peter Gutmann 과 같은 전문적인 삭제 알고리즘을 지원하는 프로그램을 통해 데이터를 좀 더 완벽하게 파괴하는 것이 좋습니다.




데이터 보호의 다른 방향

지금까지 알아 본 것과 같이 제대로 삭제되지 않은 데이터는 복구될 수 있다는 것을 알았습니다. 그리고 데이터를 복구하지 못하도록 완전히 파괴하여 중요한 정보를 지키기 위한 다양한 삭제 알고리즘들이 개발되어 사용되고 있다는 것도 알게 되었구요.

그런데 컴퓨터 분야에서는 이러한 중요한 정보를 보호하기 위해 데이터 삭제와는 전혀 다른 방법을 사용하는 기술이 존재하고 있습니다. 본문에서도 잠시 언급되었는데요. 바로 데이터 암호화 입니다.

BitLocker 를 위한 TPM 1.2 보안칩



데이터 삭제(파괴) 프로그램에는 치명적인 단점이 하나 있는데 바로 아래와 같은 상황입니다.

데이터 삭제 프로그램 : 복구할 수 있으면 복구 해 봐!
불순한 의도의 사용자 : 저기 죄송하지만 삭제하기 전에 디스크 먼저 떼어 갑니다. ^^a
데이터 삭제 프로그램 : 헉!



그래서 다른 곳에서는 데이터 자체를 강력하게 암호화하여 유실 또는 유출되더라도 안전하게끔 하는 데이터 암호화 알고리즘과 프로그램들이 발전을 하고 있습니다.

데이터 암호화 프로그램 : 후훗! 가져가든 복구하든 니들 맘대로 해도 좋으니까 읽을 수 있으면 읽어 봐!
해당 데이터의 주인 : 근데 넌 왜 이렇게 느리고 복잡하냐?
데이터 암호화 프로그램 : ㅜ_ㅜ



데이터 삭제 프로그램은 애초에 데이터의 유출 자체를 막고자 하는 방향이고, 데이터 암호화 프로그램은 데이터가 유출되었을 때 사용하지 못하도록 하는 방향인 것이죠. 아무튼 전혀 다른 기술이지만 자신의 정보를 지킨다는 공통의 목적을 가진 기술이라고 할 수 있습니다. 역시나 이 글도 제법 멀리 왔군요. ㅡㅡ; 여기까지 입니다. ^^


 

 

신고
캐플 블로그에 공개된 글은 반드시 원본 글의 링크를 포함시키는 조건으로 자유롭게 이용하실 수 있습니다.
하지만 블로그의 발전을 위하여 되도록이면 링크로 글을 소개해주시길 부탁드립니다. ^^

- 상업적인 용도의 사이트는 대상에서 제외됩니다. -
- 글에는 오류가 있을 수 있고, 추후 수정 또는 재발행될 수 있습니다. -
  1. 도사100 2012.02.06 16:48 신고  댓글주소  수정/삭제  댓글쓰기
    제가 새로 윈도우 설치할 때, 운영제재용 파티션도 지우고 다시 새로 잡아서 빠른포멧말고 일반포멧 좋아합니다
  2. BlogIcon addi 2012.04.14 09:15 신고  댓글주소  수정/삭제  댓글쓰기
    하드디스크 데이터를 깔끔하게 정리해야할 일이 있었는데 좋은 정보 감사합니다.
  3. 아니까따 2012.05.13 17:48 신고  댓글주소  수정/삭제  댓글쓰기
    엄청난 글이군요. 많이 알아갑니다.
    참 일반포맷도 오래걸릴뿐 데이터를 덮어쓰진 않습니다.
    • BlogIcon CApple 2012.05.14 09:14 신고  댓글주소  수정/삭제
      일반 포맷은 해당 파티션(디스크)의 전체 공간을 0 으로 재기록하여 데이터를 덮어쓰는 것이 맞습니다. 아래의 글을 참고하세요.

      http://powerwin.tistory.com/290
  4. 부산0220 2012.05.18 19:43 신고  댓글주소  수정/삭제  댓글쓰기
    글 정말 재미있게 잘~ 읽었습니다. 고맙습니다.
  5. 나그네 2012.07.22 15:25 신고  댓글주소  수정/삭제  댓글쓰기
    유닉한 정보 정말 감사합니다.
    궁금한 부분이었는데 큰 도움이 되었습니다. ^^
  6. 몽테스큐 2012.09.02 06:17 신고  댓글주소  수정/삭제  댓글쓰기
    넓게보면 포렌직의 기초쯤에 해당되는 글이랄까요?
    굉장히 재미있게 읽고 갑니다.
  7. 아이쿠야 2012.09.12 00:30 신고  댓글주소  수정/삭제  댓글쓰기
    아 정말로 좋은 정보 감사합니다. 포렌식의 자료를 찾아보다가 이런 좋은 정보를 ㅋ 정말 좋은 정보 주셔서 고맙습니다.
  8. BlogIcon 네로렌 2012.10.21 12:45 신고  댓글주소  수정/삭제  댓글쓰기
    와, 잘 읽고 갑니다. 이 글을 보니 정보보안쪽에 흥미가 생기네요 ㅎㅎ.
  9. BlogIcon 니드뽀폴쉐 2012.10.22 21:06 신고  댓글주소  수정/삭제  댓글쓰기
    잘 봤습니다.
    전 CCleaner, FASTCOPY를 사용하는데 거기보면 보안삭제가 있더군요.
    35번 덮어쓰기는 정말...ㅎㅎ
  10. 상명대 2012.11.17 10:50 신고  댓글주소  수정/삭제  댓글쓰기
    하드포맷하고 목구프로그램돌려보니 복구가 많이도던데..데이터 삭제 프로그램을 어느걸써야할지..고민이네요,,
    • BlogIcon CApple 2012.11.17 19:56 신고  댓글주소  수정/삭제
      전체를 삭제하시는 것이라면 포맷하실 때 빠른 포맷을 선택하지 마시고 일반 포맷을 하시면 됩니다.

      http://cappleblog.co.kr/253

      그 외에 빈 공간만을 제거할 땐 SDelete 가 가장 편리하고 유용하며, 특정 파일을 삭제할 땐 BCWipe 나 CCleaner, V3 등에서도 안전 삭제(보안 삭제, 완전 삭제) 등의 기능으로 제공되고 있습니다.
  11. 돌산 2012.12.26 15:00 신고  댓글주소  수정/삭제  댓글쓰기
    데이터 삭제에 대한 더 충실해진 글이군요.pdf 읽어보려고 열었다가....그냥...닫았습니다.
  12. chongkong 2013.01.30 09:16 신고  댓글주소  수정/삭제  댓글쓰기
    정말 좋은 글 잘 읽고 갑니다! 궁금증이 전부 해결되었네요
  13. d 2013.02.08 12:43 신고  댓글주소  수정/삭제  댓글쓰기
    제가 예전에 35번 덮어씌우는 피터거트맨 법 써본적 있는데.........
    갑자기 디스크 용량이 팍팍 내려가더라고요
    그래서 찾아보니까 ~A30FE 어쩌고저쩌고

    정확하게 기억은 안나는데 대충 이런식의 폴더가 점점 커지더라고요
    그것도 프로그램으로 디스크 검사해서 알아냈어요
    윈도우 탐색기로 직접 들어가니까 클릭해도 읽을수 없다고 나오고..........

    왜이러지 싶어서 삭제 프로그램 끄니까 원상태로 복구;;;;
    혹시 이럴때 어떻게 해야되는지 아세요?
    13시간동안 돌려서 겨우33%지웠던게 아무 쓸모가 없게되서.......... ^^:;
    • BlogIcon CApple 2013.04.22 16:51 신고  댓글주소  수정/삭제
      이제보니 제가 댓글의 내용을 보안 삭제를 진행하고 난 후에 디스크 검사를 진행했는데 디스크 여유 공간이 줄어든 것으로 잘못 이해했네요. 다른 분들도 참고하시라고 늦었지만 수정합니다.

      아무래도 질문자께서 빈 공간 보안 삭제를 진행하신 것 같은데 원래 그렇게 공간의 용량이 줄어드는 것이 정상입니다. 빈 공간 보안 삭제란 게 임의의 파일을 생성한 후 해당 파일에 데이터를 기록하는 방식으로 기존의 데이터를 제거하는 것이기 때문에 그렇죠.

      이 때 임시 파일의 크기는 작게 생성한 후 계속 데이터를 써나가 용량이 점차 늘어나는 방식일 수도 있고, 일시에 전체 여유 공간의 크기만큼 파일을 생성한 후 해당 파일에 내용을 기록하는 방식일 수도 있습니다.

      즉, 보안 삭제 작업 중간 용량이 점점 줄어드는 것은 보안 삭제 프로그램이 임시로 생성하여 기록 중인 파일의 크기가 점점 늘어나는 과정입니다. 모든 작업을 마치면 해당 파일을 삭제하기에 여유 공간은 다시 원래대로 되돌아오고요. 그러니 걱정하실 필요 없습니다.

      p.s 참고로 전체 공간 보안 삭제는 포맷 과정을 동반할 수도 있고, 또는 위와 같은 방식으로 진행될 수도 있습니다.
  14. 인간 2013.07.31 12:42 신고  댓글주소  수정/삭제  댓글쓰기
    SBS에서는 저런걸 보도했죠.
    중고하드사서 복구를 시도하니까 거의다 되더라고요...
    참 끔찍한 기분이...들었어요.(거기서 나온 법적으로 인정된 완전삭제의 세가지 방법으로 물리적파쇄와 디가우징=자기장으로 지우는방법과 와이핑만 허용한다고 하더라고요.)
    근데,만일 보안삭제를 하다가 실수로 삭제프로그렘을 종료해버리면 (갑자기 종료해버리면)임시파일은 삭제되나요?삭제가 안되면 그대로 잔존해서 하드디스크 용량을 갉아먹나요?
    그리고 하드디스크의 용량을 꽉 채워버릴때까지 임시파일의 용량을 계~~속 늘리나요?
    • BlogIcon CApple 2013.08.01 18:46 신고  댓글주소  수정/삭제
      빈 공간 보안 삭제를 물어보시는 것 같네요. 임시 파일을 생성해서 삭제하는 방식은 빈 공간 보안 삭제에서 사용하는 방법이니까요. 아무튼, 중간에 갑자기 종료하면 임시 파일이 정상적으로 제거되지 않고 남아 있기도 합니다. 그럴 땐 수동으로 파일을 찾아내서 지우면 됩니다. 그리고 남은 모든 빈 공간이 가득찰 때까지 임시 파일에 기록하는 것이 맞습니다.
  15. 질문이있습니다 2013.09.20 23:27 신고  댓글주소  수정/삭제  댓글쓰기
    제가 몇달전에 다운받은 영상이있는데 완전히 삭제안된상태에서
    제가 몇일전에 삼성복원솔루션에서 전체복원 을 했어요
    컴퓨터를 처음 샀을때 그 상태로 복원을 했는데 몇달전에 다운받은
    영상이 완전삭제 되었을까요?
  16. 사리벵 2014.02.12 14:33 신고  댓글주소  수정/삭제  댓글쓰기
    우와!!!! 지금 세번째 댓글을 남기고 있습니다. 차근차근 읽어가고 있는데 도대체 제 마음속에 솟아난 의문을 어찌 미리 아시고 답변을 해주셨나요???

    지금, 포맷의 형식에 관한 글과, 빠른포맷, 일반포맷, 그리고 배드섹터와 관련된 로우포맷 관련 글을 보았는데 그 무렵 제 머릿속에 무럭무럭 우리나라 과학 수사대?가 구글 서버를 압수해서 구글측에서 수차례 로우포맷을 했는데도 데이터를 뽑아낸 사례가 떠오르더군요.

    그리고 일반포맷을 (제로필) 하더라도 흔적을 통해서 찾아낼 수도 있다구요.

    도대체 그 '흔적' 이란게 무엇인지, 도대체 로우포맷을 했는데도 어떻게 데이터를 뽑아냈는지 정말 너무너무너무 궁금했는데 어떻게 질문하기도 전에 알려주시는지 참 몽매한 소인은 너무나 궁금하고 두렵습니다.(?) 정말 너무너무 재밌습니다. ㅋㅋㅋㅋㅋ
  17. 지나가다 2014.08.13 23:36 신고  댓글주소  수정/삭제  댓글쓰기
    제로필/랜덤필 하나만 돌려도 아날로그 복구는 엄청난 시간과 노력이 필요하겠군요.

    저걸 하나하나 분석하고 알아내려면
    그리고 요즘은 용량도 큰데 원하는 값을 알아내려면 개고생해야할듯

댓글을 달아 주세요

- 댓글에선 예의를 지켜주시기 바라며, 블로그지기는 댓글에서 따로 활동하지 않습니다.

* 티스토리 사용자는 여기를 클릭하시면 로그인 됩니다.

BBCode 안내   굵게 밑줄 기울임 취소선   취소선 취소선 취소선 취소선   왼쪽 정렬 가운데 정렬 오른쪽 정렬   코드박스 인용구 이미지   이미지 업로드-Imgur.com