20100204 :: 암호화된 공간에 안전하게 공인인증서를 보관해보자 (TrueCrypt)

알림

원래는 TrueCrypt라는 프로그램을 써서 하드 디스크에 안전하게 공인인증서를 보관하는 방법과 더불어 TrueCrypt의 소개를 하는 글을 하나 쓰려고 했는데, 이미 관련 내용이 발행된 포스팅이 있어 이를 소개합니다. 본 글에서는 TrueCrypt에 대한 소개와 이 곳에 공인인증서를 저장할 때의 장점과 주의점 등에 대해서 간략히 이야기할까 합니다.

들어가며

오늘은 국내 유명 블로그에서 한 두 번씩은 소개된 적이 있는 TrueCrypt라는 프로그램을 소개하며, 이를 통해 공인인증서를 안전하게 보관하는 방법에 대해 잠깐 살펴 보고자 합니다. 이 방법은 물리적으로는 하드 디스크내에 공인인증서 파일을 저장하는 방식이지만, 논리적으로는 대단히 튼튼한 암호화의 벽으로 둘러싸인 가상의 외장 디스크 장치를 생성하여 이 속에 공인 인증서 파일을 보관하는 방법입니다. 따라서 패스워드만 안전하게 생성한다면, 행여 내 PC내에 누군가 침투하여 공인인증서 파일을 빼내고 싶어한다 하더라도 내가 공인인증서를 사용하는 순간만 아니라면, 절대 안전하게 공인 인증서를 보관할 수 있는 방법입니다. 물론 공인인증서를 보관하는 암호화된 파일은 빼내 갈 수 있겠지만, 패스워드를 모른다면 현실적으로 그 속에서 공인인증서 정보를 꺼내기란 불가능 하다고 봐야 합니다.먼저 TrueCrypt가 어떤 프로그램인지부터 소개를 잠깐 해야 겠군요.

암호화된 가상 공간을 생성하는 TrueCrypt

