2024-04-25 18:10 (목)
[김진국의 디지털포렌식-10] 덮어쓴 데이터 복구의 진실
상태바
[김진국의 디지털포렌식-10] 덮어쓴 데이터 복구의 진실
  • 길민권
  • 승인 2013.01.22 16:40
이 기사를 공유합니다

덮어쓴 데이터를 정말 복구해낼 수 있는가?
개인정보보호법 시행 후, 데이터 영구 삭제와 관련한 솔루션이 각광을 받고 있다. 다름 아닌 개인정보 제21조에 정의된 개인정보 파기 지침 때문이다.
 
개인정보보호법 제21조(개인정보의 파기)
① 개인정보처리자는 보유기간의 경과, 개인정보의 처리 목적 달성 등 그 개인정보가 불필요하게 되었을 때에는 지체 없이 그 개인정보를 파기하여야 한다. 다만, 다른 법령에 따라 보존하여야 하는 경우에는 그러하지 아니하다.
② 개인정보처리자가 제1항에 따라 개인정보를 파기할 때에는 복구 또는 재생되지 아니하도록 조치하여야 한다.
③ 개인정보처리자가 제1항 단서에 따라 개인정보를 파기하지 아니하고 보존하여야 하는 경우에는 해당 개인정보 또는 개인정보파일을 다른 개인정보와 분리하여서 저장·관리하여야 한다.
④ 개인정보의 파기방법 및 절차 등에 필요한 사항은 대통령령으로 정한다.
 
파기방법 및 절차 등에 필요한 사항은 대통령령으로 정한다고 규정되어 있다. 대통령령인 시행령을 살펴보면 다음과 같이 파기 방법이 규정되어 있다.
제16조(개인정보의 파기방법) 개인정보처리자는 법 제21조에 따라 개인정보를 파기할 때에는 다음 각 호의 구분에 따른 방법으로 하여야 한다.
1. 전자적 파일 형태인 경우: 복원이 불가능한 방법으로 영구 삭제
2. 제1호 외의 기록물, 인쇄물, 서면, 그 밖의 기록매체인 경우: 파쇄 또는 소각
 
개인정보보호법과 시행령에서 규정되어 있는 것처럼 개인정보를 파기할 때는 복원이 불가능한 방법으로 영구 삭제를 해야 한다. 복원이 불가능한 방법이란 어떤 방법을 의미하는 것인가? 그리고 과연 그 방법이 적절한 것인가? 이번 호에서는 이런 논란에 대해 알아보고자 한다.
 
◇데이터 영구 삭제 방법
데이터 영구 삭제 방법은 저장매체의 종류에 따라 조금씩 차이가 있다. 여기서는 아직도 저장매체 시장의 큰 부분을 담당하고 있는 하드디스크 드라이브(HDD)를 대상으로 한다.
 
하드디스크 드라이브의 데이터는 플래터에 기록된다. 플래터 기판은 자성을 거의 띄지 않는 반자성체나 상자성체로 구성되는데 최근에는 유리나 마그네슘 합금을 주로 사용한다. 플래터 기판은 여러 개의 박막(thin film)으로 층을 이루어 코딩하는데, 이 중 실제로 데이터 기록을 담당하는 층은 강자성체로 코딩된 층이다.
 
CPU에서 처리된 디지털 데이터는 아날로그 신호로 변환되어 플래터에 기록된다. 이 때, 오류정정코드(ECC, Error Correcting Code)가 계산되어 데이터와 함께 기록된다. 물리적인 섹터의 크기는 512 바이트이지만 이 크기는 데이터 영역만의 크기이다. 실제로는 각 섹터 데이터 앞, 뒤에 헤더, ECC, CRC 등의 정보가 기록된다.
 
데이터는 필드 구분, 동기화, 측정 방식 등의 이유로 N극, S극의 절대적인 극성을 사용하지 않고, S극 -> N극 또는 N극 -> S극으로 변화하는 자화 반전(flux reversal)을 이용해 기록한다. 자기저항 소자로 구성된 헤드는 반전에서 나타나는 전기를 측정하여 회로에 전달하고, 회로는 이를 해석하여 디지털 데이터로 변환한다.
 
