생체 인식

생체 인식은 기기에서 본인 확인을 하는 방식으로, 편리성은 높지만 보안은 떨어질 수 있습니다. 단계식 인증 모델에서는 기본 인증(PIN, 패턴, 비밀번호 등의 지식 계수 기반 모달리티)이 최고 수준의 보안을 제공합니다. 생체 인식은 편의성과 보안의 균형을 제공하는 인증의 보조 단계에 해당합니다. Android CDD는 클래스 3(이전 명칭: 강함), 클래스 2(이전 명칭: 약함), 클래스 1(이전 명칭: 편의)로 구성된 3가지 생체 인식 강도 클래스를 정의합니다. 각 클래스에는 기본 요건, 권한, 제약 조건이 있습니다. 자세한 내용은 위의 CDD를 참고하세요. 세 가지 클래스 모두 잠금 화면과 통합할 수 있지만, 강함 및 약함 인증자만 android.hardware.biometrics API와 통합할 수 있습니다. 다음 표에서는 각 인증자와 인증자가 지원하는 기능을 설명합니다.

인증자 잠금 화면 BiometricPrompt 통합 키 저장소(시간 기반 키) 키 저장소(작업 기반 키)
BIOMETRIC_STRONG(클래스 3)
BIOMETRIC_WEAK(클래스 2) 아니요 아니요
BIOMETRIC_CONVENIENCE
(클래스 1)
아니요 아니요 아니요
DEVICE_CREDENTIAL 예(1)
  1. 이 기능은 Android 11에서 추가되었습니다. 자세한 내용은 이 페이지를 참고하세요.

Android 프레임워크에는 얼굴 및 지문 생체 인식 인증이 지원됩니다. Android는 다른 생체 인식 모달리티(예: Iris)를 지원하도록 맞춤설정할 수 있습니다. 그러나 생체 인식 통합은 모달리티가 아닌 생체 인식 보안에 따라 달라집니다. 생체 인식 보안 규정에 관한 자세한 내용은 생체 인식 잠금 해제 보안 측정을 참고하세요.

소스

Android 11

  • 개발자가 앱에서 허용하는 인증 유형을 지정하는 데 사용할 수 있는 상수를 제공하는 BiometricManager.Authenticators 인터페이스를 도입했습니다.
  • 개발자가 앱의 요구사항을 충족하는 인증 방법을 등록하도록 사용자를 안내하는 데 사용할 수 있는 ACTION_BIOMETRIC_ENROLL 인텐트 작업을 추가합니다.
  • 사용자가 생체 인식 사용자 인증 정보를 사용하여 인증했는지 또는 기기 사용자 인증 정보를 사용하여 인증했는지 확인하는 데 사용할 수 있는 AuthenticationResult#getAuthenticationType() 메서드를 추가합니다.
  • BiometricPrompt 클래스 내에서 사용당 인증 키를 추가로 지원합니다.

Android 10

  • 개발자가 생체 인식 인증의 사용 가능 여부를 쿼리하는 데 사용할 수 있는 BiometricManager 클래스가 도입되었습니다.
  • BiometricPrompt에 지문 및 얼굴 인증 통합이 포함되었습니다.

Android 9

  • BiometricPrompt에 지문 통합만 포함되었습니다.
  • FingerprintManager 클래스가 지원 중단되었습니다. 번들 및 시스템 앱에서 이 클래스를 사용하는 경우 대신 BiometricPromptBiometricManager를 사용하도록 업데이트합니다.
  • FingerprintManager CTS 인증기 테스트가 BiometricPromptBoundKeysTest를 사용하여 BiometricPrompt를 테스트하도록 업데이트되었습니다.

구현

사용자와 개발자의 생체 인식 환경을 원활하게 하려면 생체 인식 스택을 BiometricPrompt, BiometricManager, ACTION_BIOMETRIC_ENROLL API와 통합하세요. 생체 인식 센서가 있는 기기는 이러한 강도 요구사항을 준수해야 합니다.
생체 인식 스택을 BiometricPromptBiometricManager APIs와 통합하려면 다음 안내를 따르세요.

  1. <Modality>Service가 IBiometricService#registerAuthenticator 메서드를 통해 BiometricService에 올바르게 등록되어 있고 IBiometricAuthenticator 인터페이스를 구현하는지 확인합니다. 일반적인 모달리티(지문, 얼굴)는 일반적인 슈퍼클래스에서 확장됩니다. 지원되지 않는 모달리티를 통합해야 하는 경우 지문/얼굴 예시 및 생체 인식 관련 CDD 가이드라인을 따르세요.
  2. 새 모달리티가 SystemUI에서 제대로 지원되는지 확인합니다. 지문 및 얼굴용 기본 BiometricPrompt 사용자 인터페이스가 있습니다. 여기에는 기기에 필요한 모든 레이아웃 또는 테마 변경사항이 포함되어야 합니다. 디스플레이 지문 센서의 상응하는 레이아웃 변경을 예로 들 수 있습니다.

