Security Watch내 PII는 어디에 있을까요?

Frank Simorjay

사람들은 하나같이 PII(개인 식별이 가능한 정보) 보호의 중요성에 대해 말합니다. 그러나 PII를 보호하려면 PC에 어떤 PII가 수집되는지부터 완전히 이해해야 합니다. 컴퓨터에 저장된 정보가 모두 중요하다고 하면 할 말이 없지만, 그렇다면 그 모든 정보란 무엇인지는 정확히 알고 있습니까?

문제의 심각성을 강조하기 위해 중요한 정보일 수 있는 데이터를 유형별로 나누어 자세히 살펴보고 이러한 데이터가 컴퓨터의 어디에 저장되는지 알아보겠습니다. 우선 짚고 넘어갈 점은 중요한 정보라는 것이 개인적인 판단을 근거로 하는 경우가 많다는 사실입니다. 예를 들어 검색 결과에 자신의 이름만 나와도 소스라치게 놀라는 사람도 있습니다. 물론 동굴에 숨어 살지 않는 한 누군가 어떤 형태로든 여러분의 이름을 인터넷에 게시하는 일은 다반사입니다. 자주 사용하는 검색 엔진에서 직접 자신의 이름을 검색해 보십시오. 평범한 이름일수록 정확히 자신을 지칭하는 경우를 찾기가 어려울 겁니다. 그러면 어느 정도 안심이 되겠지요.

인터넷에서 자신에 대한 정보를 검색하는 경우 싸이월드, 다음, 네이버 같은 유명 커뮤니티 사이트에서 확인할 수도 있습니다. 과거에는 쉽게 검색되지 않던 개인 정보가 인터넷에서 얼마나 쉽게 저장되고 전파되는지를 보고 있자면 놀랍기까지 합니다.

따라서 보호해야 할 정보를 파악하려면 과거에 비해 과학적인 접근이 필요합니다. 이런 점에서 보호해야 할 개인 정보이지만 컴퓨터에 저장되어 있는지조차 잘 모르는 정보를 알아보면 도움이 되리라 생각합니다. 개인의 ID를 도용하는 데 사용 가능한 개인 정보는 모두 중요하다고 생각하겠지만, 사실 정보는 두 가지 수준으로 나눌 수 있습니다. 즉, 쉽게 얻을 수 있는 정보가 있고 보다 개인적이고 일반적으로 개인 신원에 중요하다고 여겨지는 정보가 있습니다.

쉽게 얻을 수 있는 정보는 대개 PII로 취급하지 않습니다. 이러한 정보에는 실명은 물론, 전화 번호, 주소, 전자 메일 주소, 성별 등이 포함될 수 있고 직장과 학력 정보도 여기에 포함되는 경우가 많습니다. 이러한 항목은 인터넷과 전화번호부 같은 공개 인명록에서 쉽게 얻을 수 있습니다. 실수로 스패머에게 전자 메일 주소를 노출하는 경우와 같이 이러한 정보가 노출되면 귀찮기는 하지만 그 자체만으로는 신원 도용으로 이어지지 않습니다.

중요한 정보는 신원과 직결되는 보다 개인적인 데이터로 이루어집니다. 사회 보장 번호 또는 기타 정부가 발급한 고유 ID, 은행 계좌번호, 신용카드 번호(특히 만료 날짜와 카드 회원 ID가 함께 노출되는 경우), 운전면허 번호, 지문 또는 기타 생체 인식 관련 정보 등이 공개적으로 노출해서는 안 되는 정보에 속합니다. 이러한 정보가 다른 사람 손에 들어가 악용되면 막대한 피해를 입을 수 있습니다. 그래서 인터넷이나 PC에서 이러한 정보가 기록되고 저장되는 방식과 위치를 제어하는 것이 중요합니다. 이런 맥락에서 시스템의 하드 드라이브에 저장된 모든 PII를 찾는 몇 가지 간단한 방법을 지금부터 살펴보겠습니다.

컴퓨터에서 PII 데이터 찾기

PII 정보는 곳곳에 산재해 있습니다. 사실 PII는 쓰레기만 뒤져 봐도 쉽게 찾을 수 있을 겁니다. 때문에 이러한 정보를 보호하려면 노력과 주의가 필요합니다. 좋은 서류 파쇄기를 구입하여 개인 정보가 있는 모든 것들을 파쇄하는 것이 좋습니다.

하지만 PC에 숨어 있는 PII는 어떻게 처리해야 할까요? 이 데이터는 안전하게 저장하는 것만큼이나 찾기도 어렵습니다. Windows Vista®와 몇 가지 데스크톱 검색 도구를 사용하면 시스템에서 정보를 찾는 데 도움이 될 수 있습니다. 단, 찾고자 하는 정보가 무엇인지 알고 있다는 전제 하에 말이지요.

