20100410:: KISA 김희정 원장님께 문의 드립니다.

MT뉴스 – 김희정 KISA 원장 “공인인증서가 가장 안전”

기사 내용의 일부를 요약/인용하는 것이 저작권을 얼마나 침해하는 지는 모르기도 하고, 역시 좀 귀찮기도 해서 그냥 위의 저 기사를 한 번 읽고 오시기를 권합니다.

KISA가 예전부터 참 어이없는 말을 많이 뿜어대던 곳이라, 그저 그려려니 하고 넘어가려 했는데 지난 3월 25일 있었던 공인인증서 관련 토론회도 그렇고 이번 김원장님의 어이없는 발언 문제도 그렇고 뭐랄까 KISA에서 일하시는 분들께는 죄송하지만, 그래도 그 내부에서 영향력 있다는 분들에 한해서는 보안에 대한 개념 자체가 없는 것은 아닐까하는 의구심마저 들어서 하는 이야기입니다. 사실, 국민의 권익을 보호해야할 의무가 있는 단체에서 아무런 근거도 없는 주장을 어떤 이유에서 펼치는지 그게 너무나 궁금하기 때문입니다.

그래서, 얼마전 KISA 김희정 원장님이 언론을 통해 한 이야기에 대해 몇 가지 반문을 제기하고자 합니다. 본 포스팅은 김희정 원장님이 직접 운영하시는 것으로 보이는 네이버 블로그에 트랙백을 걸고 트위터로도 연락 드리겠습니다. 하고 싶은 이야기가 많지만, 부연 설명을 덧붙이는 것은 쓰는 것도 읽는 것도 시간 낭비 일 것 같아서 본론으로 들어가겠습니다. 질문은 주제에 따라 대분류와 소분류로 나누겠습니다. 부디 작은 분류의 질문에 먼저 답하시고 다음 상위 분류의 질문의 답으로 정리하여 답변 주셨으면 합니다.

1. 부인 방지가 무엇입니까?

1) 원장님은 기사에서 “부인 방지는 은행 거래를 할 때 상대방도 송금을 받았다는 것을 인증해 주는 것”이라고 하셨습니다. 만약, 상대방이 인터넷 뱅킹을 아예하지 않거나, 송금을 한 대상 계좌가 휴면 계좌인 경우에는 상대방이 송금 받았다는 사실을 어떻게 인증하나요?

2) 만약, 원장님이 말씀하신 것이 ‘돈이 중간에 어디론가 사라지지 않고 잘 도착했음을 증명하는 것’이었다면 돈이 한 곳에서 다른 한 곳으로 이체되었다면 시스템적으로는 해당 금액이 속한 계좌가 바뀌었지만 중간에 돈이 소실되거나 불어나지 않았다는 것을 관리하는 것입니다. 하지만 이 것은 은행의 내부 시스템이 보장해야지 왜 이런 데 공인 인증서가 필요한 것인가요?

2. 현행 공인 인증서 제도가 과연 공인 인증서 덕분에 ‘부인 방지’를 한다고 생각하십니까?

3) 비루한 네티즌인 제가 해석하기에 ‘부인 방지’는 특정 금융 거래가 이루어진 후 “이 거래는 니가 한 게 맞으니 나중에 딴소리 하지 말 것”이라는 것을 증명하는 것입니다. 그러기에 해당 거래의 당사자가 내가 맞는지 아닌 지를 증명할 무언가가 필요하고, 나의 신원을 전자적으로 증명해주는 수단으로 공인인증서를 사용하는 것일 테니까요. 그렇다면 현재의 공인인증서 방식은 첫째로 은행이나 쇼핑몰이 아닌 제3의 사이트로부터 특정인의 아이디와 패스워드를 알아내기가 어렵지 않고, 둘째로 공인 인증서 파일이 모든 PC마다 동일한 위치에 설치되어 있어(C:\Program Files\NPKI) 간단한 방법으로 취득 혹은 웹하드/이메일에 이를 보관하는 사람도 많아, 해킹 등을 통해서도 취득이 가능하며, 셋째로 공인인증서의 패스워드를 기타 포털 등에서 사용하는 사용자가 대다수를 차지함을 감안할 때, 악의적인 공격자는 인증서 파일을 입수하고 패스워드만 알고 있다면 특정인의 신분을 완전히 취득할 수 있다는 것입니다. 이런 경우 과연 공인 인증서가 ‘부인 방지’ 기능을 한다고 생각하십니까?