생체 인식 스택을 ACTION_BIOMETRIC_ENROLL API와 통합하려면 다음 안내를 따르세요.

  1. 등록 흐름을 표시하도록 BiometricEnrollActivity를 수정합니다. 생체 인식은 요청된 강도를 충족하는 경우에만 표시될 수 있습니다. 기기에서 둘 이상을 지원하는 경우 이 작업에서는 사용자가 선택할 수 있는 목록을 표시해야 합니다.
BiometricPrompt 아키텍처
그림 1. BiometricPrompt 아키텍처

HAL 구현 가이드라인

생체 인식 데이터가 유출되지 않고 사용자가 기기에서 삭제될 때 생체 인식 데이터도 함께 삭제되도록 하려면 다음 생체 인식 HAL 가이드라인을 따르세요.

  • 안전한 격리 환경(예: TEE 또는 보안 요소) 외부에서 원시 생체 인식 데이터 또는 파생물(예: 템플릿)에 절대 액세스할 수 없도록 합니다. 저장된 모든 데이터는 TEE(신뢰할 수 있는 실행 환경)에만 알려진 기기별 키로 암호화되어야 합니다. 하드웨어가 이를 지원하는 경우 보안 격리 환경에 대한 하드웨어의 액세스 권한을 제한하고 SELinux 정책을 통해 이를 보호합니다. 모든 기기 파일에서 명시적 SELinux 정책을 사용하는 보안 격리 환경에서만 통신 채널(예: SPI, I2C) 액세스할 수 있도록 합니다.
  • 정보 유출 및 기타 공격을 방지하려면 보안 격리 환경에서 생체 인식 기능을 획득, 등록 및 인식해야 합니다. 이 요구사항은 클래스 3(이전 명칭: 강함) 및 클래스 2(이전 명칭: 약함) 생체 인식에만 적용됩니다.
  • 재생 공격으로부터 보호하려면 비공개 기기 전용 키로 생체 인식 템플릿에 서명하세요. 고급 암호화 표준(AES)의 경우 템플릿 파일이 다른 기기에서 또는 같은 기기에 등록한 다른 사용자에 의해 작동되지 않도록 최소 한 개의 템플릿을 절대 파일 시스템 경로, 그룹 및 생체 인식 ID로 서명합니다. 예를 들어 같은 기기의 다른 사용자 계정에서 또는 다른 기기에서 생체 인식 데이터를 복사하는 등의 작업 자체가 불가능해야 합니다.
  • TEE 외부에 데이터를 저장해야 하는 경우 setActiveUser() HIDL method에서 제공하는 파일 시스템 경로를 사용하거나 사용자가 삭제될 때 모든 사용자 템플릿 데이터를 삭제하는 다른 방법을 제공합니다. 이렇게 하는 이유는 사용자 데이터의 유출을 방지하기 위해서입니다. 이 경로를 사용하지 않는 기기는 사용자가 삭제된 후 정리해야 합니다. 특히 TEE에 없는 경우 생체 인식 데이터와 파생 파일을 암호화하여 저장하는 것이 CDD 요구사항입니다. 보안 격리 환경의 저장소 요구사항으로 인해 이를 실행할 수 없는 경우 사용자가 삭제되거나 기기가 완전 삭제될 때 데이터가 삭제되도록 후크를 추가합니다. LockSettingsService.removeBiometricsForUser()를 참고하세요.

맞춤설정

기기가 여러 생체 인식 기능을 지원하는 경우 사용자는 설정에서 기본값을 지정할 수 있어야 합니다. BiometricPrompt 구현은 사용자가 명시적으로 재정의하지 않는 한 클래스 3(이전 명칭: 강함) 생체 인식을 우선적으로 설정해야 하며, 생체 인식과 관련된 위험을 설명하는 경고 메시지를 표시해야 합니다(예: 사용자가 나온 사진으로 기기가 잠금 해제될 수 있습니다).

유효성 검사

생체 인식 기능을 구현하려면 다음 테스트를 통과해야 합니다.

  • CTS BiometricManager
  • CTS BiometricPrompt(상태, 인증기를 사용한 심층 테스트)
  • CtsVerifier 생체 인식 테스트 섹션: 기기에서 지원하는 각 모달리티를 개별적으로 통과해야 함

또한 기기가 AOSP HIDL(fingerprint@2.1, fingerprint@2.2, face1.0)을 사용하는 생체 인식을 지원하는 경우 관련 VTS 테스트(지문, 얼굴)를 통과해야 합니다.