요즘 대부분의 사람들은 PC보다 스마트폰 등의 모바일 기기를 더 많이 사용하는데요. 이제 모바일 기기는 남녀노소 모두에게 생활 필수품이 되었습니다. 이에 따라 모바일 관련 분야도 함께 성장하고 있습니다.
이러한 트렌드는 공공 서비스에도 영향을 미치고 있는데요. 현재 모바일 기기를 활용해 행정 업무 처리와 대국민 서비스를 제공하는 ‘모바일 전자 정부 서비스 앱’은 1,160여 개에 달한다고 합니다. 그리고 대표적인 모바일 서비스 앱인 ‘코레일톡’은 다운로드 수가 1,000만을 넘어섰고, 한국도로공사의 고속도로 교통정보 앱도 500만을 넘어섰다고 합니다. 그렇다면 이와 같은 공공 모바일 서비스는 어떻게 보안을 지켜 나가고 있을까요?
보다 안전한 공공 모바일 서비스를 위하여!
정부에서는 공공 모바일 서비스를 안전하게 제공하기 위해서 필수적인 보안 등 공통기반 시스템과 표준 개발 환경, 검증 체계와 지침 및 가이드라인 등을 제시하고 있습니다.
우선, 인프라 측면에서는 모바일 서비스를 위한 보안 등의 공통지원 기능을 통합전산센터에 구축하여 정부부처와 지자체가 공동으로 활용할 수 있도록 했습니다. 그리고 인프라 위에서 제공되는 서비스 측면에서는 모바일 서비스의 중복 구축 방지와 효율적인 서비스 등록•검증•배포•관리•폐기와 같이 단계별로 준수해야 할 세부 규정을 제시하고 있습니다. 뿐만 아니라 검증 단계에서는 배포할 앱에 대한 소스코드 레벨의 보안 취약성 검증을 진행합니다.
위에 제시한 자료 [그림 1]을 보시면 모바일 전자 정부 공통기반이 크게 ‘대국민 서비스’와 ‘행정 서비스’로 구분되는 것을 알 수 있는데요. 이는 이용 대상에 따라서 구분한 것으로 그 내용은 다음과 같습니다.
● 이용 대상에 따른 모바일 전자 정부 서비스
또한 [그림 1]의 행정 서비스 부분을 보시면, ‘모바일 공통기반 시스템’이 있는데요. 이 시스템의 구조와 기능 등은 보안 처분에 관한 사항으로 행정기관 방문 시 열람이 가능합니다.
행정 서비스의 경우 업무를 수행하기 위해서 공공기관 내부망에 연계되므로 정보 유출 방지를 위하여 아래와 같은 조치를 취하고 있습니다.
- Wi-Fi를 통한 접속은 차단되며 이동통신망을 통해서만 접속 가능하고
- 단말에 대한 보안 고려사항이 대국민 서비스에 비해 강력하며
- 앱의 배포•폐기•업데이트는 행정용 앱 스토어 또는 MDM(Mobile Device Management)을 통해 제공됩니다.
그리고, 대국민•행정 서비스의 보안 위협 요소에 대해 제공되고 있는 보안 대책을 정리해 보면 다음 표의 내용과 같습니다.
● 대국민•행정 서비스의 보안 위협 요소에 대한 보안 대책
*MITM: Man-in-the-middle, E2E: End to End
모바일 대국민 서비스 보안, 어떻게 이루어지고 있나요?
앞서 살펴본 대국민•행정 서비스의 보안 위협 요소에 대해 보안 대책을 적용하여 대국민 서비스를 제공하고 있는데요. 이 서비스의 보안 공통기반은 다음 [그림 2]와 같습니다.
그러면 위의 그림을 바탕으로 모바일 앱 실행 시의 상황을 살펴보겠습니다.
1. 단말과 앱 위 • 변조 방지 서버
이 서버에서는 공개•비밀키와 해쉬값을 이용하여 클라이언트와 서버 간의 상호 신뢰 연결을 설정하고, 무결성 검사를 진행하는데요. 모바일 기기의 플랫폼 변조(루팅, 탈옥) 여부를 검사하여 위•변조된 경우 접근을 차단합니다. 또한 앱에 대한 무결성 정보를 생성하여 보안 공통기반에 접속하는 앱이 변조되었을 경우 서비스를 종료시킵니다.
2. 인증 서버
공인인증서 또는 ID/패스워드로 인증을 진행할 때, 클라이언트 방식으로 동작하는 가상 키패드가 화면에 출력되어 사용자가 패스워드를 가상 키패드로 입력하도록 유도합니다. 가상 키패드는 모바일 기기에서 비밀번호 등 중요 정보 입력 시, 모바일 기기의 키패드 위치를 변경하여 입력 정보를 보호하는데요. 입력값이 메모리상에 상주하지 않으므로 메모리 검색을 통한 입력값 노출(key logging)을 방지합니다.
3. E2E 암호화
모바일 기기와 공통기반 시스템 간 데이터 송•수신 시, E2E(End to End) 암호화를 적용하여 사용자별 접속 세션 생성 및 삭제를 하는데요. 접속 세션 별로 송•수신 정보에 대한 SSL/TLS1) 프로토콜을 기반으로 송•수신 데이터에 대해서 암•복호화 처리를 하여 데이터를 보호합니다.
4. 화면 캡처 방지 서버
서비스 정보에 대한 이미지 생성 제한 등 모바일 기기의 화면 캡처 기능을 제한하여 중요 정보의 유출을 차단하는데요. 모바일 기기 내 화면 캡처 행위를 감지할 경우, 경고 메시지를 발생합니다. 만약 대국민 서비스 앱이 실행 또는 포그라운드로 전환되면 서버로부터 정책을 수신하여 화면 캡처 시도를 차단합니다. 반면 앱이 종료 또는 백그라운드로 전환되면 정책을 해제하여 화면 캡처를 허용합니다.
5. 문서 변환 서버
사용자가 문서를 요청할 경우, 실시간으로 원본 문서를 서버에서 이미지로 변환하고 모바일 기기에 스트리밍 방식으로 전달하는데요. 이를 통해 단말기 내 파일 저장 없이 문서 뷰어로 조회할 수 있도록 합니다.
문서를 이미지로 변환하여 모바일 기기에 제공하므로 문서 변조 시도를 방지할 수 있고, 변환된 문서는 허가된 단말에서만 볼 수 있도록 변환하는데요. 문서 조회 후, 모바일 기기의 메모리 내에서 다운로드 된 문서를 삭제하여 중요 문서를 보호합니다.
이와 같이 공통기반에서 구동되는 앱은 한국 인터넷 진흥원에서 모바일 소스 취약점 검증을 진행하는데요. 관련 지침은 ‘모바일 대국민 전자 정부 서비스 앱 가이드 라인’으로 소스코드 검증 기준은 크게 ‘소스코드 보안 약점’과 ‘기능 보안 취약점 검증’으로 분류됩니다.
이 때 소스코드 보안 약점 점검은 ‘행정 기관 및 공공 기관 정보 시스템 구축, 운영 지침’의 SQL (Structured query language)삽입, 경로 조작 및 자원 삽입 등과 같은 소프트웨어 보안 약점 기준 47개 항목을 준수하도록 시큐어 코딩으로 구현했는지, 소스코드 보안 약점이 존재하는지를 점검하는 것입니다.
그리고 기능 보안 취약점 검증은 모바일 플랫폼의 구조적 허점을 이용한 보안 문제에 대응하기 위해서 진행하는데요. 모바일 플랫폼의 보안 모델과 기본 응용 프로그램의 구성 요소 간의 상호 작용에서 발생할 수 있는 보안 취약점들에 대해서 검증하는 것입니다.
‘모바일 대민 서비스 보안 취약점 점검 가이드’에서는 모바일 앱의 라이프 사이클 전반을 몇 개의 과정으로 분류하고 모바일 서비스 앱 대상 보안 취약점 점검 기준을 제시하고 있는데요. 단계별 내용을 살펴보면 다음과 같습니다.
● 설치 및 삭제
모바일 앱을 설치하고 일상적으로 기능을 이용하는 과정에서 보안•기능상 문제점과 설계 결함을 점검하고, 삭제하는 과정에서 남은 잔존 파일로 인해 시스템 성능 저하나 보안 위협이 있는지도 확인합니다.
또한 앱 설치 전후로 비정상적인 파일 및 디렉토리가 생성되거나, 앱 삭제 시 설치된 디렉토리 및 파일 이외의 파일이 삭제되는지 또는 불필요한 권한 설정을 부여하여 앱 서비스의 목적과는 다른 기능 동작이 가능한지 등을 확인합니다.
● 동작
모바일 앱의 기능들이 설계된 것처럼 동작하는지, 어떤 앱에서 사용하는지 그리고 알 수 없는 포트가 Listen 상태로 있는지를 확인합니다. 또한 허용된 주소 이외의 주소로 정보 전송이 가능하여 정보 유출의 위험이 있는지, 기능이 실행되면서 과도한 트래픽을 유발시키거나 배터리를 고갈시키는지 등 동작하는 과정에서의 취약점을 확인합니다.
● 플랫폼
루팅 및 탈옥된 기기에서 앱 설치 및 실행이 되는지, 안드로이드 취약점들이 존재하는지를 확인합니다. 취약점 점검 대상의 한 예로 동일한 키로 서명된 서로 다른 앱들 간의 UID(Unique Identification)를 공유하는지 점검하는데요. 이 내용을 간단히 살펴보겠습니다.
원래 안드로이드 보안 모델에서 응용 프로그램은 개발자의 개인키(Private Key)로 서명이 되어야 합니다. 그리고 서명이 되지 않은 응용 프로그램을 기기에 설치하지 못하도록 강제하며, 안드로이드 마켓에 업로드할 때는 반드시 개발자의 개인키로 서명하도록 하고 있는데요. 만약 어떤 개발자가 여러 가지 앱을 만들고 동일한 자신의 개인키로 서명을 하면 앱들 간 UID를 공유할 수 있습니다.
이를 ‘SharedUser ID’라고 하고, 이것은 안드로이드 모바일 기기의 AndroidManifest.xml 파일 내에 정의됩니다. 원래 SharedUser ID는 개발자가 작성한 응용 프로그램 사이의 상호 협업이 원만하도록 하기 위한 기법입니다. 하지만 SharedUser ID를 선언하면 앱들 간 UID뿐만 아니라 설정된 권한까지 공유되는 현상이 발생하게 됩니다.
보안의 원칙 중의 하나가 최소한의 권한인데요. UID를 공유하는 앱들이 모두 동일한 권한을 필요로 하지 않을 경우, 어떤 앱은 원래 요구되는 권한보다 더 많은 권한을 가지게 됩니다. 이러한 내용은 사용자가 방지하기에는 불가능한 취약점입니다.
● 식별, 인증 및 암호
인증 정보, 개인 정보 또는 IMEI(International Mobile Equipment Identity), IMSI(International Mobile Station Identity) 등과 같은 중요 정보가 모바일 기기에 평문으로 저장되거나 전송되는 취약점이 있는지 점검하는 것입니다. 이것은 웹 서비스 보안과 유사한 점이 많은데요. 예를 들어 ID, 비밀번호는 영문자•숫자•특수문자 9자리 이상 등으로 보안 정책을 정의하고 적용하여 공격자가 추측하기 어렵도록 생성을 유도하거나, 사용자 인증 정보가 평문으로 모바일 기기에 저장이 되는지 등을 검증합니다.
● 수집, 활용 및 배포
사용자 동의 없이 개인 정보 또는 개인의 위치 정보를 수집, 활용하여 법적인 문제가 발생하거나 모바일 앱 소스코드 유출, 보안 메커니즘 우회 등이 발생할 수 있는지 점검합니다.
개인 정보 보호법을 준수하여 개인 정보(주민등록번호, 이름, 전화번호 등)와 GPS 같은 개인의 위치 정보를 수집하고 활용할 때에는 사전에 사용에 대해서 공지하고 동의를 받아야 합니다. 또한 Android 모바일 앱의 경우, dex2jar와 같은 디컴파일 도구를 이용하면 apk 파일을 소스코드로 변환할 수 있으므로 앱의 구조와 소스코드가 노출될 수 있습니다. 이를 방지하기 위해서 난독화 도구를 사용하여 앱을 패키징했는지를 검증합니다.
이 밖에도 ‘모바일 대민 서비스 보안 취약점 점검 가이드’는 취약점과 보안 대책에 대한 설명은 물론 진단 방법과 점검 도구 및 진단 기준에 대해서 자세히 설명하고 있습니다.
지금까지 모바일 전자정부 공통기반의 인프라 측면의 보안과 응용 측면의 보안에 대해 살펴보았습니다.
모바일 전자정부 공통기반은 여러 행정 단체가 공통으로 사용되는 시스템이므로 그 규모가 크고, 여러 가지 보안 솔루션들이 적용되어 있습니다. 또한 여러 단계나 측면에서 검증된 시스템입니다.
따라서 모바일 전자정부 공통기반을 모바일 서비스를 제공하거나 스마트워크 도입을 검토할 때 또는 현재 운영 중인 시스템의 보안성을 검토하고자 할 때 참고하시면 많은 도움을 받으실 수 있을 것입니다.
지난 3월부터 시작한 『LG CNS와 함께하는 보안컨설팅 A to Z』가 이번 글을 마지막으로 마무리 됩니다. 그동안 보안 연재에 많은 관심과 호응 보내주신 독자 여러분께 진심으로 감사 드립니다. 내년에 독자 여러분께 더 큰 도움 드릴 수 있는 보안에 대한 이야기로 찾아 뵙겠습니다.
글 ㅣ LG CNS 보안컨설팅팀
[‘보안컨설팅 A to Z’ 연재 현황 및 향후 계획]
● 1편 출입카드 복제 위험 : http://blog.lgcns.com/737
● 2편 통합보안 관리 솔루션 구축 시 고려사항 : http://blog.lgcns.com/751
● 3편 의료분야 개인정보보호 위반사례 및 대응방안 : http://blog.lgcns.com/779
● 4편 보안 위험 분석 방법론의 한계와 발전방향 : http://blog.lgcns.com/812 (上) http://blog.lgcns.com/813 (下)
● 5편 물리보안 동향 : http://blog.lgcns.com/856
● 6편 보안관리체계 도입하기 : http://blog.lgcns.com/869
● 7편 IoT 보안 취약점 및 대응방안 : http://blog.lgcns.com/896
● 8편 금융권 망분리 가이드라인 : http://blog.lgcns.com/922
● 9편 전자문서 보안 : http://blog.lgcns.com/945
● 10편 공공기관 모바일 보안 : http://blog.lgcns.com/976