클라우드 보안 위협

클라우드 환경의 9가지 보안 이슈와 안전한 클라우드를 위한 노력

클라우드 환경의 9가지 보안 이슈와 안전한 클라우드를 위한 노력

최근 우리의 일상을 가장 많이 바꿔 놓은 기술을 하나만 꼽으라면 단연코 스마트폰을 중심으로 한 모바일 기술이라고 할 수 있을 것이다. 스마트폰 이전에는 전화가 통화 되고 문자메시지를 주고 받을 수 있으면 되는데 무슨 기능이 더 필요하지 라는 생각을 했다. 그러나, 스마트폰에 이미 익숙해진 사람들에게 전화와 문자만 되는 전화기는 지난 시대의 유물에 지나지 않는다. 스마트폰이 우리의 생활에 엄청난 영향을 미칠 수 있었던 요인은 무엇일까. CPU 등의 하드웨어 기술과 통신 기술의 발전을 들 수 있지만, 그 이면에는 클라우드의 발전이라는 또 하나의 축이 있다. 클라우드는 사용자들의 콘텐츠를 생산하고, 보관하고, 공유하고, 소비하는 활동들을 더욱 편리하게 할 수 있도록 해줌으로써 스마트폰의 가치를 한층 높여 주는 것이라 할 수 있다.

클라우드는 스마트폰이라는 테두리 안에서만 가치가 있는 것이 아니라 테블릿 등의 모바일기기, 기존의 개인용 컴퓨터, 대용량 서버 등에 이르기까지 큰 변화를 이끌고 있다. 클라우드 기술이 있기 때문에 우리가 즐기는 콘텐츠와 우리가 사용하는 기기와 우리가 활용하는 서비스가 이동성을 갖게 되었다. 스마트폰을 둘러싼 모바일의 발전 때문에 클라우드가 발전할 수 있었지만, 클라우드의 발전이 있기 때문에 모바일의 발전이 견인되는 측면도 있으니 모바일과 클라우드는 서로 상생의 관계를 맺고 있다 할 수도 있겠다.

클라우드는 점점 더 우리 일상의 깊숙한 곳으로 파고들고 있고 우리는 그 변화에 익숙해져가고 있다. 클라우드의 보편화는 개인의 측면에서만 그치지 않고 기업이나 정부 등에서도 뚜렷하게 나타나고 있다. 콘텐츠와 기기에 이동성을 더 높여주는 클라우드는 안전성과 보안성에 문제가 없는 것일까. 클라우드의 개념이 태동하고 본격적으로 기술과 서비스들의 상용화되면서 보안에 대해서 걱정하는 전문가들이 많이 있었다. CSA(Cloud Security Alliance)는 클라우드에 대한 보안의 인식을 높이고 지식을 공유하기 위해 2008년에 만들어진 단체이다. 최근 CSA는 클라우드 환경에서 발생하는 9가지의 보안 위협을 발표하였다. (“The Notorious Nine: Cloud Computing Top Threats in 2013”, 2013.02)

1. Data Breaches (데이터 유출)

클라우드를 기업의 업무시스템으로 사용하는 기업에게 가장 두려운 일은 데이터와 정보가 유출되는 것이다. 클라우드는 기존의 서버 기반 환경보다 네트워크 접근성을 확대하기 때문에 해커들에게는 그만큼 다양한 공격 경로가 열려있는 것을 의미한다. 퍼블릭 클라우드(Public Cloud)의 경우에는 여러 기업들이 클라우드를 사용하기 때문에 특정 기업의 클라우드 서비스에 대한 공격이 이루어졌을 때 동일한 클라우드를 이용하는 다른 기업의 클라우드 서비스에도 동일한 공격이 이루어질 가능성이 매우 높다. 클라우드의 데이터 저장과 관리는 이러한 관점의 고려가 이루어져야 하며, 그 해결책은 암호화, 키 관리, 인증과 접근제어가 될 것이다.

2. Data Loss (데이터 소실)

