디지털 보안의 비밀과 거짓말

   
브루스 슈나이어(역자: 채윤기)
ǻ
나노미디어
   
18000
2001�� 04��



■ 책 소개
암호 보안 기술의 "완벽한 보안"과 관련된 몇 가지 비밀과 거짓말!저자는 보안 컨설턴트로서 보안 시스템을 설계하고 분석하는 일을 주업으로 하고 있어 보안의 취약점이 수학과는 관련이 없음을 알게 되었다. 그것은하드웨어와 소프트웨어, 네트워크와 사람의 문제였던 것이다. 저자는 취약점을 찾기 위해서는 암호학 너머로 전체 시스템을 보아야 한다는 것을 알게되었다.

 


암호학이 완벽한 보안을 보장하지는 않는다는 결론에 입각해 수많은 공격 방법과 보안 수단을 소개하고 분석한 책.각각의 기술에 대하여 원리와 한계를 밝히고 있으며 실무적인 보안 대책에 관해서도 체계적으로 논했다. 보안은 컴퓨터가 아니라 사람이 하는 것이고,예방 못지 않게 탐지와 대응이 중요하다고 강조한다.


■ 저자 브루스 슈나이어(Bruce Schneier) 
암호학의 명저로 알려진『Applied Cryptography』의 저자이며 보안회사인 Counterplane Internet Security,Inc.의 공동설립자 겸CTO이다.


■ 역자 채윤기
도서출판 나노미디어 대표이며, 온라인에서 하이텔 벤처비즈니스동호회 시삽이기도 하다.


■ 차례
1장 서론


제1부 개관
2장 디지털 위협
3장 공격
4장 공격자
5장 보안요구사항


제2부 기술
6장 암호학
7장 암호학의 적용
8장 컴퓨터보안
9장 신원확인과 인증
10장 네트워크에 연결된 컴퓨터의 보안
11장 네트워크 보안
12장 네트워크 방어
13장소프트웨어의 신뢰성
14장 보안 하드웨어
15장 인증서와 증명서
16장 보안 기법들
17장 인간적 요인


제3부 전략
18장 취약점과 취약점 지형도
19장 위협 모델링과 위험평가
20장 보안 정책과 보안 수단
21장 공격 트리
22장 보안 제품의 테스트와 검증
23장 보안 제품의미래
24장 보안 과정
25장 결론


후기
참고자료
찾아보기




디지털 보안의 비밀과 거짓말


제1부 개관
보안 요구사항

익명성(anonymity)은 필요한가? 익명성이 좋은 것인가? 인터넷에서 익명성을 둘러싼 논쟁은 대체로 양측이 팽팽한 상태다. 자살이나 강간과 같은 사건에 대한 긴급 신고 전화를 받는 사람들은 익명성의 힘을 알고 있다. 인터넷에서는 수천 명이 약물 남용이나 AIDS 등과 같은 문제에 대해 뉴스 그룹에서 토론하는데, 그들은 대부분 익명 이메일 주소를 이용하고 있다. 이것이 사회적 익명성이고 세상을 건강하게 하는 데 필수적인 것이다. 사람들이 자신의 이름을 밝히고 싶어하지 않는 사안들에 대해서도 이야기할 수 있도록 해주기 때문이다.


정치적 익명성도 매우 중요하다. 모든 정치적 발언이 실명으로 이루어지는 것은 아니고, 그래서도 안 된다. 마치 발신인 주소가 없이 대량의 정치적 우편물을 보낼 수 있는 것처럼, 인터넷을 통해서도 마찬가지 일을 할 수 있어야 한다. 1999년의 코소보와 세르비아처럼 이것이 특별히 중요한 경우도 있다. 그곳 사람들은 실명이 밝혀지면 목숨이 위태로울 수 있는 전쟁 상황에서 익명으로 소식을 전할 수 있었다. 다른 한편, 사람들은 인터넷의 익명성을 이용하여 협박 이메일을 보내기도 하고, 적대적 발언과 비방을 하며, 컴퓨터 바이러스와 웜을 퍼뜨려서 선량한 네티즌들을 화나게 하기도 한다. 


의료 정보를 저장하는 데이터베이스라면 어떨까? 의료 정보는 공유할수록 유용성이 높아진다. 환자의 병력과 약물 반응 정보는 모든 종류의 연구에 매우 유용하다. 그렇지만 의료 정보는 매우 개인적인 것이다. 병에 대한 유전적 경향, 낙태, 생식 능력, 정신질환 병력, 약물 남용, 성행위 습관, 에이즈 감염 여부 등은 특히 그렇다. 사람들은 자신의 의료 정보를 비밀로 간직할 권리를 갖고 있다. 자신의 의료 정보가 공개되어 남들에게 시달리거나, 협박을 받거나, 해고당하는 사람도 있을 수 있는 것이다. 그러나 환자의 기록을 컴퓨터화하는 것은 프라이버시 보호 측면에서는 바람직하지 않지만 그 점을 제외하면 매우 효과적이다. 좋든 싫든 의료 정보의 컴퓨터화는 피할 수 없는 일이며, 문제는 제대로 이루어지도록 하는 것이다.