다음은 디지털 데이터의 기록에 따른 자속 전이, 자화 흐름, 읽기 전압을 나타낸 그림이다. 해당 그림은 수평기록방식(LMR, Longitudinal Magnetic Recording)을 사용하는 예전 디스크로 최근에는 수직기록방식(PMR, Perpendicular Magnetic Recording)을 사용하지만, 흐름을 이해하기는 더 쉬울 것이다.

(참고 : www.lintech.org/comp-per/07MAGREC.pdf[1])
 
결과적으로 하드디스크의 플래터 표면에 기록되는 데이터는 자화된 자기흐름이다. 데이터 영구 삭제 방법은 이 자기흐름을 없애거나 다른 자기흐름으로 바꾸는 것이다.
일반적인 데이터 영구 삭제 방법은 다음과 같다.
1. 덮어쓰기 : 삭제하고자 하는 데이터 위치에 0x0, 0x1 혹은 랜덤 데이터를 덮어쓰는 방법이다.
2. 암호화 : 삭제하고자 하는 데이터를 암호화하는 방식이다. 암호화는 볼륨이나 파일 단위로 가능하며 안전성이 증명된 방식을 이용해 현실적으로 공격할 수 없는 키 길이로 암호화하는 방법이다.
3. 디가우징 : 디스크를 강력한 자기장에 노출시켜 플래터 표면의 자기흐름을 파괴하는 방법이다.
4. 천공 또는 파쇄 : 디스크를 물리적으로 구멍을 내거나 파쇄하는 방법이다.
 
1, 2번 방식은 하드디스크를 재사용할 때 사용되고, 3, 4번 방식은 하드디스크를 폐기할 때 사용된다. 천공은 표면의 자기흐름이 완벽하게 파괴되지 않는 다는 점에서 논란이 있을 수 있지만, 파쇄나 디가우징은 복구가 불가능하다.
대부분은 재사용을 목적으로 하기 때문에 1, 2번 방식을 주로 사용하는데 그 중에서도 간편한 1번 방식을 많이 사용한다. 영구 삭제의 목적으로 나오는 대부분의 소프트웨어도 1번 방식으로 데이터를 삭제한다.
 
◇데이터 인코딩 방식
초기 디스크에 사용된 데이터 인코딩 방식은 주파수 변조(FM, Frequency Modulation) 방식이었다. 이후 자화 반전의 낭비를 줄여 효율을 50% 올린 수정된 주파수 변조(MFM, Modified Frequency Modulation) 방식을 사용했다. 이 방식은 현재까지도 플로피 디스크의 인코딩 표준으로 사용하고 있다.
 
이후 0, 1을 각각 자화 반전에 대응시켜 사용하던 기존 방식을 개선하여, 여러 개의 비트 모음을 특정 자화 반전 패턴과 대응 시킨 런 길이 제한(RLL, Run Length Limited) 방식이 나왔다. RLL 방식이 나온 후, 디스크 인코딩은 모두 MFM에서 RLL 방식으로 넘어갔다.
RLL 방식까지의 신호 검출 방식은 최대치 검출(Peak Detection) 방식이었다. 최대치 검출 방식은 다음 그림과 같이 아날로그 신호의 최대치를 검출하여 이를 디지털로 변환하는 방식이다. 이 방식은 기록밀도가 증가하면서 문제가 되었다.

(참고 : www.pcguide.com/ref/hdd/geom/data.htm[2])
 
기록밀도가 증가하면 자화 반전 간의 간격은 더 좁아진다. 그렇게 되면 아날로그 신호의 흐름이 더 좁아지게 되어 서로 간섭을 받는다. 간섭을 줄이기 위해서는 자기장을 약하게 해야 하는데 자기장도 배경 잡음과 구분하려면 약하게 하는데 한계가 있다.
 
이를 해결하기 위해 나온 것이 PRML(Partial Response, Maximum Likelihood) 방식이다. 이 방식은 최대치의 값을 검출하는 것이 아니라 다음 그림과 같이 최대치 근처의 값을 부분 샘플링(Partial Response)하여 샘플 중 가장 최대값(Maximum Likelihood)을 가지고 판단하는 것이다. PRML 방식이 적용되면서 플래터 용량은 RLL에 비해 30~40% 증가했다. 최근에는 PRML의 알고리즘과 처리 회로, 오류 발생률을 개선한 EPRML 방식이 사용되고 있다.

