제 5 절 User-Provided Network

모바일 단말 보급의 확산 및 멀티미디어 서비스의 다양화, 품질화로 인하여 모바일 데이터가 폭증하고 있다. 현재, 이를 해결하기 위한 차세대 무선 네트워크 기술에 대해 다양한 연구가 이루어지고 있으며, 이 중 UPN (User-Provided Network)이 중요한 기술로 주목 받고 있다.

그림 2-8. User Provided Network 개념도

UPN이란, 개인이 마치 작은 무선 인프라 운영자 (호스트)가 되어 다른 사용자(클라이언트)에게 인터넷 연결을 제공해 주는 네트워크를 의미한다 [그림1-8]. 사용자마다 트래픽 요구와 가용한 네트워크 자원은 제각각 다르며 시변하는 특성을 갖는다. 여기서 발생하는 개인의 잉여 네트워크 자원을 손실하지 않고 저비용으로 다른 사용자들과 공유하는 것이 UPN의 기본 철학이다. 친숙한 예로 스마트폰의 테더링 서비스가 있다. UPN은 호스트가 클라이언트에게 게이트웨이로써 인터넷 연결을 직접 제공해줄 수도 있고, 릴레이를 통해 간접적으로 제공해줄 수도 있다. 또한 셀룰러, 와이파이, 블루투스 등 네트워크 인터페이스에 구애 받지 않는 특성을 지닌다.

UPN의 주요한 장점은 네트워크 커버리지 확장과 인터넷 엑세스 공유를 통한 통신 비용 절감이다. 클라이언트는 접근 권한이 없던 무선자원을 (예; 타인의 와이파이) UPN에 참여함으로써 값싼 비용으로 이용할 수 있다. 이는 미래에 IoT 단말 개수가 증가할수록 더욱 강력한 효과를 발휘할 것이다. 또한, 클라이언트가 사용 가능한 무선 자원이 많아지기 때문에 원하는 링크를 선택 혹은 다중 사용을 통하여 고품질의 서비스를 받을 수 있게 된다. 마지막으로, 시공간에 따라 발생하는 트래픽 부하 불균형을 분산시켜줄 수 있다.

UPN은 크게 두 가지 기준에 의하여 구분된다. (i) 먼저 호스트가 고정된 위치에 있는 경우 혹은 이동성을 가진 경우다. 호스트가 고정된 대표적인 UPN 서비스는 FON으로, 가정에서 사용하는 와이파이 AP를 모든 FON 가입자와 공유한다. 클라이언트의 호스트 AP 사용 조건은 자신의 개인 와이파이 AP도 오픈 하는 것이다. 이후로 Openspark, Whisher, KeyWiFi 등 많은 와이파이 공유 스타트업이 생겨났다. 호스트가 이동성을 가진 경우는 모바일 단말이 호스트가 되는 경우로 Karma와 Open Garden이 이에 속한다. Karma는 호스트가 와이파이 링크를 통해 클라이언트에게 셀룰러 네트워크를 제공한다. Open Garden은 사용자들 간에 모바일 메쉬 네트워크를 구성하여 네트워크 자원 풀을 만들고, 높은 자유도의 자원 할당과 3-hop 이상의 전송이 가능한 특성을 가진다. (ii) 다음은 UPN을 제어하는 operator가 있는 경우 혹은 사용자들이 자율적으로 UPN을 구성하는 경우로 나뉜다. Operator는 UPN을 구성하는 호스트의 보상, 클라이언트의 지불 비용 등을 제어하여 UPN을 활성화 시키고 중간 수익을 창출한다 (예; Karma). 반대로 Operator가 없는 경우 사용자는 메쉬 네트워크를 구성해주는 별도의 소프트웨어를 설치하여 자발적으로 UPN에 참여한다 (예; Open Garden).

FON, https://fon.com

Openspark, https://open.sparknet.fi/

Whisher, https://whisher.com/

KeyWiFi, http://keywifi.com/

Karma, https://yourkarma.com/

Open Garden, http://opengarden.com/

UPN의 시너지를 끌어내기 위해서는 최적의 네트워크 자원 관리가 필요하다. 이는 호스트, 클라이언트의 데이터 요금, 에너지 소모, 사용자의 QoE, 링크 간 간섭 등이 모두 고려되어야 한다. 하지만 UPN 시스템이 활성화되기 위해서는 무엇보다 사용자의 적극적인 참여가 필요하다. 클라이언트에게 인터넷 연결을 제공하기 위해 호스트는 비용 (데이터, 에너지)을 소모하기 때문에 이를 보상해 주는 인센티브 메커니즘이 없다면 호스트의 자발적 참여를 유도할 수 없다. 인센티브는 사용자 간 서비스 교환으로 이루어질 수도 있으며, operator와 사용자 사이에 금전 혹은 서비스 보상으로 이루어질 수도 있다. 인센티브에 고려되어야 하는 요소는 호스트가 서비스 해줌으로써 발생하는 데이터 및 에너지 비용뿐만 아니라, (호스트도 트래픽 요구가 있는 경우) 본인의 QoE 저하도 포함되 어야 한다. 현재 서비스 중인 UPN 사업은 대부분 인센티브 메커니즘이 없거나 빈약하기 때문에 보완이 필요한 상황이다.

그림 2-9. User-Provided Network의 고려 대상과 기대효과

UPN이 차세대 네트워크 기술로써 인정받기 위해서는 짚고 넘어가야 할 이슈들이 존재한다. 먼저, UPN에 참여하기 위해서는 주변 사용자를 주기적으로 탐색해야 하기 때문에 지속적인 에너지 소모가 발생한다. 에너지 효율적인 단말탐색은 해당 지역의 정보를 가지고 있는 operator의 개입을 통해 이루어질 수 있을 것이다. 또한, UPN은 호스트가 클라이언트의 데이터를 전달하기 때문에 정보 보안 측면에서 문제가 생길 수 있다. 이러한 문제를 해결하기 위하여 Hotspot 2.0을 포함한 표준에서 이 문제를 다루고 있다. 마지막으로, 호스트와 클라이언트가 이동하기 때문에 네트워크 토폴로지가 자주 변하게 된다. 이로 인한 네트워크 채널 변화 및 단절에 빠르게 적응하여 사용자의 QoE 저하를 야기 시키지 않는 시스템 아키텍쳐가 필요할 것이다. 이를 위해서는 토폴로지의 실시간 정보를 중앙 수집하고 라우팅을 빠르게 바꿀 수 있는 SDN(Software-Defined Networking) 기술이 적합할 수 있으며, 최근 SDN에 기반한 모바일 UPN 테스트베드를 구축한 사례가 있다.

D. Syrivelis et al., “Bits and Coins: Supporting Collaborative Consumption of Mobile Internet”, Proceeding of IEEE INFOCOM, Apr. 2015

제 6 절 IoT 환경에서의 프라이버시 및 보안 기술

사물 인터넷(IoT) 시대에는 ‘인터넷 연결된 카메라’(Internet-connected camera), 홈 자동화 시스템, 커넥티드 자동차(connected car), 스마트 밴드 등의 매우 다양한 사물들이 인터넷에 연결되어 데이터를 송수신하게 된다. 전망에 의하면 올해에 250억 개의 장치가 연결되고 2020년까지 500억 개의 장치가 연결될 것이라고 한다. IoT 산업이 확대되면서 보안위협, 데이터 프라이버시, 접근 관리 등의 도전적 이슈들도 나타나고 있다 [그림1-10]. IoT 시대에 더 많은 장치가 네트워크에 연결될수록 IoT 장치 개수, 상호연동성 및 이동성 등에 비례하여 공격표면(Attack surface)이 증가하므로 보안 요구사항도 복잡해지고 보안 위험도 증대되고 있다.

FTC (Federal Trade Commission) Staff Report, “internet of things, Privacy & Security in a Connected World,” January 2015

Internet of Things (IoT) Challenges for CIOs, Janco Associates, Inc., May 2014

Md. M Hossain, M. Fotouhi, and R. Hasan, “Towards an Analysis of Security Issues, Challenges, and Open Problems in the Internet of Things,” 2015 IEEE World Congress on Services, June 27-July 2 2015

그림 2-10. IoT Challenges for CIOs

업무 과정(Business process)에서 보안 요구사항은 공격에 대한 저항성(Resilience to attacks), 데이터 인증(Data authentication), 접근제어(Access control), 클라이언트 프라이버시 등으로 기술된다. 또한, IoT를 위한 높은 수준의 보안 요구사항은 안전한 네트워크 접근, 안전한 데이터 통신, 가용성(availability), 사용자 식별, 신원 관리 (identity management), 변조 방지, 안전한 SW 실행, 안전한 콘텐트, 안전한 스토리지 등이라고 볼 수 있다. Hossain 등은 IoT 보안 요구사항을, (1) 무결성(integrity), 정보보호, 데이터의 출처를 은닉하는 익명성 (anonymity), 부인방지(non-repudiation), 각 메시지의 freshness 등을 포함하는 정보보안 요구사항(Information security requirements), (2) 사용자/기기 인증, 허가된 장치와 사용자만이 네트워크 서비스/자원을 접근할 수 있도록 보장하는 인가(authorization), 인증된 IoT 노드는 인가된 서비스/자원들만 접근할 수 있도록 보장하는 접근제어 등을 포함하는 접근 레벨 보안 요구사항(Access level security requirements), (3) 예외처리, 가용성, 강인성(resiliency, 공격자에 의해 몇몇 내부 IoT 장치가 장악당하더라도, 보안 기법이 여전이 유효한 능력), Self organization(어떤 IoT 장치가 실패하거나 전원이 나가더라도, 남은 장치들이 일정 수준의 보안을 유지하기 위

S. Babar, P. Mahalle, A. Stango, N. Prasad, and R. Prasad, “Proposed Security Model and Threat Taxonomy for the Internet of Things (IoT),” Recent Trends in Network Security and Applications, Vol. 89, pp. 420-429, 2010

해 재구성되는 능력) 등을 포함하는 기능 보안 요구사항(Functional security requirements) 등 3가지로 기술하였다.

그림 2-11. IoT 공격 표면

한편, 정보보안은 비밀성(confidentiality), 무결성, 가용성 등의 특성과 밀접한 관련이 있다. 정보보안은, 레코드 및 파일들에 대한 비인가적인 혹은 우연한 변경/파괴/노출/손실/접근을 방지하는 것뿐만 아니라 정보 자산의 손실/파괴/오용을 방지하는 것도 포함하며, 합법적인 데이터 사용을 보장하는 것이라고 볼 수 있다. 정보보안은 위협으로부터 시스템이나 자산을 보호하는 것으로 정의될 수도 있다. 즉, 보안을 논하려면 어떤 위협이 존재하는 지를 파악하는 것이 중요하다. 이에 마이크로소프트사는 데스크톱 기반 인터넷 환경에서 6가지 대표 위협을 그림1-12과 같이 제시하였다. 각 위협에 대응하는 보안기법(또는 보안메커니즘)도 정리하여 그림1-12에 제시하였다. 위협모델 및 대응 보안 기법은 관점/시각에 따라 일부 차이가 있을 수 있다. 예로, 정보손상 레벨에 기반한 공격 관점에서는 공격(위협)을 가로막기(interruption, 전력정전, 서비스다운, DoS 등의 공격), 중간자 공격(man-in-the-middle attack, 두 노드 사이의 통신을 가로채는 공격), 도청(eavesdropping), 변경(alteration, 변조), 위조(fabrication), 메시지 재생(message replay, 메시지 재전송 공격으로 message freshness 요구사항에 대한 위협) 등으로 분류하기도 한다.

James M. Anderson, “Why we need a new definition of information security,” Computers & Security, Vol. 22, No. 4, May 2003

