휴지통의 미스테리
제로필이고 뭐고 일단 파일의 삭제에 대해서 이야기 해 보도록 하죠. 윈도우에서 파일 삭제하면 가장 먼저 무엇이 떠오르시나요? 아마 많은 분들이 윈도우의 휴지통을 떠올리실 겁니다.
파일 삭제하면 나지!
컴퓨터에 능숙한 사용자들은 휴지통이 무엇인지 정확하게 이해하고 계시겠지만 모르시는 분들도 많을거라 생각합니다. 그럼 휴지통이란 정확하게 무엇일까요? 쉽게 휴지통이란 특수한 폴더라고 할 수 있습니다. 윈도우에서 파일을 삭제하면 아래와 같은 메시지가 뜨죠.
넌 지금 파일을 삭제하는 게 아니야~ 휴지통이라는 좀 특별한 폴더로 옮기는 것 뿐이라고!
이는 파일을 삭제하는 것이 아닌 휴지통이라는 곳으로 이동을 시키겠다는 의미입니다. 즉, 삭제도 뭐도 아니라는 것이지요. 다만 휴지통이라는 곳은 일반적인 폴더들과는 다르게 특별한 기능이 있을 뿐입니다. 그게 뭐냐 하면 폴더의 용량이 일정 이상 되면 용량에 맞춰서 오래된 파일부터 실제로 파일을 삭제하는 기능이 있는 것이죠.
즉, 휴지통을 통한 파일의 삭제라는 것은 파일을 삭제하는 것이 아니라 우선 다른 곳으로 이동시키는 것 뿐 입니다.
운영체제의 파일 삭제 방법
이제 실제로 운영체제에서 파일을 삭제하는 것에 대해서 이야기를 해 보겠습니다.
진짜로 파일을 완전하게 삭제하는 거야?
파일은 디스크에 저장이 됩니다. 그리고 디스크의 어느 위치(섹터)에 파일이 저장되어 있는지 등의 정보를 파일 시스템이 기록하고 관리하죠. 그래서 윈도우는 해당 파일을 읽을 때 먼저 파일 시스템의 기록을 살펴보고 디스크에서 실제 파일의 위치로 이동하여 파일을 확인하고 읽습니다.
간단하게 이야기하죠. 윈도우가 이야기하는 파일의 영구적인 삭제는 디스크에 저장된 실제 파일은 그대로 두고 파일 시스템에 저장된 파일에 대한 기록만 제거하여 실제 데이터(파일)과의 연결을 끊는 것에 불과합니다.
왜 그럴까요? 일단 속도 때문에 그렇습니다. 새로운 파일을 저장하는 작업에는 많은 시간이 소요되죠? 근데 파일을 삭제하는 것은 순식간입니다. 파일 시스템에서 해당 기록만 지우면 되거든요. 근데 파일 시스템에 기록을 지우는 것 뿐만 아니라 실제로 해당 파일로 찾아가서 파일을 지우는 작업을 하게 되면, 파일을 삭제하는 데에도 저장할 때 처럼 많은 시간이 소요 됩니다. 왜냐하면 파일 삭제란 것도 어차피 기존 파일의 공간을 모두 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 :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 작업)
1. 모든 공간을 0xD3 데이터로 덮어씁니다.
2. 모든 공간을 0x2C 데이터로 덮어씁니다.
3. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
4. 모든 공간을 임의의 단일 문자 데이터로 덮어씁니다.
5. 모든 공간을 0x95 데이터로 덮어씁니다.
6. 모든 공간을 0x6A 데이터로 덮어씁니다.
7. 모든 공간을 임의의 랜덤한 데이터로 덮어씁니다.
그런데 아래는 좀 다른 경우로 고스트로 유명한 시만텍사의 디스크 관리 툴인 GDisk 에서 사용하는 DoD 5220.22-M 전체 디스크(또는 파티션)공간 삭제 알고리즘입니다. (D 작업 x 6)
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
데이터 삭제 프로그램 : 헉!
그래서 다른 곳에서는 데이터 자체를 강력하게 암호화하여 유실 또는 유출되더라도 안전하게끔 하는 데이터 암호화 알고리즘과 프로그램들이 발전을 하고 있습니다.
데이터 암호화 프로그램 : 후훗! 가져가든 복구하든 니들 맘대로 해도 좋으니까 읽을 수 있으면 읽어 봐!
해당 데이터의 주인 : 근데 넌 왜 이렇게 느리고 복잡하냐?
데이터 암호화 프로그램 : ㅜ_ㅜ
데이터 삭제 프로그램은 애초에 데이터의 유출 자체를 막고자 하는 방향이고, 데이터 암호화 프로그램은 데이터가 유출되었을 때 사용하지 못하도록 하는 방향인 것이죠. 아무튼 전혀 다른 기술이지만 자신의 정보를 지킨다는 공통의 목적을 가진 기술이라고 할 수 있습니다. 역시나 이 글도 제법 멀리 왔군요. ㅡㅡ; 여기까지 입니다. ^^
DoD 5220.22-M :d522022m.pdf
GDisk disk wipe specifications :DoDwipe.pdf
http://en.wikipedia.org/wiki/Gutmann_method
http://en.wikipedia.org/wiki/Hard_disk
http://www.jetico.com/wiping-bcwipe/
http://www.deletefilespermanently.com/help/Using/WipingSchemes.html
★ 보안 삭제란 무엇이며 보안 삭제 프로그램은 파일과 공간을 어떻게 삭제할까?
★ SDelete - 간단한 명령형 파일 완전 삭제 및 빈 공간 정리 프로그램
★ SDelete - 오른쪽 버튼 메뉴에 추가하여 보안 삭제를 보다 쉽게 하기
★ Cipher 명령으로 빈 공간을 정리하기 - 빈 공간 보안 삭제