50. 모바일 앱 사업 감리

⚠️ 이 문서는 웹사이트(Web) 환경과 달리 스마트폰이라는 물리적 기기의 특수성과 구글/애플이라는 제3의 플랫폼 통제를 받는 모바일 애플리케이션(App) 구축 사업 감리 시, 감리인이 반드시 점검해야 할 핵심 보안 및 배포 요건을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 모바일 앱은 사용자 기기에 설치되는 클라이언트 소프트웨어이므로, 소스 코드 탈취(디컴파일)나 루팅(Rooting)/탈옥(Jailbreak) 기기를 통한 해킹 시도를 클라이언트 단에서 자체 방어할 수 있는지가 감리의 핵심이다.
  2. 가치: 금융, 공공 등 민감 정보를 다루는 앱이 해커에 의해 위변조되어 재배포되거나, 개인정보가 폰에 암호화되지 않은 채 평문으로 저장되는 대형 사고를 미연에 방지한다.
  3. 기술 체계: 난독화(Obfuscation), 루팅/탈옥 탐지, 앱 무결성(위변조 방지) 검증이 3대 필수 보안 점검 항목이며, 앱 마켓(App Store, Play Store)의 까다로운 심사 기준 통과 및 배포 계획을 반드시 확인해야 한다.

Ⅰ. 웹 감리와 모바일 감리의 본질적 차이

모바일 앱은 서버에 얌전히 있는 웹과 달리 '적진(해커의 폰) 한가운데'에 코드를 던져두는 것과 같다.

  1. 역공학 (Reverse Engineering)의 위협:
    • 해커가 안드로이드 APK 파일이나 iOS IPA 파일을 다운로드하여 디컴파일(Decompile) 툴을 돌리면, 개발자가 작성한 자바/코틀린 소스 코드가 거의 원본 형태로 노출될 수 있다. (DB 접속 패스워드나 암호화 키 유출 위험)
  2. 디바이스 통제권 상실:
    • 사용자가 스마트폰 운영체제의 최고 관리자 권한을 탈취한 상태(루팅/탈옥)에서는, 앱 내부의 메모리를 들여다보거나 실행 흐름을 마음대로 조작(Memory Hooking)할 수 있다.
  3. 감리의 초점:
    • 따라서 모바일 감리는 서버 단의 보안뿐만 아니라, **'앱 자체가 스스로를 보호할 수 있는 방어구(Armor)를 제대로 입고 있는가'**를 중점적으로 점검한다.

📢 섹션 요약 비유: 웹사이트 감리가 은행 창구(서버)를 튼튼하게 지었는지 검사하는 것이라면, 모바일 앱 감리는 손님들의 주머니(스마트폰)에 들어간 현금 수송 가방이 칼(해킹)로 찢어지거나 엑스레이(역공학)로 내용물을 볼 수 없게 철저히 코팅되었는지를 검사하는 것입니다.


Ⅱ. 모바일 앱 감리 3대 필수 보안 점검 항목

행정안전부 및 KISA의 모바일 대국민 서비스 보안 가이드라인에 따라 아래 항목은 필수 통과 대상이다.

  1. 난독화 (Obfuscation) 적용 여부:
    • 디컴파일을 하더라도 소스 코드를 인간이 읽을 수 없도록, 클래스나 변수 이름을 의미 없는 문자(a, b, c)로 바꾸고, 제어 흐름(if, while)을 복잡하게 꼬아놓았는지 점검한다. (ProGuard, DexGuard 등 적용 확인)
  2. 위변조 방지 (App Integrity) 메커니즘:
    • 해커가 정상 앱의 로고만 똑같이 베끼고 안에 악성코드를 심어 가짜 앱 마켓에 올리는 것을 막기 위해, 앱 실행 시 자체 해시(Hash) 값을 검사하여 코드가 단 한 줄이라도 수정되었으면 즉시 강제 종료되도록 구현되었는지 확인한다.
  3. 루팅(Rooting) 및 탈옥(Jailbreak) 탐지:
    • 앱이 실행될 때 기기의 운영체제 상태를 체크하여, 무결성이 깨진(루팅된) 단말기라고 판단되면 금융 거래나 중요 서비스 접근을 원천 차단하는 로직이 적용되었는지 테스트한다.

📢 섹션 요약 비유: 기밀문서를 적국에 보낼 때 글자를 암호 같은 외계어로 바꿔 쓰고(난독화), 문서 봉투에 특수 봉인 도장을 찍어 뜯은 흔적을 알게 하며(위변조 방지), 문서가 도착한 장소가 적군의 비밀 기지(루팅된 폰)로 의심되면 문서가 스스로 불타 없어지게(탐지 및 차단) 만드는 체계입니다.


Ⅲ. 마켓 배포(Deployment) 및 생명주기 감리 포인트

개발이 끝났다고 끝이 아니다. 애플과 구글의 문지기를 통과해야 한다.

  1. 스토어 심사 가이드라인 준수:
    • 특히 iOS 앱스토어는 심사(Review)가 매우 까다롭다. 권한(카메라, 위치) 요청 시 그 사유가 불분명하거나, 백그라운드 배터리 소모가 심하면 등록이 거절(Reject)된다.
    • 감리인은 프로젝트 일정표에 **'스토어 심사 기간 및 거절(Reject) 시 재수정/재배포 기간(보통 1~2주)'**이 넉넉히 반영되었는지 점검해야 한다.
  2. 데이터 로컬 저장 보안 (Local Storage Security):
    • 자동 로그인을 위한 비밀번호, 인증 토큰, 개인정보 파일 등을 스마트폰 내부 저장소(Shared Preferences 등)에 평문으로 저장했는지, 아니면 안전한 시스템 암호화 영역(Android Keystore, iOS Keychain)을 사용했는지 소스 및 취약점 점검 툴로 진단한다.

📢 섹션 요약 비유: 물건(앱)을 다 만들었더라도 백화점(앱스토어)의 깐깐한 품질 검사를 통과하지 못하면 진열대에 올릴 수조차 없기 때문에, 감리인은 백화점 검사에서 퇴짜맞을 가능성과 다시 만들어오는 시간까지 프로젝트 계획에 포함되어 있는지 미리 경고해 주어야 합니다.