사람들은 하루에도 수만 번 자신을 인증한다. 컴퓨터 시스템에 로그온 하는 것은 컴퓨터에 자신을 인증하는 것이다. 컴퓨터 역시 사용자에게 인증받을 필요가 있다. 그렇지 않다면 그것이 자신의 컴퓨터인지 어떻게 알 수 있겠는가? 디지털 네트워크를 통한 인증이야말로 가장 중요한 보안 문제이다. 그리고 각기 다른 요구사항에 따라 다양한 해결책이 있을 수 있다. 어떤 해결책은 수백만 달러의 가치를 보호하기 위해 매우 안정적이 되어야 할 것이다.


때때로 우리는 인증을 생각하면서 실제로는 무결성(integrity)을 뜻할 때가 있다. 두 개념은 별개의 것이지만 때로는 많이 혼동된다. 인증은 정보의 출처와 관련된 것이고 무결성은 정보의 유효성과 관련된 것이다. 무결성은 누가, 언제, 어떻게 생성했는지와 같은 정보의 출처와는 상관없이, 생성 이후 수정된 적이 있는가를 문제삼는다. 무결성은 정확성과 같은 것은 아니다. 정확성은 현실 세계와 정보가 일치하는가에 관한 문제지만, 무결성은 시간에 따른 데이터의 변화와 관련된 문제다. 이 둘이 매우 밀접한 관계인 경우도 많다. 컴퓨터화된 정보를 이용하여 중요한 결정을 하는 사회에서 정보의 무결성은 매우 중요하다. 정보의 통계를 다루는 곳에서는 더욱 중요해진다.



제2부 기술
암호학의 적용

암호가 그렇게 강력한 것이라면 왜 보안 사고가 발생할까? 왜 디지털 절도나 사기, 프라이버시 침해와 같은 문제들이 발생할까? 왜 암호가 우리의 모든 보안 요구사항에 대한 완벽한 답이 될 수 없을까? 놀랍게도 이러한 문제들은 암호학의 문제가 아니다. 그 답은 이론과 실제의 차이에 있다. 암호학은 수학의 한 분야이다. 수학은 이론적이고 논리적이다. 훌륭한 수학자는 올바른 가정에서 출발하여 증명에 증명이 이어지는 복잡한 지역을 통과하는 외길(증명에 이은 증명으로 된)을 따라 논쟁의 여지가 없는 결론에 이른다.


보안은 실제 세상에 근거하고 있다. 실제 세상은 논리적이지도 규칙적이지도 않다. 어떤 외길이 존재하지도 않는다. 그리고 사람들은 똑같이 움직이지 않는다. 그들은 기대하지 않았던 행동을 하고, 규칙을 어긴다. 하드웨어와 소프트웨어도 마찬가지다. 암호학이 시스템 보안에 사용될 때에는 얼마나 이론이 훌륭한가는 중요하지 않다. 실제 결과가 문제인 것이다. 인터넷이 급격히 상업화되면서부터 암호학은 중요한 문제로 등장한다. 인터넷은 안전하지 않기 때문에 보안을 위해서 암호가 필요하다.


암호의 안전은 대중들로부터 나온다. 대중을 따른다는 것은, 암호분석가 몇 사람이 몇 주일 분석한 것이 아니라 전 세계 암호학계의 전문 지식을 활용한 것을 선택한다는 뜻이다. 새로운 암호 시스템에서 강력함을 기대하기는 어려운 일이며, 오랜 기간 연구되었고 잘 작동하는 대안이 있음에도 새로 나온 알고리즘을 선택하는 것은 누가 봐도 미친 짓이다. 그러나 대부분의 보안 회사들이나 다른 면에서는 똑똑한 사람들도 새로운 암호라는 말에는 눈이 멀기 일쑤이다.


컴퓨터 보안
일반적으로 컴퓨터 보안에는 접근제어, 계정과 사용자 권한 관리, 복사 방지, 바이러스 방지, 소프트웨어 점검, 데이터베이스 보안 등 다양한 것들이 포함된다.