(참고 : www.pcguide.com/ref/hdd/geom/data.htm[2])
 
◇덮어쓰기 방법
덮어쓰기 방법은 삭제하고자 하는 데이터 범위를 정해진 비트 패턴으로 재기록하는 것이다. 비트 패턴은 주로 0x0, 0x1이나 랜덤한 비트 패턴을 사용하는데, 경우에 따라 특정 비트 패턴을 정의하기도 한다. 위키피디아(en.wikipedia.org/wiki/Data_erasure)를 참고하면 각 국가, 기관별로 다양한 덮어쓰기 표준 지침을 확인할 수 있다. 현재 국내에는 특별한 지침이 없고, 일부 기관에서는 미국방성의 표준을 따르고 있다.
 
덮어쓰기는 목적에 따라 디스크 전체를 대상으로 하거나 파일을 대상으로 한다. 소프트웨어에 따라 2개의 기능을 모두 지원하기도 하고 하나의 기능만 지원하기도 하므로 목적에 맞는 것을 사용해야 한다. 그리고 다음과 같이 각 기능별로 고려해야 할 점이 있으므로 미리 구입 전 소프트웨어를 대상으로 테스트해볼 필요가 있다.
 
-디스크 영역 영구 삭제 : 물리 섹터의 시작부터 마지막까지 덮어쓰기를 정확히 하는 지와 HPA, DCO 영역도 포함하는지 살펴봐야 한다.
-파일 영역 영구 삭제 : 파일의 메타데이터도 영구 삭제를 하는 지와 관련 아티팩트(레지스트리, 프리패치 등)의 영구 삭제 기능이 있는지도 살펴봐야 한다. 제품에 따라 파일 데이터만 삭제하고 메타데이터는 그대로 남겨 두는 경우도 있다.
또한, 어떤 비트 패턴으로 덮어쓰는 지도 살펴볼 필요가 있다. 특정 소프트웨어는 비트 패턴을 자사의 제품명이나 고정된 문자열을 사용하기 때문에 영구 삭제 의도가 드러날 수도 있다.
 
◇덮어쓴 데이터의 복구 가능성
그렇다면 덮어쓴 데이터의 복구 가능성은 얼마나 될까?
덮어쓴 데이터의 복구 가능성에 대한 논란은 2006년에 USENIX Security Symposium에서 발표된 피터 구트만(Peter Gutmann)의 논문에서 비롯되었다[3]. 그의 논문이 발표된 이후 최근까지 덮어쓴 데이터의 복구 가능성에 대해 많은 논란이 있어 왔다. 구글 학술 검색을 통해 확인한 인용 횟수(현재 337회)만 봐도 그 사실을 알 수 있다.
 
그의 주장 근거는 MFM(Magnetic Force Microscopy, 자력 현미경) 장비를 사용하면 자기력에 의한 공간적 변이를 형상화할 수 있는데, 이 형상의 차이를 통해 복구할 수 있다는 것이다.
-0에다 1을 덮어쓰면 0.95, 1에다 1을 덮어쓰면 1.05 형태의 값이 기록되므로 이전 데이터 유추가 가능하다.
-액추에이터가 기록할 트랙을 찾을 때 오차가 발생하기 때문에 트랙 가장자리의 잔여 데이터를 통해 이전 데이터 유추가 가능하다.
 
위와 같은 실험 내용을 기반으로 그는 논문에서 최대 35번까지 덮어써야 한다고 주장했다. 35번은 그 당시까지 주로 사용되었던 데이터 인코딩 방식인 MFM, (1,7) RLL, (2,7) RLL을 모두 대상으로 한 것이다. 결과적으로 어떤 인코딩 방식이던 35번을 덮어쓰면 완벽하게 복구 불가능하게 만들 수 있다는 것이다. 추가적으로 RLL 이후에 사용되는 PRML, EPRML 방식에서는 랜덤한 데이터 몇 번만으로도 복구 불가능하게 만들 수 있다고 언급했다.
 