클라우드의 장점은 언제, 어디서나 클라우드에 접속하면 원하는 데이터에 접근할 수 있다는 것이다. 특정 데이터는 여러 채널과 경로를 통해서 여러 사람이 동시에 접속할 수 있다. 이러한 편리함이 갖는 장점은 엄청나지만, 누군가 삭제를 하거나 수정해버린 데이터는 영원한 시간의 저편으로 사라져 버린다. 삭제나 수정은 새로운 데이터로의 갱신으로 이해할 수도 있지만, 기존 데이터의 소실로도 이해할 수 있으며 데이터의 소실은 해커나 어느 성실한 직원의 성실한 업무 수행 과정에서 고의적으로 행해질 수도 있지만, 실수에 의해서 우연히 발생할 수도 있다. 데이터 소실을 막을 수 있는 방법은 데이터를 수정하거나 삭제할 수 있는 권한을 잘 관리하는 것이고, 수정과 삭제에 대해서 이전 데이터를 백업해두는 것 뿐이다. 앞서 이야기한 데이터 유출(Data Breaches)는 데이터를 읽는(reading) 과정에서 발생하지만, 데이터 소실은 데이터를 쓰는(wrighting) 과정에서 발생한다.

3. Account Hijacking / Service Hijacking (계정 탈취 / 서비스 탈취)

사용자가 클라우드 서비스를 이용할 때 가장 기본이 되는 것은 계정정보이다. 사용자의 계정정보에 기반하여 클라우드 서비스는 사용자를 인식하고 사용자가 원하는 정보를 제공해주기 때문이다. 사용자의 계정정보가 탈취되면 어떤 일이 일어날지를 상상하는 것은 쉬운 일이다. 특정 기업의 기밀 정보를 엿볼 수 있고, 관리자로서 다른 사용자의 계정을 삭제하거나 기업의 클라우드 서비스 계약 정보를 변경할 수도 있다. 2010년 4월, XSS(Cross-Site Scripting) 취약성을 활용하여 계정정보를 탈취한 공격은 이러한 위협의 대표적인 사례라 할 수 있다. Two-factor 인증 등으로 인증을 강화하거나 사용자의 활동을 모니터링하는 것이 이에 대처할 수 있는 방법이다.

4. Insecure APIs (안전하지 않은 API)

클라우드 서비스는 서비스의 사용자 이용 뿐만 아니라 관리자의 서비스 운영 및 관리를 위해 다양한 API를 제공하고 있다. 안전하지 않은 API의 취약점을 통해서 사용자의 인증을 우회한다거나 정상적인 경로로는 접근할 수 없는 데이터에 대해서 접근할 수 있는 등의 보안 사고가 발생할 수 있다. 이 취약점은 클라우드를 제공하는 사업자가 안전한 API를 설계하고 제공하여야 하는 것이지만, 운영의 과정에서 응용계층의 보안(Application Security)를 채용함으로써 최소한의 보안을 확보할 수 있다. 클라우드 환경을 위한 클라우드 웹방화벽(Web Application Firewall)은 대표적인 방안이다.

5. Denial of Service (DoS; 서비스거부)

서비스 거부 공격은 서버의 자원을 소진함으로써 서비스의 가용성(availability)를 없애는 형태의 공격으로서 클라우드 환경에서도 여전히 유요한 공격법이다. 클라우드 서비스에서는 클라우드를 구성하는 하드웨어 자원의 가용성을 소진하고 나아가서는 클라우드 서비스를 이용하는 기업의 업무가 원활히 이루어지는 것을 방해하게 된다.

6. Malicious Insiders (악의적인 내부 사용)
클라우드에 기반한 서비스는 많은 사용자들이 동시에 사용하도록 운영되는 것이 보통이기 때문에 기업의 클라우드 서비스는 기업 내의 사용자 뿐만 아니라 협력사의 사용자들도 사용하는 경우가 많다. 퇴사한 직원의 계정이 즉시 삭제되지 않았거나, 직무의 조정으로 인해 접근할 수 없어야 하는 권한이 아직 유효한 것을 악용하는 것이 대표적인 사례이다. 악의적인 내부 사용을 막기 위해서는 사용자의 계정과 권한에 대해서 지속적인 관리와 감사가 이루어져야 한다. 특정한 사용자에게 많은 권한이 집중되는 것을 막기 위해 권한을 분산시키는 것도 좋은 방법이다.

7. Abuse of Cloud Services (클라우드 서비스의 남용)