TrueCrypt는 디스크 전체를 암호화하거나, 디스크 내의 일부 공간을 암호화하는 툴입니다. 오픈소스 프로젝트이며, 윈도우, 맥, 리눅스 등 대부분의 운영 체제에서 사용이 가능합니다. 특히 윈도용 버전의 경우에는 시스템에 설치하지 않고 포터블 형태로 압축해제하여 사용할 수도 있습니다. 이를 통해 TrueCrypt 자체를 USB 메모리 등의 이동식 저장매체에 설치하여 사용하는 것도 가능합니다.TrueCrypt는 다음의 기능을 제공한다고 공식 홈페이지(http://www.truecrypt.org/)에서 밝히고 있군요.

  • 암호화된 가상 디스크를 생성하여, 이를 실제 하드 디스크처럼 사용할 수 있도록 합니다.
  • 하드 디스크 드라이브나  USB 메모리를 통째로 암호화하는 것이 가능합니다.
  • 윈도가 설치된 파티션을 암호화할 수 있습니다. (부팅 전에 인증)
  • 병렬화 및 파이프라이닝을 통해 암호화 하지 않은 드라이브를 액세스하는 것처럼 빠른 액세스가 가능합니다.
  • 공격자에게 패스워드를 노출당하지 않도록 히든 볼륨등의 기능도 제공합니다.
  • AES-256, Serpent, Twofish 등의 암호화 알고리듬을 적용할 수 있습니다.

TrueCrypt를 사용하여 공인인증서를 보관하기

TrueCrypt는 하드 디스크의 일정 공간을 컨테이너 파일로 만들어, 이 공간 자체를 암호화하고, 이를 마치 이동식 디스크 드라이브처럼 마운트하여 사용할 수 있도록 해 줍니다. 이런 공간 파일을 생성하는 기능과 이 파일을 마운트 하는 기능을 동시에 제공하고 있으며, 윈도의 경우에는 시스템에 설치시에 파티션 전체를 암호화 할 수도 있습니다. (윈도가 설치된 파티션의 경우에는 부팅 직전에 암호를 물어보게 된다는 군요)

암호화된 컨테이너 파일을 생성하고 공인인증서를 이 곳에 복사하는 가이드는 촌철살인 블로그에 아주 자세히 잘 설명이 되어 있습니다. 제가 제일 약한 무한 스샷 신공으로 상세히 설명해 주시네요.

공인인증서용 TrueCrypt 볼륨파일 생성 및 완벽 사용법

TrueCrypt를 통한 공인 인증서 보관의 장점

현행 공인인증서가 보안토큰을 사용하던가 하는 식의 ‘물리적인 복제’에 대한 방어책이 전혀 없는 것이 현재의 상황입니다. 또한 지난 번에 지적했듯이 이 공인 인증서의 저장위치도 모든 컴퓨터에 대해서 동일한 위치에 저장되는 것도 큰 문제라 할 수 있습니다.

TrueCrypt를 통해 암호화된 볼륨을 생성하여 그 속에 공인인증서를 보관하는 것은 최소한 이러한 물리적 복제에 대한 방어는 어느정도 가능하다고 할 수 있습니다. 물론 내 PC의 파일을 주인 몰래 어딘가로 전송하는 스파이웨어나 악성 코드가 감염된 상태라면 이 방법도 공인인증서를 사용하는 그 순간만큼은 고스란히 위험에 노출되기 때문에 별도의 보안토큰이나 브라우저의 보안객체 저장소를 이용하는 것 보다는 상당히 위험하고 그 한계도 있습니다. 그러나 최소한, 암호화된 볼륨의 비밀번호를 어느정도 복잡도가 높게 책정하였다면, 해당 볼륨파일은 웹하드나 이메일에 보관하는 것도 충분히 안전하다고는 생각됩니다. 또한 말씀 드린 문제의 스파이웨어 감염이라면 해당 PC에서는 ‘그 무엇도 해서는 안되는’ 상황이라는 것이지요. 사실 그 정도로 심각하게 보안 구멍을 노출할 정도라면 이건 어떤 기술로도 그 사람의 개인 정보는 보호하기 힘듭니다. (그리고 더 큰 문제는 이러한 사용자가 우리가 상상했던 것보다 훨씬 많다는 것입니다)

TrueCrypt는 실제로 실행에 필요한 파일이 담긴 폴더를 USB에 복사하는 것으로도 포터블 버전을 만들 수 있습니다. 따라서 암호화된 볼륨에 공인인증서를 담고, 이를 TrueCrypt 바이너리와 함께 USB 메모리에 담아서 가지고 다닌다면 보다 안전하다고 할 수 있겠지요. 적어도 USB 메모리를 분실했다가 은행에서 돈이 증발되는 난감한 상황은 면할 수 있습니다.

주의 사항

먼저 누누히 반복해서 드리는 말씀이지만, 이러한 방법이 보다 신뢰할 수 있다는 것은 이를 사용하는 PC가 적어도 악성 코드나 보안 위협으로부터 일정 수준은 안전하다는 것을 전제합니다. 즉 이미 누군가가 내 PC에 침입해서 못된 짓을 할 준비를 마친 상태라면 암호화 볼륨을 마운트 하는 순간 무장해제 될 수 있다는 점을 명심해야 합니다.

그리고, TrueCrypt 자체가 상당한 수준의 암호화를 하고 있습니다만, 문제는 이를 사용하는 사람이 만든 비밀번호 입니다. 이 비밀번호는 내 공인인증서를 지키는 유일한 수단입니다. 따라서 너무 짧거나 숫자로 이루어지거나, 이메일 계정의 비밀번호와 일치하거나, 혹은 내 생일, 전화번호, 차량번호 등으로 유추가 가능하거나 하는 비밀번호는 잠깐 동안의 상상력과 수고스러움으로 아주 쉽게 뚫려진다는 것도 명심해야 합니다.

또한 이 암호화된 볼륨은 단순히 암호화된 벽속에 자료를 넣은 것 뿐 마운트한 순간에는 USB 메모리를 꽂은 것과 동일한 상태입니다. 따라서  PC방이나 공공 장송에 설치된 컴퓨터(누가 만졌는지 모르며, 뭐가 깔려있을 지 모를)에서는 절대로 사용 하지 말 것을 권장합니다.  (애초에 공공장소의 컴퓨터에서는 키보드를 사용하는 것 자체를 피하는 것이 좋습니다.)

암호화된 볼륨의 비밀번호를 설정할 때 key file을 설정할 때가 있습니다. 즉 특정한 외부 파일 객체를 암호의 일부분으로 사용하는 것인데, 이를 시스템이 사용하는 파일이나 문서 파일 등으로 사용하는 것은 피합니다. 나도 모르는 사이에 파일 내용이 갱신되어 파일의 체크섬이 변경되면, 전체 암호 배열에 들어맞지 않게 되어 사용할 수 없게 됩니다.

물론, 보다 신뢰할 수 있는 방법은 따로 돈을 내고서라도 보안 토큰을 구매하여 이 곳에 공인인증서를 저장하는 것이 좋습니다.(이 경우에는 외부에서 인증서를 들여다 보는 것이 거의 불가능합니다.)  웹 브라우저들은 내부적으로 이런 보안 저장소를 소프트웨어적으로 구현하여 제공하고 있지만, 이 규격(국제 표준이거나 혹은 표준에 준할 정도로 널리 사용되는)에 맞는 공인 인증서를 우리가 사용할 날은 아직까지는 많이 멀어 보입니다. 적어도 10여년 동안 온갖 사기술로 손안대고 코 풀어온 우리네 보안 업체들이 잘못을 알아서 뉘우치지 않는 한은 말입니다.