Microsoft, Improving Web Application Security: Threats and Countermeasures (Ch2: Threats and Countermeasures), June 2003. (https://msdn.microsoft.com/en-us/library/ff649874.aspx)

그림 2-12. Microsoft사의 위협모델 및 보안 기법

데스크톱 환경에서와 유사하게, IoT 환경에서 주요 이슈인 보안 및 프라이버시 위협에 대해 살펴보자. 수많은 장치가 연결되면서 IoT 시대에 다양한 잠재적인 보안 위협이 증대되고 있는데, Babar 등은 IoT와 관련된 다양한 위협을 다음과 같이 분류하였다[그림 1-13]. 첫째는 식별/신원관리 관련 이슈로, 인증, 인가, 어카운팅 (accounting) 및 권한설정(provisioning)과 함께 유일한 장치/사용자/세션으로 구별하여 관리하는 것이다. 둘째는 통신 위협으로 DoS, 속임(spoofing), 중간자 공격(man-in-the-middle attack) 등과 관련되어 있다. 셋째는 물리적 위협으로 하드웨어 컴포넌트를 직접 변조하거나 역공학할 수 있는 위협이다. 넷째는 임베디드 보안 위협으로 물리계층 및 MAC 계층과 관련이 있으며, 해커에 의한 위조/가짜 장치의 설치 가능성, 장치 및 데이터 변조, 부채널 분석(side channel analysis), bus monitoring 등의 보안 위협을 포함한다. 다섯째는, 스토리지 관리 이유로 비밀성과 무결성 특성과 큰 관련이 있다. 또한 어떤 암호 컴포넌트를 선정하고 암호화 키 관리는 어떻게 하는 것이 효과적인지를 결정하는 문제이다.

그림 2-13. IoT용 위협 분류

Federal Trade Commission (FTC) staff report는 대표적인 IoT 보안 위협을 다음 3가지로 분류하고 있다. 첫째, 개인정보에 대한 비인가 접근 및 오용(misuse) 위협의 증대다. 어떤 회사는 IoT 기기를 통해 수집된 개인정보를 신용평가/보험가입/고용여부 판단 등에 사용할 수도 있다. 인터넷 쇼핑.결제 기능을 가진 스마트 TV에 취약성(vulnerability)이 존재하다면, 패스워드, 신용카드정보, 사진 등의 정보가 공격자에 의해 탈취될 수 있다. 댁내에 보안이 취약한 많은 사물들이 설치될수록 공격자가 악용할 수 있는 취약성 및 대상이 증대되며 개인정보 노출 위험도 높아진다. 둘째, 타 시스템으로의 공격이 용이하다. 특정 장치에서의 보안 취약성은 그 장치에 연결된 사용자의 네트워크에 대한 공격 위험을 증대시킨다. 공격자에 의해 장악된 IoT 장치는 DoS 공격을 유발하는데 사용될 수 있으며, IoT의 취약성으로 인해 공격자는 DDoS 공격에 활용할 수많은 사물들을 확보하는 것이 용이하다. 셋째, 안전(safety)에 대한 위험도 증대되고 있다. 네트워크로 연결된 인슐린 펌프를 해킹할 수 있으며, 자동차에 물리적 접근 없이 자동차의 내부 컴퓨터망을 불법 접근하고 내장형 텔레매틱스 기기를 해킹하고 엔진과 브레이크를 제어할 수 있다. 인터넷에 연결된 베이비 모니터에 대한 불법 접근, 사용자의 위치를 트래킹하는 헬스기기 및 타 장치에 의해 수집된 데이터에 대한 불법 접근 등도 안전에 위협적이다. 도둑이 스마트 미터(meter)를 통해 에너지 사용량 데이터를 원격 접근하여 집이 비었는지를 확인할 수도 있다는 점도 위협이 된다.

다음 두 가지 이유로 인해 IoT 장치에 대한 보안이 홈 컴퓨터에 대한 보안보다 더 도전적이며 악조건이다. 첫째는 IoT 마켓으로 진입하는 회사들이 보안 이슈들을 다루어 본 경험이 적거나 없다는 것이고, 둘째는 대부분의 IoT 장치는 값싸며 정교하지 않고 사용 후 버리게 되는 일회용이라는 것이다. 이러한 경우, 제조/설치 후에 취약점이 발견되더라도 소프트웨어를 업데이트하거나 패치를 적용하기 어렵거나 불가능하다. 업데이트가 이용 가능하더라도 많은 소비자들은 그것에 대해 귀 기울이지 않을 수 있다. 저가 장치를 개발하는 많은 회사들은 지속적인 지원이나 소프트웨어 보안 업데이트를 제공하는데 관심이 없어, 소비자는 구매 후에 곧바로 서비스를 제공받을 수 없거나 취약한 장치를 사용하게 될 가능성이 있다.

이러한 위협을 고려하여 IoT 제품에 적합한 보안 기능/기법을 구현해야 한다. 위협의 우선순위, 수집되는 데이터의 양과 중요도(민감도), 보안 취약성을 완화하는 비용 등을 고려하여 다음과 같이 IoT 보안을 구축하는 것이 필요하다. 첫째, 사후가 아닌 IoT 생명주기(life cycle) 처음부터 사물에 보안 기능을 구축해야 한다. 요구사항 분석 및 설계 과정에서 보안을 고려하기 위해 (1) 프라이버시 및 보안 위험평가를 수행하고, (2) 사물들이 수집하고 유지하는 데이터양을 최소화하며, (3) 제품을 론칭(launching)하기 전에 보안 대책의 적합성을 검토해야 한다. 둘째, 시스템 내에 중요한 보안위험이 식별되면, 심층적인 접근법(여러 레벨에서 보안대책)을 구현해야 한다. 하드웨어 기반의 보안기법, 시스템 소프트웨어 수준의 보안기법, 네트워크 프로토콜 각 계층에서의 보안 기법, 애플리케이션 수준의 보안 기법 등을 비교분석하여 단계적으로 보안대책을 구현하는 것도 한 방안이다. 고성능 IoT 장치나 안전이 중요한 애플리케이션의 경우에는 SE(Secure Element) 및 TEE(Trusted Execution Environment)를 사용하여 안전한 환경(Secure World)를 구축하는 것도 한 방안이다[8]. 셋째, 적절한 접근제어 대책을 구현하여, 공격자(비인가 사용자)가 소비자의 장치, 데이터, 네트워크 등을 접근할 수 없도록 해야 한다. 예로, 데이터의 민감도에 따라 일반 데이터에 대해서는 임의접근제어(DAC, Discretionary Access Control) 정책을, 높은 비밀성을 요구하는 데이터에 대해서는 강제접근제어(MAC, Mandatory Access Control) 정책을 적용하는 것을 고려해 볼 수 있다. 또한 접근제어의 대상/단위를 세분화하여 최소권한(Least Privilege) 원칙을 준수하게 하는 것도 필요하다. 넷째, 생명주기 내내 제품을 모니터링하면서 알려진 취약점을 패치해야 한다. 다섯째, 회사는 전 직원에게 보안 교육을 수행해야 한다. 여섯째, 회사는 적절한 보안을 유지할 수 있는 서비스 제공자를 보유해야 한다.

이 외에도 저전력 암호화 및 효율적이면서 경량의 장치 간 인증 기법 등을 설계.도입하는 것이 좋다. IoT 장치 중에서 웨어러블이나 모바일 기기의 경우 배터리 수명이 매우 중요하므로, 저전력 암호화 기술을 고려할 필요가 있다. 또한, 수많은 IoT 기기들 간에 공격자가 설치한 가짜 기기도 존재할 수 있으며 이미 공격자에 의해 장악이 된 좀비 IoT 기기도 존재할 수 있다. 이에 안전한 통신이나 정보 교환을 위해, 신뢰되는 기기들 간의 인증 기법을 개발할 필요가 있다.

Arijit Ukil, Jaydip Sen, and Sripad Koilakonda, “Embedded Security for Internet of Things,” 2nd National Conference on Emerging Trends and Applications in Computer Science (NCETACS), March 2011

이상으로 IoT 환경을 고려한 보안 요구사항, 보안 위협, 보안 기법 등의 이슈에 대해 간단히 살펴보았다. 본고에서 기술한 내용들은 IoT 보안의 개요에 해당되는 내용으로, 구체적인 사항이나 추가적인 이슈는 관련 연구들을 통해 파악하는 것이 필요하다.

제 3 절 IoT 시대의 네트워크 보안 기술

네트워크 구조 패러다임이 날로 변화하고 있다. 이에 따라 IoT기기, 데이터, 자원 소유자, 관리자, 접근 요청자 등 인터넷 주체 또한 다양해지고 있다. 이러한 현상으로 프로토콜이나 네트워킹 서비스가 활발하게 발전되고 연구가 이루어지고 있고, 이에 대한 보안 요구도 높아지고 있다. 이를 기반으로 다양한 네트워크 환경에서 보안에 관한 연구가 어떻게 이루어지고 있는지, 이에 대한 취약 사례나 해결 방안 등에 대해 6가지 카테고리를 가지고 설명한다.

1. SDN을 이용한 네트워크 보안 서비스

가. SDN을 이용한 네트워크 보안 서비스

SDN (Software-Defined Networking)은 최근 많은 각광을 받고 있는 미래 네트워크 기술 중의 하나이다. 본 문서에서는 SDN의 기본 개념과, 이와 관련한 연구 동향을 살펴보고, 실제 이 기술 방식을 인터넷에 적용 하는 방법에 대해서 알아 볼 것이다. 그리고, 이렇게 SDN 기술을 인터넷에 적용할 경우, 발생하는 문제들에 대해 살펴볼 것이다.

가. SDN 기본 개념

SDN은 2008년 스탠포드 대학과, 버클리 대학이 공동으로 미래 네트워크 기술을 연구하면서 등장한 기술로, 기본 개념은 기존의 장비 종속적이고 분산 되어 있는 네트워크 제어/관리가 아닌, 특정한 API/프로토콜(예; OpenFlow)를 통하여 소프트웨어 기반 컨트롤러 기반 중앙 집중형 네트워크 제어/관리를 말한다. SDN은 제어 계층(Control plane)과 전송 계층(Data plane)으로 나뉘어 져있다. 전송 계층에서는 실질적인 트래픽 전송을 수행하며, 제어 계층에서는 전송 계층에서 트래픽을 어떠한 방법으로 처리할 것인가를 제어 해주는 역할을 수행한다. 이 제어 프로토콜만 맞추어 준다면, 네트워크 장비들의 세부 구성정보에 얽매이지 않고 실질적인 네트워크 요구사항에 따라 네트워크를 관리할 수 있게 된다.

나. SDN 관련 연구 동향

(1) OpenFlow

OpenFlow는 제어 계층과 전송 계층간의 제어 채널에서 사용되는 de-facto 프로토콜로서 네트워크 트래픽들을 흐름(Flow)단위로 처리할 수 있도록 match-actions 기반으로 동작한다. match항목에는 각종 프로토콜 헤더들(예; Ethernet, IP, TCP등)을 검사할 수 있는 항목들이 정의되어 있으며, actions 항목에는 일치된 항목들이 어떠한 형식으로 동작할 것인지를 정의 한다. 또한 해당 흐름들의 간단한 통계정보도 기본적으로 제공해준다.

(2) 네트워크 기능 가상화(Network Function Virtualization, NFV)

SDN이 급부상함에 따라 NFV기술 역시 재조명되었다. 네트워크 기능들을 가상 장치들을 이용하여 가상화 시킨다는 기술은 SDN이 부각되기 이전부터 제시되어 왔었으나, 네트워크 트래픽들의 제어의 어려움 때문에 크게 주목받지는 못하였다. 하지만 SDN의 등장으로 인하여, 트래픽들의 제어가 훨씬 간편해진 덕택에 NFV기술의 활용성이 급격하게 증가하였다. NFV를 이용하면 기존에 장비로서 존재하던 다양한 네트워크 기능들을 소프트웨어를 통한 가상화로 지원하기 때문에, 물리적인 네트워크 위상(Topology)이 간소화되고, 유지보수 비용또한 대폭 줄어들 수 있다. 또한 새로운 기술이 등장하더라도, 기존 하드웨어 기반의 장비와는 다르게 손쉽게 변경하고 활용할 수 있게 된다.

다. SDN을 이용한 네트워크 보안 서비스 제공 가능성

SDN의 가장 큰 특징 중 하나는 제어 계층에서 트래픽을 제어 하는 방법들을 다양하게 정의할 수 있다는 점이다. 이를 이용하면 별도의 장비 없이도 각종 보안 기능들을 추가할 수 있다.

(1) 방화벽(Firewall)

SDN을 이용한 Security 기능 중 가장 대표적이고 효과적인 기능은 방화벽이다. 기본적으로 SDN은 어떤 패킷을 어떻게 처리할 것인지를 정의할 수 있다. SDN이 기본적으로 제공하는 Action중 Drop이 있는데, 이를 이용하면 손쉽게 방화벽을 구축할 수 있다.

또한 분산 방화벽 환경 또한 손쉽게 구현이 가능하다. 기존의 방화벽이 각 네트워크의 끝단(Edge)에서 오고가는 트래픽들만 감시하였다면, 분산 방화벽은 내부 네트워크에서도 각종 접속 제어들이 가능해진다. 기존 방화벽 장비를 일일이 링크별로 설치하기에는 비용적으로 부담이 되는 데 반해 SDN을 이용하면 장비 없이 소프트웨어적으로 구현이 가능하다. 그림 1은 SDN을 이용한 분산 방화벽을 묘사한 그림이다.

그림 3-. 분산 방화벽

(2) 리플렉터넷(Reflector Net)

SDN의 특징을 활용해서 적용 가능한 보안 기능중 하나는 리플렉터넷이다. 리플렉터넷은 악성으로 탐지된 호스트들로부터 온 패킷들을 허니팟(Honeypot)등으로 리다이렉트 시켜주는 것을 말한다. 기존 네트워크 장비들을 이용하면 이러한 기능을 구현하기 위해서는 네트워크 위상 자체의 변경이 불가피한데, SDN을 활용하면 간단하게 흐름 규칙(Flow rule)만 설치해주면 손쉽게 구현이 가능하다.

아래 그림은 리플렉터넷의 간단한 예제이다. 일반 사용자 A는 서버 C와 별다른 특징 없이 잘 통신을 주고받으나, 악성 사용자 B는 C와 통신을 하고싶어 하나, 자신도 모르는 사이에 허니팟 D와 통신을 주고받게 된다. 네트워크 관리자는 허니팟에 기록된 패킷과 로그 기록들을 보고 공격패턴등을 분석 하는 등 추가적인 이용이 가능하다.

그림 3-. 리플렉터넷

(3) NFV를 활용한 보안

상기 제시된 기능들 이외에도, 대부분의 보안 기능들을 제어 계층에 구현하는 것이 가능하다. 하지만 성능상의 문제, 신뢰도의 문제를 고려해야한다면 NFV와 함께 사용하는 것도 좋은 방법이 될 수 있다. NFV호스트 위에 여러 보안 기능을 수행하는 가상장치들을 동작시키고, 패킷들은 SDN을 통해 필요에 따라 가상 장치들을 거치게 한다면, 성능상의 문제도 다소 해결하면서 효과적인 보안을 보장할 수 있다.

그림 3은 SDN과 NFV를 결합하여 네트워크에 보안기능을 제공하는 방법의 예이다. 기존 네트워크라면 가상 장치와 결합하기 위한 스위치의 설정이 복잡한 편인데, SDN은 이러한 설정이 간단하므로 NFV를 활용하기 용이해진다.

그림 3-. SDN/NFV를 활용한 보안기능 제공

라. SDN을 이용하여 활용하였을 때 발생할 수 있는 문제점과 해결점

SDN을 활용하면 여러 보안 기능들을 손쉽게 활용할 수 있지만, 반대로 SDN이기 때문에 발생하는 몇가지 문제점도 있다.

(1) 단일 장애점 문제(Single point of failure)

SDN을 사용하였을 시 가장 큰 문제점은 단일 장애점 문제이다. 중앙 집중 제어라는 특성상 제어 계층의 컨트롤러에 문제가 발생하는 경우, 전체 네트워크에 영향을 미치게 된다. 특히 컨트롤러가 해커등에게 장악당하였다면, 이는 곧 전체 네트워크의 제어권을 해커가 가지게 된다는 말과 동일하다. 즉, 사고 발생시, 사고의 규모가 기존 전통적인 네트워크보다 커질 가능성이 높다.

이러한 문제점을 해결하기 위하여, 최근 분산 컨트롤러 환경(Distributed controller)이 적극적으로 연구되고 있다. 분산 컨트롤러는 제어를 담당하는 컨트롤러를 여러개로 분산시켜 하나의 컨트롤러에 문제가 생기더라도, 다른 컨트롤러가 그 즉시 작업을 이어서 수행할 수 있도록 하는 것으로, 대표적인 컨트롤러로 ONOS, OpenDaylihgt 등이 있다.

(2) 흐름 규칙 터널링

또 하나의 문제점은 흐름 규칙상의 맹점-우회 가능한 규칙-이 발생할 수 있다는 것이다. 예를 들어, 10.0.0.2에서 10.0.0.4의 80번 포트로 가고자 하는 패킷을 Drop 시키는 규칙이 사전에 정의 되어 있다고 가정하자.

10.0.0.2 → 10.0.0.4:80 : DROP

이때 10.0.0.2로부터 10.0.0.3의 80번 포트로 가고자 하는 새로운 패킷이 도착하였는데, 이를 컨트롤러가 내부에서 다음과 같은 과정으로 패킷을 처리를 한다고 하자.

10.0.0.2 → 10.0.0.3:80 : Modify SRC IP to 10.0.0.1

10.0.0.1 → 10.0.0.3:80 : Modify DST IP to 10.0.0.4

10.0.0.1 → 10.0.0.4:80 : Forward

이 경우, 사전에 정의 되어있던 규칙과는 상관없이 10.0.0.2로부터의 패킷이 10.0.0.4의 80번 포트로 전달될 수 있다. 이러한 터널링 문제는 사용상의 오류, 각종 SDN 내부 기능들간의 충돌로 인하여 발생할 수 있다.

이러한 문제를 해결하기 위한 대표적인 연구는 FortNOX가 있다. FortNOX는 흐름 규칙들이 설치 되기전에, 충돌 상황이 발생여부를 사전에 검사하여, 충돌이 발생할 가능성이 생기면, 규칙의 설치를 거부하는 기능을 제공한다. 이러한 기능을 이용하면 흐름 규칙 터널링 문제를 완화 가능하다.

마. 소결

SDN은 기존 전통적인 네트워크와는 다르게 매우 유연한 네트워크 구성을 가능하게 해준다. 또한 소프트웨어라는 특성상 네트워크를 용도 및 목적에 따라 적절하게 제어할 수 있는, 소위 말하는 Programmable한 네트워크 운영을 제공한다.

이러한 SDN의 특성을 이용하면, 기존에는 도입하기 어렵거나, 비용이 많이 드는 네트워크 보안 기능들을 손쉽게 활용할 수 있다. 비록 SDN자체가 지니는 단점도 있지만, 이를 해결하고 완화시키기 위한 여러 연구들이 이미 제시되어 있으므로, SDN이 지니는 가치는 더욱 무궁무진하고, 이를 활용한 보안기능들은 더욱 적극적으로 연구될 것이다.

2. 암호학적 이슈들

가. 동형 암호(homomorphic cryptography)와 그 응용

(1) 동형 암호

전통적인 암호학은 암호화를 통해 데이터의 기밀성을 보장하기도 하고, 서명을 통해 데이터가 변조되지 않았다는 것을 보장하기도 하는 등 다양한 종류의 데이터 보호를 제공한다.  다만, 이렇게 암호학적 보호를 받고 있는 데이터를 가지고 후속 처리를 하기 위해서는 일반적으로는 그 보호를 해제해야 한다.  즉, 암호화된 데이터로 무엇인가 계산을 하기 위해서는 일단 복호화 과정을 거쳐 원래의 데이터를 복구한 뒤에 이로부터 계산을 해야 하며, 서명이 되어 있는 데이터로부터 무엇인가를 계산하는 것은 충분히 가능하지만, 계산에 사용된 입력이 올바른 값이라는 것은 서명으로부터 확인이 가능하지만 계산 결과는 서명되어 있지 않으므로 그 계산 결과가 올바른 값이라는 것을 기존 서명은 보장하지 않는다.

동형 암호학(homomorphic cryptography)은 암호학적인 보호를 유지한 상태로 데이터를 처리하는 것을 가능하게 해주는 새로운 종류의 암호 기법의 총칭이다.  즉, 동형 암호화 기법을 이용하면 입력값 [eqn: x _{1} ,` LDOTS ,`x _{n}]을 입력으로 해서 어떤 함수값 [eqn: f(x _{1} ,` LDOTS ,`x _{n} )]를 계산하는 대신, 이들 입력값의 암호문 [eqn: E(x _{1} ),` LDOTS ,E(`x _{n} )]으로부터, 누구나 복호화 없이 (따라서 입력값이나 결과값이 무엇인지 모르는 채로) 결과값의 암호문 [eqn: E(f(x _{1} ,` LDOTS ,`x _{n} ))]을 계산하는 것을 가능하게 한다.  따라서, 이 암호문의 복호화 키가 있는 사용자는 이 암호문을 복호화해서 결과값이 무엇인지를 알 수 있다.

