고급 보호 모드

Android 고급 보호 모드 (AAPM)는 언론인, 활동가 등 위험에 노출된 사용자를 위해 Android 기기의 보안을 강화하는 것을 목표로 Android 16에서 출시된 새로운 기능입니다. 기기 보호를 강화하도록 설계된 사전 결정된 구성 집합을 구현하는 단일 설정으로 작동합니다. AAPM은 잠재적으로 감소된 기능 및 사용 편의성보다 보안을 우선시하므로 공격 노출 영역을 최소화하기 위해 일부 기능이 제한될 수 있습니다.

영향

AAPM은 보안을 강화하기 위해 특정 시스템 서비스의 동작을 변경합니다. 앱이 보안에 민감한 사용자를 대상으로 하는 경우 이러한 제한사항에 맞춰야 합니다.

  • 시스템 신호: 사용자가 AAPM을 사용 설정하면 시스템은 제한된 환경에 맞게 조정할 수 있도록 구독된 앱에 알립니다.
  • 필수 앱 수정: AAPM에 의해 트리거된 동작 변경을 처리하도록 앱을 업데이트해야 합니다. 예를 들어 앱은 다음을 고려해야 합니다.
    • 2G 및 WEP 네트워크 연결 사용 중지
    • 앱 사이드로드 차단
    • 활성 포렌식 로깅
    • 알 수 없는 번호의 통화 차단
    • 메시지 앱의 링크에 스팸 차단 메커니즘 사용 설정
    • 위험에 노출된 사용자를 보호하기 위한 추가 맞춤 완화

AAPM과 통합

관련 API를 사용하려면 다음 권한을 선언해야 합니다.

권한 부여받기

<uses-permission android:name="android.permission.QUERY_ADVANCED_PROTECTION_MODE" />

상태 확인

사용자가 기기에서 AAPM을 사용 설정했는지 확인합니다. 이는 AdvancedProtectionManager 시스템 서비스를 사용하여 실행됩니다.

import android.security.advancedprotection.AdvancedProtectionManager

// ... inside your Activity or Service
val aapmManager = getSystemService(AdvancedProtectionManager::class.java)

if (aapmManager?.isAdvancedProtectionEnabled) {
    // 🛡️ User is in Advanced Protection Mode.
    // Engage shields: Disable risky features, enforce stricter authentication.
    // TODO: Add Method which implements extra protections
}

런타임 변경 수신 대기

사용자는 앱이 실행되는 동안 AAPM을 전환할 수 있습니다. 실시간 업데이트를 수신하도록 콜백을 등록합니다.

import android.security.advancedprotection.AdvancedProtectionManager
import java.util.concurrent.Executor

// Define the callback
val aapmCallback = AdvancedProtectionManager.Callback { isEnabled ->
    if (isEnabled) {
        // TODO: User just engaged protections. Lock it down!
    } else {
        // TODO: User disabled protections. You may relax restrictions.
    }
}

// Register the callback (for example, in onStart)
// Ensure you use the correct executor (for example, mainExecutor for UI updates)
aapmManager?.registerAdvancedProtectionCallback(mainExecutor, aapmCallback)