가장 완벽한 디스크 포맷(삭제) 방법? Computer_Internet

지난번에 실수로 데이터를 날리는 바람에 복구 작업을 하면서 곰곰이 생각해봤다.

사람들은 자신의 하드 디스크에 있는 신상과 관련된 정보를 ‘어떻게 하면 완벽하게 지울 수 있을까?’ 에 대한 고민을 한다.
미국 국방부나 나사에서 사용한다는 데이터 복구 유틸리티만 있으면 데이터를 살릴 수 있다고도 하고, 불법 복제 소프트웨어 단속이 나오면 로우포맷을 한 하드디스크의 자료도 살려내어 단속에 걸린다고도 한다.
어떤 외국 유틸리티는 데이터를 완벽하게 삭제하여 복구 불가능 하게 만든다고 한다.
하지만 실제로 그런지 어떤지는 확인할 방법이 없어 모르겠다.
과연 데이터를 완벽하게 지우는 방법이 있을까?

약간은 뭔가 앞뒤가 맞지 않는 것 같은 생각이지만, 논리적으로 한번 가정해 보았다.
‘디스크(Disk)’라는 물리적 공간에 전기적 신호를 저장 하는 것이 ‘하드 디스크’다.
‘데이터 복구 프로그램’의 원리는 대략 이렇다.
사람들은 일반적으로 ‘삭제’ 나 ‘포맷’ 기능을 이용해 ‘데이터를 삭제 한다’ … 라고 생각한다.
윈도우에서 말하는 ‘삭제’ 나 ‘포맷’은 실제로 각 섹터에 있는 데이터를 일일이 지우는 것이 아니다.
윈도우의 파일체계는 각각의 섹터에 데이터를 저장하고, 해당 데이터가 어느 섹터부터 어느 섹터까지의 영역에 저장되어 있는지 주소를 저장하여 관리하는 방식이다.
즉, 어떤 파일을 불러오려 하면, 해당 파일의 정보를 참조하여 실제 데이터가 어느 섹터에 저장되어 있는지 알아낸 후 실제 데이터가 저장되어 있는 섹터를 하드 디스크의 바늘이 지나가면서 읽어오는 것이다.

삭제할 때는 어떻게 할까?
요즘은 플래시 메모리도 많이 사용하고, SSD 하드 디스크도 많이 사용하지만, 오래전부터 많이 사용되어온 하드 디스크는 데이터를 저장한 디스크(Disk)가 빠른 속도로 회전을 하고 바늘이 디스크를 지나가면서 데이터를 읽는다.
비슷한 원리를 쉽게 설명하자면 LP 플레이어와 비슷하다 하겠다.
LP 판이 계속 회전을 하고, 그 위에 바늘을 올려놓아 LP 판의 홈을 그대로 지나가면서 소리를 내는 것과 비슷하다 할 수 있다.
처음 데이터를 기록하거나 혹은 읽을 때는 실제 데이터를 그대로 기록하거나 혹은 실제 데이터를 모두 읽어야 하기 때문에 전체 섹터를 그대로 다 지나가야 한다.
하지만, 삭제할 때는 굳이 전체 섹터를 다 지나갈 필요가 없다.
위에서 언급했듯이, 윈도우의 파일체계는 해당 데이터의 섹터가 어디인지를 따로 저장했다가 그 정보를 참조하여 읽어오는 방식이기 때문에, 그 정보만 지우면 해당파일 정보는 지워진 것과 다름없다.
왜냐하면, 파일 정보를 담고 있는 섹터의 주소를 지워버렸기 때문에, 해당 섹터에 들어있는 정보는 실제로 지워지지는 않았지만 아무 의미 없는 정보가 되어버리기 때문이다.
이런 정보를 ‘쓰레기 데이터’라고 한다.
그러나 이 정보는 아직 지워지지 않았기 때문에, 특별한 툴(유틸리티)이 있다면 다시 원래의 파일처럼 복구해 낼 수 있다.
비록 지워지기 전의 파일처럼 완벽히 복구하지는 못하더라도, 아직 해당 섹터에 다른 데이터가 기록되지 않았거나 혹은 조금만 기록되었다면 거의 복구가 가능하다.
애초에 파일을 지우라는 명령을 내리면 모든 섹터의 데이터를 지우는 것이 상식적으로 맞는 방식인 것 같은데, 윈도우는 왜 주소만 지우고 각 섹터의 데이터는 지우지 않을까?
그것은 ‘효율’ 때문이다.
읽거나 쓰는 데에는 시간이 걸리는 것을 어쩔 수 없이 감수한다 하더라도, 지울 때에도 파일을 쓸 때만큼 시간이 오래 걸린다면, 우리는 컴퓨터를 사용할 때 굉장히 오래 기다려야 하고 시간을 낭비할 것이다.
뭔가 좀 꼼수인 것 같지만, 아무튼 지울 때는 그냥 주소만 지우면 파일을 지운 것과 같은 효과가 나기 때문에, 시스템의 성능과 작업의 효율을 위해서 이런 방식을 선택한 것이라 볼 수 있다.
바늘이 움직이면서 데이터를 읽거나 쓰는 작업은 아무리 하드웨어 성능이 좋아졌다 하더라도 속도에 한계가 있을 수밖에 없다.
이것을 논리적인 방법(실제 데이터를 모두 지울 필요 없이 그냥 주소만 지우는)으로 해결한 것이다.
또한, 각 섹터를 실제로 완전히 지운다는 것은 각 섹터에 무언가를 다시 써 넣는다는 것을 의미한다.
하드디스크 등은 읽기와 쓰기 등에 횟수 제한이 있는데, 데이터를 지울 때마다 각 섹터에 쓰기 작업을 하면 디스크의 수명이 단축되는 부작용도 있다.
여러모로, ‘데이터를 지운다’는 작업에서 주소만 지우는 방법은 이득이 많다.