마찬가지로, 동형 서명(homomorphic signature)을 이용하면 서명된 입력값들로부터 어떤 함수값을 구할 때, 그 결과값에 대한 전자서명을 입력값의 서명으로부터 만들어낼 수 있고, 이 서명을 통해 결과값이 맞는지의 여부를 누구든 확인할 수 있다.  따라서, 원본 데이터가 없는 경우에도 원본 데이터로부터 도출된 어떤 계산값이 맞는지의 여부를 검증하는 것이 가능하다.

RSA 암호화가 곱셈에 대한 동형 암호라는 사실과, 이러한 성질을 유용한 방향으로 이용할 수 있을 것이라는 관측, 그리고 또 어떤 종류의 계산을 이렇게 암호문만 가지고 수행할 수 있을 것인가라는 질문은 이미 RSA가 나온지 얼마 되지 않은 1970년대 말경부터 나왔지만, 암호학계에서 동형 암호에 대한 연구가 폭발적으로 진행되기 시작한 것은 2009년에 Craig Gentry가 처음으로 완전 동형 암호화(fully homomorphic encryption) 방식을 제안한 뒤이다.  즉, 그는 이러한 방식으로 임의의 다항식 크기의 부울 회로(boolean circuit)를 처리할 수 있음을 보였고, 이를 이용하면 이론적으로는 임의의 효율적인 알고리즘을 입력의 암호문만을 가지고 처리하는 것이 가능해진다.

(2) 완전 동형 암호의 구성

Gentry가 완전 동형 암호를 구현한 방식은 흥미롭다.  Gentry는 우선 ‘다소 동형 암호(somewhat homomorphic encryption)'에서 출발한다.  이러한 암호화 방식에서는, 모든 암호문에 일종의 '잡음(noise)'이 포함되어 있고, 잡음의 정도가 낮은 경우에는 올바른 복호화가 가능하지만, 잡음의 정도가 어느 단계를 넘으면 올바른 복호화가 더이상 보장되지 않는다.  또한, 암호문들을 더하면 잡음은 그리 증가하지 않지만, 암호문들을 곱하면 잡음은 두 배로 증가한다.  따라서, 이러한 방식으로는 곱셈의 횟수가 로그 함수로 주어지는 매우 '얕은' 부울 회로밖에는 계산하지 못한다.  Gentry가 생각해낸 아이디어는, 만일 어떠한 동형 암호 방식이 특별히 '얕은' 복호화 알고리즘을 갖는다고 하면, 그러한 동형 암호는 스스로의 복호화 회로를 처리할 수 있을 것이고, 이로부터 임의의 암호문의 잡음의 크기를 충분히 줄일 수 있다는 것이었다.  이로부터 잡음의 크기를 제어하면서 무한정 계산을 계속하는 것이 가능해진다.

2009년에 완전 동형 암호가 개발된 이후, 많은 후속 연구를 통해 동형 암호는 점차 실용화 가능한 단계에 접근하고 있는 중이다.  아직까지도 기존의 공개키 암호화 비교해 몇 오더가 차이나는 느린 효율성을 보이고 있지만, 잡음의 증가를 보다 잘 제어하고, 또한 평문 여럿의 정보를 동시에 담은 암호문을 이용해 일종의 SIMD와 비슷한 병렬 처리를 하는 등의 방식으로 처음에 비해서 많은 속도 향상을 이루었고, 이러한 추세가 지속된다면 머지 않아 실용 가능한 방식들이 제시될 것으로 전망된다.

(3) 동형 암호의 응용 예: 클라우드 컴퓨팅

동형 암호의 다양한 잠재적인 응용 분야가 있을 수 있겠으나, 아마도 그중에서 가장 대표적인 응용은 비밀 클라우드 컴퓨팅일 것이다.  최근 각광받고 있는 개념인 클라우드 컴퓨팅은 누구든 인터넷을 통해 클라우드 제공자로부터 데이터 저장 공간 및 계산 자원을 scalable하게 구입 사용할 수 있는 서비스의 한 형태이지만, 이러한 방식은 신뢰의 문제를 근본적으로 가지고 있다.  즉, 내 데이터를 위탁 처리하는 클라우드 제공자를 얼마만큼 신뢰할 수 있는가이다.  내가 가지고 있는 데이터가 유전체 정보나 의료 정보 등 본질적으로 민감한 정보일 때에는 이는 당연히 제기되는 문제이고, 그렇지 않은 경우에도 최근 NSA가 클라우드 제공자를 해킹해서 내부 정보를 들여다본 적이 있다는 사실이 밝혀진 사례가 한 예가 될 수 있듯이, 클라우드 사용자 자체를 불신하지 않는다 하더라도 클라우드 사용자에 대한 공격자 등의 환경을 고려한다면 그 전체 생태계를 모두 신뢰할 수 있는가라는 문제가 여전히 남는다.  데이터의 기밀성을 지키는 한 가지 방법은 end-to-end encryption이지만, 클라우드 제공자로부터 저장 공간 뿐만이 아니라 계산 능력 또한 제공받으려고 하다면 이러한 암호화는 문제가 될 수 있다.  동형 암호는 정확히 이 문제를 해결해준다.  즉, 사용자는 데이터를 동형 암호화해서 클라우드에 올리고, 이후 자신의 데이터로부터 어떤 함수값을 계산하고 싶으면 이를 클라우드에게 요청하면, 클라우드는 자신이 보유한 암호문만을 이용해서 함수값의 암호문을 계산, 그 결과를 사용자에게 반환한다.  사용자는 암호문을 복호화해서 원하는 함수값을 복구할 수 있게 된다.

나. 포스트 양자 암호 연구와 포스트 양자 암호로의 전환

(1) 포스트 양자 암호

양자 컴퓨터는 양자역학적인 성질을 직접 계산에 이용하는 컴퓨터로, 고전적인 컴퓨터가 0 혹은 1 중의 한 가지 값만 갖는 비트를 단위로 계산을 수행하는데 비해, 양자 컴퓨터는 0과 1이 복소 계수로 중첩되어 있는 큐빗(qubit)을 처리하는 것이 가능하다.  그 결과, 고전적인 컴퓨터에 비해 계산의 어떤 측면을 병렬화하는 것이 가능하며, 또한 중첩된 결과에서 오답들을 상쇄시켜 정답을 찾을 확률을 올리는 등이 가능하다.  1980년대에 양자 컴퓨터에 대한 아이디어가 Benioff, Manin, Feynman, Deutsch 등에 의해 제시된 이후 양자 컴퓨터로 할 수 있는 일에 대한 많은 연구가 있어왔다.  대표적인 결과로는 n개의 상자 중 하나에 숨겨진 하나의 공을 n^(1/2) 정도 횟수만 상자를 열어보는 것만으로 찾을 수 있는 Grover의 알고리즘, 그리고 인수분해와 이산로그 문제를 다항식 시간 내에 풀 수 있는 Shor의 알고리즘 등이 있다.

특히, Grover의 알고리즘은 고전적인 알고리즘에 비해 다항식 정도의 속도 계선이 있었던 것에 비해, Shor의 알고리즘은 기존에 알려진 최선의 고전적 알고리즘에 비해 지수적으로 빠른, 그래서 효율적으로 인수분해와 이산로그 문제를 해결할 수 있는 방법을 제공한다.  기존에 널리 사용되고 있는 공개키 암호 방식들의 대부분이 궁극적으로는 이들 문제의 난이성에 안전성을 의존하고 있음을 감안하면, Shor의 알고리즘은 대부분의 그러한 암호 방식들이 안전하지 않게 된다는 것을 보여준다.  단, 그렇게 되기 위해서는 먼저 실용적인 양자 컴퓨터가 개발될 필요가 있다.  양자 컴퓨터가 동작하기 위해서는 큐빗들이 그 양자적인 성질을 잃지 않고 결맞음성(coherence)을 유지해야 하고, 이렇게 하기 위해서는 큐빗을 주변 환경으로부터 잘 격리할 수 있어야 한다.  현재까지의 기술로는 양자 컴퓨터가 요구하는 만큼의 긴 coherence를 유지하는 것은 어렵다.  기술의 발전에 의해 실용적인 양자 컴퓨터가 만들어지는 시점은 낙관적인 예측의 경우 10년 정도 이후에서부터, 비관적인 예측의 경우 100년 이후까지가 있으나, 대체로 3-50년 정도인 것으로 보인다.

양자 컴퓨터가 갖는 이러한 잠재적인 파괴력 때문에, Shor의 알고리즘이 발표된 이후에, 암호학계는 양자적인 계산 능력을 갖는 공격자에 대해서도 안전한 암호 방식들, 즉 '포스트 양자 암호(post-quantum cryptography)'에 대한 연구를 시작했다.  포스트 양자 암호는, 그 알고리즘 자체는 고전적인 알고리즘이어서 양자 컴퓨터가 없는 일반 사용자들도 보통의 컴퓨터를 이용해서 처리할 수 있지만, 양자 컴퓨터를 보유한 강력한 공격자도 해독이 불가능한 암호를 의미한다.

(2) NSA의 Suite B 개정

포스트 양자 암호는 이론적으로 매우 흥미로운 연구 분야이지만, 지금 당장 사용 가능한 양자 컴퓨터가 없는 상황에서 포스트 양자 암호에 대한 필요성이 다소 공허하게 들리는 것은 어쩔 수 없다.  현재 존재하지 않는, 양자 계산 능력을 갖춘 공격자를 왜 현재 고려해야 하는 것인가?   이에 관해 최근 암호 정책에 관련하여 흥미로운 뉴스가 있었다.

최근 Edward Snowden이 폭로한 전방위적 감청으로 세계적인 물의를 빚은 NSA(미 국가안보국)는 미국 국방부 소속 기관으로, 통신에 관련해서 두 가지 이중적인 임무를 갖는다.  하나는 해외의 통신 및 신호 정보의 수집 및 분석이고, 다른 하나는 미 정부의 통신과 정보 시스템의 안전을 책임지는 역할이다.

후자의 역할을 위해, NSA는 미국 정부의 정보 보호를 위해 사용 가능한 암호 알고리즘 체계로서 'Suite A'와 'Suite B'라는 두 가지 포트폴리오를 제공하고 있다.  Suite A는 NSA 자체 개발된 비공개 알고리즘들로 구성되어 있지만, Suite B는 AES, ECDSA, ECDH, SHA-2 등 민간에서 개발한 표준적인 공개 알고리즘들로 구성되어 있으며, 이들 모두는 NIST에 의해 표준 알고리즘으로 기술되어 있는, 인터넷 보안을 위해 민간에서 널리 쓰이고 있는 알고리즘들이다.  NSA는 Suite B로도 미 정부의 'top secret' 수준의 기밀정보를 처리하는 것을 허용하고 있다.  또한 Suite B는 IPSec의 일부로 사용되는 것도 가능하고, 이는 RFC 6379에 정리되어 있다.

