데이터 완전 삭제

From Hidden Wiki
Jump to navigation Jump to search
필독 사항 유닠스 계열 저작물, 성인물, 도박 웹 써버 보안 프로그래밍 그래핔 파싱
필독 사항 고스트BSD 표면 웹 싸이트 제작 리눅스 마스터 파이썬 트킨터 뷰티펄 숲
수학 아이투피 마약, 아청물, 해킹 웹 싸이트 보안 웹 프로그래밍 데이터 분석 게임 제작
통계학 뮤와이어 다크넽 싸이트 제작 정보 보안 기사 쟁고우 팬더즈 파이게임

개요

  • 파일의 완전 삭제란 - 제로필과 DoD 5220.22-M 와이핑

2012.02.06

https://cappleblog.co.kr/78


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


베라크맆트 문서 참조.


#25176

2020-4-2 오전 3:32

Veracrypt는 무조건 쓰는게 좋다

밖에 있는 컴퓨터로 USB에 자료 다운받은 상태였는데 다 옮긴뒤에 1차 포맷하고 빈공간 1회 덮어씌우기 했거든

복구프로그램 유료버전 크랙으로 돌려보니깐 100메가 넘는 비디오나 4메가 이상 사진파일까지 끈적끈적하게 검출되더라 그게 일주일 전이었는데 아무리 바빠도 컴퓨터에서 하는 모든 다운로드에 베라크립트 써야겠다는 생각이 들었음


1 복구 돌려보면 생각보다 많이 나옴


2 HDD 씀 ? SSDTrim이 있어서 보안은 더 좋다


3 hdd는 외장으로 돌려서 걍 빠른포멧시키고 다 암호화시키던가해야지 여러번 밀려면 걸린다 ㅋㅋㅋ 본체를 hdd쓰는건 병신짓이고

http://55adq4ncecjgxfymv4tdl54g4t2dayqju65wgqpik67suvtiz67kpzad.onion/p?id=25176


파일 완전 삭제

베라크맆트 (VeraCrypt)

휴지통의 미스터리

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

파일 삭제하면 나지!


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

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


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

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


운영 체제의 파일 삭제 방법

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

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


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


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

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

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

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

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


데이터 복구 프로그램의 등장

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

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

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

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


대표적인 파일 복구 프로그램 - 파이널 데이터(Final Data)


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

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


컴퓨터 HDD는 1번만 덮어씌워도 복구 소프트웨어로 복구하는 건 힘들다. 컴퓨터 과학계에서 발표된 논문에 의하면 35번 이상 덮어씌우면 국과수(국립과학수사연구원)에 있는 복구 전용 장비로도 복구하기 거의 불가능해진다.

스마트폰낸드 플래시 메모리(NAND flash memory)는 몇 번 덮어씌워야 하드웨어적으로도 복구를 못 하는지 모르겠는데 아무튼 여러번 덮어씌우면 되겠지.


데이터 복구 소프트웨어는 아래와 같은 것들이 있다.


레쿠바 (Recuva)

https://www.ccleaner.com/recuva/builds

푸란 파일 리커버리 (Puran File Recovery)

http://www.puransoftware.com/File-Recovery-Download.html

디스크 드릴 (Disk Drill)

https://www.cleverfiles.com/disk-drill-windows.html


  • 18 Free Data Recovery Software Tools

June 02, 2018

https://www.lifewire.com/free-data-recovery-software-tools-2622893


데이터 완전 삭제 프로그램의 등장

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

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

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


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

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

군대 행정실의 보물 - 비씨와잎(BCWipe)


Wipe Files with BCWipe | Jetico

https://www.jetico.com/data-wiping/wipe-files-bcwipe


현재 BCWipe은 무료 버전은 1회만 덮어씌우기가 되고, 안전하게 여러번 덮어씌우려면 유료 버전을 구매해야 하므로 다른 무료 프로그램을 쓰는 게 낫다.


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

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

간편한 공간 삭제 기능을 포함한 안전 삭제 프로그램 - 에쓰딜맅(SDelete)


SDelete - Windows Sysinternals | Microsoft Docs

https://docs.microsoft.com/en-us/sysinternals/downloads/sdelete


개별 파일 삭제 소프트웨어