보안 운영체제와 보안 컴퓨터에는 몇 가지 핵심 요소가 있다. 첫째는 정형화된 모델에서 다루고 있는 것보다 일반적인 종류의 강력한 강제 보안 메커니즘이다. 이 강제 보안 메커니즘은 정책 관리자(사용자일 필요는 없다)에 의해 제어되는 정책을 따르도록 한다. 게다가 이런 정책은 접근과 암호화 모두를 제어해야 한다. 즉 정책은 어떤 데이터에 누가 접근할 것인가와 어떤 종류의 암호화가 수행되어야 하는가를 정해야 한다. 이러한 정책이 위장 채널을 막을 수는 없지만 오늘날 볼 수 있는 것과 같은 남용은 막을 수 있을 것이다. 두 번째는 신뢰 경로(trusted path)이다. 이것은 사용자나 프로세스가 신뢰할 수 있는 다른 소프트웨어와 상호작용 할 수 있게 하는 메커니즘으로, 신뢰된 사용자나 소프트웨어에 의해 실행될 수 있지만, 다른 소프트웨어가 흉내낼 수는 없다. 예를 들어, 사용자가 보고 있는 로그인 화면이 실제인지 확인할 수 있을까? 트로이 목마가 패스워드를 알려고 하는 것은 아닐까? 신뢰 경로를 구현하는 메커니즘은 악의적인 소프트웨어에 의한 피해를 최소화할 것이다.


신원확인과 인증
전통적으로 신원확인과 인증의 척도는 다음 세 가지 중 하나에 초점이 맞추어져 있다. 그것은 각각 패스워드, 생체 인식, 출입증을 생각하면 될 것이다. 어떤 시스템은 두 가지를 동시에 사용하며, 이런 문제에 민감한 시스템의 경우에는 세 가지를 모두 사용하기도 한다.
 
공격자의 유형에 따라서는, 길고 강한 패스워드를 사용하는 시스템은 안전할 수 있다. 그러나 항상 그렇다고 할 수는 없다. 무어의 법칙(마이크로칩에 저장할 수 있는 데이터의 양이 18개월마다 2배씩 증가한다는 법칙)을 염두에 두면 오늘의 강한 패스워드가 내일은 약한 것이 될 것이기 때문이다. 일반적으로, 패스워드에 의존하는 시스템은 사전 공격에 취약하다. 공격자가 해쉬(hash)된 패스워드를 훔칠 수 있다는 것을 전제로 몇 가지 보완이 이루어졌다. 사전 공격을 예방하라, 그러면 패스워드 방식도 괜찮다. 이것은 쉽지는 않지만 가능한 일이다.


사전 공격을 예방할 수 없다면 그 해결책은 무엇일까? 한 가지 방법은 더 큰 사전을 이용하는 것이다. 또 다른 방법은 salting이라고 불리는 것인데, 패스워드에 난수를 더하는 것이다. 그래픽 형식의 패스워드에 대한 연구도 있다. 패스워드의 거짓수가 많아지므로 사전을 이용한 공격이 더 어려워진다는 것이 기본 발상이다. 그러나 여전히 사용자의 기억력이라는 한계를 넘지 못한다. 패스워드는 사용자가 아는 어떤 것에 기초한 방식이다. 다른 인증 기술로는, 생체 인식(biometrics)을 통해 사용자를 직접 인증하는 방식과 사용자가 가진 것을 사용하는 방식이 있다.


생체 인식 시스템은 위조하기 힘들다는 점에서 훌륭한 시스템이다. 지문이나 망막을 위조하기는 어렵다. 다른 한편, 생체 인식 시스템은 위조하기 쉽다는 점에서 매우 취약하다. 인식 시스템에 사용되는 데이터를 훔치기가 쉬운 것이다. 생체 인식 시스템은 두 가지를 동시에 확인할 수 있어야 한다. 첫째는 데이터가 확인 시점의 것이어야 하고, 둘째는 저장된 데이터와 일치해야 한다는 것이다. 둘 중의 하나라도 해낼 수 없다면 그 시스템은 안전하지 않다.


네트워크 보안
오늘날에는 네트워크 보안을 빼놓고 컴퓨터 보안을 논의하기는 거의 불가능하다. 심지어 신용카드 정산 시스템처럼 특화된 시스템조차 컴퓨터 네트워크를 사용하여 업무를 수행한다. 컴퓨터들은 결국 모두 네트워크로 연결될 것이다. 네트워크에 연결된 세상은 더욱 편리하기는 하지만 보안 면에서는 훨씬 불안하다.