단적인 예로 두 가지 간단한 도구를 통해 실제로 어떤 문제가 있는지 살펴보겠습니다. 우선 Windows PowerShell®에서 스크립트를 사용합니다. Windows PowerShell이 제공하는 수많은 기능 중에는 뛰어난 문자열 검색 기능도 포함되어 있습니다. 여기서는 정규식 검색 기능을 중점적으로 설명하겠습니다. microsoft.com/powershell에서 다운로드할 수 있는 Windows PowerShell은 순식간에 관리 작업의 표준으로 자리 잡은 강력한 도구입니다.

또한 가양성을 관리하기 위해, 즉 이진 파일에 있는 데이터 문자열의 임의성으로 인해 의미 있는 문자열이 포함된 것처럼 보이지만 실제로 여기서는 아무 쓸모 없는 파일을 무시하기 위해 findstr.exe도 사용하겠습니다. 다시 말해 이 예제에서 텍스트 이외의 파일은 무시할 수 있습니다.

대표적인 PII 데이터 유형인 사회 보장 번호와 신용카드 정보를 검색하도록 하겠습니다. 이들 데이터는 실제로 하드 드라이브에 일반 텍스트로 저장되었을 때 쉽게 검색됩니다. 두 가지 데이터 유형은 모두 구조와 패턴이 고유하기 때문에 간단한 스크립트 하나로 정보를 찾을 수 있습니다. 그러나 동시에 이러한 데이터는 굳이 PC에 저장할 필요가 있는지 의문이 들 정도로 중요한 데이터입니다. 따라서 이러한 정보를 저장할 때에는 정보 보호에 각별히 신경 써야 합니다. PII 정보를 보호하는 방법은 잠시 후에 설명하도록 하겠습니다. 여기서 다루는 항목은 확실히 한정적입니다. 여기서 다루지 않는 사용자 이름이나 암호 같은 다른 중요한 PII 데이터 유형도 많다는 것을 유의하십시오.

사회 보장 번호 검색

파일에서 XXX XX XXXX 또는 XXX-XX-XXXX 형식의 미국의 표준 사회 보장 번호로 구성된 정보를 찾는 간단한 문자열을 소개하겠습니다. Windows PowerShell을 사용하는 경우 다음 코드 줄만 입력하면 됩니다.

Get-ChildItem  -rec -exclude *.exe,*.dll |
select-string " [0-9]{3}[-| ][0-9]{2}[-| ]
[0-9]{4}" 

또는 findstr.exe와 다음 코드를 사용하여 검색 시 이진 파일을 읽지 않도록 할 수도 있습니다.

Get-ChildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string 
" [0-9]{3}[-| ][0-9]{2}[-| ][0-9]{4}"

이 샘플 코드에서 Get-ChildItem –rec는 명령을 실행한 디렉터리에서 시작하여 파일에 대해 재귀 디렉터리 검색을 실행합니다. findstr.exe는 파일에서 문자열을 검색하며 Select-string은 Windows PowerShell 문자열 검색 함수입니다. 여기서는 설명하지 않지만 findstr.exe도 Select-string과 유사한 기능을 제공합니다. 정규식에 선행 공백을 일부러 삽입했다는 점도 잘 살펴보십시오. 이렇게 하면 HKLM\SOFTWARE\tool\XXX-XX-XXXX와 같은 레지스트리 문자열 등 불필요한 정보가 제거되어 가양성을 줄일 수 있습니다.

샘플 코드를 실행하면 필자가 하위 디렉터리에 저장한 테스트 샘플 파일이 검색 패턴의 결과로 반환되고 XML 파일에서 신용카드 번호와 사회 보장 번호의 파일 패턴을 보여 주는 샘플도 검색됩니다(그림 1 참조).

그림 1 번호 패턴 검색 결과

그림 1** 번호 패턴 검색 결과 **(더 크게 보려면 이미지를 클릭하십시오.)

첫 번째 예제에서는 exclude 기능을 사용하여 불필요한 결과를 생성할 수 있는 .exe 파일과 .dll 파일을 모두 제외했습니다. 가양성의 원인이 되는 다른 파일 형식이 더 있을 수 있습니다. 이러한 파일 형식이 있는 경우 exclude를 사용하여 검색 프로세스를 더 세부적으로 조정할 수 있습니다.

특정 사회 보장 번호만 검색하려는 경우에는 다음과 같이 하면 됩니다. 실제에서는 "123 45 6789"를 본인의 사회 보장 번호로 바꾸면 됩니다.

Get-ChildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string 
"123 45 6789","123-45-6789"

이 코드 실행에 따른 검색 결과는 그림 2에 나와 있습니다.

그림 2 특정 번호 검색

그림 2** 특정 번호 검색 **(더 크게 보려면 이미지를 클릭하십시오.)

신용카드 정보 검색

신용카드 정보는 형식이 다양하기 때문에 검색하기가 다소 까다롭습니다. 그리고 가양성도 제한해야 합니다. 다시 말해 우연적으로 신용카드 번호처럼 보이는 형식이 검색되는 것을 줄여야 합니다. 가양성을 제한해도 신용카드 번호와 유사한 임의의 시퀀스가 검색될 것입니다.