그렇다면 정말 복구가 가능한 것일까? 복구 가능성보다 더 중요한 것은 포렌식적으로 의미 있는 데이터를 복구할 수 있냐는 점이다. 복구 데이터가 의미가 없다면 굳이 여러 번 덮어쓸 필요가 없을 것이다. 디스크 전체를 여러 번 덮어쓰기 때문에 디스크에 많은 부담을 주게 되고, 결국 디스크 수명을 낮추게 된다. 게다가 최근의 대용량 디스크를 덮어쓰려면 너무도 많은 비생산적인 시간이 필요하다.
 
이런 의문을 해결한 노력이 있었는데, 바로 2008년 ICISS에서 발표된 논문이다[3]. 해당 논문은 3명의 연구원이 공동으로 작업한 내용으로 검증을 위해 꼼꼼한 노력을 기울였음을 알 수 있다. 해당 논문의 내용을 기반으로 복구 가능성에 대해서 살펴보자.
 
우선, 1을 덮어쓸 때 이전 데이터가 0이냐 1이냐에 따라 패턴이 다르게 나올 수 있다고 했는데, 정확히 1이라는 값을 덮어쓰는 것이 가능할까? 기록 패턴에 영향을 미치는 요인은 다음과 같이 다양하다.
-엑추에이터의 정밀함으로 인한 헤드의 정확도
-플래터 회전에 따른 내부적인 공기 흐름, 진동
-플래터 회전에 따른 내부 열
-수많은 컴포넌트에서 발생하는 오류
-이전에 기록된 데이터
-디스크의 사용 상태
 
위와 같이 데이터를 기록할 시점의 상황에 따라 정확히 1을 기록하는 것이 쉽지 않다. 디스크를 오래 사용할 수록 부식으로 인해 기록되는 패턴이 차이를 보이고, 실제로 열이 높아지면 자기력의 세기가 약해진다는 논문도 발표된 적도 있다. 최근에는 열 보정(Themal Recalibration) 알고리즘, 내부 부품 개선, 인코딩 스키마 개선 등의 다양한 보완 방법을 사용하고 있지만 항상 동일한 패턴을 기록하는 것은 어렵다. 게다가 EPRML 인코딩 방식을 사용하는 최근의 디스크에서는 이런 기록 패턴 변형에 좀 더 관대할 수 밖에 없다.
 
다음은 한번도 사용한 적이 없는 깨끗한(pristine) 디스크에 1을 기록한 경우와 사용하던 디스크에 1을 덮어쓴 경우의 자기 밀도 분포이다. 눈으로 봤을 때는 미세한 차이라고 생각할 수 있지만, 기록 패턴으로 데이터를 구분할 때는 큰 차이일 수 있으며, 미리 분포를 예측하기가 어렵다. 이런 상황에서 1.05라는 값을 얻었을 때, 이것이 이전 데이터의 영향인지 아니면 다른 외부 요인(열, 오류, 헤드 정확도 등)에 의한 것인지를 판단하기가 어려울 수 있다.

 
좀 더 정확한 확률을 계산하기 위해 오래된 것부터 최근 것까지 다양한 타입(SCSI, IDE 등)의 하드디스크로 실험해보았다. 깨끗한(pristine) 디스크와 사용하던 디스크에 초기 1을 기록한 후 1을 덮어썼다. 다음 표는 이전 데이터와 이후 데이터를 모두 알 수 있는 상황에서 베이즈(Bayes’s Theorem) 정리를 이용해 이전 데이터의 복구 확률을 계산해 본 것이다.
 
