Android 장치의 보안

Adobe AIR 2.5 이상

모든 컴퓨팅 장치에서와 마찬가지로 Android에서도 AIR는 기본 보안 모델을 따릅니다. 동시에 AIR는 자체 보안 규칙을 유지하므로 이를 통해 개발자가 안전한 인터넷 연결 응용 프로그램을 더욱 쉽게 작성할 수 있습니다.

Android에서 AIR 응용 프로그램은 Android 패키지 형식을 사용하므로 설치는 Android 보안 모델에 따릅니다. AIR 응용 프로그램 설치 프로그램은 사용되지 않습니다.

Android 보안 모델의 주요 세 가지 측면은 다음과 같습니다.

  • 권한

  • 응용 프로그램 서명

  • 응용 프로그램 사용자 ID

Android 권한

Android의 여러 기능은 운영 체제 권한 메커니즘에 의해 보호됩니다. 보호되는 기능을 사용하려면 AIR 응용 프로그램 설명자에서 응용 프로그램이 필요한 권한을 요구함을 선언해야 합니다. 사용자가 응용 프로그램을 설치하려고 하면 Android 운영 체제는 설치가 진행되기 전에 요청된 모든 권한을 사용자에게 표시합니다.

대부분의 AIR 응용 프로그램은 Android 권한을 응용 프로그램 설명자에 지정해야 합니다. 기본적으로 아무런 권한도 포함되지 않습니다. 다음은 AIR 런타임에서 노출되는 보호된 Android 기능에 필요한 권한입니다.

ACCESS_COARSE_LOCATION
응용 프로그램에서 Geolocation 클래스를 통해 WIFI 및 셀룰러 네트워크 위치 데이터에 액세스할 수 있도록 허용합니다.

ACCESS_FINE_LOCATION
응용 프로그램에서 Geolocation 클래스를 통해 GPS 데이터에 액세스할 수 있도록 허용합니다.

ACCESS_NETWORK_STATE 및 ACCESS_WIFI_STATE
응용 프로그램에서 NetworkInfo 클래스를 통해 네트워크 정보에 액세스할 수 있도록 허용합니다.

CAMERA
응용 프로그램에서 카메라에 액세스할 수 있도록 허용합니다.

INTERNET
응용 프로그램에서 네트워크 요청을 수행할 수 있도록 허용하고 원격 디버깅도 허용합니다.

READ_PHONE_STATE
수신 호출이 발생하면 AIR 런타임에 오디오를 음소거할 수 있도록 허용합니다.

RECORD_AUDIO
응용 프로그램에서 마이크에 액세스할 수 있도록 허용합니다.

WAKE_LOCK 및 DISABLE_KEYGUARD
응용 프로그램에서 장치가 SystemIdleMode 클래스 설정을 사용하여 대기 모드로 들어가지 못하게 할 수 있도록 허용합니다.

WRITE_EXTERNAL_STORAGE
응용 프로그램에서 장치의 외부 메모리 카드에 쓸 수 있도록 허용합니다.

응용 프로그램 서명

Android 플랫폼용으로 만들어진 모든 응용 프로그램 패키지는 반드시 서명되어야 합니다. Android에서 AIR 응용 프로그램은 기본 Android APK 형식으로 패키지되어 있기 때문에 AIR 규칙이 아니라 Android 규칙에 따라 서명됩니다. Android와 AIR는 서로 비슷한 방식으로 코드 서명을 사용하지만 다음과 같은 중요한 차이점이 있습니다.

  • Android에서 서명을 통해 개인 키가 개발자의 소유임을 확인할 수 있지만 해당 개발자의 ID를 확인할 수는 없습니다.

  • Android 마켓에 제공된 응용 프로그램의 경우 인증서는 최소한 25년 동안 유효해야 합니다.

  • Android에서 패키지 서명을 다른 인증서로 마이그레이션하는 것은 지원되지 않습니다. 업데이트가 다른 인증서에 의해 서명된 경우 사용자는 원래의 응용 프로그램을 제거해야 업데이트된 응용 프로그램을 설치할 수 있습니다.

  • 동일한 인증서로 서명된 두 개의 응용 프로그램은 서로의 캐시 및 데이터 파일에 액세스할 수 있도록 허용하는 공유 ID를 지정할 수 있습니다. 이러한 공유는 AIR에서 지원되지 않습니다. )

응용 프로그램 사용자 ID

Android는 Linux 커널을 사용합니다. 설치된 모든 응용 프로그램에는 파일 액세스와 같은 작업에 대한 권한을 결정하는 Linux 형식의 사용자 ID가 할당됩니다. 응용 프로그램, 응용 프로그램 저장소 및 임시 디렉토리의 파일은 파일 시스템 권한에 따라 액세스로부터 보호됩니다. SD 카드와 같은 외부 저장소에 작성된 파일은 해당 SD 카드가 컴퓨터에 대용량 저장 장치로 마운트된 경우 다른 응용 프로그램 또는 사용자가 읽고 수정하고 삭제할 수 있습니다.

인터넷 요청을 통해 수신된 쿠키는 AIR 응용 프로그램 간에 공유되지 않습니다.

배경 이미지의 개인 정보 보호

사용자가 응용 프로그램을 백그라운드로 전환할 경우 일부 Android 버전은 최근 응용 프로그램 목록에서 축소판을 사용하는 스크린 샷을 캡처합니다. 이 스크린 샷은 장치 메모리에 저장되므로 장치를 물리적으로 장악한 공격자가 이 정보에 액세스할 수 있습니다.

응용 프로그램이 중요한 정보를 표시할 경우 배경 스크린 샷이 해당 정보를 캡처하지 않도록 보호해야 합니다. NativeApplication 객체가 전달하는 deactivate 이벤트는 응용 프로그램이 배경으로 전환될 때 이를 알리는 역할을 합니다. 이 이벤트를 사용하여 중요한 정보를 지우거나 숨기십시오.

Android의 암호화된 데이터

Android의 AIR 응용 프로그램에서는 내장 SQL 데이터베이스에서 사용 가능한 암호화 옵션을 통해 암호화된 데이터를 저장할 수 있습니다. 최적의 보안을 위해 응용 프로그램이 실행될 때마다 사용자가 입력하는 암호에 기초한 암호화 키를 사용합니다. 로컬로 저장된 암호화 키 또는 암호는 응용 프로그램 파일에 액세스할 수 있는 공격자로부터 숨기는 것이 힘들거나 불가능합니다. 공격자가 키를 가져올 수 있는 경우 데이터를 암호화해도 Android 시스템이 제공하는 사용자 ID 기반 파일 시스템 보안 이상의 추가 보호가 제공되지 않습니다.

EncryptedLocalStore 클래스를 사용하여 데이터를 저장할 수 있지만 이러한 데이터는 Android 장치에서 암호화되지 않습니다. 대신 Android 보안 모델은 응용 프로그램 사용자 ID를 사용하여 다른 응용 프로그램으로부터 데이터를 보호합니다. 공유된 사용자 ID를 사용하고 동일한 코드 서명 인증서로 서명된 응용 프로그램은 암호화된 동일한 로컬 저장소를 사용합니다.

중요: 루트로 지정된 전화에서 루트 권한으로 실행 중인 모든 응용 프로그램은 다른 응용 프로그램의 파일에 액세스할 수 있습니다. 따라서 암호화된 로컬 저장소를 사용하여 저장된 데이터는 루트로 지정된 장치에서 안전하지 않습니다.