1996년 9월, 알려지지 않은 해커 혹은 해커 그룹이 Panix라는 뉴욕의 한 ISP를 공격했다. 이때 해커들이 한 일은 단지 Panix 컴퓨터에 hello 메시지(SYN 패킷)를 보낸 것뿐이었다. 일반적으로 hello 메시지를 보낸다는 것은, Panix 컴퓨터의 응답을 기다려 서로 통신하기 위한 것이다. 그런데 공격자들은 응답을 받을 컴퓨터의 주소를 조작했고, Panix는 실제로 존재하지도 않는 컴퓨터와 동기화를 시도하게 된 것이다. Panix 컴퓨터는 75초 동안 원격 컴퓨터가 응답하지 않으면 동기화 시도를 포기하도록 설정되어 있었다. 해커들은 초당 50번 정도의 메시지를 보내 Panix 시스템을 메시지의 홍수로 넘치게 만들었다. 이것은 Panix 컴퓨터가 처리할 수 없는 많은 양이었으므로 결국 컴퓨터가 다운되고 말았다. 이런 공격을 SYN flooding이라고 부른다. 이것이 최초로 공개된 서비스 거부 공격이었다. 서비스 거부 공격은 특히 통신 시스템에 치명적이다. 통신 시스템은 통신 요청을 받아들이지 않을 수 없기 때문이다. 인터넷에서는 통신을 요청하는 메시지로 홍수를 만드는 것이 그 컴퓨터를 다운시키는 효과적인 방법이 되는 것이다. 서비스 거부 공격은 침입과는 다르다. 이 방법으로는 웹사이트의 데이터에 영향을 주는 것은 아니기 때문이다. 이 공격은 신용카드 번호나 재산이 될 만한 정보를 훔치는 데 사용될 수 없다. 이 공격을 통해서는 공격자가 직접적인 이익을 취할 수 없다. 그렇다고 해서 실재하지 않거나 중요하지 않다는 뜻은 아니다. 대부분의 대기업에 있어서 보안이 깨지면 가장 문제가 되는 것은 수입의 감소와 명성의 추락인데, 간단한 서비스 거부 공격이 그런 일을 초래하는 것이다.


침입탐지 시스템(IDS)은 네트워크를 감시하는 도구다. 침입에 성공한 공격자나 침입을 시도하고 있는 공격자가 있으면 관리자에게 경고한다. 훌륭한 침입탐지 시스템이 되려면 두 가지 면에서 정확해야 한다. 하나는 늑대 소년처럼 공격이 없는데도 있다고 하면 안 되며, 정말로 공격이 있을 때 놓쳐서는 안 되는 것이다. 공격이 진행중인 동안에 공격을 알려야 하고 훌륭한 시스템이라면 공격의 유형과 침입자에 대한 분석과 해결책도 제공할 수 있을 것이다.


인증서와 증명서
사이버 공간에도 증명서가 필요하다. 신용카드, 나이를 증명하는 카드, 사원 배지, 도서관 카드나 회원권 등이 디지털 형태로도 필요한 것이다. 인증서도 일종의 증명서다. 진짜 신분증은 아니지만 일종의 신분증이다. 그것은 모든 사람들이 신뢰하는 누군가가 서명한 것이다. 그것은 공개키와는 분명히 다른 것이다.


공개키 암호의 초창기에는 마치 전화번호부처럼 공개키들이 수록된 방대한 데이터베이스가 있어야 한다고 생각되었다. 그런데 모든 사람들의 공개키가 하나의 커다란 데이터베이스에 수록된다면 그 데이터베이스의 보안은 어떻게 될 것인가? 공격자가 어떤 사람의 공개키를 다른 사람의 것과 바꿔치기 할 수 있다면 온갖 나쁜 일이 벌어질 것이다. 공개키 데이터베이스의 보안을 강화하는 것으로 이런 문제가 해결되지 않는다. 공개키의 개념 자체가 자유롭게 널리 사용되어야 하는 것이기 때문이다. 해결책은 인증서였다. 인증서는 공개키와 신원 확인을 하나로 묶은 것이다. 인증서에는 공개키 자체뿐만이 아니라 피인증자에 관한 정보(이름, 직위, 이메일 주소 등), 인증서에 관한 정보(발행일, 유효기간 등), 발행자, 즉 서명자에 관한 정보(발행기관, 서명 알고리즘 등), 공개키에 관한 정보(사용한 알고리즘 등) 등이 포함된다.


공개키 인프라와 인증기관에는 많은 문제가 있다. 예를 들어 어떤 인증기관이 스스로를 신뢰할 만하다고 주장한다면 그것은 무슨 의미가 있을까? 암호학 논문에서는, 이 얘기는 단지 자신의 개인키를 잘 다룰 수 있다는 의미에 불과하다. 어떤 일을 하는 경우에 그 인증기관이 발행한 인증서를 반드시 신뢰할 수 있다는 의미는 절대 아니다. 누가 인증기관에게 인증서를 발행할 권한을 주었는가? 누가 인증기관을 신뢰할 만하다고 보증하는가? 많은 인증기관들은 자체적인 신원 인증서를 발행함으로써 공식기관으로부터 권한을 위임받지 못했다는 문제를 비켜간다. 이름은 누구든지 만들 수 있다. 항상 하는 일이기도 하다. 그러므로 신원 인증서에 어떤 식으로든 권한을 부여하려고 한다면 결국 위험 부담은 인증서를 검증하는 사람의 몫이 된다. 근본적으로 인증서라는 것은 인증기관들이 거래하기를 거부한 사람들부터만 당신을 보호할 수 있는 것이다.