여기서는 Michael Gilleland의 에세이, "Anatomy of Credit Card Numbers"(merriampark.com/anatomycc.htm)를 참조해 이러한 문자열을 작성하도록 하겠습니다. 예를 들어 첫 번째 숫자가 업계에서 주요 신용카드 식별자로 사용되는 4, 5, 6이 되어야 한다는 조건을 검색 문자열에 지정합니다.

이런 방법으로 Discover, MasterCard 및 Visa 카드의 번호를 검색하는 간단한 문자열을 작성했습니다. Windows PowerShell에서 작성한 검색 문자열은 다음과 같습니다.

Get-CchildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
 "[456][0-9]{15}","[456][0-9]{3}[-| ][0-9]{4}
[-| ][0-9]{4}[-| ][0-9]{4}"

그림 3의 샘플에는 .rtf, .rbl 및 .h 파일 형식에서 필요 없는 결과가 검색되는 것을 제거하기 위해 exclude 함수를 사용했습니다. 또한 이 샘플 코드는 공백이나 대시가 없는 신용카드 문자열을 검색합니다. 그런데 이렇게 하면 검색 결과가 너무 방대해집니다. 같은 기능의 명령을 다음과 같이 작성하여 문제를 해결할 수도 있지만, 이 경우 공백이나 대시가 없는 신용카드 번호는 검색되지 않습니다.

그림 3 필요 없는 결과를 제거하도록 exclude 사용

그림 3** 필요 없는 결과를 제거하도록 exclude 사용 **(더 크게 보려면 이미지를 클릭하십시오.)

Get-ChildItem  -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
"[456][0-9]{3}[-| ][0-9]{4}[-| ][0-9]{4}
[-| ][0-9]{4}"

American Express 카드 번호는 형식이 많이 다르기 때문에 해당 카드 패턴을 검색하기 위해 검색 문자열을 수정했습니다. Windows PowerShell에서 새로 수정한 검색 문자열은 다음과 같습니다.

Get-ChildItem -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
"3[47][0-9]{13}","3[47][0-9]{2}[-| ][0-9]{6}
[-| ][0-9]{5}"

데이터가 방대하면 이 검색 결과에도 영향을 미칠 수 있습니다. 다음 명령을 대신 사용할 수 있지만, 이 경우 공백이나 대시가 없는 신용카드 번호는 검색되지 않습니다.

Get-childitem -rec | ?{ findstr.exe 
/mprc:. $_.FullName } | select-string
"3[47][0-9]{2}[-| ][0-9]{6}[-| ][0-9]{5}"

이 칼럼을 쓰면서 시스템에서 직접 검색을 실행해 보았는데 전혀 뜻밖의 위치에 사회 보장 번호가 저장되어 있는 것을 발견하고 적잖이 놀랐습니다. 예전에 적어놓고 잊어버린 메모에 사회 보장 번호 정보가 들어 있었던 것입니다. 필자 개인적으로도 이를 계기로 다시는 중요한 정보를 기록해 두지 않겠다고 다짐하게 되었습니다.

이러한 정보를 안전하게 저장하려면 Password Safe(passwordsafe.sourceforge.net) 같은 도구를 사용해 보십시오. 또한 BitLockerTM 드라이브 암호화 같은 도구로 하드 드라이브를 암호화하는 것도 한 방법이 될 수 있습니다. 마지막으로 모바일 PC에서 데이터 보호에 대한 검증된 지침을 제공하는 모바일 PC용 데이터 암호화 도구 키트를 사용할 수도 있습니다. 이러한 솔루션은 적어도 다른 사람이 쉽게 PC에서 개인 정보를 빼가지 못하도록 하는 효과가 있습니다.

결론

PII 정보는 비교적 간단하게 찾을 수 있습니다. 반면 정보를 제대로 파악하는 일은 쉽지 않습니다. 어쨌든 맬웨어나 악의적인 사용자가 여러분의 시스템에 액세스하여 이와 유사한 검색 기법으로 시스템에서 손쉽게 정보를 빼낼 수 있다는 사실을 명심하십시오. 언제 어디에 자신이 PII 정보를 입력하는지 항상 주의를 기울이고 정보를 저장해야 할 경우에는 항상 암호화하십시오.

Windows PowerShell 스크립트 작성 시 문제 해결에 도움을 준 Matt Hainje에게 감사를 전합니다.

Frank Simorjay는 Microsoft Solution Accelerator 보안 및 규정 준수 그룹의 기술 프로그램 관리자로, Microsoft 고객을 위한 보안 솔루션 설계를 담당하고 있으며, 그 외에도 직접 창립한 Secure World Exposition 같은 이벤트에서 강연을 하기도 하고 보안 교육을 제공하거나 보안과 관련한 다양한 백서와 서적을 기고하는 등 왕성한 활동을 펼치고 있습니다. 최근에는 "맬웨어 제거 시작 키트" 관련 업무를 담당했습니다.

© 2008 Microsoft Corporation 및 CMP Media, LLC. All rights reserved. 이 문서의 전부 또는 일부를 무단으로 복제하는 행위는 금지됩니다..