클라우드의 장점은 작은 기업이나 개인들도 대용량의 전산 자원을 손쉽게 구매하거나 이용할 수 있다는 점이다. 전산자원은 일반 기업이 원활하게 업무를 수행하는데 유용한 도구이기도 하지만, 해커들에게도 유용한 도구를 제공해줄 수 있다. 암호를 해독하기 위해서, 혹은 사용자의 패스워드를 얻기 위해 클라우드의 전산자원을 이용하는 것은 대표적 예라 할 수 있다. 클라우드 환경에서는 가상화 기술을 이용하여 여러 개의 가상머신이 동시에 동작하게 된다. 달리 말하면, 서로 다른 기업이나 개인이 사용하는 가상머신이 가상화를 통해 연결될 수 있다는 뜻이기도 하다. 해커가 가상머신을 이용하여 다른 가상머신을 공격하는 기법에 대한 연구들도 최근에 발표되고 있다. 클라우드 서비스의 남용을 막는 것은 쉬운 일이 아니다. 기술적인 방법보다는 클라우드 이용자에 대한 지속적인 모니터링과 운영 정책의 적용이 방법이라 할 수 있다.

8. Insufficient Due Diligence (클라우드 서비스의 이해 부족)

기존의 서버 기반 환경에서 가상화를 채용한 클라우드 기반으로 전환하는 것은 자원의 운영 효율성과 가용성의 증대에서 매력적으로 보일 수 있다. 그러나, 기존의 업무시스템을 가상화하여 가상머신으로 동작하게 되면 하드웨어나 네트워크를 직접적으로 제어하는 등의 일은 불가능해진다. 업무시스템이 클라우드의 가상화 환경에서 안전성을 충분히 확보할 수 있는지의 여부를 미리 충분하게 검토할 필요가 있다. 클라우드 환경에 대한 이해의 부족은 가상화된 후의 시스템에 치명적인 취약점을 야기시킬 수 있기 때문이다.

9. Shared Technology Vulnerabilities (공유기술의 취약점)

클라우드 기술은 하나의 기술로 구성되는 것이 아니라 그 내부에는 엄청나게 많은 요소기술들이 존재하고 있다. 하드웨어의 측면에도 CPU, 메모리, 저장장치 등의 많은 요소들이 대량으로 서로 연결되어 있다. 여러 전산 자원이 여러 요소기술들의 조합에 의해서 IaaS, PaaS, SaaS 등의 서비스 모델 형태로 제공되는 것이 클라우드다. 이러한 점으로 인해서 내부의 요소기술이나 하드웨어에서 발견되는 취약점이 클라우드 전체의 취약점으로 연결될 수 있다.

위의 문제들은 클라우드이기 때문에 추가로 고려해야하는 문제들에 대해서 논한 것이지, 기존의 다양한 보안 문제들로부터 클라우드 환경이 자유롭다는 뜻은 아니다. 안전한 클라우드 환경을 확보하는 것은 클라우드 제공자와 클라우드를 이용하려는 기업의 공동 인식이 있어야 한다. 클라우드를 채용하려는 기업은 클라우드를 도입함으로써 보안이 더 강화될 수 있을 것이라 믿을 수도 있지만, 그러한 믿음은 옳은 것일 수도 있지만 환상일 수도 있다. eBay의 Chief Security Architect인Subra Kumaraswamy는 클라우드 이용 기업의 관점과 보안의 측면에서 클라우드 제공자와 클라우드 이용 기업의 역할을 잘 정의하고 있다.

안전하고 신뢰할 수 있는 클라우드 환경 구축을 위한 보안 기술의 보다 상세한 구성은 CSA의 Reference Architecture를 참고하길 바란다.

시장과 기술 분석 분야의 전문 기업인 Gartner가 10여년 동안 클라우드를 주목할 기술에 선정하고 있는 것을 언급하지 않더라도 클라우드 기술은 우리의 개인 삶과 기업의 활동에 큰 영향을 미치고 있다. 기업의 업무를 위해 클라우드를 활용하고 클라우드 환경에서 업무시스템을 구축하는 것은 시스템의 가용성과 효율성을 높이는데 큰 도움이 될 것이다. 그러나, 잊지 말아야 할 것이 있다. 클라우드에서 업무시스템을 구축하였고 해당 클라우드가 안전성을 보장한다고 해서 클라우드의 업무시스템의 안전성이 보장되는 것은 아니라는 것이다. 클라우드로의 전이는 서버 중심의 시스템을 서비스 기반의 시스템으로 옮겨가는 것을 의미하고, 클라우드는 서비스 기반의 시스템에서 서비스가 존재할 수 있도록 하부를 제공해주는 것에 지나지 않는다. 클라우드로의 전이는 분명 큰 이점을 많이 가지게 되지만 새로운 보안의 위협도 생겨나는 만큼 클라우드 시대에 걸맞는 보안의 시간이 필요하다.

 

애플리케이션 보안

[웹 보안의 정석 2편] 웹 애플리케이션 보안을 강조하는 이유