또 하나의 문제는 개인키를 보호하는 것이다. 디지털 서명 시스템이 작동하기 위해서는 개인키는 절대로 혼자만 아는 것이어야 한다. 그렇다면 어떻게 개인키를 보호할 것인가? 물리적 접근을 통제할 수 있고, TEMPEST 방어막이나 기타 여러 가지 방어장치를 갖춘 안전한 컴퓨터 시스템을 개인이 소유하기는 어렵다. 대개는 보통의 컴퓨터에 개인키를 저장할 것이다. 그러면 바이러스나 다른 악성 프로그램의 표적이 될 수 있다. 개인키가 컴퓨터에 안전하게 저장되어 있다 하더라도, 혼자만이 그 컴퓨터를 사용한다는 확신을 위해서 감시카메라가 설치된 밀폐된 방안에 컴퓨터를 두지는 않을 것이다. 패스워드로 보호한다 해도, 그 패스워드를 깨는 것이 매우 어렵지는 않을 것이다.


보안기법들
스테가노그래피(steganography)는 메시지 속에 메시지를 숨기는 기술이다. 헤로도투스의 기록에 따르면 고대 그리스에서는 전령의 머리를 밀고 비밀 메시지를 문신으로 새긴 다음 머리카락이 자란 다음에 적국으로 보냈다고 한다.(이 통신 시스템에서는 잠복기가 수개월이다.) 보이지 않는 잉크는 그보다 나중에 나온 기술이다. 미세 사진술(microdots)은 제1차 세계대전 중에 독일에 의해 발명되어 수년간 유행했다. 스파이들은 아주 작은 사진을 만든 다음에 책을 펴고 그 안의 마침표 위에 올려놓았다. 스파이가 그 책을 들고 다녀도 책의 수많은 페이지 중 한 곳에 숨겨진 미세 사진 원판을 누구도 찾을 수 없었다. 컴퓨터의 시대가 도래하자 스테가노그래피는 그래픽, 사진, 영화, 소리 등이 담긴 파일 속에 비밀 메시지를 숨기는 것으로 의미가 변했다.


복사 방지의 최고수들은 새로운 기술로 방지가 가능하다는 이야기를 한다. 그들은 컴퓨터의 마이크로프로세서에 유일한 시리얼 번호를 넣어달라고 요구하기도 한다. 그러면 어떤 프로그램이든 하나의 합법적인 복사본이 특정한 컴퓨터에서만 작동하도록 프로그래밍할 수 있다는 것이다. 마더보드의 암호화 기능에 대한 이야기도 있다. 그러나 이런 식으로 문제가 해결되지는 않는다. 그런 시스템이 평범한 사용자의 복사는 막을 수 있겠지만, 해커가 프로그램을 크랙(crack)하여 웨어즈(warez)에 올리는 것을 막을 수는 없는 것이다. 이런 상황은 디지털 워터마킹의 경우와 다르지 않다.


디지털 정보를 삭제하는 것은 생각보다 어렵다. 보통의 컴퓨터 시스템에서는 마그네틱 디스크(magnetic disc. 하드디스크나 플로피와 같은)에 기록된 파일을 삭제해도 데이터가 정말로 지워지지는 않는다. (그 덕분에 지운 파일을 되살리는 유틸리티들이 존재한다.) 파일에는 단지 삭제되었다는 표시가 될 뿐이며, 나중에야 그 자리에 다른 정보가 기록되면서 없어지는 것이다. 파일을 마그네틱 디스크에서 완전하게 지우는 방법은 거기에 새로운 파일을 덮어쓰는(overwrite) 것이다. 이런 식으로 파일을 확실하게 지워주는 유틸리티들도 있다. 덮어쓰기를 한 다음에도 원래의 데이터를 복구하는 기술이 있다는 것은 비교적 덜 알려졌다.