다시 정리하면.
‘삭제’ 나 ‘포맷’은 실제 데이터를 모두 지우는 것이 아니라 데이터의 주소 정보를 지우는 것이다.
윈도우에서 기본적으로 동작하는 ‘삭제’ 나 ‘포맷’ 행위는 각 섹터를 일일이 지우지 않기 때문에, 파일을 삭제하거나 포맷을 했다고 하더라도 각 섹터에는 아직 원래 데이터의 정보가 남아 있게 된다.
이런 원리를 이용하여 복구프로그램은 각 섹터를 일일이 검사하여 파일 정보를 재구성 한다.
즉, 각 섹터가 일일이 지워지기(새로운 정보로 채워지기) 전에는 절대로 파일이 지워진 것이 아니다.
이런 논리적 판단에 따르면, 파일을 완벽히 지워서 복구할 수 없도록 하는 방법은 각 섹터에 들어있는 정보를 일일이 지우는 것이 가장 완벽한 방법이다.
그래서 ‘로우레벨 포맷(Low Level Format)’을 한다.
‘로우레벨 포맷’이란 공장에서 출고될 때와 같은 상태(공장초기화)로 만드는 것으로, 말 그대로라면 각 섹터를 일일이 지우는 것이라 예상된다.
그러나 ‘로우레벨 포맷’을 해도 데이터 복구가 가능한 유틸리티가 있다고 하니, ‘로우레벨 포맷’의 정확한 원리는 모르겠지만 아무튼 이 방법으로도 데이터를 완벽히 지우는 것이 아니라고 하니 뭔가 더 확실한 새로운 방법이 필요하다.

파일을 쓰고 지우는 원리를 생각해보자.
윈도우에서 파일 삭제 명령을 실행시키면 해당 파일의 데이터가 저장되어 있는 섹터와 관련된 주소 정보를 지운다. 하지만 각 섹터에는 아직 파일 정보가 남아있다.
그렇다면, 해당 섹터의 정보를 완벽히 없애려면 이 섹터에 다른 정보를 기록하여 이전에 기록되어 있던 정보에 덮어씌우면 된다.
다른 정보로 덮어씌우기 위해서는 비교적 용량이 큰 동영상 파일을 하디디스크에 복사해 넣는 것이 간편하고 효과적이다.
즉, 다른 데이터들을 디스크에 복사해 넣으면, 기존에 기록했던 섹터들에 다른 데이터 정보가 채워지게 되고, 결론적으로 그 이전에 기록되었던 정보들에 덮어씌워지는 역할을 한다.
하지만, 파일을 복사해 넣을 때 어느 섹터에 기록되었는지 알 수 없기 때문에, 하드디스크의 모든 정보를 다른 정보로 모두 채워 넣으려면 하드디스크가 꽉 차도록 다른 파일을 복사해 넣어야 한다.

핑백

  • F.G. : Acronis True Image Home 2010 - '파일 분쇄기' 에 대한 잡상(영원한 삭제) 2012-12-20 17:19:54 #

    ... 보다 간편한 방법도 있다.일전에 이와 관련하여 아이디어를 떠올린 적이 있는데, 아래의 포스팅을 참조. 가장 완벽한 디스크 포맷(삭제) 방법?http://fendee.egloos.com/10781279 물리적 위치에 중요한 정보가 없으면 되는 것이기 때문에, 아무런 의미가 없는 대용량의 영상 파일을 계속 복사해 넣어서 하드디스크를 꽉 ... more

덧글

댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.


통계 위젯 (화이트)

460572
3663
11006556

google_myblogSearch_side

▷검색어

Flag Counter style2