지난 글 “사이버 공격, 웹 보안이 핵심” 을 통하여 웹 보안의 중요성과 웹 위협의 유형을 살펴보았다.

한국인터넷진흥원 자료에 의하면 전체 해킹 시도 중 전체 70% 이상이 웹을 통해 이루어지고 있는 만큼 이제 웹 보안은 선택이 아닌 필수가 되었다.

하지만 웹 보안은 전문가라 하여도 안전한 웹 보안을 보장하기 어렵다. 웹 보안의 경우, 현재 표준화된 보안 대책이 없으며 기업마다 제각각 보안을 구축하고 있기 때문이다.

안전한 웹 보안을 위해서는 기업의 보안 담당자가 웹 보안에 대하여 충분한 이해하고, 자사의 IT 시스템에 맞는 웹 보안을 구축해야 한다. 이를 위하여 대부분의 기업들은 웹 보안 솔루션을 도입하고 있지만, 웹 보안을 이해하고 적재적소에 웹 보안 솔루션을 설치 및 운영하는 곳은 많지 않다.

이번 연재에서는 웹 보안을 쉽게 이해할 수 있도록 전반적인 IT 시스템의 구조를 살펴보고, 웹 보안이 이 IT 시스템에 어떻게 적용되는가를 살펴보는 시간을 갖고자 한다. IT 시스템에 대한 이해, 그리고 이에 맞는 웹 보안의 개요를 살펴보도록 하자.

클라이언트-서버 구조에 대한 이해

123

우리는 일반적으로 데스크탑 PC나 노트북, 모바일 기기를 통해 웹을 사용한다. 이걸 IT 용어로 보자면, 웹에 접속하기 위해 사용하는 PC나 노트북, 모바일 기기는 ‘클라이언트’, 웹사이트나 모바일앱 화면과 같은 웹 컨테츠를 저장하고 있다가 클라이언트가 접속을 하면 그 컨테츠를 보여주는 시스템을 ‘서버’ 라고 한다.(IT 시스템에서 서버가 전부 웹서버는 아니지만, 여기에서는 웹 보안을 논하는 자리이니 웹서버를 예로 들겠다.) 또 클라이언트와 웹서버를 연결해주는 연결망이 바로 ‘웹’이다.

보안의 관점에서 보자면, 일반적으로 클라이언트 보안은 개개인 시스템의 안전과 관련이 있고, 서버 보안은 기업 시스템의 안전과 관련이 있다. 물론 기업 내부에 있는 클라이언트 보안도 있을 수는 있겠지만, 여기에서는 기업내 웹보안의 핵심이 되는 서버 보안에 대해 살펴보려고 한다.

기업의 서버 시스템 구조

124

기업내 서버 시스템 구조를 이해하기 위해, IT 시스템 구조를 먼저 살펴보자.

위 그림에서 볼 수 있듯이, IT 시스템은 크게 네트워크, 시스템, 애플리케이션 이렇게 3개의 계층으로 구성되어 있다. OSI 7 계층, TCP/IP 계층과 같은 여러 가지IT 시스템 모델이 있지만, 이러한 계층적 분류에서 가장 공통적인 구조는 네트워크, 시스템, 애플리케이션 3가지 계층이다. 이 3계층은 서로 상호작용을 통하여 IT 시스템을 구축하고 있다.

네트워트 계층은 데이터의 송수신과 관련된 통신을 담당하는 역할을 하고, 시스템 계층은 우리가 흔히 알고있는 윈도우즈, 리눅스와 같은 운영 체제(O/S)가 하는 역할처럼 여러 애플리케이션이 동작할 수 있는 플랫폼 역할을 한다. 애플리케이션은 이 시스템 계층 위에서 여러가지 기능을 가지고 동작하는 프로토콜(HTTP, FTP등) 및 응용 서비스를 제공하는 역할은 한다.

서버의 시스템 구조도 이 IT 시스템 구조를 기본적으로 따르고 있기 때문에, 결국 안전한 서버 보안이란 이 IT 시스템의 세가지 계층의 보안, 즉 네트워크 보안, 시스템 보안, 애플리케이션 보안이 모두 안전하게 구축된 것을 의미한다.

웹 보안의 핵심 = 애플리케이션 보안

125

그럼 이해를 좀더 돕기 위해 이론적인 얘기에서 현실로 돌아가 웹보안과 관련된 IT 시스템의 각 계층별 보안이 실제로 어떻게 구축 되는지 살펴보자.

