중요 정보가 들어있던 하드를 파기할 때, 우선 포맷한 뒤에 Dummy File Creator 같은 프로그램으로 하드를 가득 채운다고 해서 안전하지는 않습니다.
하드를 분해한 뒤 특수 장비를 이용하여 플래터에 남아있는 자기 이력(magnetic hysteresis)을 정밀하게 되집어가는 방법을 사용하면 재기록된 부분이라도 덮어쓰기 이전의 데이터를 알아낼 수 있습니다.
풀어서 설명하자면, 강한(편의상100%) N극이었던 기록 부위를 S극이 되도록 덮어 쓰면 약한 S극 (이를테면 80%)이 됩니다. 하드 디스크는 이것을 그냥 'S극'이라고 판별하고 끝나지만, 특수 장비를 사용하여 이 S극의 극성이 얼마나 강한지를 측정하면 지금은 S극이지만 그 강도가 약한 것으로 보아 덮어쓰기 전에는 N극이었다는 사실을 알 수 있는 거지요.
저장 장치는 각종 에러 발생에 대한 보완책으로 여러가지 인코딩 로직에 따라 데이터가 기록되기 때문에 우리가 논리적인 010101을 기록하더라도 미디어에는 NSNSNS로 기록되는 것이 아니라 다른 형태의 패턴으로 기록됩니다. 대표적인 것이 CD-ROM을 위시한 대부분의 기록 장치에 널리 쓰이는 Reed-Solomon code입니다. Reed-Solomon code는 에러에 대해 상당한 내성을 가지고 있어서 중간에 비트가 여러 개 깨져서 읽히더라도 디코딩하고나면 에러가 정정되어 우리가 원했던 본래의 논리 데이터를 뽑아낼 수 있습니다. 따라서 복구 과정에서 부분적으로 잘못 판정된 비트(raw bit)가 있더라도 최종 복원물에는 큰 영향을 주지 않게 됩니다.
이런 이유로 미국 국방성(Department of Defence)에서는 US DoD 5220-22.M 라는 스펙을 통해 데이터 장치를 파기하기 전에는 7차례에 걸쳐 서로 다른 데이터를 반복 기록한 뒤에 파기하도록 되어있습니다. Peter Gutmann는 '자기/반도체 메모리로부터 데이터를 확실히 삭제하는 방법'이라는 논문을 통해 정보 이론에 바탕하여 선택된 패턴에 따라 35차례에 걸쳐 패턴을 반복 기록하여 데이터를 파기할 것을 제안했습니다.
보안을 위해 데이터를 확실하게 (securely) 날려주는 프로그램으로 Eraser를 저는 권하고 싶습니다. GNU라이센스의 프리웨어입니다. 삭제 방식은 위에 언급한 2가지 방법 외에 랜덤 데이터로 지울 영역을 덮어쓰는 방식을 지원하고, 날리고 싶은 파일을 drag & drop으로 던져넣은 뒤 지울 수도 있고, 하드디스크의 미사용 영역을 밀어버릴 수도 있습니다. 미사용 영역만 밀어버리는 것이 아니라 하드를 통째로 밀어버리기 위해 위해 부팅용 플로피나 USB메모리, CD-ROM을 만드는 기능도 있습니다. (이 기능은 직접 써보진 않았군요.)
추가: 원문에 달려있는 대나무님의 트랙백을 읽어보니 IBM에서 만든 Secure Data Disposal이라는 프로그램도 있는 듯. 역시 프리웨어입니다. 대나무님쪽의 링크는 일본어 사이트이고 제가 올린 링크는 영문 사이트이니 각기 선호하시는 언어 페이지로 들어가서 받으시면 될 것 같습니다.


::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::
도스시절 노턴의 WIPEINFO 프로그램으로 Government Method를 이용하여 자료지우기를 했었는데 아직도 그런 프로그램이 남아있군요. 하드 정리할 땐 꼭 써먹어야겠군요.
오오, 괜찮겠군요! ^^ 잘 쓰겠습니다.
그나저나, 그건 언제 도착하죠... ?
어딘가에선 고민없이 전기로에 넣어버린다더군요. (..)
역시 소각장 만큼 안전하게 데이터를 없애는 곳이 없나보군요.
전기로라는게 열이 아니라 자기장 상자안에 넣는....
그거 장비 무지하게 비싼 모양이던데요.