SecurityAndroid

안드로이드 서비스 배포 체크리스트 마지막편

2024.12.03R&D | June

 

 

오늘은 서비스 배포 시 신경써야 할 안드로이드 보안 체크리스트의 마지막 편으로, 앱의 설정과 서명 관리에서 주의해야 할 핵심 포인트 및 보안 체크리스트를 다루겠습니다. 💡

 

🔑 1. 서명 키 관리: 앱 신뢰성을 지키는 핵심

 

안드로이드 앱 서명 키는 사용자와 앱 간의 신뢰를 보증하는 중요한 역할을 합니다. 하지만 서명 키가 유출되면 악성코드가 포함된 앱이 배포될 수 있는 치명적인 보안 문제가 발생합니다.

 

✅ 서명 키 유출 시 발생할 수 있는 문제

 

  • 동일한 패키지 이름과 서명을 가진 악성 앱 배포 가능.
  • 사용자 기기에서 기존 앱 삭제 없이 악성 앱이 설치되거나 업데이트될 수 있음.
  • 앱의 신뢰성과 브랜드 이미지에 심각한 타격 발생.

 

✅ 안전한 서명 키 관리 방법

 

  1. Google Play 서명 기능 사용: Google Play의  기능을 활용하면, 키 유출 시 새 키로 교체할 수 있는 옵션을 제공합니다.
  2. 로컬 환경 보안 유지: 서명 키를 로컬 환경에 저장해야 할 경우, 키스토어 암호를 암호화된 형태로 별도 관리하세요.
  3. 버전 관리 주의: 절대로 서명 키 파일을 Git 저장소 등 공용 저장소에 올리지 마세요.

 

# 예시: .gitignore 파일에 서명 키 포함 방지
*.keystore
*.jks

 

 


 

 

🕵️ 2. 실제 사례로 본 보안 위협

 

보안 취약점의 심각성을 더 잘 이해하기 위해 실제 사례를 살펴봅시다.

 

🔍 국내 교통 정보 앱 사례

 

한 교통 정보 앱의 서명 키가 유출되어, 동일한 이름을 가진 악성 앱이 Google Play 외부 경로를 통해 배포되었습니다. 피해자가 기존 앱을 믿고 업데이트하자, 악성 코드가 포함된 앱으로 대체되었고, 사용자 데이터가 탈취되었습니다.

 

🔑 교훈: 서명 키의 철저한 관리와 백업 설정 검토는 필수입니다. 특히 공용 저장소에 서명 키를 절대 업로드하지 마세요.

 

🔒 3. 네트워크 보안: HTTPS를 강제하고 데이터 암호화하기

 

안드로이드 앱이 네트워크 통신을 수행할 때, 암호화되지 않은 데이터는 중간자 공격(Man-in-the-Middle)에 취약할 수 있습니다. 데이터를 안전하게 보호하려면 HTTPS네트워크 보안 구성(Network Security Configuration)을 활용하세요.

 

 

✅ HTTPS 사용을 강제하는 방법

 

  1. 네트워크 보안 구성 추가:

    네트워크 트래픽의 암호화를 보장하려면 AndroidManifest.xml에 아래 설정을 추가하세요:

     

    <application
        android:networkSecurityConfig="@xml/network_security_config">
    </application>

     

  2. network_security_config.xml 파일 작성:

     

    <network-security-config>
        <domain-config cleartextTrafficPermitted="false">
            <domain includeSubdomains="true">example.com</domain>
        </domain-config>
    </network-security-config>

 

 

🚀 3. 민감 데이터 암호화: 안전한 저장소와 키 관리

 

앱 내부에 민감한 데이터를 저장할 때, 단순히 파일에 저장하거나 SharedPreferences를 사용하면 쉽게 유출될 가능성이 있습니다. 모든 데이터를 암호화하여 저장하고, 안전하게 키를 관리하세요.

=

✅ 보안 데이터 저장 방법

 

  1. EncryptedSharedPreferences 사용:

     

    민감 데이터를 저장할 때는 기본 SharedPreferences 대신 암호화된 버전을 사용하세요.

     

    SharedPreferences prefs = EncryptedSharedPreferences.create(
        "secure_prefs",
        MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC),
        context,
        EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
        EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
    );

     

  2. SQLCipher를 사용한 데이터베이스 암호화:

     

    SQLite 데이터베이스에 저장하는 데이터도 반드시 암호화하세요.  라이브러리를 활용할 수 있습니다.

     

🌐 4. 추가적으로 고려해야 할 보안 정책

 

안드로이드 앱 보안은 파일 저장소나 퍼미션 설정 외에도 다양한 영역에서 추가적인 대비가 필요합니다.

 

🔧 외부 라이브러리 및 의존성 관리

 

  • 앱에 사용되는 외부 라이브러리는 최신 버전으로 유지하세요.
  • 알려진 취약점이 포함된 의존성을 확인하려면 Snyk, Dependabot와 같은 도구를 활용하세요.

 

📖 안드로이드 보안 가이드 활용

 

구글에서 제공하는 을 정기적으로 확인하고, 앱에 반영하세요.

 


 

📣 철저한 보안 점검으로 신뢰받는 앱 개발하기

 

안드로이드 앱 개발에서 보안은 선택이 아닌 필수입니다. 앱 배포 전, 철저한 보안 점검과 예방 조치를 통해 사용자 신뢰를 얻는 안전한 앱을 출시하세요. 위의 체크리스트를 활용하면 보안 위협을 효과적으로 줄이고, 안정적인 서비스를 제공할 수 있습니다. 😊

 


 

 

❓ Q&A 

 

Q1. 내부 저장소와 외부 저장소의 차이는 무엇인가요?

 

내부 저장소는 앱 전용 공간으로, 다른 앱이 접근할 수 없습니다. 반면, 외부 저장소는 사용자가 직접 접근하거나, 다른 앱에서도 접근할 수 있어 보안에 취약합니다.

 

Q2. 퍼미션 최소화가 중요한 이유는 무엇인가요?

 

퍼미션을 과도하게 요청하면 앱 리뷰 과정에서 거절당할 수 있으며, 사용자가 앱에 불신을 느낄 수 있습니다. 또한, 불필요한 권한이 보안 위협으로 작용할 수 있습니다.

 

Q3. HTTPS 프로토콜을 꼭 사용해야 하나요?

 

네, HTTPS는 데이터를 암호화하여 중간자 공격을 방지합니다. 특히 민감한 정보를 처리하는 앱에서는 필수입니다.

 

추천컬럼

추천컬럼 이미지

상위1%의 결과물을 얻으려면 이런 관점으로 봐야합니다.

2024.09.20
추천컬럼 이미지

프로그램개발, 합리적인 가격을 위해 잊으면 안되는 MVP

2024.09.20

상담만 받아보셔도 좋습니다 긱다이브의 상담으로 업체 비교를 시작해보세요

CONTACT US