네트워크 보안을 위해서는 안전하지 않은 IP나 Port에 대한 접근 제어가 필요하고, 허용한 IP나 PORT로 들어온 트래픽에 대해서도 유해성 여부를 체크할 필요가 있다. 이를 위해 대부분의 기업은 방화벽(Firewall)과 침입탐지/방지시스템(IDS/IPS)를 구축한다. 하지만 방화벽의 경우 허용된 IP 나 Port 로부터의 공격은 막을 수 없고, 또 IDS/IPS에서 이루어지는 네트워크 계층에서의 유해성 검사는 애플리케이션 계층에 대한 이해가 없이 이루어지기에 애플리케이션 취약성을 노린 공격에 대해서는 방어가 불가능하다는 한계가 있다.

시스템 보안은 대부분 O/S 와 연관된 항목이 많다. Windows, Linux, Unix 등의 O/S에 대한 개발 및 제공을 담당하는 제조업체들은 자사의 시스템에 대한 주기적인 보안 업데이트 및 패치를 통하여 알려진 웹 위협에 대하여 대비하고 있다. 기업의 보안 담당자는 보안 업데이트 및 패치뿐만 아니라, 주기적으로 시스템 악성코드 점검을 통하여 시스템을 항상 안전한 상태로 유지해야 한다. 이를 위해 기업들은 주로 안티 바이러스 솔루션을 구축한다.

여기까지의 네트워크 및 시스템 보안에 대한 설명을 보고 느꼈겠지만, 대부분의 기업이 네트워크나 시스템 보안에 대해서는 이해를 하고 있고 이에 따른 보안을 구축하려고 노력한다. 하지만 애플리케이션 보안으로 들어가보면 상황은 그렇지 않다. 애플리케이션 계층은 네트워크 계층이나 시스템 계층에 비해 다양화 되어 있고, 애플리케이션의 종류도 많기 때문에, 대부분의 보안 관리자들이 보안을 적용함에 있어 많은 어려움을 겪는다. 이는 웹보안을 구축함에 있어서도 마찬가지이다. 하지만 아이러니하게도, 웹보안에 있어 그 중요도가 가장 높은 것은 애플리케이션 보안이다.

우리가 일반적으로 이용하는 웹은 모두 애플리케이션으로 구성이 되어 있다. 웹사이트, 모바일앱 등은 모두 애플리케이션으로 구성이 되어 있고, 이를 타겟으로 공격하는 웹 공격 또한 애플리케이션의 취약성을 이용한 애플리케이션 공격이 대부분이다. SQL Injection, XSS과 같은 유명한 웹 공격도 결국 모두 웹 애플리케이션인 웹사이트의 취약성을 노린 공격이고, 웹쉘이라고도 불리는 웹 기반 악성코드 또한 php등으로 구성된 웹 애플리케이션이다. 웹보안 업계에서 유명한 OWASP(The Open Web Application Security Project)에서 선정한 Top 10 웹취약점 또한 모두 웹 애플리케이션 공격이다. 즉, 현재 이루어지고 있는 웹공격의 90% 이상은 모두 웹 애플리케이션을 노린 공격이라고 해도 과언이 아니다. 결국 안전한 웹보안을 구축하고자 한다면 안전한 웹 애플리케이션 보안 구축이 필연적이다.

웹보안에 있어 가장 중요도가 높은 애플리케이션 보안임에도 정작 그 애플리케이션 보안은 어떻게 보안을 구축해야 하는지에 대한 어려움 때문에 적절한 보안이 이루어지지 않고 있다.

다음 글에서는 이러한 어려움을 해결해주기 위해 애플리케이션 보안을 집중 분석하여, 안전한 웹 애플리케이션 보안을 구축하려면 어떻게 해야 하는지, 살펴보고자 한다.

토큰화 기술

토큰화(Tokenization) 기술이란

토큰화 기술이란

토큰화 기술은 보호할 데이터를 토큰(Token)으로 치환하여 원본데이터 대신 토큰을 사용하는 기술이다. 이 기술은 개인정보의 유출 위험이 있는 전송 과정과 저장 단계에서 개인정보 데이터를 치환한 토큰 데이터만을 전송하고 저장함으로서 개인정보를 보호하는 접근법이다.

신용카드 번호를 예로 토큰화 기술이 어떻게 구성되는지 살펴보자.