인간적 요인
컴퓨터 보안은 어렵다. 어쩌면 불가능하기까지 하다. 그렇지만 어쨌든 그것을 달성했다고 가정해 보자. 그렇다면 필요한 곳에 강력한 암호학이 적용되었을 것이고, 모든 보안 프로토콜들이 작동하고 있을 것이다. 하드웨어도 안전하고, 소프트웨어도 안전하고, 심지어 네트워크도 안전하다. 이렇게 된다면 물론 기적이다. 그러나 유감스럽게도 아직 부족한 것이 있다. 이렇게 무엇이든 해낼 수 있는 기적적인 컴퓨터가 있다고 했을 때, 그것은 사용자와 상호작용을 할 수밖에 없다. 이러한 상호작용이 보안의 가장 큰 위협이 된다. 보안 사슬의 가장 취약한 고리는 대개 사람이며, 역사적으로도 보안 시스템이 실패한 데에는 사람의 책임이 컸다.


컴퓨터 보안은 디지털 영역에서만 작동한다. 정보를 디지털 세상 속으로 옮기는 것도 문제지만 디지털 세상에 묶어두는 것은 거의 불가능하다. “종이 없는 사무실”이란 구호를 기억하는가? 정보는 컴퓨터 안에 머무르지 않고 항상 종이 위로 옮겨간다. 정보라는 점에서는 마찬가지이므로 공격자들은 종이 위의 정보나 컴퓨터 안의 정보나 가릴 필요가 없다. 많은 경우에 휴지통에 버려진 종이가 컴퓨터 안의 파일보다 가치가 있다. 훔치기가 쉽고 훔친 다음에는 없어질 염려가 적기 때문이다. 컴퓨터 안에 있는 모든 정보를 암호화하여 보관하는 회사라도 서류 캐비닛을 잠그지 않거나 서류분쇄기를 사용하지 않는다면 스스로 공격에 노출하는 것이나 마찬가지다.


사람들은 보안을 원한다. 그러나 그 작동 원리를 알고 싶어하지는 않는다. 대문에 처음으로 자물쇠를 설치해 본 사람들과 얘기를 나눠보면 뭔가 교훈을 얻을 수 있을 것이다. 아마도 시골에는 자물쇠를 처음 설치해본 기억이 있는 사람들이 살아있을 것이다. (도시의 주택에는 수백 년 전부터 자물쇠가 있었지만 시골에서는 오랫동안 자물쇠를 사용하지 않았었다.) 그들은 자물쇠가 매우 귀찮은 것이었다고 기억한다. 내 집에 들어가기 위해서 열쇠를 찾아 자물쇠에 삽입하고 그것을 돌려야 한다는 것이 마땅치 않았던 것이다. 더욱이 열쇠를 잃어버렸거나 어디에 두었는지 기억이 나지 않을 때에는 정말 골치 아픈 일이었다. 물론 범죄는 막아야 하고 따라서 대문을 잠그는 것은 좋은 일이다. 그러나 사람들은 그것에 저항했다. 지금도 대문을 잠그지 않고 외출하는 사람들이 있다.(“나한테는 별일 없겠지”라는 잘못된 생각을 하는 사람이 대부분이다.) 컴퓨터 보안도 다르지 않다. 패스워드나 접근권이나 제한이라는 것이 없을 때 컴퓨터를 사용했던 사람을 찾아서, 보안 시스템이 추가된 것이 얼마나 좋으냐고 물어 보라. 단지 편하다는 이유로 보안을 피해간 적은 없는지 물어 보라. 심지어 오늘날에도 마감에 쫓기는 경우에는 두 번 생각하지도 않고 보안을 우회하는 사람들이 많다. 비상문을 활짝 열어두어 누군가가 건물 안으로 쉽게 들어올 수 있게 하기도 하고, 일을 빨리 하려고 패스워드를 펼쳐놓거나 방화벽을 꺼놓기도 한다.



제3부 전략
취약점과 취약점 지형도

추리소설이나 범죄 관련 기사를 읽어본 사람은 알겠지만, 취약점을 찾아내는 것으로 공격이 끝나는 것이 아니다. 찾아낸 취약점을 성공적으로 이용하기 위해서는, 목표를 정하고 계획을 세우고 공격 행동을 하고 도주하는 것까지 일련의 과정이 필요하다. 안전한 곳에 숨겨있는 금고의 자물쇠가 취약점이 있다하더라도 그것은 외부에 있는 은행의 야간 금고처럼 심각한 문제는 아니다. 일반적으로 성공적인 공격방법에는 다섯 가지 단계가 있다.


① 공격 대상을 설정하고 그에 관한 정보를 수집한다.
② 정보를 분석하여 공격 대상의 취약점을 알아낸다.
③ 공격 대상에 대한 적절한 수준의 접근 권한을 얻는다.
④ 공격을 수행한다.
⑤ 공격을 완료한다. 여기에는 증거 인멸과 보복 회피를 위한 작업이 포함될 수 있다.


간단하게 말하면 무엇을 공격할 것인가를 알고 나서, 어떻게 공격할 것인가를 알아내고, 안으로 들어가, 공격하고, 빠져 나오는 것이다.