올해 8월에 NSA는 Suite B와 관련하여 한 가지 발표를 했다.  이들은 '머지 않은 미래에' Suite B를 양자 공격에 안전한 암호 알고리즘들로 갱신하겠다는 계획을 밝혔고, 또한 현재 Suite B를 채택하지 않은 미 정부 기관 및 관련 파트너 및 공급업체들은 현재의 Suite B로 전환하는데에 너무 많은 자원을 소비하기보다는 향후 Suite B의 갱신을 기다리라고 덧붙였다.

실용적인 양자 컴퓨터가 실현되기에는 아직도 많은 시간이 더 필요하다는 것이 정설임을 고려하면, NSA의 Suite B 갱신 계획은  너무 성급한 것이 아닌가 얼핏 생각될 수도 있으나, Suite B는 미국 정부의 민감한 기밀 정보를 보호하는 용도로 사용되며, 따라서 이들 알고리즘이 보호하는 데이터의 기밀성은 몇십년 이상 유지될 필요가 있다.  그렇다면, 현재의 Suite B에 의해 보호되는 데이터의 가치가 소멸되기 이전에 이들 알고리즘을 효율적으로 공격할 수 있는 실용적인 양자 컴퓨터가 개발될 가능성이 충분히 있는 셈이다.  그러한 관점에서 본다면 Suite B의 포스트 양자 암호 알고리즘들로의 갱신 계획은 그다지 이상하게 들리지 않는다.  또한 암호 알고리즘의 개발 및 검증은 많은 시간을 요구하는 일임을 감안하면 어쩌면 NSA의 발표는 시기 적절한 것일 수도 있다.

NSA의 발표는 양자 컴퓨터 및 포스트 양자 암호에 관해서 기술적으로는 아무 것도 바꾼 것이 없지만, 그럼에도 불구하고 양자 공격자에 대한 고려가 양자 컴퓨터가 실용화된 이후의 미래의 문제가 아니라 지금 당장의 문제임을 새삼 인식하게 했고, 아마도 향후 포스트 양자 암호 분야의 연구에 상당한 자극제가 될 것으로 전망된다.

(3) 포스트 양자 암호 연구 동향

포스트 양자 암호학에서 고려하는 암호 알고리즘들은 고전 컴퓨터에서도 구현 가능하지만, 양자 컴퓨터를 보유한 공격자에 대해서도 안전성을 증명할 수 있는 알고리즘들이다.  이를 보장하기 위해서는, Shor의 알고리즘을 고려할 때, 최소한 기반이 되는 문제를 인수분해나 이산로그에 근거하지 않은 새로운 문제로 바꾸어야 한다.  이러한 목적으로 격자(lattice) 기반 암호나 부호(code) 기반 암호 등이 고려되고 있다.

- 격자(lattice) 문제들

격자 암호에 관한 연구는 90년대부터 Ajtai 등에 의해 이루어졌으나, 2000년대에 Regev, Micciancio 등에 의해 보다 효율적인 격자 기반 암호 방식들이 개발되고, 또한 기반 문제들 간의 관계가 연구되면서 본격적으로 시작되었다.  특히, 2009년에 격자 기반 암호의 일환으로 Gentry가 완전 동형 암호화 방식을 처음 개발해내면서 격자 기반 암호의 잠재력이 새삼 주목받게 되었다.

포스트 양자 암호의 관점에서 볼 때, 다항식 시간 양자 알고리즘이 존재하는 인수분해나 이산 로그와는 달리, SVP 등의 격자 암호의 기반 문제들은 양자 컴퓨터로도 쉽게 풀리지 않을 것이라는 추측이 있고, 이는 격자 문제 자체의 단순성과 유용성과 더불어 격자 기반 암호학을 포스트 양자 암호를 구성하기 위한 매력적인 후보로 만든다.

양자 알고리즘에 대한 (추정되는) 안전성 이외에도 격자 문제들이 매력적인 것은, worst-case 가정 위해 암호학을 건설하는 것이 가능하다는 것이다.  즉, 암호화를 비롯해 대다수의 암호학적 구성들이 궁극적으로 average-case의 경우의 난제를 가정하는데 비해, 이보다 더 약한 가정 하에 암호학적 구성들의 안전성을 증명하는 것이 가능하다는 것이다.

- 다변수 다항식(multivariate polynomial) 문제들

이는 다변수 방정식을 푸는 것이 일반적으로 어렵다는 사실에 기초한다.  특히, 다변수 이차식의 풀이는 NP-hard라는 것이 알려져 있다.  1980년대 후반부터 Matsumoto, Imai, Patarin 등에 의해 그러한 다변수 방정식의 풀이의 난이성을 암호학에 이용하고자 하는 연구들이 진행되어왔다.  하지만 이 분야는 아직까지는 격자 기반 암호에 비해 훨씬 덜 활발하게 연구되고 있다.

- 부호 이론(coding theory)

오류 정정 부호(error-correction code)에 의존하는 암호학적 방식들로는 대표적으로 McEliece 및 Niederreiter 방식들이 있다.  기본적인 McEliece 방식은 오랜 역사에도 불구하고 아직 깨어지지 않았지만, 보다 복잡한 방식들에 대해서는 대체로 공격이 존재해왔다.  다변수 다항식의 경우와 마찬가지로, 아직까지는 이 방향의 연구는 아주 활발하다고 하기는 어렵다.

3. 클라우드 시스템 보안

이 단원에서는 클라우드 컴퓨팅 모델에 대해 간단하게 기술하고, 클라우드 컴퓨팅 관련 주요 시스템 보안에 대해 살펴본다. 이 절의 내용 대부분은 Fernandes 등이 2013년에 작성한 “Security issues in cloud environments: a survey”논문[1]의 일부이므로, 더 구체적인 사항은 해당 논문을 참고하기 바란다.

가. 클라우드 보안 관련 주요 개념

(1) 클라우드 서비스 전달 모델 및 배치 모델

Fernandes, Diogo AB, et al. "Security issues in cloud environments: a survey." International Journal of Information Security 13.2 (2014): 113-170.

기본적인 클라우드 컴퓨팅 모델에 대해 기술한다. 3가지 기본적인 클라우드 서비스 전달 모델(Cloud delivery model)은 IaaS, PaaS, SaaS이며 관련 컴포넌트들이 아래 그림에 나타나 있다. 이외에도 Anything- as-a-Service가 있는데, 예로는 Security-as-a-Service (SecaaS), Routing-as-a-Service (RaaS), Data-as-a-Service (DaaS) 등이 있다.

클라우드 배치 모델(Cloud deployment model)에는 공용 클라우드(Public cloud), 사설 클라우드(Private cloud), 하이브리드 클라우드(Hybrid  cloud), 커뮤니티 클라우드(Community cloud), 가상 사설 클라우드(Virtual private cloud, VPC) 등이 있다. 커뮤니티 클라우드는 여러 조직(기관)에 의해 통제되고 공유되는 배치 모델이다. VPC는 클라우드를 생성하기 위해 가상 사설망(VPN) 연결을 사용하는 모델을 말한다. 공용 클라우드는 낮은 보안성을, 하이브리드는 중간 정도의 보안성을, 다른 모델은 높은 보안성을 가진다.

그림 3-. 클라우드 서비스 전달(배달) 모델 및 고 수준 컴포넌트

(2) 클라우드 보안 요구사항 및 보안 위협

클라우드 서비스 전달 모델 및 배치 모델에 관련된 여섯 가지 보안 요구사항이 그림 2에 요약되어 있다.

그림 3-. 클라우드 관련 보안 요구사항

(체크 마크는 필수적인 요구사항을 대시는 선택적 요구사항을 의미)

그림 3-. 2013년 CSA에 의해 제시된

클라우드 컴퓨팅의 대표적 위협

(체크 마크는 해당 모델에 영향을 주는 위협을 의미)