신용카드를 소유하고 있는 소비자가 상점에서 신용카드를 제시하면(1), 상점의 단말기(POS; Point Of Sale)는 토큰 서버에게 암호화된 통신 채널을 통해 신용카드 번호를 전송한다.
신용카드번호를 수신한 토큰 서버는 신용카드번호를 대체할 수 있는 토큰 데이터를 생성하여 토큰 데이터와 신용카드번호의 쌍을 내부의 저장소에 저장하고(2)토큰 데이터를 상점 단말기에게 알려준다(3).
상점의 단말기는 카드번호를 이용하는 응용 서버에게 토큰 번호를 전달하고(4), 응용 서버는 데이터 처리 시 신용카드번호를 대체한 토큰 번호를 이용하게 된다(5).
토큰 번호와 연결된 실재 신용카드번호가 필요할 때에는 토큰 서버에게 요청하여 신용카드 번호를 확인할 수 있다.(6, 7, 8, 9).


그림 1. Tokenization 기술 개념도

토큰화 기술의 큰 장점은 보안이 비교적 취약한 상점의 단말기 내부에 신용카드번호가 저장될 필요가 없다는 것이다. 더불어 분산 저장되는 개인정보들이 토큰 서버에 통합 관리됨에 따라 보안 노력을 토큰 서버에만 집중하면 된다는 장점이 있다. 반면에, 개인정보가 토큰 서버에 집중되기 때문에 토큰 서버의 보안 취약점으로 인해 정보가 유출될 경우 큰 피해가 발생할 수 있다는 단점이 있다.

■ 토큰 생성에 대한 요구 사항

암호화에서 키 관리가 핵심인 것처럼 토큰화 기술에서는 토큰의 안전성이 핵심이다. 토큰 생성 시 토큰으로부터 어떠한 정보도 얻을 수 없어야 하며, 서로 다른 개인정보는 서로 다른 토큰으로 대체되어야 한다. 더불어 기존 업무시스템에 용이하게 적용할 수 있도록 토큰은 개인정보와 같은 형태를 가지는 것이 보통이다. 예를 들어, 신용카드번호인 16자리 숫자의 토큰은 12자리 난수와 신용카드번호 중 4자리를 합한 것을 사용한다.

개인정보보호법의 발효로 기존 업무시스템에서 개인정보를 보호하기 위한 요구가 증가하고 있는 상황에서, 토큰화 기술은 데이터의 속성(길이, 형식, 데이터타입)을 유지하며 데이터를 보호할 수 있는 기술로 인식되며 알려지기 시작했다.


그림 2. Tokenization 기술 개념도

■ 토큰화 기술의 안정성

이러한 특징으로 인해, 데이터 보호를 위한 이상적인 모델처럼 보이지만, 결국 개인정보를 토큰으로 치환하는 것이기에 토큰 생성 시 그 보안성과 안전성이 핵심 요소로 간주된다. 그런데 일부 회사들은 데이터의 속성을 유지하기 위해 보안도가 낮은 의사난수 생성기(WPRNG;Weak Pseudo-Random Number Generator)로 토큰을 생성하고 있다. 이 방법은 개인정보와 동일한 속성의 난수를 생성하기 위해 암호화 키를 사용하지 않는 단순변환을 사용하는데, 이는 안전성이 없을 분만 아니라 서로 중복되는 의사난수를 생성할 수도 있어 개인정보 유추가 가능하다. 일부 회사들은 이러한 보안도가 낮은 의사난수 생성 방법으로 만든 토큰을 암호화 DB와 별도의 토큰 서버에 개인정보와 함께 보관하면서, 암호화DB의 ‘보안성’을 강조하고 토큰의 안전성에 대해서는 검증을 회피하고 있다.

그렇다면 안전한 기술을 사용하면서 토큰화 기술을 적용할 수 있는 방안은 무엇일까. 그 해답은 암호화 알고리즘 레벨의 속성유지 암호화 방법(FPE;Format Preserving Encryption)을 적용하는 것이다. FPE는 데이터의 속성(길이, 형식, 데이터타입)을 유지하면서 암호화하는 가장 안전하고, 유일하게 검증된 방법으로 알려져 있다. FPE는 암호화 알고리즘이기 때문에 개인정보에 따라 다른 암호화 키를 사용할 수 있으므로 더욱 안전도를 강화할 수 있을 뿐만 아니라, 토큰과 암호화 키로부터 개인정보를 복호화할 수 있기 때문에 토큰과 개인정보를 별도의 토큰 서버에 저장하고 관리할 필요가 없다.


그림 3. 토큰화 기술에 따른 DB 암호화 보안도 비교