보안 수단은 취약점을 줄이는 수단이다. 여기에는 적의 병력이 쳐들어오지 못하도록 도시 주위에 성벽을 쌓는 것처럼 간단한 것에서부터, 신용카드 취급 상인의 사기를 적발하기 위한 백 엔드 감사 시스템을 구축하는 것처럼 복잡한 것까지 여러 가지가 포함된다. 기본적으로 보안 수단은 공격의 5단계 중 하나를 막는 방식으로 구현된다. 시스템의 보안이 가장 약한 고리만큼만 안전하다는 것은 일반적으로 개별 기술에 대한 말이다. 똑똑한 시스템에서는 보안 기술이 여러 층의 깊이를 가지고 있으므로, 안전도는 고리들의 합이 된다. 암호학은 전수조사(全數調査, 대상이 되는 통계 집단의 단위를 하나하나 전부 조사하는 관찰 방법) 공격이나 알고리즘 분석 혹은 (약한 고리인) 멍청한 비서를 속여서 얻어낸 패스워드로 깰 수 있다. 그러나 컴퓨터가 있는 방을 잠그거나 잘 설정된 방화벽을 사용하면, 중층의 보안 깊이를 갖게 된다.


영화 레이더스의 첫 장면에서 인디아나 존스는 독거미, 벽에서 튀어나오는 못, 함정, 바닥의 돌을 잘못 밟으면 튀어나오는 독화살, 움직이면 자폭하는 동상 등이 있는 곳을 통과한다. 이것이 바로 중층적 방어다. 시스템을 공격하는 것이 단순히 취약점을 찾는 것보다 복잡한 것과 마찬가지로, 시스템을 방어하는 것은 한 가지 수단을 마련하는 것보다 복잡한 일이다. 효과적인 수단은 보호(protection), 탐지(detection), 대응(reaction)으로 나누어지며, 서로 협력하며 이루어진다. 강력한 보호 메커니즘이 있다면 탐지와 대응은 크게 필요하지 않다. 보호 메커니즘이 약하거나 전혀 없는 경우에는 더 강력한 탐지와 대응이 필요하다.


취약점 지형도는 여러 가지로 방식으로 구성될 수 있다. 필자는 그것을 물리적 세계, 사이버 공간, 신뢰 모델, 시스템의 라이프 사이클이라는 4개의 범주로 나눈다. 이들은 서로 관련되어 있다. 동일한 공격자가 침입하여 폭탄을 설치하고 인명을 살상하는 식으로 물리적 공격을 할 수 도 있고, 컴퓨터와 전화 시스템을 마비시키고 경찰 컴퓨터를 해킹하여 경찰관들에 대한 체포 영장을 발부하는 등 인터넷을 이용한 가상 공격을 할 수도 있다. 사이버 공간으로부터 물리적 인프라를 공격하는 것은 원격에서 순식간에 이루어질 수 있다. 그것은 물리적 세계에서의 공격보다 훨씬 심각한 경우가 많다.


취약점 지형도에는 잠재적 공격 가능성이 광범위하게 널려 있으며, 따라서 대응 수단을 지형도 전제에 골고루 적용해야 한다는 것을 알 수 있다. 가장 명백한 위협에 대응하느라 다른 위협들을 무시하지 말고, 전체적으로 대응해야만 가장 위험한 위협으로부터 시스템을 보호할 수 있다는 것이다. 이 생각은 또한 합리적인 투자 결정을 하자는 것이다. 즉 공격자가 유리창을 깨고 들어올 수 있는 상황에서, 정문의 자물쇠를 강화하는 데 돈을 쓴다는 것은 무의미한 일이다. 그리고 모든 공격자가 돈의 가치에 따라서 공격하는 것만은 아니라는 것도 기억해야 한다. 그렇지 않다면 금전적 이득이 없는 컴퓨터 시스템에 들어가려고 수백 시간을 허비하는 해커를 어떻게 설명하겠는가? 이와 같이 명성이나 복수나 기타 눈에 보이지 않는 가치를 추구하는 공격자도 있음을 항상 명심해야 한다. 그리고 공격을 막기 위해서는 공격의 5단계 중에서 앞의 네 단계 중 하나만 막아도 된다는 것을 명심하라. 때로는 대응 수단과 교육, 정책, 과정을 단순하게 하는 것이 합리적이며 비용 대비 효과가 높은 수단이 된다. 이러한 단순한 대응으로도 공격자의 위험과 난이도를 현저히 높일 수 있다. 

 