CSA (Cloud Security Alliance)가 2013년에 발표한 클라우드 컴퓨팅의 주요 위협 아홉 가지가 표 1에 나타나 있다. 표에서 기술한 도메인(domain)은 – 클라우드 컴퓨팅 구조적 프레임워크(domain #1), 거버넌스 및 엔터프라이즈 위험 관리(domain #2), 법적 및 전자적 디스커버리(domain #3), 컴플라이언스 및 감사(domain #4), 정보 생명주기 관리(domain #5), 이식성 및 상호운용성(domain #6), 전통적 보안, 비즈니스 연속성 및 재난 복구(domain #7), 데이터 센터 오퍼레이션(domain #8), 침해 대응(domain #9), 애플리케이션 보안(domain #10), 암호화 및 키 관리(domain #11), 신원 및 접근 관리(domain #12), 가상화(domain #13), 새로운 SecaaS(domain #14) 등이다.

CSA: The Notorious Nine Cloud Computing Top Threats in 2013. https://downloads.cloudsecurityalliance.org/initiatives/top_threats/The_Notorious_Nine_Cloud_Computing_Top_Threats_in_2013.pdf (2013). Accessed Jul. 2013

나. 클라우드 시스템 보안 이슈

(1) 소프트웨어(SW) 보안 이슈

VMM(Virtual Machine Monitor) 및 VM(Virtual Machine) 등의 클라우드 컴퓨팅 소프트웨어가 수백만 라인의 코드로 구성되고, 서로 다른 프로그래밍 능력과 사항을 가진 여러 개발자에 의해 작성되므로 보안 대책 마련이 더 어려워지고 있다. 또한, 단일 버그가 중요한 문제를 야기할 수도 있다. 자동차나 항공기, 의료 등에 적용되는 임무 중심의 실시간 시스템에서는 보안 사고가 인명 피해로 연결될 수 있어 엄격한 보안 테스트를 포함하여 안전한 소프트웨어 개발 생명주기(Secure SDLC)가 필요하다. 클라우드 SaaS 시스템은 소프트웨어 결함/취약점에 의해 데이터 누출(data leakage)이 발생하지 않도록 보장해야 한다.

PaaS 테넌트(tenant, 세입자, 임차인)들이 플랫폼 자원들을 공유할 때, 안전한 방식으로 pay-per-use 모델을 지원하기 위해 자원 사용량 추적(resource accounting) 및 스레드 종료(thread termination), 고립(isolation)을 제공해야 한다. 이를 위해 Java는 수행 프로그램들을 고립시키는 샌드박싱(sandboxing)을, 런타임 무결성을 체크하는 바이트 코드를, 그리고 암호학적 및 안전한 통신 API를 구현한다. 고립을 보장하는 가장 간단한 방법은 애플리케이션 마다 하나의 JVM을 생성하는 것이다. 이 방식의 단점은 자원소모가 크다는 것이다.

클라우드 서비스 사용 행위(activity)를 관리하고 조정하고 모니터링하기 위해, 미세 단위의 구성 능력(fine-grained configuration capability)을 가진 사용자 인터페이스를 제공하는 것도 중요하다. 클라우드 시스템 개발 시에 비용 감소 및 개발기간 단축을 위해 OpenStack 같은 오픈소스 SW(Open-Source SW, OSS)를 사용하는 경우, 역공학 공격이 용이하고 버그/취약점 탐지도 쉽다는 단점이 존재한다.

OpenStack: OpenStack Website. http://www.openstack.org/ (2013). Accessed Apr. 2013

(2) 스토리지 및 컴퓨팅 보안 이슈

서드파티(third-party)에 스토리지와 컴퓨팅 자원을 아웃소싱(outsourcing)할 때의 문제는 고객이 클라우드 내에서 무슨 일이 일어나고 있는지를 알 수 없다는 점이다. Wang 등은 스토리지 보안은 서비스 품질(QoS)에서 항상 중요하다고 언급하였다. 즉, 데이터 계산되기 전과 후에 그리고 영구적으로 데이터가 저장되는 경우에, 데이터 상태를 효율적․신뢰적으로 체크하는 기법이 필요함을 기술하였다. 이러한 체크 시에 주요 이슈는, 내부자나 외부자에 의해 접근․변조될 위협을 갖는 고객의 아웃소싱 데이터를 스토리지 서버가 얼마나 자주/효율적으로/안전하게 검증할 것인가에 대한 것이다.

Wang, C., Wang, Q., Ren, K., Lou, W.: Ensuring data storage security in cloud computing. In: 17th International Workshop on Quality of Service, pp. 1&#8211;9. IEEE (2009).

Ateniese, G., Di Pietro, R., Mancini, L.V., Tsudik, G.: Scalable and efficient provable data possession. In: Proceedings of the 4th International Conference on Security and Privacy in Communication Networks, pp. 9:1&#8211;9:10. ACM, New York, NY, USA (2008)

Sood, S.K.: A combined approach to ensure data security in cloud computing. J. Netw. Comput. Appli. 35(6), 1831&#8211;1838 (2012).

가용성을 위해 데이터 중복을 제공하거나 데이터 센터/서버를 전 세계 여러 나라에 배치한 경우에는, 데이터가 국경을 넘나들게 되므로 컴플라이언스나 법적인 문제가 발생할 수 있다. 위생처리(sanitization)는, 특정 데이터를 소유자가 아닌 다른 당사자가 이용가능하게 되었을 때, 그 데이터의 일부분을 위생처리 또는 삭제하는 과정을 말한다. 데이터 파괴 정책이 충분하게 구현되지 않아서 하드 디스크를 완전히 파괴하지 않고 불용처리할 경우(Non-wiped hard disk discard), 데이터 손실이나 데이터 유출 사고가 발생할 수 있다. 또한, 한 사용자에 할당했던 자원을 추후 다른 사용자에게 재할당할 경우(Hard disk multi-tenant usage 또는 Resource recycling), 현재 사용자(테넌트)는 이전 사용자가 기록한 내용을 읽을 수도 있어, 위생처리는 중요한 이슈이다.

Zhou, M., Zhang, R., Xie, W., Qian, W., Zhou, A.: Security and privacy in cloud computing: a survey. In: 6th International Conference on Semantics Knowledge and Grid, pp. 105&#8211;112. IEEE Computer Society, Washington, DC, USA (2010)

MediaFire 또는 SugarSync와 같은 클라우드 기반 스토리지 제공자와 관련된 한 이슈는 여러 장치에 걸쳐 데이터(파일)를 동기화하는 기능으로 인해 멀웨어(malware, 악성코드) 전파가 용이하다는 것이다. 이 경우, 하드 디스크로부터 멀웨어를 제거하더라도, 클라우드는 그 멀웨어를 해당 장치로 다시 동기화(Cloud malware syncing)할 수 있다.

(3) 가상화 보안 이슈

IaaS 제공자는 비즈니스에서 VMM(Virtual Machine Monitor) 상의 VM(Virtual Machine, 가상머신)의 빠른 전개에 의존한다. 가상화 계층은 클라우드에서 기본 방어선이지만 또한 공격자의 진입점이기도 하다. 클라우드 제공자 입장에서, 멀티-테넌트와 가상화는 이익 면에서 유망한 측면이 있지만 공격 표면을 증가시키기도 한다. 더구나, 완벽한 논리적 및 가상적 고립을 지원하기 어렵고, 가상화 SW도 버그를 내재하고 있다.

VM 이미지 파일이 저장소(repository)에 유지되는 경우, 저장소는 도용(theft)이나 악성코드 주입에 취약하다. 관리자 위험은 악의적 이미지를 호스팅하여 배포하는 것이다. 이미지를 발행하는(publish) 시점에는 알려지지 않은 취약점이 추후에 나타날 수 있으므로 휴면 이미지의 보안 특성은 그대로 유지되지 않고 점차 악화될 수 있다. 보안 패치가 적용되지 않은 VM이 멀웨어에 감염되어 산발적으로 멀웨어를 유포할 수도 있다. 감염된/장악된 이미지에 내재된 위험은 VM이 클라우드 네트워크 내에서 수행됨으로써 방어선(perimeter defense)을 우회할 수 있다는 것이다.

VMM에도 버그와 취약점이 존재할 수 있으며 VMM 기반의 루트킷(rootkit)을 작성하는 것도 가능하다. 이는 VMM 신뢰 모델을 깨뜨릴 수 있게 된다. VM escape라는 VM-to-VMM 공격은 VMM에 의해 관리되는 VM을 수행하여 하부의 VMM을 접근한다. 이 공격이 성공하면, 공격자는 일반 사용자들이 공유하는 자원 및 CPU 이용률을 포함하여 다른 VM을 모니터링할 수 있고, VM을 셧다운할 수도 있다.

Grobauer, B., Walloschek, T., Stocker, E.: Understanding cloud computing vulnerabilities. IEEE Secur. Priv. 9(2), 50–57 (2011).

VM은 쉽게 복제되거나 다른 서버로 이동할 수 있는데, 이러한 과정을 보통 VM cloning 또는 template image cloning이라고 한다. 이러한 과정도 보안 문제를 야기할 수 있는데, 그 이유는 여러 VM들이 같은 초기 상태를 갖는 동일 이미지 복제본을 가진 채로 수행될 수 있기 때문이다. 이러한 복제 과정으로 인해, 잘못된 구성(erroneous configuration)이 쉽게 전파될 수 있고, 원래 소유자의 민감한 데이터(예로 비밀 키 및 cryptographic salt values)가 VM 이미지 복제 시에 새로운 테넌트에게 유출될 수 있다. 라이브 VM 이주(Live VM migration)는, VM이 이주되는 동안에도 수행되는 것을 의미한다. Oberheide 등은 라이브 VM 이주 동안에 Xen 및 VMWare VMM들을 대상으로 MitM(Man-in-the-Middle) 공격이 가능함을 보였다.

Duncan, A., Creese, S., Goldsmith, M.: Insider attacks in cloud computing. In: IEEE 11th International Conference on Trust, Security and Privacy in Computing and Communications, pp. 857–862. IEEE Computer Society, Washington, DC,USA (2012).

Oberheide, J., Cooke, E., Jahanian, F.: Empirical exploitation of live virtual machine migration. In: Proceedings of the Black Hat Convention (2008).

cross-VM 공격의 선행조건은 동일 물리적 호스트 상에 수행되는 두 개의 VM을 가져야 하고 또한 희생자의 IP 주소를 알아야 한다는 것이다. Ristenpart 등의 연구 결과에 의하면 표준 고객 자격으로, 그 두 선행조건을 만족할 수 있다. 공격이 성공하면 자원 사용량을 모니터링할 수 있고, 구성과 파일을 변경할 수 있으며, 민감한 데이터를 유출할 수 있다.

Ristenpart, T., Tromer, E., Shacham, H., Savage, S.: Hey, you, get off of my cloud: exploring information leakage in third-party compute clouds. In: Proceedings of the 16th ACM Conference on Computer and Communications Security, pp. 199&#8211;212. ACM, New York, NY, USA (2009)

(4) 접근 보안 이슈

멀티 테넌트 클라우드(Multi-tenant cloud)에서는 수많은 고객들이 자신의 자원을 관리하므로, 각 고객의 자원을 서로 물리적으로/논리적으로 분리해야 한다. 클라우드에는 매우 다양하면서 이질적인 고객들이 아웃소싱한 비즈니스 데이터가 많아, 공격자는 유용하면서 민감한 정보를 접근하려고 할 것이다. 특히, 클라우드 내부자가 광범위한 클라우드 공격 벡터를 찾아 데이터를 유출하려는 시도를 방어하는 것이 중요하다. 불만자, 실직자, 스파이, 다른 악의적인 인공두뇌의 액터 등은 외부 또는 내부에서 최상의 공격 순간을 기다릴 수도 있다. 악의적인 내부자에 의한 단일 침해사고로 인해 많은 데이터를 누출할 수 있다. 악의적인 시스템 관리자는 다양한 소프트웨어를 설치하여 VM들을 접근할 수도 있다.

중앙 집중식 접근제어는 관리 및 보안 업무 면에서 유리할 수 있다. 그러나 미래에 발생할 데이터 매시업(mashup) 시나리오에서는 이상적이지 않을 수 있다. 데이터 매시업의 발전은, 데이터 유출 면에서, 그리고 사용자가 데이터를 검색하는 소스(source)들의 개수 면에서 보안 암시(security implications)를 내포하고 있다. 각 데이터 소스에 대한 접근 인가 메커니즘의 전개는, 클라우드 서비스 사용성(usability) 면에서 잠재적으로 적용하기 어렵다고 볼 수 있다. 예로, 페이스북(Facebook)은 페이스북 서버로 업로드된 데이터를 사용하는 제삼자의 애플리케이션을 검증하지는 않는다. 따라서 악의적인 애플리케이션은 악의적인 행위를 수행할 수 있다. 다른 소셜 사이트들에서도 유사한 문제가 발생하고 있다. 제삼자의 애플리케이션이 어떤 개인 정보를 접근하는 것은 위험하다. 서비스 관리 인터페이스는 큰 단위의 인가 제어 모델(coarse authorization control model)을 제공하기 쉬우며, 이로 인해 업무 분리 능력(duty separation capability)을 구현하는 것이 더 어려워진다.

두 개의 소스로부터 나온 데이터들을 합쳐서 만든 정보 (mash-up, mash up로도 표기함)

다. 정리

클라우드 컴퓨팅 환경에서 시스템 수준의 보안 이슈로, 소프트웨어, 스토리지 및 컴퓨팅, 가상화, 접근제어에 대해 간단히 살펴보았다.

아웃소싱 스토리지 및 컴퓨팅 태스크는 여러 하드웨어 관련 및 신뢰 이슈를 생성한다. 클라우드 네트워크 내에서 서버 및 모든 데이터 전송에 대한 통제 손실을 방어하기 위해서는 안전한 스토리지 및 컴퓨팅 메커니즘, 감사 기법 등이 필요하다. 하나의 해결책은 완전동형암호(fully homomorphic encryption)를 적용하는 것이나 이는 계산 오버헤드를 유발할 수 있다. 이에 다른 해결책에 대한 연구가 필요하다.

가상화 보안 이슈를 해결하기 위해, 더 강한 VMM 솔루션을 고안하는 것이다. VMM 보안을 강화하기 위해, VMM의 코드 수를 최소화하고 정밀 검증하여 버그 및 취약점을 제거하는 것이 좋다. 또는, Xen VMM에 iptables 기반의 브릿지 방화벽(bridge firewall)을 구축하여 VMM을 강화하는 것이 제안되었다. 또 다른 방식으로 VM을 하드웨어에 더 직접 접근하게 개발하는 것이다. 즉, VM의 VMM에 대한 의존성을 제거하고 하부 하드웨어에 더 밀착하여 VM 병행성을 유지하게 하는 것이다.

스마트폰 루팅이나 탈옥으로 인해 멀웨어는 커널 부분을 접근할 수 있다. 즉, 루팅이나 탈옥을 통해 사용자는 운영체제 부분을 접근하여 자신이 원하는 애플리케이션을 설치할 수 있다. 따라서 악성 애플리케이션은 중요 데이터를 포함하여 운영체제의 민감한 컴포넌트를 접근하여, 루트킷의 권한을 상승시킨다. 이에, 세밀한 접근권한을 기술하고 집행할 수 있는 강제접근제어(Mandatory access control, MAC) 모델을 적용하여. 악성 애플리케이션의 권한이 상승되더라도 그로 인한 피해를 최소화 하는 연구가 필요하다.

4. IoT 보안을 위한 Usable Security

IoT (Internet of Things) 환경에서 사용자가 제어해야 하는 장치 및 서비스의 수가 급격하게 증가하고, 복잡도가 커져감에 따라서 사용자가 보안 환경을 어떻게 구성하고 설정을 관리할 수 있는지 기술적으로 고려하여야 한다. 본 문서에서는 이를 위하여 현재 보안 분야에서 연구되고 있는 Usable Security의 기본 개념 및 관련 연구 동향을 소개하고, IoT 관점에서 필요한 기술 방안을 살펴본다.

가. Usable Security 기본 개념

보안 기술을 실제로 적용하는데 있어서 가장 중요한 것은 대부분의 시스템에서 보안은 사용자가 어떤 업무를 수행하는데 있어서 부가적인 요구사항이라는 점을 간과해서는 안 된다. 따라서 보안 시스템이 실제 사용자의 편의성을 무시하고 설계되는 경우, 사용자는 일반적으로 보안 기능을 사용하지 않는 경향을 가진다. 보안 기술은 시스템의 주요 기능에 대한 요구사항을 최소화하는 선에서 적용되어야 한다. 만약, 보안을 위해서 사용자에게 너무 과한 요구 사항이 주어진다면 사용자들은 보안을 유지하려고 노력하기보다는 보안 기능을 제거하기 위하여 노력할 것이다. 그림 1은 이러한 대표적인 사례를 보여준다.

그림 3-. 파일에 대한 퍼미션 설정. 사용자 편의성을 높이기 위해서 모든 읽기, 쓰기, 실행 권한이 777로 설정되는 문제점을 볼 수 있다.

사용자가 보안 기능을 최소화하거나 사용하지 않음으로써, 각종 보안 위협이 발생할 수 있다. 일반적으로 이러한 현상에 대해서 보안 담당자들은 사용자의 낮은 보안 의식 및 부주의를 비판하는 경향을 가진다. 이렇게 사용자를 비판하는 가장 주된 이유는 그것이 보안 담당자들의 최선의 변명이 될 수 있기 때문이다. 즉, 보안 담당자들은 최선의 조치를 취했지만, 사용자 부주의로 인하여 보안 사고가 발생하였다는 논리를 이끌어낼 수 있기 때문이다.

그러나 모든 일반 사용자가 보안 전문가들처럼 완벽하게 보안 수칙을 지키기는 현실적으로 어려운 문제이다. 일반 가정주부가 네트워크 프로토콜을 완벽하게 이해하고, 시스템 설정을 하는 것은 현실적으로 불가능에 가깝다. 일반적으로 이렇게 사용자의 부주의를 무조건적으로 비난하는 접근 방법은 근본적인 해결책이 되기 어렵다. 보안 기술을 사용자가 적용하기 어렵게 설계하고는 일방적으로 사용자 탓을 하는 것은 옳지 않다. 만약 보안 기술이 사용자 편의성을 악화시킨다면, 앞에서 설명한 것처럼 사용자들은 보안 기능을 최소화하기 위하여 노력할 것이다. 따라서 결국에는 오히려 보안성이 떨어지는 문제가 발생할 것이다. 예를 들어, 많은 일반 사용자들은 안티 바이러스 솔루션을 사용하지 않는데, 그 가장 큰 이유는 사용자들은 안티 바이러스 솔루션들이 시스템의 성능을 저하시킬 거라고 믿기 때문이다. 시스템의 성능을 보장하지 않는 보안 솔루션은 결국 사용자들에게 외면 받게 될 것이다. 즉, 보안 기술이 실제로 효과적이기 위해서는 역시 높은 사용자 편의성을 제공해야 한다.

IoT 환경에서는 대부분의 사용자 기기가 인터넷에 연결되고, 네트워크 및 보안 설정에 대한 복잡도가 급격하게 증대되기 때문에 특히 사용자 편의성을 고려하는 것이 중요한 이슈가 되고 있다.

나. IoT 환경의 주요 Usable Security 이슈

(1) IoT 기기에 대한 사용자 인증

IoT 기기에 저장되는 데이터 및 기기를 보호하기 위하여 사용자에 대한 접근 제어가 가장 중요한 보안 기능은 IoT 기기에 대한 접근 제어이며, 이러한 접근 제어를 위해서는 접근 주체에 대한 인증이 필요하다. 일반적으로 접근하는 주체가 사람인 경우에는 사용자 패스워드가 가장 일반적으로 사용되고 있다. 하지만, 사용자 패스워드의 경우, 일반적으로 상대적으로 낮은 엔트로피를 갖기 때문에, 사전 공격이나 추측 공격에 취약한 특성을 가지고 있으며, 이러한 문제를 해결하기 위하여 다양한 패스워드 정책 등이 연구되고 있으나 근본적인 한계를 가지고 있다.

Blase Ur et al., "How Does Your Password Measure Up? The Effect of Strength Meters on Password Creation”, USENIX Security 2012.

Serge Egelman et al., "Does My Password Go up to Eleven? The Impact of Password Meters on Password Selection”, CHI 2013.

학계 및 산업계에서는 현재 그래피컬 패스워드, 하드웨어 토큰, 생체 정보 등의 다양한 대체 인증 방법 등을 제안하고 있으나, 이러한 인증 방법의 경우, 패스워드에 비하여 일부 항목에 대해서는 비교 우위를 가지나, 현재 사용되고 있는 인증 방법과의 호환성 부족 및 경제성을 고려하지 않아서 실제로는 제한적인 기기 (예: 스마트폰) 및 서비스에서만 사용되고 있는 실정이다.

(2) IoT 보안 및 프라이버시 보호

IoT 시대에는 개인정보 유통으로 인한 프라이버시 침해는 물론 자동차, 의료등 많은 분야에서의 IoT를 도입함으로써 발생할 수 있는 취약점이 생명을 위협할 가능성이 제기된다. 가장큰 이슈는 수많은 다양한 데이터의 이동에 따른 보안과 관련한 문제가 될 수 있다.

IoT 환경은 기존 PC, 모바일기기 중심의 사이버 환경과 달리 그 보호대상범위, 대상 특성, 보안담당 주체, 보호방법 등에 있어 새로운 시각으로 접근해야 할 필요성이 있다. 즉, 프라이버시 보호를 위해서는 정보의 센싱, 가공·처리·저장·활용 단계별로 프라이버시 보호 기능을 제공할 필요가 있다.

다. Usable Security를 활용한 IoT 보안

어떻게 하면 IoT 환경에서 높은 사용자 편의성을 보장하는 보안 시스템을 설계할 수 있을까? 가장 중요한 것은 역시 사용자를 이해하는 것이다. 사용자에 대한 이해 없이는 결코 안전한 시스템을 설계할 수 없다. 사용자의 이해를 기반으로 사용자에게 절대 불가능한 가정들을 강요하지 말아야 한다.

그러나 보안 시스템의 사용자 편의성은 일반 시스템의 사용자 편의성과는 다르다는 점을 역시 고려해야 한다. 일반적인 IT 시스템과는 다르게, 보안 시스템에서는 공격자의 존재를 고려해야 한다. 또한, 보안 기능이 부가적인 기능이라는 사실 역시 고려해야 한다. 사용자 편의성과 보안성을 동시에 소프트웨어 개발 프로세스에 통합하는 경우, 가상의 공격자를 시뮬레이션하고 시스템의 보안성과 편의성을 테스트해야 한다. 경우에 따라서는 사용자를 속이는 행위도 수행해야 한다. 이러한 목적을 달성하기 위한 가장 대표적인 설계 방법은 바로 사용자 중심 설계 (user-centered design) 방법이다.

보안 시스템에 대한 사용자 중심 설계 방법에서 가장 중요한 원칙은 보안 요소를 프로세스의 초기부터 고려해야 한다는 점이다. 실제로 보안은 시스템 개발 마지막 단계에 고려하는 경우가 많은데, 이 경우에는 실제 보안 기술은 사용자 편의성을 크게 떨어트리거나 형식적으로 추가될 수 있는 가능성이 커진다. 따라서 사용자 편의성 및 보안성은 시스템 개발 초기부터 고려되어야 한다. 이 장에서는 실제 시스템 개발 과정에서 사용자 편의성과 보안성이 어떻게 고려될 수 있는지 가장 대표적인 원칙들에 대해서 설명할 것이다.

(1) 보안 요소의 자연스런 통일

사용자 편의성을 개선하기 위한 보안 설계의 첫 번째 요소는 자연스럽게 보안 기능을 통합시키는 것이다. 즉, 보안 기능이 실제로 사용자에게 드러나지 않고도, 사용자가 평상시 수행하는 동작 과정 속에 보안 기능을 포함시키는 것을 의미한다. 최근 애플이 아이폰 5s를 출시하면서 “터치 ID”라고 불리는 지문 인식 기능을 스마트폰의 홈 버튼에 적용한 사례가 있는데 (그림 2 참조), 이러한 사례가 대표적으로 바로 자연스럽게 보안 요소를 통합한 원칙을 지킨 경우이다. 지문 인식을 통한 사용자 인증 기능을 본래 스마트폰을 동작시키기 위한 자연스런 사용자의 동작 과정에 포함시킴으로써 보안 기능에 대한 추가적인 비용을 최소화시키고 있다.

이를 위해서 가장 중요한 것은 사용자에게 보안 기능 사용을 위한 선택을 강요하지 않는 것이다. 사용자들에게 보안 기능 제어에 대한 선택을 강요함으로써 발생할 수 있는 보안 기능 최소화 및 미적용의 위험성을 회피하기 위해서는 가장 민감한 보안 기능 부분에 대해서는 사용자의 참여를 최소화하는 것이 오히려 바람직하다. 보안 전문가들이 보안 사고 때마다 지적하듯이 사용자의 부주의 및 무지는 가장 큰 보안 위협 요소가 되고 있다. 실제로 공격자는 이러한 사용자의 부주의를 노리고 사이버 공격 방안을 설계하고 있다. 따라서 이러한 위협을 줄이기 위하여 보안 시스템 설계는 보안 기능에 대한 사용자의 선택 요소를 최소로 줄여야 한다. 사용자에게 보안 기능 선택을 강요하는 경우, 일반적으로 경고 메시지가 함께 주어지는 경우가 많은데, 선택의 경우를 줄임으로써 경고 메시지 수가 줄어들어 사용자 편의성이 개선될 뿐만 아니라, 가장 중요한 선택 부분에만 사용자에게 선택을 알림으로써 사용자가 보다 중요한 선택 사항에 대해서 집중할 수 있게 만든다.

그림 3-. 애플에서 아이폰 5s에 적용한 사람의 지문 정보를 이용한 사용자 인증 기능

이러한 대표적인 예로 웹 브라우져를 통하여 악성코드 등이 설치된 위험한 웹 사이트를 방문하려는 경우, 단순히 사용자에게 경고 메시지를 출력하여 위험 여부를 알리고 방문 여부를 확인하는 대신에, 아예 방문할 수 없도록 차단하는 경우가 이러한 설계 원칙에 부합된다고 할 수 있다.

이러한 설계 원칙을 지키기 위해서는 보안 기능 적용에 대한 초기 설정이 매우 중요한데, 그 이유는 대부분의 사용자들은 초기 설정을 그대로 이용하기 때문이다. 이러한 점을 이용해서 보안 기술자 혹은 담당자들은 초기 설정으로 기본적인 보안 기능이 적용되도록 시스템을 구성할 필요가 있다.

(2) 직관적인 보안 정보의 전달

보안 시스템에서 사용자 편의성을 높이는 두 번째 원칙은 사용자가 이해할 수 있는 용어 및 표현을 이용하여 시스템의 인터페이스 및 사용 방법을 사용자가 보다 잘 이해할 수 있도록 구성하는 것이다. 그러나 실제 많은 시스템들은 이러한 원칙을 무시하고 설계되는 경우가 많다.

예를 들어, 안드로이드 시스템에서는 어플리케이션을 설치하는 순간에 어플리케이션의 퍼미션을 설정해야 하기 때문에 퍼미션에 대한 보안 경고 메시지를 제공한다. 하지만, 이러한 경고 메시지의 많은 부분들은 사용자가 이해하기 힘든 용어들로 구성되어 있기 때문에, 사용자들은 이러한 보안 경고 내용을 이해하기 어렵다.

또 다른 잘못 설계된 보안 경고 메시지의 대표적인 예로, 웹 브라우져에서의 경고 메시지를 들 수 있다. 웹 브라우져에서 적절한 서버 인증서를 사용하지 않는 웹사이트를 방문하는 경우, 보안 경고메시지를 제공하여 사용자의 경각심을 불러일으킬 수 있는데, 종래의 많은 경고 메시지들이 실제로는 큰 효과가 없었다는 사실이 이미 학계에서 증명된 바 있다.

M. Wu et al., “Do security toolbars actuallyprevent phishing attacks?”, CHI 2006.

사실 대부분의 경고 메시지가 잘못 설계된 이유는 단순히 경고 메시지를 제공만하고, 사용자에게 실질적으로 도움이 되는 조치 방법을 제시하지 않기 때문이다. 만약, 사용자에게 경고 메시지를 제공하는 것과 동시에 어떻게 조치를 취하면 사용자의 본래의 목적을 달성할 수 있는지를 제시한다면 분명히 보다 효과적인 보안 경고 메시지가 될 수 있을 것이다. 예를 들어, 위험도가 높은 쇼핑 웹사이트를 방문했을 때, 단순히 “예”, “아니오”로 위험도가 높은 쇼핑 웹사이트를 방문할 것인지를 묻기보다는, 이 웹사이트 대신 신뢰도가 이미 사전에 검증된 쇼핑 웹사이트를 추천하는 방식으로 경고 메시지를 변경한다면 훨씬 더 안전한 웹 브라우져 사용이 가능할 것으로 판단된다.

또 다른 접근 방법으로는 사용자에게 너무 많은 정보를 제공하는 대신, 사용자가 판단할 수 있는 수준의 정보를 대략적으로 제공하는 것이다.

이러한 접근 방법을 사용하는 가장 대표적인 사례는 웹브라우져에서의 보안 설정 기능이다 (그림 3 참조). 실제 보안 기능을 상세하게 설정하는 것이 대부분의 사용자에게 매우 힘들기 때문에, 항목별로 구체적으로 설정하는 방법을 제시하기 보다는 사용자가 이해하기 쉬운 형태의 단계별 설정을 제공할 수 있다. 사용자들은 복잡한 세세한 내용의 보안 설정을 사용하는 대신, 단순하게 보안 수준을 설정함으로써 사용자의 편의성을 개선할 수 있다. 하지만, 이러한 접근 방법은 생각처럼 쉽게 구현될 수는 없다.

그림 3-. 인터넷 익스플로러에서의 보안 설정 화면

(3) 메타포의 활용

사용자에게 보안 정보를 효과적으로 전달하기 위한 대표적인 솔루션 중 하나는 메타포(metaphor)를 이용하는 것이다. 메타포는 원관념 대신 보조관념을 이용하여 표현하려는 대상을 설명하거나 그 특징을 묘사하는 표현법이다. 메타포(은유 혹은 암유)는 비유의 또 한 가지 방법인 직유와는 달리 상세한 설명은 완전히 생략하고 비유할 목적을 숨기면서, 표면에 직접 그 형상만을 꺼내어 사용자의 상상력을 통해서 그 본질적인 의미를 인식시킨다. 즉, 쉽게 말해서 실생활에서 사람들이 생각하고 행동하고 있는 것을 메타포를 통해서 의미를 전달하는 것을 말한다.

최근 IT 시스템의 기능이 늘어나고 복잡해지면서, 시스템 사용자들도 많은 피로를 느끼고 있기 때문에, 이러한 사용자 피로를 줄이면서 새로운 인터페이스에 대해 손쉽게 학습하게 만드는 것이 매우 중요해지고 있다. 이를 가능하게 만드는 가장 보편적인 방법이 메타포를 이용하여 사용자의 인터페이스를 설계하는 것이다. 예를 들어, 윈도우즈, 리눅스 등의 운영체제 시스템에서 사용자는 “폴더”라는 메타포를 이용해 파일 혹은 디렉토리 등의 컴퓨터 시스템 객체들을 직관적으로 관리할 수 있다. 사용자들에게 친숙한 폴더라는 개념을 이용해서 인터페이스를 제공하는 방법은 대표적인 메타포의 이용 예로 생각할 수 있다.

그림 3-. 개인 방화벽의 경고 메시지에서 메타포를 사용하는 예

보안 시스템의 사용자 인터페이스를 설계하는 경우에도, 메타포가 사용되어서 보다 사용자에게 직관적으로 정보를 전달할 수 있다. 예를 들어 사용자들은 암호화, 패스워드, 접근제어 등의 기술적인 용어보다는 자물쇠, 열쇠, 금지 표시와 같은 물리적인 메타포가 사용되는 경우에 훨씬 더 보안 정보를 잘 이해하는 경향을 보인다. 따라서 사용자들에게 보안 정보를 보다 효과적으로 전달하기 위해서는 물리적인 메타포를 활용하는 것이 바람직해 보인다. 특히, 많은 사용자들이 보안 경고 메시지를 무시하는 경우가 많은데, 메타포의 활용은 보안 경고 메시지를 보다 효과적으로 설계하는데 큰 도움이 될 것이다. 예를 들어, 사용자의 개인 방화벽에서 위험한 네트워크 연결에 대한 경고를 사용자에게 전달할 때, 경고 메시지의 위험도를 3가지 수준으로 구분하고, 이를 사용자가 잘 알고 있는 물리적인 메타포를 이용해서 표현할 수 있다. 이렇게 메타포가 사용되는 경우, 사용자는 방화벽 소프트웨어에 대한 상세한 이해 없이도 보다 효과적으로 위험 여부를 판별할 수 있기 때문에, 예상되는 보안 위협에 잘 대처할 수 있을 것으로 기대된다.

Fahimeh Raja et al., “A brick wall, a locked door, and a bandit: a physical security metaphor for firewall warnings”, SOUPS 2011.

라. 결론

IoT 환경 시대에 들어서면서 사용자가 사용하는 서비스가 기하급수적으로 증가하는 한편, PC, 스마트폰, 스마트워치 등의 전통적인 IT 기기뿐만 아니라 세탁기, 냉장고, 가로등과 같이 이전에는 고려하지 않았던 다양한 기기도 급격하게 증가하고 있다. 보안 관리자가 제어하고 보안 규칙을 정의하던 종래의 네트워크 환경과는 달리, 일반 사용자들은 앞으로 보안 설정 및 관리에 대한 큰 어려움을 겪을 것으로 판단된다.

이러한 상황에서 Usable Security를 고려하여 보안성과 사용자 편의성을 동시에 보장한다면, 사용자 부주의 및 실수에서 발생할 수 있는 다양한 보안 위협 가능성을 낮추고, 실제 적용 가능한 현실적인 보안 솔루션을 설계할 수 있을 것이라고 판단된다.

5. 인터넷 무결성 침해 사례

가. 최근 주요 무결성 침해 사례

(1) 뽐뿌 사이트 해킹 사건과 2차 공격

2015년 9월 11일 “국내 최대 온라인 커뮤니티 사이트 ‘뽐뿌’가 해킹당하면서 회원정보 190만 건이 유출된 가운데 회원들을 대상으로 악성 어플리케이션까지 유포되고 있다.”라는 내용의 뉴스가 배포되었다. 기사는 홈페이지 해킹 사실 유포 이후에도, 본인의 노출 계정을 확인하기 위해 접근한 회원들을 대상으로 2차 공격을 통해 악성 어플리케이션을 유포했다는 내용을 포함하고 있었다.  해당 악성 어플리케이션은 피해자에게 어떠한 기능도 제공하지 않으면서 지속적인 광고 노출과 어플리케이션 다운로드를 유도한다.

현재까지 추가적인 피해는 없는 것으로 밝혀졌지만, 업데이트 등의 과정을 통해 정보탈취 어플리케이션으로 변환될 수 있는 상황을 주의해야 한다고 한다. 이 사건의 보안 침해요소는 다음의 두 가지라고 볼 수 있다. 첫째는 기밀성의 훼손으로 정보가 유출된 것이고, 둘째로는 부적절한 애플리케이션을 설치하게 유도하여 사용자에게 추가 피해를 입힌 것이다. 고객은 해당 홈페이지와 어플리케이션이 정상적인 확인할 수단이 없었고, 도리어 이를 확인하는 절차를 이용하여 2차 피해가 발생되었던 사례이다.

(2) 최근 사이버 공격 동향

안드로이드를 대상으로 하는 공격이 점점 증가하고 있는 추세이다. 이러한 공격은 주로 스미싱을 통해 이루어지며, 악성 어플리케이션의 기능은 보안 시스템 우회, 지능화된 서비스 공격 등의 다양한 공격으로 진화하고 있다.

이와 같은 악성 어플리케이션의 유포는 웹 사이트, 구글 마켓, 이메일, SNS, P2P를 중심으로 진행되고 있다. 2014년 이전 유포 동향은 SNS 인증 탈취, 공인인증서 탈취, 금융정보 탈취 등의 사이버 금융 공격의 목적에 초점을 맞추고 이루어졌다. 반면, 2014년 이후 공격은 ARS 인증 착신 전환, 백신 삭제 및 우회 등과 같은 방식으로 보안 시스템을 우회하며 이용자를 속이는 공격으로 진화하였다. 더불어 허위 백신 화면의 발견, 백신 삭제 유도, 금융 관리 어플리케이션을 사칭하는 등의 다양한 형태의 공격으로 사용자를 공격하고 있다.

2015년의 공격은 시스템 우회, 경로 다양화 등의 전 방위적인 양상으로 진행 되고 있다. 특히, 지난 6월 보안카드 번호를 스캔하는 악성코드가 식별되었다. 이 악성코드는 정보를 난독화하여 SMS(Short Message Service), GCM(Google Cloud Message)을 원격 제어하는 방식 등의 매우 지능적인 형태로 공격을 수행하였다.

(3) 글꼴을 통한 악성코드 유포

2015년 하반기에 배포된 MS의 긴급 보안 패치의 원인은 글꼴이었다. 해당 취약점을 해결하기 위해 배포된 긴급 보안 패치는 글꼴이 원격코드 실행의 시작점으로 활용될 수 있다는 취약점을 해결하기 위한 조치였다. 이 취약점은 특수하게 조작된 문서나 신뢰할 수 없는 사이트에 접속할 경우 임베디드 오픈 타입의 글꼴을 활용하여 원격코드를 실행할 수 있다는  취약점을 내포하고 있다.

오픈 타입 글꼴은 OTF(Open Type Font)확장자를 가진다. 이는 TTF(True Type Font)타입 글꼴과 더불어 글꼴파일의 표준으로 정해져있다. 이 글꼴은 MS와 Adobe가 함께 제작한 글꼴 표준 규격으로써 무료는 아니지만 제작에 대한 부분이 모두 공개되어 있어 디자이너에서 개발자에 이르기까지 모두 이용 가능하다. 문제는 이러한 점에서 발생한다고 볼 수 있다, 기존 사용되는 글꼴처럼 인터넷을 통해 해당 홈페이지를 이용하기 위해 해당 글꼴을 다운로드 받게 될 경우 해커에 의해 조작된 글꼴이 다운되고, 이로 인해 시스템에 원격코드가 실행되고 해킹에 대한 가능성을 내포하게 된다.

이와 같은 보안 위협의 대응책으로 MS에서는 보안 업데이트를 통해 글꼴 드라이버를 교체하여 글꼴을 통한 공격을 원천적으로 차단했다고 밝혔다. 그림 1. 은 글꼴해킹이 가능하다고 주장한 해킹 팀에 의해 노출된 간단한 실행코드이다. 아래와 같은 실행 코드를 통해 간단하게 취약점 해킹이 가능하다. 먼저 GDI(Graphics Device Interface)의 API(Application Programming Interface)가 호출되면 폰트 프로세스 과정에서 사용되는 폰트 드라이버를 명시할 수 있고 ATMFD.dll이라는 하나의 폰트 드라이브는 모듈이 폰트 데이터를 처리하는 동안, 확장 부호 숫자로 인해 버퍼 언더 플로우가 발생하게 된다.

그림 3-. MS 글꼴 해킹이 가능한 샘플 실행코드

(4) 사이버상의 무결성

다양한 사이버 공격들의 목적은 정보 탈취와 금융 피해의 목적이다. 최근 공격추세는 기밀성을 위협하여 암호화나 정보를 해킹하는 것이 아니라 무결성 측면의 공격이 주류를 이루고 있다. 무결성이란, 해당 정보가 변하지 않고 원본 그대로 상대방에게 동일 내용으로 전달하는지를 의미하는 통신상의 무결성에서 시작된다.

하지만 최근의 다양한 사이버 공격에는 위 기술들이 적용되지 못해 무용지물이 되고 있다. 가장 대표적인 피해 플랫폼인 안드로이드의 구글 마켓의 경우에도 애플의 어플리케이션 검증 시스템과 다르게 무분별한 어플리케이션의 업로드와 구매가 이뤄지고 있다. 이 과정에서 해당 어플리케이션을 검증하기도 어려울 뿐더러 그 어플리케이션에 대한 무결성을 확인하는 것도 어렵다. 또한, 무결성 검증 과정에서 보안 취약점 요소를 잠재하고 있어 심각한 위협요인으로 분류되고 있다.

나. 인터넷 무결성을 위한 기술

데이터 측면에서 무결성이란 데이터가 무단으로 변경되는 것 및 데이터가 인증되지 않은 요청에 의해 변조되고 수정되지 않도록 보호하는 것을 의미한다. 이를 위해선 원본 데이터가 변하지 않았음을 증명할 수 있어야 한다. 통상적으로 취하는 방식에서는 Hash함수를 활용하여 디지털 인증을 수행하고, 데이터 전송을 암호화하는 SSL을 이용하여 무결성을 보장한다. 다음에서는 무결성을 위한 일반적인 기술들에 대해 알아본다.

(1) Hash함수

임의의 길이의 비트열을 고정된 길이의 출력 값인 Hash 코드로 압축시키는 함수를 말한다. Hash 함수는 다양한 길이의 입력을 고정된 길이의 출력 값으로 변환하는 일 방향 함수로써 데이터 무결성 검증, 메시지 인증에 사용된다. Hash 함수는 일방향성의 성질인 ‘함수 f(X)에서 f(X)=Y의 경우 X로부터 Y의 계산은 쉬우나 Y로부터 X의 계산은 어렵다.’는 것을 만족해야 하며 특징은 다음과 같다.

- 다양한 가변길이의 입력이 적용 가능해야 함

- 고정된 길이의 출력을 생성해야 함

- 주어진 입력 값에 대한 Hash 계산은 쉬워야 함

- Hash 결과 값으로 입력 값을 계산하여 도출하는 것은 불가능해야 함

- 동일한 Hash값을 가지는 서로 다른 메시지 쌍은 존재하지 않아야 함

1992년에 Ron Rivest에 의해 개발된 MD4, 5와 1993년에 미국 NIST에 의해 개발된 SHA가 대표적인 Hash 함수이다.

(가) MD5(Message-Digest algorithm 5)

임의의 길이의 값을 입력받아서 128비트 길이의 Hash값으로 출력하는 알고리즘이다. 패스워드 보안의 목적으로 많이 이용되며 패스워드를 MD5로 Hash한 값을 저장한다. 최근 PC의 높은 연산 능력으로 인해 수 분 이내에 충돌을 찾아내게 되었고 이로 인해 SHA계열 Hash 함수로 대체되고 있다. 다만, 고속연산이 가능한 특성과 임의로 변경된 패턴의 충돌 가능성이 충분히 낮은 특성 때문에 현재는 주로 네트워크로 전송된 파일의 무결성 확인에 사용된다.

(나) SHA(Secure Hash Algorithm)

1993년 미국 국가 안전 보장국(NSA)가 설계하였고 미국 표준 기술 연구소(NIST)에 의해 SHA로 발표되었다. 초기버전은 SHA-0이며 압축함수에 비트 회전 연산을 추가한 SHA-1, 4가지 변형 특성을 가진 SHA-224, 256, 384, 512가 SHA-2로 불리며 추가로 발표되었다. 기존 프로토콜인 TLS, PGP, IPSEC 등과 함께 가장 보편화된 Hash 함수이다.

Hash 함수의 특성중 하나인 누구나 생성 가능한 특성으로 인해 Hash함수 단독적으로 메시지의 무결성을 증명하는데 어려움이 있다. 이를 위해 인증기능을 가지는 암호 함수와 결합하여 사용되는 경우가 많다. 즉, Hash와 전자서명 알고리즘의 결합, Hash와 비밀 키 암호 알고리즘의 결합 등이 그 사례이다.

(3) OS(operation system) 무결성 검증 기술

최근의 많은 악성코드 및 해킹 등의 피해 사례가 증가함에 따라 운영체제 상의 무결성 검증의 중요도가 높아지고 있다. 미국 법무국에 공개된 문서에 따라 디지털 포렌식 전용 무결성 검증 소프트웨어를 사용하여 증거 분석을 수행할 수 있다고 한다. 하지만 본 보고서에서는 더 효과적인 검증을 위해 시스템 파일 분석과 Hash Set 구축을 통한 무결성 확인 방법을 아래에 설명한다.

(가) NSRL(National Children Victim Identification Program)의 RDS(Reference Data Set)

NSRL(National Software Reference Library)란 미국 미국국립표준기술원(National Institute of Standard and Technology)에서 프로젝트의 결과물인 Hash 값을 정리한 데이터베이스이다. 조사 대상 파일의 무결성을 검사하기 위해 RDS에 저장되어 있는 DB를 이용하여 일치 여부의 확인을 통해 무결성 확인이 가능하다. 정상 파일에 대한 Hash값은 MD5, SHA-1, CRC32 등을 이용하여 값을 구한다.

(나) NDIC(National Drug Intelligence Center)의 Hash Keeper

NDIC에서 포렌식 수사에 이용하기 위해 NSRL의 RDS와 같은 형태의 Hash 셋을 자체적으로 구현한 것으로 Hash Keeper라는 형태로 배포하며 Hash는 MD5를 이용하고 있다. 하지만 보유중인 Hash 셋의 수가 너무 적어 NSRL보다 활용적인 측면이 많이 뒤처지고 있다.

(다) Rootkit Hunter

Rootkit Hunter는 유닉스 운영체제의 무결성 확인을 위한 프로그램으로 MD5를 이용하여 파일의 Hash 셋을 보유하고 이것과 파일의 Hash 셋을 비교하여 악성 파일을 탐색한다. 하지만 확보된 Hash 셋이 너무 적고 유닉스 운영체제로 한정되는 한계점이 존재한다.

(라) Tripwire와 AIDE(Advanced Intrusion Detection Environment)

Tripwire는 사용자 시스템 전체 파일이 처음 설치한 그대로 유지되고 있는지에 대한 무결성을 확인하기 위한 프로그램이다. 파일 시스템에 대한 ‘스냅 샷’을 형성하여 DB로 유지하고 시스템 점검 시에 현 상태와 스냅 샷을 비교하여 무결성 검증을 수행한다.

AIDE는 파일 또는 디렉토리의 무결성을 검사하는 프로그램으로 host 기반의 침입탐지 시스템이다. DB에는 디렉토리의 크기, 날짜, Hash코드 등이 기록되어 있다. 시스템의 이상 징후 식별 시 서버 검색을 통해 이전 DB와 비교하여 변경내용을 출력하여 주며 이를 통해 무결성 확인이 가능하다. 지원하는 무결성 알고리즘에는 MD5, SHA-1, RMD160, TIGER, HAVAL 등이 있다. 리눅스, 솔라리스, 맥 등 다양한 운영체제를 지원한다.

(3) Application 계층의 모바일 무결성

2014년에 OWASP(open web Application security project)은 모바일 10대 어플리케이션 취약점을 발표하였다. 이중 M3, M5, M10이 무결성과 연관성을 가지고 있다.  M3는 민감 정보의 평문전송에 대한 내용을 다루고 있으며, M5는 인가 및 인증/검증의 미흡 등에 대한 내용을 다루고 있다. 특히, M10는 바이너리 보호 취약성을 다루어 직접적인 무결성 필요성을 이야기하고 있다. 모바일 10대 취약점들은 다음과 같다.

그림 3-. Mobile OWASP TOP 10 2014

(가) M1 : Weak Server Side Controls

M1 항목의 서버 측면의 취약점은 모바일과 서버간의 통신에서 클라이언트의 파라미터 값의 변조를 통해 웹에서 발생할 수 있는 취약점에 대한 항목이다. 이에 대한 대응책으로는 시큐어 코딩을 통한 파라미터 값의 상쇄, 대체의 방법과 중요 로직 등이 서버사이드에서 동작할 수 있도록 하는 방법이 있다.

(나) M2 : Insecure Data Storage

M2 항목은 스마트 폰의 중요 정보 저장 금지에 대한 항목으로 국내 기관인 금융감독원 및 금융 위원회의 보안 체크리스트에도 명시된 부분이다. 중요 데이터 저장을 위한 확인 리스트에는 다음과 같은 항목이 있다.

- SQLite databases

- Log Files

- XML Data Stores or Manifest Files

- Binary data stores

- Cookie stores

대응 방안으로는 iOS와 Andorid의 경우로 나누어 살펴볼 수 있다.

- ios의 경우

계정(자격증명)을 파일 시스템 안에 저장금지, 웹 또는 API 로그인 방식(https)를 이용한 인증, 최소한의 세션 시간의 설정(사용자의 사용 시간 고려)

중요정보 저장시 ios 표준 암호화 방식인 CommonCrypto의 사용

Sqlite data 암호화를 위해 SQLciper를 사용하여 암호화 수행

개발 시 NSuserDefualtes에 중요정보를 저장 금지

- Andorid의 경우

기기관리자 API를 이용하여 Local Storage에 SetStorageEncryption을 사용하여 암호화

Javax.crypto의 라이브러리를 이용하여 SD카드 저장 시 암호화

어플리케이션 간 정보 공유가 필요 없을 시 공유설정 속성을 Not Mode_World_Readable로 제한

- 동일 보안 항목

중요 정보를 저장 할 경우 하드 코딩된 암호화 및 암호화 해독키에 의존 금지

OS에서 제공하는 기본 암호화 메커니즘 이외의 추가적인 암호화 계층을 고려

(다) M3 : Insufficient Transport Layer Protection

M3 항목은 서버와의 통신 간에 중요 정보 전송에 대한 암호화가 이루어지는지에 대한 암호화 여부를 확인하는 항목이다. 민감 정보의 평문 전송이라고 명시하기도하며 기밀성이 적용되지 않음으로 인한 2차적인 무결성의 침해가 발생할 수 있다.

세부 내용으로는 네트워크 암호화에 대한 정당성 여부를 확인 할 수 있는 항목이 제시되어 있습니다. 일부 항목을 살펴보면 아래와 같다.

- 적절한 키 길이와 업계 표준의 암호화 방식의 사용

- 민감한 정보, 세션토큰 등의 전송을 위해 SSL/TLS를 적용

- 신뢰 할 수 있는 CA 공급자에 의해 서명된 인증서의 사용

- 대체 채널(SMS, MMS 등)을 통해 민감한 데이터의 전송 금지

(라) M4 : Unintended Data Leakage

M4 항목은 의도하지 않은 데이터의 노출에 대한 항목이다. 개발자에 의해 개발 수행시 다른 어플리케이션에서 쉽게 접근 가능한 영역에 정보가 저장시 이에 대한 취약성으로 민감한 정보가 노출되는 경우이다. 개발자는 아래 항목에 대해 민감한 정보 저장여부를 확인하여 민감 정보 노출을 최소화해야 한다.

- URL Caching (Both request and response)

- Keyboard Press Caching

- Copy/Paste buffer Caching

- Application backgrounding 등

(마) M5 : Poor Authorization and Authentication

M5의 취약한 인증 및 인가 항목의 원인은 제한된 어플리케이션, 인증된 유저만 사용 가능한 기능의 우회 등 바이너리 변조를 통해 발생하는 인증 및 권한 획득의 취약점 때문이다. 모든 사용자 인증은 악의적인 행위에 의해 우회가 가능하므로 서버 측에서 인증 및 권한 부여를 통해 악성행위를 방지해야 한다. 바이너리 변조에 대한 무결성 검증이 이루어지지 않을 경우, 내부 로직 변경으로 인증우회가 발생한다. 이 항목은 M10 항목과 연관성이 있다.

(바) M6 : Broken Cryptography

M6 항목은 어플리케이션에 대한 데이터 보호를 위해 사용한 암호화 방식이 취약할 경우 나타나는 취약점이다. 현재 취약한 알고리즘으로는 RC2, MD4, MD5, SHA1가 있다. 또한, 올바른 알고리즘을 선택하여도 동작하는 프로토콜에 대한 적용 미흡으로 취약점이 발생하는 경우가 있다.

(사) M7 : Client Side Injection

M7 항목의 클라이언트 측면 인젝션은 모바일 어플리케이션에서 모바일 장치의 악성 프로그램 실행을 위해 사용자 입력 값에 악성코드를 삽입하는 취약점이다. 서버사이드 취약점과 유사하지만 클라이언트 측면에서 발생하는 취약점이다. 주요 위협 취약점으로는 SQLite Injection, Local File Inclusion, XML Injection, javascript Injection 등이 있다.

(아) M8 : Security Decisions Via Untrusted Inputs

M8 항목은 신뢰할 수 없는 입력 값에 의한 보안 의사 결정의 항목으로 프로세스 간의 통신(IPC) 매커니즘에 의해 발생할 수 있는 취약점에 대한 항목입니다. 이 항목에서는 IPC(Inter-Process Communication)메커니즘 디자인이 중요한데 다음의 내용을 따라야 한다.

- IPC 통신의 업무적 요구사항으로는 모바일 어플리케이션이 신뢰된 어플리케이션의 화이트리스트의 접근을 통제해야 한다.

- IPC 객체 포인터를 통하여 트리거하는 민감 활동은 활동이 수행되기 전에 유저 상호작용을 요구해야 한다.

- IPC 객체 포인터의 모든 입력 수용은 삽입 구동 공격을 방해하기 위해 입력 유효성을 강도 이상으로 견뎌내야 한다.

- 특정 시나리오에서 타사 응용 프로그램을 읽을 때에는 IPC 메커니즘을 통해 민감한 기밀 정보를 전달하는 것은 지양해야한다.

(자) M9 : Improper Session Handling

M9의 항목은 인증 후 세션을 부여받았을 때, 하나의 세션에 하나의 모바일 디바이스가 허용되도록 해야 한다. 추가적으로 모바일 어플리케이션 코드에서 사용자 세션을 보호해야 한다. 아래는 올바른 세션 핸들링이다.

- Failure to Invalidate Sessions on the Backend : 개발자들이 세션 파기 시 모바일 어플리케이션에서만 세션을 파기하는데 이러한 경우 해당 세션 탈취 시 서버와 통신을 이어갈 수 있다. 이러한 문제로 인해 서버 측에서 또한 세션을 파기해야 한다.

- Lack of Adequate Timeout Protection : 세션 timeout을 설정하여 악의적인 사용자에 의해 세션 탈취로 발생하는 사용자 권한 해킹의 위험을 사전에 차단한다.

- Failure to Properly Rotate Cookies : 인증 상태 변경 시 이전 세션에서 사용되었던 쿠키는 재사용되지 않도록 파기해야 한다.

- Insecure Token Creation : 토큰 생성 시 guessing / anticipation attack에 노출되지 않도록 적절한 암호화 알고리즘을 사용해야 한다.

(차) M10 : Lack of Binary Protections

M10는 바이너리 보호 미흡에 대한 항목으로 어플리케이션과 서버 통신 시에 어플리케이션에 대한 무결성이 필요하다는 부분이다. 애플리케이션의 무결성 검증과 동일한 항목으로 바이너리 변조를 통해 보안솔루션 우회, 권한 상승 등 애플리케이션 지역의 로직들을 공격자가 변조가능하게 됩니다. 변조된 어플리케이션은 서버 측에서 해당 어플리케이션이 변조된 어플리케이션인지 확인을 수행하지 않음과 동시에 정상적인 요청으로 인지함으로 이로 인한 다양한 위협이 존재하게 됩니다.

6. IoT 인증 보안

IoT(사물인터넷)가 점차 실생활에 보급되는 기술로 자리 잡으면서, IoT와 관련된 보안 이슈 또한 주목받고 있다. IoT에서 발생할 수 있는 보안 위협은 물리적, 컴퓨터 시스템적인 요소 뿐 아니라 네트워킹을 통한 위협까지 상존하고 있다.

Mario Ballano Barcena, Candid Wueest, “Insecurity in the Internet of Things,” Symantec Security Response, Version 1.0 – March 12, 2015

가. IoT 인증의 한계

RAPID7에서는 올해 초 시중에서 판매되고 있는 8개의 baby monitor에 대한 보안 취약점을 조사하였다. Baby monitor는 아기의 상태를 관찰하는 카메라로 CCTV와 비슷하다고 볼 수 있다. 비디오 파일을 클라우드에 저장해서 열람하거나 아기의 현재 상태를 스트리밍 서비스를 이용해 스마트폰이나 PC로 관찰할 수 있다. 보안 취약점은 크게 2가지 관점에서 조사되었는데, 하나는 공개 정보에 대한 누출이고 하나는 약한 인증 기법이라는 관점이다. 공개 정보에 대한 유출은 baby monitor를 사용하는 스마트폰이나 PC에서 패킷이 송수신 되는 정보를 관찰하여 클라우드의 주소나 파일 경로 등을 추측한다. 다수의 baby monitor에서 암호화 없이 데이터를 전송하고 있는 것을 확인하였으며, 스트리밍 서비스를 하는 서버의 경우 host 주소와 포트를 추측하여 엿듣기 공격이나 민감한 개인 정보가 노출될 수 있음을 확인하였다. 뿐만 아니라 제조사 측에서 초기에 설정한 암호 값이 너무 단순하여 (e.g. admin/admin) 쉽게 권한을 획득하게 되는 경우도 확인할 수 있다. Baby monitor의 경우에는 IoT 인증을 위한 보안 장치가 거의 결여되어 있음을 확인할 수 있다.

Rapid7, "HACKING IoT: A Case Study on Baby Monitor Exposures and Vulnerabilities," september, 2015, available: https://www.rapid7.com/resources/iot/

신뢰할 수 있는 주체인지 아닌지를 판단하기 위해 credential을 통해 인증을 하게 된다. 패스워드를 통한 인증 방식은 사용자가 쉽게 비밀번호를 바꿀 수 없고 수많은 디바이스의 패스워드를 일일이 관리하는 일이 어렵다는 단점이 있기 때문에 IoT의 환경에는 적합하지 않다. 또한 생체 정보를 수많은 디바이스에 저장하는 일은 리스크가 크고 디바이스를 구별하는 것에 별도의 장치가 필요하다. 인증 방식의 장단점을 비교해 보았을 때, 상대적으로 보안성도 높고 관리도 용이한 것이 공개키 기반 인증 방식이다. 공개키 기반 인증 방식은 TLS나 IPsec등 다양한 보안 프로토콜에서 기본으로 사용하고 있으며, TLS와 HTTP가 결합한 HTTPS 프로토콜 등 주요 프로토콜에서 많이 사용한다. PKI를 기반으로 CA의 계층적 구조가 확장을 용이하게 해주고 전자서명이나 암호화 기술 등 다양한 프로토콜로 응용이 가능하다. 하지만 저전력, 저성능 장치가 인터넷과 연결되어 새로운 기능을 수행하는 관점에서 볼 때 기존 프로토콜이 IoT에 적합하다고 하기는 어렵다.

이에 따라 IETF CoRE WG의 고려사항과 같이 제약이 심한 장치를 대상으로 한 네트워킹 프로토콜이 등장하였다. IETF CoAP과 같은 프로토콜은 IoT 환경을 위한 네트워크 프로토콜이다. HTTP의 프로토콜을 IoT 장비에서 사용하기 위한 UDP 기반 프로토콜인데, 메시지 오버헤드를 줄이고, 다양한 HTTP의 장점을 수용한다. 하지만 성능상 제약을 이유로 특별한 보안 고려사항 없이 종단간, 또는 프록시를 경유한 데이터 통신을 수행하도록 하고 있으며, 이는 곧 통신 내용이 보호되지 않음을 뜻한다.

IETF RFC 7228, “Terminology for Constrained-Node Networks,” https://tools.ietf.org/html/rfc7228

IETF RFC 7252, “The Constrained Application Protocol (CoAP),” https://tools.ietf.org/html/rfc7252

나. IoT 인증 기법

(1) DTLS

IoT를 위한 CoAP, 또는 인터넷에서 널리 사용되는 HTTP가 응용계층 프로토콜이므로, 전송계층 등 하위계층에서 보안기능을 추가하는 방식으로 보안 문제를 해결하려는 시도가 이어지고 있다. IETF 6LoWPAN WG는 ZigBee를 이용한 IPv6 네트워킹 표준을 제안하고 있는데, ZigBee는 AES 기반의 128비트 대칭키 암호화를 이용한 보안을 제공한다. 한편 인터넷에서 HTTPS가 HTTP와 TLS의 결합으로 이루어지는 것처럼, CoAP에서 DTLS를 같이 사용하여 종단간 암호화를 달성하려는 시도도 있다. 그러나 ZigBee에 활용된 대칭키 암호화 기반 보안이 최근 Def Con 23에서 무력화된 것과 같이 충분히 안전한 보안기능을 제공하지 못하고 있으며, DTLS의 경우에는 저성능 장치에 사용하기에 너무 많은 성능을 요구하고 있다.

IETF RFC 4919, “IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs): Overview, Assumptions, Problem Statement, and Goals,” https://tools.ietf.org/html/rfc4919