정리하자면, 보안도가 낮은 의사난수 생성기(WPRNG)는 암호화 키를 전혀 사용하지 않고 통계학적인 난수성만 가지기 때문에 보안 측면에서 매우 취약한 반면, 속성유지 암호화 방법(FPE)은 블록 암호화에 기반하여 블록 암호화의 운영기법(mode of operation) 형태로 적용되기 때문에 블록 암호화와 동일한 수준의 보안도를 가지며 현실에서 추구할 수 있는 최선의 방법이라고 할 수 있다.

 

기업 네트워크 구성 및 웹 위협 유형

[웹 보안의 정석 1편] 사이버 공격? 웹 보안이 핵심

웹 보안의 중요성

 

우리가 일반적으로 인터넷이라고 알고 있는 웹은 과거에는 PC가 있는 장소에서만 사용할 수 있었지만, 스마트폰이 개발된 이후에는 장소에 구애받지 않고 스마트폰을 통해서도 사용할 수 있게 되었다. 여기까지는 많은 사람들이 알고 있는 내용이지만, 인터넷 익스플로러, 크롬, 사파리와 같은 인터넷 브라우저 뿐만이 아니라 카카오톡, 라인, 다음 카페, 모바일 게임 등과 같은 모바일앱들 또한 모두 웹을 통해 통신이 이루어지고 있다는 사실을 알고 있는 사람은 그리 많지 않다. 스마트폰에서 사용되는 모바일앱들은 각각 모양은 다르지만, 모두 기존의 인터넷과 동일한 웹을 기반으로 통신하고 있다.
결국 우리가 사용중인 스마트폰이나 태블릿의 통신은 모두 웹을 통해 이루어지고 있고, 이런 모바일 기기들이 대중화된 지금, 웹은 더이상 우리와 뗄레야 뗄 수 없는 관계가 되었다.

웹의 대중화와 더불어 기존의 오프라인 서비스들도 하나둘씩 온라인 서비스를 지원하게 되었고, 그 결과, 현재는 인터넷 뱅킹과 같은 금융 거래부터 등록증 발급 등의 민원 처리까지, 다수의 업무들이 모두 웹을 통해 서비스가 가능해졌다. 웹은 기존의 편리한 서비스라는 개념에서 벗어나 이제 우리 생활의 일부가 되었다.

하지만 웹이 대중화 되고, 많은 기업들이 웹을 통해 서비스를 제공하면서 기업의 자산을 노리는 사이버 공격 또한 웹을 주요 타겟으로 삼게 되었다. 이는 최근 이슈가 되고 있는 해킹들이 대부분 웹을 통해 이루어지고 있는 사실을 통해서도 확인할 수 있다. 웹은 기업의 중요 자산으로 연결되는 통로와 같기 때문에, 웹이 공격당하는 순간 개인정보 유출, 금전적 피해, 내부 시스템 파괴등 심각한 2차 피해로 이어질 수 있다.

또한 웹 공격의 경우 검색엔진에서 조금만 검색해봐도 손쉽게 공격을 시도할 수 있는 툴과 공격 방법까지 친절히 가이드가 되어 있는 동영상들을 확인할 수 있어, 웹 공격에 대해 잘 모르는 사람도 매우 쉽게 따라할 수 있기 때문에 그 위험도는 매우 치명적이다.

많은 기업들이 네트워크 방화벽이나 IDS/IPS와 같은 네트워크 보안 장비들을 중요하게 생각하고 이를 구비함에 따라 공격자들이 시스템에 직접 접근하기는 어려워졌다. 하지만 기업이 서비스를 제공하는 통로인 웹 서비스는 열어놓을 수밖에 없고, 이는 3년간 웹 애플리케이션에 대한 침해공격이 가장 많다는 결과를 통해 웹 보안의 중요성을 깨달을 수 있다. 하지만 많은 경영자들, 보안관리자들이 늘 새로운 보안 트렌드에 대해서 궁금해하면서도 정작 이 웹 보안을 잘 구축한 경우는 많지 않다. 웹이 생활의 일부가 된 지금, 웹보안은 선택이 아닌 필수이다.

이런 웹 보안을 잘 구축하기 위해서는 먼저 웹 위협의 유형이 어떤 것들이 있고, 해당 유형으로 공격을 당했던 해킹 사례들에 대해서 이해할 필요가 있다.

웹 위협 유형

1112

위 그림은 일반적인 기업의 네트워크 구성 및 웹 위협 유형들을 보여준다.