4) 아니면 “부인 방지”라는 것은 이 경우에 공인 인증서를 신뢰하기에 성립하는 것입니까? 아니면 패스워드를  해당 당사자만이 알고 있다는 전제 때문에 성립하는 것입니까?

3. SSL+OTP 가 공인인증서보다 취약한 보안 수단임은 어떻게 증명하실 수 있나요?

SSL은 공개키와 비밀키라는 두 개의 키를 통해 암호화와 복호화를 하는 암호화 통신 방법입니다. 여기서 ‘공개키’는 서버와 클라이언트가 나누어 가지게 되고, 공개키를 통해 암호화한 데이터는 해당 교신의 당사자가 미리 인증한 비밀키를 통해 복호화하게 됩니다. 따라서 서로가 상대방을 인증한 상태라면 안전한 통신이 가능합니다. 이는 교신 방식에 대해서는 현재 플러그인으로 제공되고 있는 암호화 통신과 사실 상 다를 것이 없습니다.

5) 그렇다면 고작 사용자의 신원 정보 (id 와 패스워드)을 전송할 때만 암호화하는 현행의 방식이 안전한가요, 교신의 모든 내용을 암호화하는 https 통신 방식이 더 안전한가요? 제가 거래하고 있는 ‘ㅇ’은행은 한 번의 암호화 교신이 끝나고 나서 계좌 조회 등을 할 때는 해당 페이지를 http 프로토콜을 통해 암호화 하지 않고 내려 보내고 있습니다. 그 페이지 속에도 충분히 소중한 제 개인정보가 들어있는데, 누군가가 그런 정보를 중간에서 가로채어 도청할 수 있다는 사실이 너무나 찜찜하고 불안합니다.

6) OTP는 물리적인 별도 장치를 통해 실시간으로 변하는 1회용 패스워드를 사용하는 방식입니다. 즉 거래 혹은 교신에 필요한 보호 수단을 직접적인 통신에 의존하지 않는 장치를 도입하여 안전성을 높이고자 하는 보조 수단입니다. 이는 원천적으로 복제가 불가능하고 무작위로 키를 맞추고자하는 시도가 시간 제한이라는 벽에 부딪히기 때문에 보호의 강도를 높일 수 있는 장점도 있습니다. 게다가 가장 중요한 것은 “OTP가 없어지면 분실 혹은 유출의 위험을 사용자가 실제로 감지할 수 있다”는 것입니다. OTP를 분실한 사용자는 해당 기기의 분실 신고를 통해 추후 발생할 지 모를 피해를 사전에 예방할 수 있는 기회가 한 번 더 주어지는 것지요. 자 그렇다면 특정한 고정된 위치에 전자적으로 보관되어 누군가 복사해가도 그 사실을 알 수 없는 공인인증서와 OTP 중에서 굳이 비교하자면 어느 쪽이 소비자를 보호하는데 조금이라도 더 도움이 된다고 생각하십니까?

4.  정작 더 큰 구멍은 ‘플러그인이라는 배포 방식’에서 온다는 의견은 어떻게 생각하십니까?

7) 현재 은행에서 사용되는 온갖 보안 모듈들은 십분 양보하여 그 프로그램 자체의 효과를 완전히 신뢰할 수 있다고 가정하더라도, 윈도우 기반의 IE에서만 사용이 가능한 ActiveX를 사용해야 합니다. ActiveX를 사용자의 컴퓨터에 설치하려면 사용자는 시스템 전체에 대해 관리자 권한 (최고 권한)을 가지고 있어야 합니다. 그리고 ActiveX를 싫어하는 모든 이가 주장하듯이, 문제는 ActiveX 자체에 있는 것이 아니라 이런 ActiveX를 무조건 ‘예’를 눌러서 설치하라고 교육하는 모든 은행, 쇼핑몰, 공공기관 홈페이지 등에 있다는 것입니다. 그러나 인터넷 익스플로러는 물론이고 파이어폭스, 구글 크롬, 오페라 등 국내에서 어지간히 사용되고 있는 거의 모든 웹 브라우저들은 이러한 플러그인 없이도 자체적으로 인증서를 소프트웨어적인 보안 토큰에 저장하고, 이에 접근하여 암호화 통신을 할 수 있도록 만들어져 있습니다. 현행 공인인증서를 통해 굳게 걸어 잠근 문 옆으로 큰 구멍으로 물이 새는 지금의 상황이 더 보안이 좋다고 보십니까? 아니면 사용자들이 웹 페이지가 사용자 시스템에 어떤 해로운 짓도 못하도록 거부하며, 적극적으로 KISA가 추구하는 국민의 권익 실현에 동참하는 표준 규격이 좋다고 보십니까?