Internet Draft, “TLS/DTLS Profiles for the Internet of Things,” https://tools.ietf.org/html/draft-ietf-dice-profile-17

Li Jun, Yang Qing, “I’m A Newbie Yet I Can Hack ZigBee - Take Unauthorized Control Over ZigBee Devices,” Def Con 23, Las Vegas, August 6-9, 2015

(2) Secon 논문

따라서 IoT 장치와 같이 성능이 제약된 상황에서 충분한 수준의 보안을 제공하기 위하여 IoT를 위한 위임기반 보안 기법이 제안되고 있다. R. Hummen 등이 SECON 2014에 발표한 논문에서는 DTLS의 세션 재개(session resumption)를 활용하여, 상대적으로 복잡한 공개키 연산은 프록시에서 대신 수행하여 세션을 생성하고 IoT 장치는 프록시가 만든 세션을 재개하여 상대적으로 부담이 적은 대칭키 연산을 수행하도록 하였다. 그러나 세션 재개를 이용한 방법을 수행할 때에는 IoT 장치의 개인키(private key)를 프록시가 보유하고 있어야만 한다는 단점이 있다.

Rene Hummen, et al., “Delegation-based Authentication and Authorization for the IP-based Internet of Things,” IEEE SECON 2014, Singapore, June 30-July 3, 2014