보안 과정
보안 과정은 위험을 줄이는 방법이다. 네트워크 보안 제품은 결함이 있게 마련이므로, 결함을 이용하는 공격자를 잡아내고 알려진 결함을 고치기 위한 보안 과정이 반드시 필요하다. 내부자의 공격도 피할 수 없으므로, 공격을 탐지하고, 피해를 복구하고, 공격자를 처벌하는 과정이 절대적으로 필요하다. 시스템 규모의 결함은 제품과 서비스 전체를 손상시키므로, 피해를 복구하고 사업을 지속할 수 있게 하기 위한 보안 과정이 반드시 필요하다. 모두가 쉬운 일이 아니며, 전문가를 필요로 하는 일이다. 유일한 해결책은 전문가들을 가능한 한 많이 활용하는 것이다. 이것을 효과적으로 할 수 있는 방법이 아웃소싱이다. 어쩌다 일어날지도 모르는 해킹을 감시하기 위해서 하나의 조직이 많은 인원을 고용할 수는 없다. 아웃소싱을 통해서만 그런 인원을 배치할 수 있을 것이다. 아웃소싱 회사들은 강의와 경험을 통해서 그런 전문가를 양성하여 새로운 보안 수단과 제품의 취약점을 능동적으로 테스트할 수도 있으며, 단일 네트워크를 넘어 거대한 인터넷을 감시할 수 있다.


아웃소싱은 전문 지식과 전문적 능력을 갖고 있다는 것 외에도 전문가들이 한 군데 모여있다는 장점이 있다. 아웃소싱 회사들은 해커들로부터 새로운 공격에 관한 정보를 능동적으로 수집할 수 있고, 범죄 예방을 위한 첩보활동까지 할 수 있게 될 것이다. 그들은 여러 고객들을 관리하면서 공격 패턴을 알아낼 수 있을 것이며, 다양한 고객 네트워크를 통해 공격에 대응할 수 있을 것이다. 말하자면 뉴델리에서 공격을 발견하고, 뉴욕에 있는 고객들의 네트워크를 보호할 수 있을 것이다.



결론
사이버 공간은 현실 세계와 다르다. 공격은 목표물에서 멀리 떨어진 곳에서도 가능하다. 기술도 필요 없다. 어딘가 웹사이트에서 다운로드한 소프트웨어 패키지만으로 충분하다. 그리고 자신을 위험에 노출시킬 필요도 없다. 도덕적인 해커가 취약점에 관한 내용을 인터넷에 공개하면, 비도덕적인 해커가 그 취약점을 이용하는 프로그램을 작성하며, 그 다음에는 도덕성도 기술도 없는 사람이 그것을 사용하여 회사에 침입한다. 장난삼아 만든 웜이 1000만 대의 컴퓨터를 감염시키고 100억 달러의 손실을 초래할지도 모르는 일이다. 어쩌면 치안 상태가 좋지 않은 제3세계의 어떤 웹사이트에 “이곳을 누르면 인터넷이 붕괴됩니다.”라는 식의 자바 애플리케이션이 올라올 수도 있을 것이다. 즐거운 상상은 아니다.


사회 문제에 대한 기술적인 해결책은 존재하지 않으며, 보안을 위해서는 법률이 필수적이다. 절대로 딸 수 없는 자물쇠나 완벽한 경보 장치가 발명된다 하더라도, “이제는 경찰이나 무단 침입에 관한 법률이 필요 없다.”라고 말하는 사람은 없을 것이다. 범죄의 역사에서 무언가 배울 것이 있다면, 그것은 기술에는 한계가 있다는 사실이다. 제품을 감시할 경비원과 범인을 수사할 경찰이 필요하다. 전자상거래 사기 혐의자나 컴퓨터를 이용한 절도 혐의자 또는 그런 범죄를 가능하게 하는 도구를 제작한 사람을 기소하기 위한 법률이 필요하다.

?

보안은 제품이 아니라 과정이다. 사건이 난 다음에 보안을 추가하는 것은 소 잃고 외양간 고치는 격이다. 시스템에 대한 진짜 위협을 이해하고, 이러한 위협에 대응하는 보안 정책을 설계하고, 미리부터 적절한 대응 수단을 만들어 놓는 것이 중요하다. 완벽한 솔루션을 요구하는 것이 아니라, 완전히 깨져버릴 수 있는 시스템은 용납되지 않는다는 이야기임을 기억하라. 보안 제품이 작동하기 위해서는 훌륭한 보안 과정이 필수적이다. 최악의 경우에 대비하는 것이 현명하다. 공격과 공격자는 항상 발전하고 있으며, 지금 사용하는 시스템이 20년 후에도 자리를 지키고 있을지 모른다. 

(본 정보는 도서의 일부 내용으로만 구성되어 있으며, 보다 많은 정보와 지식은 반드시 책을 참조하셔야 합니다.)