기기 상태

기기 상태는 소프트웨어가 기기에 얼마나 자유롭게 플래시될 수 있는지와 인증이 적용되는지 여부를 나타냅니다. 기기 상태는 LOCKEDUNLOCKED 상태가 있습니다. LOCKED 기기에서는 새 소프트웨어를 기기에 플래시하지 못하지만 UNLOCKED 기기에서는 수정할 수 있습니다.

기기 전원이 켜지면 부트로더는 먼저 기기가 LOCKED 또는 UNLOCKED 상태인지 확인합니다. 기기가 UNLOCKED 상태라면 부트로더는 사용자에게 경고를 표시한 후 로드된 OS가 신뢰할 수 있는 루트에 의해 서명되지 않았더라도 부팅을 진행합니다.

기기가 LOCKED 상태라면 부트로더는 자체 검사 부팅 단계를 거쳐 기기의 소프트웨어를 확인합니다. LOCKED 기기는 오직 로드된 OS가 신뢰할 수 있는 루트에 의해 올바르게 서명된 때에만 부팅됩니다. 자세한 내용은 부팅 흐름을 참조하세요.

기기 상태 변경

기기의 상태를 변경하려면 fastboot flashing [unlock | lock] 명령어를 사용합니다. 사용자 데이터를 보호하려면 모든 상태 전환 시 데이터 파티션을 완전 삭제하고 데이터를 삭제하기 전에 사용자 확인을 요청합니다.

사용자가 중고 개발 기기를 구매할 때는 UNLOCKED에서 LOCKED로 상태 전환이 예상됩니다. 기기 잠금의 결과로 사용자는 경고가 없는 한 기기가 기기 제조업체에서 제작한 상태임을 확신할 수 있습니다. 개발자가 개발 목적으로 기기에서 인증을 사용 중지하려는 때에는 LOCKED에서 UNLOCKED로의 상태 전환이 예상됩니다.

신뢰할 수 있는 루트

신뢰할 수 있는 루트는 기기에 저장된 Android 사본에 서명하는 데 사용되는 암호화 키입니다. 신뢰할 수 있는 루트의 비공개 부분은 기기 제조업체만 알고 있으며 모든 버전의 배포용 Android에 서명하는 데 사용됩니다. 신뢰할 수 있는 루트의 공개 부분은 기기에 내장되어 있으며 무단으로 변경할 수 없도록 적절한 위치(일반적으로 읽기 전용 저장소)에 저장됩니다.

Android 로드 시 부트로더는 신뢰할 수 있는 루트를 사용하여 진위를 확인합니다. 이 프로세스에 관한 자세한 내용은 자체 검사 부팅을 참조하세요. 기기에 여러 부트로더가 있을 수 있으며 여러 개의 암호화 키가 작동 중일 수 있습니다.

사용자 설정 가능한 신뢰할 수 있는 루트

기기는 선택적으로 사용자가 신뢰할 수 있는 루트(예: 공개 키)를 구성할 수 있게 합니다. 기기는 내장된 신뢰할 수 있는 루트 대신 사용자 설정 가능한 이 신뢰할 수 있는 루트를 자체 검사 부팅에 사용할 수 있습니다. 이를 통해 사용자는 자체 검사 부팅의 보안 향상을 유지하면서 맞춤 버전의 Android를 설치 및 사용할 수 있습니다.

사용자 설정 가능한 신뢰할 수 있는 루트를 구현한다면 다음과 같은 방식으로 진행해야 합니다.

  • 사용자 설정 가능한 신뢰할 수 있는 루트를 설정/삭제하려면 실제 확인이 필요합니다.
  • 사용자 설정 가능한 신뢰할 수 있는 루트는 최종 사용자만 설정할 수 있습니다. 최종 사용자가 기기를 얻기 전에 공장 출하 시에 또는 중간 지점에서 신뢰할 수 있는 루트를 설정할 수 없습니다.
  • 사용자 설정 가능한 신뢰할 수 있는 루트는 변조 탐지 가능 저장소에 저장됩니다. 변조 탐지 가능은 예를 들어 데이터가 덮어 쓰이거나 변경되었다면 Android가 데이터를 변조했는지 여부를 감지할 수 있음을 의미합니다.
  • 사용자 설정 가능한 신뢰할 수 있는 루트가 설정되었다면 기기는 내장된 신뢰할 수 있는 루트 또는 사용자 설정 가능한 신뢰할 수 있는 루트로 서명된 Android 버전을 허용해야 합니다.
  • 사용자 설정 가능한 신뢰할 수 있는 루트를 사용하여 기기를 부팅할 때마다 기기에 맞춤 버전의 Android가 로드되고 있음을 사용자에게 알려야 합니다. 경고 화면의 예는 맞춤 키가 설정된 LOCKED 기기를 참조하세요.

사용자 설정 가능한 신뢰할 수 있는 루트를 구현하는 한 가지 방법은 기기가 UNLOCKED 상태일 때만 플래시하거나 삭제할 수 있는 가상 파티션을 갖는 것입니다. Google Pixel 2 기기는 이 방법을 사용하며 가상 파티션은 avb_custom_key라고 합니다. 이 파티션의 데이터 형식은 avbtool extract_public_key 명령어의 출력입니다. 다음은 사용자 설정 가능한 신뢰할 수 있는 루트를 설정하는 방법의 예입니다.

avbtool extract_public_key --key key.pem --output pkmd.bin
fastboot flash avb_custom_key pkmd.bin

사용자 설정 가능한 신뢰할 수 있는 루트는 다음을 실행하여 삭제할 수 있습니다.

fastboot erase avb_custom_key