이레이서(Eraser)를 설치한 후 삭제할 파일에서 마우스 오른쪽 클릭을 한 후 Eraser -> Erase 메뉴를 선택한다. Secure Move의 경우 파일 이동 후 기존 파일을 덮어씌워 완전히 삭제시키는 기능이다. 컴퓨터에서 이동이란 파일을 새 위치로 복사 후 기존 파일을 삭제하는 것이다. Erase 메뉴에 보면 Options가 있는데 즉시 삭제할 지, 아니면 리부팅 후 삭제할 지 등을 선택하는 메뉴로 건드릴 필요는 없다. 즉시 삭제가 기본 값이다. Options에 보면 Erasure Method가 (default)로 되어있다. Eraser를 실행시켜 Settings를 보면 Default file erasure method는 Gutmann (35 passes)로 Gutmann이 정의한 방식으로 35번 덮어씌우는 것이고, Default drive erasure method는 Pseudorandom Data (1 pass)로 한 번 덮어씌우는 것이다.


파일이 있던 위치에 새로운 데이터로 여러번 덮어씌워 복구를 어렵게 만드는 소프트웨어는 아래와 같은 것들이 있다.



씨큐얼리 파일 쉬레더 (Securely File Shredder)

https://download.cnet.com/Securely-File-Shredder/3000-2144_4-75987012.html

와잎파일 (WipeFile)

https://www.gaijin.at/en/dlwipefile.php


  • 35 Free File Shredder Software Programs

June 02, 2018

https://www.lifewire.com/free-file-shredder-software-programs-2619149


HDD의 빈 공간만 지우기

이레이서(Eraser)는 개별 파일 삭제도 되지만 HDD의 빈 공간 전체 삭제도 된다. 이레이서가 기능이 괜찮지만 만약 이레이서로 빈 공간 삭제하다 에러가 나서 지워지지 않으면 C클리너(CCleaner) 등 다른 프로그램으로 지우면 된다.



  • 완벽한 삭제: PC와 드라이브 재활용 시, 데이터를 완벽히 지우는 방법

2014.05.20

http://www.itworld.co.kr/news/87600


Eraser의 경우 1 pass, 2, 3, 7, 35 passes 등 다양한 옵션이 있다. 그 중 3 passes 이상이면 뭘 써도 상관이 없다. 3 passes면 보통 처음엔 0, 두번째는 1, 마지막은 랜덤하게 채운다. 1 pass의 경우 British HMG ISS (Baseline)이나 로우 레벨 포맷(low level format)처럼 단순히 0으로만 채우는 경우 복구에 시간을 좀 더 많이 쓰거나 좀 더 전문적인 복구 프로그램에 의해서는 복원될 수도 있으므로 pseudorandom data로 채워주는 게 좋다. 예를 들어, HDD 복구 프로그램인 리큐바(Recuva)의 딮 스캔(Deep Scan)을 선택하면 일반 모드보다 시간은 다소 오래 걸리지만 복구 가능한 파일을 더 많이 발견할 수 있다.


  • APPENDIX A: ERASURE METHODS

https://eraser.heidi.ie/appendix-a-erasure-methods/


3 passes도 멍청하게 세번 다 0이나 1로만 채우는 방식은 쓰지 않도록 한다.

Eraser에서 Target type은 Unused disk space를 선택해야 하며 그렇지 않으면 HDD의 데이터가 전부 날아갈 수 있다.


Eraser의 경우 어떤 erasure method를 썼는지 명시되어 있어 얼마나 안전하게 지워졌는지 알 수 있지만, CCleaner의 경우 몇 pass인지만 나와있고 어떤 method인지는 안 나와 있어서 좀 불안하다. 막말로 3 passes라도 0으로만 3번 채운다면 안전하다고 말하기 힘들기 때문이다.


Eraser의 경우 Eraser cluster tips라는 옵션이 있다. HDD는 cluster라는 작은 단위로 나눠지는데 파일을 여러개의 클러스터에 나눠서 저장한다. 이 때 파일이 클러스터를 다 채우지 못 하고 공간이 남는다. 그런데 이 공간에 이전에 있던 다른 파일이 있었다면 이 공간에는 그 정보가 남아있게 된다. 이런 정보도 지워줘야 하므로 이 옵션도 체크해준다.