8) 표준 규격의 보안 통신을 통한 인증과 암호화 교신은 저와 같이 리눅스를 사용하고, 윈도 환경에서도 파이어폭스를 주로 사용하는 ActiveX를 별로 만날 일이 없는 비루한 자들도 21세기적 문명의 혜택인 사이버 거래를 사용할 수 있게 합니다. 제가 개인적으로 윈도를 사용하지 않는 이유는 안타깝게도 OS 소프트웨어를 살 돈도 없기 때문입니다. 단지 OS 살 돈 몇 만원(인지 십 몇 만원인지는 모르겠습니다만)이 없는 불쌍한 사람들이 문명의 혜택을 못 받는 작금의 사태가 OECD 국가에서 벌어지는 사태에 대해서는 어떻게 생각하시는지요? 아니면 제게 윈도 라이센스 하나 선물 하실 의향은 없으신지 그것도 아울러 여쭈어 봅니다.

5. 공인인증서를 고집하는 것 보다 전 국민 대상으로 보안 교육 프로그램을 시행하실 생각은 없으신가요?

들리는 소문에 의하면 KISA에서 무료 백신 배포를 계획하신다는 이야기도 들립니다. 듣던 중 반가운 소식입니다. 그런데 문제는 안티바이러스들이 (‘백신’은 특정한 보안 업체의 상표명이므로 안티바이러스라는 표현을 사용하겠습니다.) 아무리 뛰어나다고 한 들, 더 중요한 것은 윈도 보안 패치입니다. 혹시 원장님께서도 모니터 오른쪽 하단을 가끔 주시하시는지 모르겠습니다만, 윈도는 자동 업데이트 기능이 있으며, 중요한 보안 패치나 기타 패치들이 발표되면 모니터 오른쪽 하단 시계가 있는 곳 즈음에 노란 방패 표시가 나타납니다. 그런데 제 주위에 많은 친구들은 이게 뭔지도 모르고 클릭해 볼 생각 조차 못하고 있다는 것입니다.

MS는 몇 년에 한 번씩 기존의 취약점 패치를 모두 모아모아 서비스팩이라는 이름으로 발표합니다. 그런데 우리 나라 언론들은 이상하게도 이런 서비스팩이 발표되면 호들갑을 떨면서 마치 대재앙이 오는 것처럼 나팔을 불어 댑니다. 네이버 지식인 같은 곳만 가도 ‘뭐가 안되면 서비스팩을 깔아서 그런거에요… 그걸 지우려면…’ 이런 위험하기 그지 없는 이야기들이 돌아다닙니다.

9) 전국민의 컴퓨터에 안티바이러스와 같은 보안 솔루션이 설치되는 것은 좋습니다. 하지만 전국민의 컴퓨터가 최신의 보안 패치를 통해 단순한 바이러스나 웜이 아닌 다른 악의적인 공격에 어느 정도 기초 면역력을 가질 수 있도록 교육하는 것은 어떨까요? KISA 홈페이지 구석탱이 조그만 배너나 혹은 홍보 예산 조금 쓰시거나 네이버와 같이 좋은 뜻이니까 이런 캠페인 한 번 벌이시는 것도 좋을 것으로 생각합니다. 위에서 말씀드린 ‘노란 방패’는 윈도XP 서비스팩 2때부터 적용되었습니다만, 여태까지 저는 저런 캠페인 한 번 본 적이 없어서 무지하게 안타까운 심정입니다.

드리고 싶은 말씀도 많고 묻고 싶은 것도 많지만 너무 길어서 이만 줄입니다. 바쁘신 와중에 긴 글 읽어주셔서 감사합니다. 답변 기다리도록 하겠습니다.

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여년 동안 온갖 사기술로 손안대고 코 풀어온 우리네 보안 업체들이 잘못을 알아서 뉘우치지 않는 한은 말입니다.