(3) keyless SSL

이와 유사한 방법으로 Keyless SSL 방식도 제안되고 있다. 웹사이트 보호 및 가속 서비스 업체인 CloudFlare는 실제 웹서버와 방문자의 중간에 위치하여, 웹서버 대신 컨텐츠를 제공하고 보안 연결을 대신 수행해주어 웹 서버의 부담을 줄여주는 서비스를 제공하고 있다. SSL 보안 연결을 대신 수행하는 과정에서 웹 서버의 개인키를 CloudFlare가 가지고 있어야 하는 부담이 있다. 또한 이 기법은 IoT를 타겟으로 하는 것이 아닌 웹 서버를 타겟으로 하는 서비스로, SSL/TLS 프로토콜에 의존하고 있다. TLS를 기반으로 하는 암호화 방식은 IoT 장비의 성능이 낮은 경우에는 상당 부분 제약 사항이 있다.

다. 암호 가속

앞서 말한것 처럼 IoT의 보안을 위해 프로토콜 자체의 개발은 꾸준히 연구되고 있다. 이와 동시에 기존 프로토콜을 최대한 활용하기 위해 보안 연산을 가속하는 적합한 하드웨어를 활용하는 등의 시도가 이루어지고 있다. AES 알고리즘은 세션 암호화에 많이 사용되는 암호화 알고리즘 중 하나이다. AES 알고리즘에 대한 가속 엔진 또한 많은 장비(ARM v8계열 등)에 들어가 있다.

Erich Wenger, “Hardware Architectures for MSP430-based Wireless Sensor Nodes Performing Elliptic Curve Cryptography,” ACNS 2013, Alberta, Canada, June 25-28, 2013