
Qubes OS에서 디지털 생활을 보안 영역(AppVM)으로 나누고, 각 영역에 허용할 네트워크 연결을 따로 정하는 방식이다. 개인용 설정 사례를 통해 영역 간 데이터 이동의 위험과 Qubes의 파일 복사 방식을 설명한다. 이는 상당히 복잡한 구성으로, 대부분의 사용자는 더 단순한 방식을 원할 수 있다.
기본 영역은 업무(work), 개인(personal), 신뢰할 수 없는 일을 처리하는 빨간색(red) 영역이다. Qubes OS에서는 각 영역에 이름뿐 아니라 색상 라벨도 지정한다. 신뢰할 수 있는 창 관리자가 창 테두리에 라벨 색을 표시하며, 색을 신뢰 수준과 어떻게 연결할지는 사용자에게 달렸다. 여기서는 빨간색을 위험하고 신뢰할 수 없는 영역, 초록색을 안전하고 신뢰할 수 있는 영역, 노란색과 주황색을 중간 수준으로 본다. 파란색과 검은색은 초록색보다 더 신뢰하는 영역을 뜻하며, 검은색을 가장 신뢰하는 영역으로 정했다.
업무 영역에서는 업무용 이메일과 PGP 키를 관리하고 보고서와 발표 자료를 만든다. 신뢰할 수 있는 상대가 암호화·서명된 이메일로 보낸 계약서와 비밀유지계약서(NDA)도 여기에 둔다. 그 외의 PDF는 일회용 가상 머신에서 연다. 업무 영역의 네트워크 연결은 업무 이메일 서버에 대한 SSL 기반 SMTP·IMAP4로 제한한다.
웹 접속이 필요한 업무는 노란색 라벨을 붙인 work-pub 영역에서 처리한다. Qubes 위키(Qubes Wiki) 편집, LinkedIn 초대 수락, fotolia.com의 이미지나 intel.com의 사양·설명서 다운로드가 그 예다. 이 영역에는 PGP 키나 업무 기밀을 두지 않는다. 개인 영역에는 개인 이메일과 일정, 휴가 사진과 동영상 등을 둔다. 웹에는 사실상 접속하지 않지만, 소셜 네트워크를 이용한다면 Facebook 같은 서비스에 HTTPS 연결을 허용할 수 있다.
개인 영역과 별도로 very-personal 영역도 둔다. 집을 비웠을 때 배우자와 연락하는 용도이며, 별도의 PGP 키를 사용한다. 비밀스럽거나 민감한 이야기를 나누는 것은 아니지만 사적인 대화는 비공개로 유지하고 싶어서다. 쇼핑 영역은 온라인 상점에 접속하고 신용카드 번호와 배송지 주소를 사용하는 곳이다. 전용 법인 카드가 없으므로 식료품부터 운동용품, 호텔·항공권 예약까지 모든 쇼핑을 여기서 한다. 개인용과 업무용 카드가 따로 있다면 두 영역으로 나눌 수 있다. 은행 계좌 관리는 별도 banking 영역에서 하며, 개인 계좌와 회사 계좌를 모두 다룬다.
업무용 특수 영역도 몇 개 있다. work-admin은 웹 서버, Qubes 저장소·위키 서버, 이메일 서버와 DNS 등 ITL 서버 대부분을 관리한다. 해당 서버에는 SSH로만 접속하고, 일부 웹 관리 서버에만 HTTPS를 허용한다. work-blog는 이 블로그를 관리하는 영역이다. 블로그 서비스가 침해되고 편집에 쓰는 브라우저의 취약점까지 악용되더라도 공격자가 ITL 서버의 관리자 권한을 얻지 못하게 하려는 분리다. 반대로 Amazon Web Management Console이 침해되고 work-admin의 브라우저가 공격받더라도 블로그 접근은 유지하고 싶다. 트위터를 쓴다면 업무용 계정은 work-blog에서, 개인 계정은 personal에서 관리할 것이다.
qubes-dev 영역에서는 Qubes를 개발하고 다른 개발자의 브랜치를 병합한다. 태그 서명을 확인한 뒤 RPM과 ISO를 빌드하고 서명한다. 서명 키가 들어 있어 매우 민감한 영역이며, Qubes Git 서버에 대한 SSH 연결만 허용한다. Git 서버가 침해되더라도 각 저장소의 태그를 서로 서명하고 검증하므로 문제가 커지지 않을 것이라고 본다. 다만 서버의 SSH·Git 데몬까지 수정해 접속 때 Git 클라이언트의 가상 취약점을 악용한다면 예외일 수 있다.
회계 관련 자료는 별도 영역에 둔다. 송장을 받으면 회계 영역으로 옮기는데, 업무 영역에 보관하는 PDF보다 송장 PDF를 덜 신뢰하기 때문이다. 업무 영역의 오래된 이메일 보관 파일과 계약서, 비밀유지계약서는 해마다 work-archives로 옮긴다. 업무 영역이 Thunderbird의 프로토콜 핸드셰이크나 GPG의 가상 취약점 악용으로 공격받을 가능성에 대비해 잠재적 피해를 줄이려는 조치다.
vault는 비밀번호와 마스터 GPG 키를 생성하고 보관하는 가장 신뢰하는 영역이다. KeePass를 사용하며 네트워크 연결은 허용하지 않는다. 이메일 서버 비밀번호처럼 자주 쓰는 비밀번호는 해당 영역에도 저장한다. 예를 들어 work 영역의 Thunderbird가 비밀번호를 기억하도록 한다. Thunderbird가 침해되면 사용자가 다음에 비밀번호를 직접 입력할 때 훔칠 수 있으므로, 저장을 막는 것만으로는 의미가 없다는 판단이다.
마지막으로 red 영역은 완전히 신뢰하지 않는 용도다. 침해돼도 상관없으며 백업하지 않고 몇 초 안에 다시 만든다. 다른 영역에 해당하지 않고 민감한 정보를 입력할 필요도 없는 일을 여기서 처리한다. 업무와 개인 용도의 웹 서핑도 구분하지 않는다. 익명성이 필요하다면 별도의 익명 영역을 만들어 모든 트래픽을 Tor 프록시로 보낼 수 있다.
영역 사이의 데이터 이동
영역 간 데이터 흐름은 대체로 더 신뢰하는 곳에서 덜 신뢰하는 곳으로 향한다. 업무 이메일에서 받은 URL을 복사해 red 영역의 브라우저에서 여는 경우, 업무 영역에서 받은 송장을 회계 영역으로 옮기는 경우가 그렇다. 하지만 덜 신뢰하는 영역에서 더 신뢰하는 영역으로 데이터를 옮길 때도 있다. red에서 찾은 URL을 직장 동료나 친구에게 보내려고 업무 또는 개인 이메일에 붙여넣는 식이다.
이런 이동은 위험을 동반한다. URL을 Thunderbird 편집기에 붙여넣는 일도 신뢰할 수 없는 입력이다. red 영역의 클립보드에 실제로 무엇이 들어 있는지 알 수 없으며, 편집기의 실행 취소 버퍼를 넘치게 할 64KB의 데이터일 수도 있다. 웹에서 받은 이미지 파일을 업무 영역으로 가져오는 일은 더 걱정스럽다. 악성 JPEG 등 그래픽 파일을 통해 렌더링 코드의 취약점을 공격하는 사례는 10여 년 전부터 알려져 있었다.
일부 군·정부용 고보안 시스템 설계자는 반대 방향으로 접근한다. 덜 신뢰하는 영역에서 더 신뢰하는 영역으로 데이터를 옮기는 것을 허용하되, 반대 방향의 이동은 불가능하게 보장하는 방식이다. 두 영역이 모두 침해된 경우에도 더 신뢰하는 영역에서 덜 신뢰하는 영역으로 데이터를 보낼 수 없도록 만들면, 낮은 신뢰 수준에서 높은 신뢰 수준으로의 단방향 전송을 허용할 수 있다는 생각이다.
이 방식은 협력하는 두 영역 사이의 은닉 채널을 없애야 한다. 낮은 신뢰 영역에서 온 데이터가 높은 신뢰 영역을 침해했더라도, 공격자가 정보를 원래 영역과 더 낮은 보안 등급의 네트워크로 다시 유출하지 못하게 해야 하기 때문이다. 사용자가 서로 격리된 여러 네트워크에 연결돼 있다는 가정도 필요하다. 영역 간 은닉 채널을 모두 없애거나 쓸 수 없을 정도로 대역폭을 낮추는 일은 어렵고, 시간 기반 은닉 채널을 줄이려면 시스템 성능을 크게 희생해야 할 수도 있다.
Qubes에서는 가까운 시일 안에, 어쩌면 장기적으로도 협력 영역 사이의 은닉 채널을 없애려 하지 않는다. 이런 접근을 믿지 않을 뿐 아니라, 높은 신뢰 영역의 무결성을 지키지 않고 격리에만 초점을 둔다는 점도 문제라고 본다. 공격자가 정보를 낮은 신뢰 영역으로 유출하지 못하더라도 높은 신뢰 영역에서 다른 일을 할 수 있다면, 무결성을 지키지 않는 격리가 무슨 소용인가.
다른 방법은 JPEG 같은 특정 파일 형식을 처리하는 신뢰할 수 있는 변환기나 검증기를 두는 것이다. 악성 패턴 서명 데이터베이스를 갖춘 대형 백신 프로그램과는 달리, 안전한 언어로 작성해 별도의 신뢰 영역에서 실행하는 프로그램을 상정한다. 다만 허용할 모든 파일 형식에 대해 누군가 변환기를 작성해야 한다. 장기적으로 가능할 수 있고, 향후 Qubes 버전에서 구현할 수도 있다.
현재는 이 문제를 해결하지 않은 채, 신뢰도가 낮은 영역에서 높은 영역으로의 모든 데이터 이동을 사용자 책임으로 둔다. 원하는 파일 형식의 신뢰할 수 있는 변환기를 제출할 수도 있다.
영역 간 파일 복사
네트워크 자원을 공유하지 않는 물리적으로 분리된 컴퓨터끼리 파일을 옮기려면 USB 메모리나 CD-ROM, DVD 같은 매체를 써야 한다. 그러나 USB나 CD-ROM을 연결하면 장치 정보와 드라이버, 파티션 테이블, 파일 시스템을 차례로 처리한다. 각 단계에서 운영체제가 신뢰할 수 없는 입력을 다뤄야 하므로 공격 가능성이 크다. 파일 자체가 중간의 신뢰할 수 있는 주체에 의해 검증됐더라도, 출발 영역이 대상 영역을 침해할 기회는 여전히 많다.
Qubes Alpha에서는 영역 간 파일 복사에 가상 스틱과 비슷한 방식을 사용했다. Qubes Beta 1에서는 GUI 가상화에 쓰는 것과 같은 공유 메모리 채널을 바탕으로 한 새 방식을 제공할 예정이다. 기술 세부 사항은 Qubes 위키에 공개할 계획이다. 새 방식에서 가장 민감한 요소는 대상 영역에서 실행돼 전달받은 데이터를 미리 정한 디렉터리 구조에 푸는 cpio와 유사한 해제 도구다. USB 장치, 파티션, 파일 시스템을 모두 처리하는 것보다 이 도구를 더 안전하게 만들 수 있다고 본다. Qubes Beta 1은 당시 3월 말 출시를 계획하고 있었다.
보안 영역 구분을 실제로 활용하려면 사용자가 실수로 경계를 우회하지 않도록 강제하는 장치가 필요하다. 이를 위해 Qubes Beta 1에 방화벽 지원을 마련했으며, 별도 글에서 다룰 예정이라고 설명한다. 사용 편의성도 과제다. 예를 들어 업무 영역에서 받은 이메일의 URL을 클릭하면 red 영역의 기본 브라우저에서 자동으로 열도록 정책에 규칙을 둘 수 있기를 바란다. 당시 Qubes에는 이 기능이 없었지만 가까운 시일 안에 구현하는 방안을 검토하고 있었다.
디지털 생활을 보안 영역으로 나누는 일은 간단하지 않고, 사용자마다 적합한 방식도 다르다. 여기서 설명한 구성은 상당히 복잡하며 대부분은 더 단순한 구성을 원할 수 있다. 기업에서는 CIO나 IT 관리자가 구성을 설계해 사용자에게 자동 적용할 수 있지만, 가정이나 소규모 사업체에서는 사용자가 직접 구분 방식을 정해야 한다. 향후 Qubes 버전에서 일부 일반 사용자 유형에 맞춘 템플릿을 제공할 수도 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요