1비트를 복구할 확률은 깨끗한 디스크에서는 92%, 사용하던 디스크에서는 56%가 나왔다. 포렌식적으로 의미 있는 최소한의 크기인 4바이트(IP 주소가 4바이트)에 대한 확률은 각각 6%, 소수점 이하의 확률이 나왔다.

 
다시 한번 추가적으로 0을 1번 덮어쓴 경우와 3번 덮어쓴 경우의 확률을 비교해보았다. 1비트의 복구 확률은 각각 87%, 64%이고, 4바이트의 복구 확률은 1%, 소수점 이하 확률이다.

 
확률이 비교적 높다고 생각할 수 있다. 하지만, 해당 실험은 깨끗한 디스크를 대상으로 이상적인 상황을 기준으로 한 실험이다. 게다가 실제 포렌식 조사에서는 이전 데이터를 알 수 없는 상황이다. 이런 상황에서 데이터를 복구하기란 더 어려울 수 밖에 없다. 또한, 1%의 가능성을 가지고 증거의 가치를 얘기하기에는 너무나 큰 기대가 아닐까?
좀 더 눈으로 확신할 수 있도록 추가적인 실험을 하였다. 데이터가 의미가 있으려면 최소 1바이트(8비트)가 완벽히 복구돼야 한다. 다음은 실험 데이터를 대상으로 1바이트를 완벽히 복구했을 때는 1, 그렇지 못할 때는 0을 표시한 것이다.

 
연속된 1이 많아 보일 수도 있지만, 이는 0에 1을 덮어쓰거나 1에 0을 덮어쓴 이상적인 상황의 결과이다. 좀 더 현실적인 복구 가능성을 확인해보기 위해 문자열을 대상으로 덮어쓴 후 복구를 해 보았다. 다음은 원본 문자열이다.

 
다음은 이상적인 상황에서의 복구 결과이다.

 
눈으로 볼 때, 의미 있는 데이터를 확인하기 어렵다. 실제 상황에서는 이보다 더 나쁜 결과가 나오겠지만 이 결과로도 충분해 보인다.
결과적으로 개별비트의 복구 가능성은 어느 정도 있을지 몰라도 의미 있는 데이터를 복구할 가능성은 거의 없다. 따라서, 덮어쓴 데이터를 복구하는 자동화 방식을 개발하는 것도 현실적으로 불가능하다. 그리고 낮은 가능성, 아니 거의 없는 가능성을 가지고 증거로 활용하기란 더욱 더 어려울 것이다.
 
그래도 정 의심이 간다면 한번 덮어쓰고 이전 값의 보수로 한번 더 덮어쓰자. 그러면 그나마 있을 만한 최~소한의 가능성도 없앨 수 있다. 미국방부의 영구 삭제 지침을 검증 없이 사용한 것처럼 그냥 받아들일 수도 있겠지만 개인적으로는 국내 국가기관에서 MFM을 구매하여 실험을 한번 더 해주길 바란다.
그 동안 지침에 따라 7번을 덮어쓰느라 하드디스크가 너무 많은 고생을 해왔다. 이제는 하드디스크를 조금 쉬게 해주자. 좀 더 세부적인 내용은 F-INSIGHT(포렌식 인사이트)의 발표자료를 확인하자[5].
[1] Chapter 7. Magnetic Recording Fundamentals, www.lintech.org/comp-per/07MAGREC.pdf
[2] PC Guide, Hard Disk Data Encoding and Decoding, www.pcguide.com/ref/hdd/geom/data.htm
[3] Peter Gutmann, Secure Deletion of Data from Magnetic and Solid-State Memory, 6th USENIX Security Symposium.
[4] Craig Wright, Dave Kleiman, Shyaam Sundhar R.S., Overwriting Hard Drive Data: The Great Wiping Controversy, ICISS ’08.
[5] F-INSIGHT 발표자료, forensicinsight.org/archives/912
 
<김진국 선임연구원 소개>

강원대학교와 고려대학교 정보보호대학원을 졸업하고 현재 안랩 A-FIRST팀에서 침해사고 포렌식 분석 업무를 담당하고 있다. 국내에 디지털 포렌식과 관련한 올바른 정보 공유를 위해 개인 블로그(FORENSIC-PROOF)와 포렌식 인사이트 커뮤니티를 운영하고 있다.

■ 보안 사건사고 제보 하기

▷ 이메일 : mkgil@dailysecu.com

▷ 제보 내용 : 보안 관련 어떤 내용이든 제보를 기다립니다!

▷ 광고문의 : jywoo@dailysecu.com

★정보보안 대표 미디어 데일리시큐 / Dailysecu, Korea's leading security media!★

관련기사