웹 위협은 크게 외부망을 통한 1차 해킹과 내부망에서의 2차 해킹으로 분류된다.
1차 해킹을 통해 내부 시스템에 접근이 가능하도록 한 후, 내부 시스템을 통한 2차 해킹을 시도하는 식이다.

1차 해킹인 외부망을 통한 위협에는 크게 웹 서버 해킹과 내부 PC 해킹이 있다.

웹 서버 해킹은 일반적으로 웹사이트를 통해 이루어진다. SQL Injection등의 웹 공격을 통해 웹 서버를 해킹, 관리자 계정을 확보하여 내부 시스템으로 침투할 수 있는 발판을 만들 수 있다.

내부 PC 해킹은 내부 사용자의 실수로 웹사이트나 메일을 통해 악성코드가 설치되는 것이 일반적이다. 이외에 내부 PC에서 사용중인 특정 애플리케이션의 업데이트 서버가 해킹당한 경우, 이 업데이트 서버 접속을 통해 내부 PC가 해킹 당하는 경우도 존재한다.

웹 서버나 내부 PC가 감염당하게 되면, 이를 통해 기업 내부 시스템에 접속이 가능하기 때문에 DB서버나 업무 서버 접속을 통한 정보 유출, 통합 서버 존 접속을 통한 내부 시스템 장악 및 파괴등 의 내부망을 통한 2차 해킹이 발생하게 된다.

해킹 사례들을 얼핏 보면 다양한 경로를 통해 해킹이 이루어지는 것 같지만, 막상 분류를 정리해보면 이 분류를 크게 벗어나지 않는다.

웹 위협 사례

그럼 그동안 이슈가 되었던 주요 해킹 사례들을 이 유형들과 비교하여 한번 살펴보도록 하자.

2008년 2월 1000만건 이상의 개인정보 유출이 발생한 옥션 해킹 사건의 경우, 웹을 통한 웹 서버 해킹 후 DB 서버에 접속, 개인정보를 유출한 것으로 밝혀졌다.
(출처 : 전자뉴스 ‘[100대 사건_077] 대규모 개인정보 유출 사고 <2008년 2월>’)

2011년 7월 3500만건의 개인정보가 유출되었던 네이트(SK 컴즈) 해킹 사건의 경우, 해킹된 알집 업데이트 서버에 웹을 통해 접속한 내부 PC들이 감염되고, 이 내부 PC로부터 DB 서버 접속을 통해 개인정보가 유출된 것으로 밝혀졌다.
(출처 : ZDNET ‘네이트 해킹…네티즌 정보 거의 다 털렸다’)

2012년 5월 200만건의 개인정보 유출이 발생한 EBS 해킹 사건의 경우, 웹사이트 게시판 취약점을 통한 웹 서버 해킹(웹을 통한 웹쉘 업로드)을 통해 공격이 이루어졌다.
(출처 : 이데일리 ‘EBS, 홈페이지 해킹으로 400만 회원 개인정보 유출’)

또 최근에 금융, 언론사 해킹으로 크게 이슈가 되었던 2013년 3월 20일에 발생한 3.20해킹의 경우에는 1차 해킹 방식으로 웹을 통한 웹 서버 해킹 및 내부 PC 해킹 방식이 모두 사용된 것으로 추정된다. 먼저 웹사이트 게시판 취약성을 이용한 웹서버 해킹으로 1차 및 2차 C&C(명령제어) 서버를 확보하였고, 동시에 악성코드를 통해 목표 기업의 내부 PC를 감염 시킨 것으로 확인되었다. 다음으로는 C&C 서버를 통해 내부 정보 수집을 위한 추가 악성코드를 감염시킨 내부 PC에 배포하였고, 그 후 업데이트 관리서버를 감염시켜 파괴 악성코드를 배포, 기업 내부 시스템을 파괴하였다.
(출처 : NSHC ‘3.20 사이버테러 사고 분석 보고서’)

웹보안 위협의 유형 및 최근 사례들을 살펴보았는데, 여기서 확인할 수 있듯이 최근 이슈가 되었던 사이버 공격들의 경우 모두 웹을 통해 공격이 이루어지고 있다는 것을 알 수 있다.

우리는 이어지는 연재 기사들을 통해 웹 보안을 잘 구축하기 위해 보안 담당자들이 꼭 알아야 할 정보들을 공유하고, 기업내 웹 보안을 잘 구축할 수 있도록 도와줘 보다 신뢰할 수 있는 열린 웹 공간을 만드는데 일조하고자 한다.