C클리너(CCleaner)의 경우 무료 버전과 유료 버전이 있는데 무료 버전만 써도 충분하다. 처음 설치할 때 어배스트(Avast)를 같이 설치할 거냐고 물어보는 경우가 있는데 대부분은 이미 쓰는 안티바이러스(antivirus) 소프트웨어가 있으므로 체크를 해제한다.


CCleaner의 Tools -> Drive Wiper에서 Free Space Only를 선택하고 지울 드라이브를 선택한다. Entire Drive를 선택하면 자료가 다 지워지니 주의해야 한다.


1 pass, 3, 7, 35 passes의 옵션이 있다. 구체적으로 어떻게 지운다는 말이 없으므로 1 pass는 단순히 0으로 채울 가능성이 높다. 최소한 3 passes를 선택하자. 미국 정부 보안 가이드에도 최소한 세 번 이상은 덮어씌우라고 규정되어 있다.


CCleaner의 경우 MFT(master file table)부터 지우고, 데이터 영역을 지운다.


CCleaner의 경우 Options -> Monitoring에서 Enable system monitoring과 Enable Active Monitoring을 꺼주지 않으면 윈도우즈 시작시 자동 시작되므로 위 옵션들을 꺼준다.


그리고 빈 공간만 덮어씌우는 것보다는 전체 공간을 다 덮어씌워버리는 게 보안상 더 안전하다. 데이터가 있는 공간은 0이나 1이 적혀져 있는데 사실상 1 pass로 덮어씌운 것과 동일하므로 복원의 가능성이 있기 때문이다.


트루크맆트(TrueCrypt), 베라크맆트(VeraCrypt), 이레이서(Eraser), C클리너(CCleaner)는 모두 컴퓨터 본체의 메인보드에 SATA로 직접 연결할 때가 가장 빠르다. 그 다음으로 빠른게 외부에서 내부로 eSATA 포트로 연결하는 경우이다. 그 다음은 본체 후면의 USB 포트로 연결하는 게 빠른 것 같다. 마지막으로 본체 전면의 USB가 가장 느린 것 같다.

특히 SATA로 연결하는 것과 USB로 연결하는 것은 몇 배나 속도가 차이난다. HDD 용량이 클 경우 귀찮더라도 그냥 컴퓨터 뜯고 SATA로 연결하자. 예를 들어, USB로 연결하면 10시간이나 5일이 걸릴 HDD 덮어쓰기나 암호화 볼륨 생성 작업이, SATA로 연결하면 3시간이나 2일만 걸릴 수도 있다. 그리고 컴퓨터 성능이 좋을 수록 시간이 적게 걸린다.

디스크 전체 삭제 소프트웨어

디스크 전체 삭제 소프트웨어는 일반적으로 자체 부팅 기능을 내장하는 경우가 많아 운영 체제의 종류에 상관없이 사용할 수 있는 경우가 많다.

디스크 전체를 새로운 데이터로 여러번 덮어씌워 복구를 어렵게 만드는 소프트웨어로는 아래와 같은 것들이 있다.



http://www.cbldatarecovery.com/data-shredder/


http://hddguru.com/software/2005.10.02-MHDD/


  • 40 Free Data Destruction Software Programs

June 06, 2018

Completely free disk wipe and hard drive eraser software utilities

https://www.lifewire.com/free-data-destruction-software-programs-2626174

지로 필(zero fill)

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

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


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

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

1. 모든 공간을 0x00 데이터(16진수로 0)로 덮어씁니다.


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

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


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

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

즉, 국과수같은데 있는 장비로 하드웨어적으로 복구를 시도하면 0으로 한번 덮어씌웠어도 복구가 가능합니다.


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

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


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


이렇게 디스크는 자성체의 두 극 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

데이터 삭제 프로그램: 헉!


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

데이터 암호화 프로그램: 후훗! 가져가든 복구하든 니들 맘대로 해도 좋으니까 읽을 수 있으면 읽어 봐!

해당 데이터의 주인: 근데 넌 왜 이렇게 느리고 복잡하냐?

데이터 암호화 프로그램: ㅜ_ㅜ


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


DoD 5200.28-STD : d520028.pdf

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




베라크맆트

암호화 소프트웨어는 베라크맆트(VeraCrypt)를 추천한다.


관련 문서