Android OS에 대한 신뢰도를 높이기 위해 Google은 Google Play를 통해 업데이트로 제공되는 모든 Android OS 모듈 (메인라인이라고 함)을 투명성 로그에 나열하기 위해 노력하고 있습니다. Google은 이러한 모듈에 대해 제기하는 소유권 주장을 확인하기 위해 투명성 로그를 게시합니다. 사전 설치된 모듈은 이미 Pixel 바이너리 투명성에 포함되어 있으므로 명시적으로 나열되지 않습니다.
위협 모델
투명성 시스템은 공급망 공격을 감지하고 방지하는 데 사용할 수 있습니다. 몇 가지 예를 들어 설명하겠습니다.
공격자가 악의적으로 메인라인 모듈 (APEX 또는 APK 파일일 수 있음)을 수정하고 Google Play를 통해 배포하는 데 사용되는 서명 키로 서명할 수 있다고 가정해 보겠습니다. 의심스러운 모듈을 수신하는 사용자는 바이너리 투명성 로그를 쿼리하여 모듈의 진위성을 확인할 수 있습니다. Google이 로그에 상응하는 모듈 메타데이터를 추가하지 않았음을 확인하고 손상된 OS 모듈을 신뢰하지 않게 됩니다.
로그에 게시하는 것은 서명된 출시 프로세스와 별도의 프로세스이므로 공격자가 키를 손상시키는 것 이상의 어려움이 있습니다.
Google은 표준 증인 프로토콜을 사용하여 이 로그를 증인의 공용 네트워크에 통합할 계획이지만 외부의 독립적인 당사자가 공개적으로 제공되는 이 로그의 무결성을 모니터링하도록 권장합니다. 이러한 당사자는 로그의 추가 전용 속성을 증명하고 변조를 신고할 수 있습니다.
이러한 투명성 시스템의 존재와 공격의 추가적인 검색 가능성은 악의적인 활동을 방지합니다. OS 모듈이 손상되었지만 사용자가 로그에 있는 모듈만 신뢰하는 경우 손상된 모듈이 공개적으로 노출되어야 합니다. 이렇게 하면 손상된 모듈이 존재함을 발견할 가능성이 높아지고 배포를 삭제하기 위한 조치를 취할 수 있습니다.
신고자 모델
신고자 모델은 검증 가능한 시스템에서 역할과 아티팩트를 정의하는 데 사용되는 프레임워크입니다. Android 메인라인 모듈 투명성의 경우 Google이 제기하는 주장은 이 로그에 기록된 모듈 파일의 해시가 공개적으로 사용하기 위한 공식 Android 모듈의 특정 버전을 나타낸다는 것입니다.
- ClaimMainlineModule: (I, Google, claim that
$hashModuleis for$mainlineModule), where:
$mainlineModule의 사본이 있는 사용자는 누구나 이 소유권 주장을 확인할 수 있습니다.
확인 페이지에는 이 프로세스에 관한 자세한
안내 지침이 제공됩니다.
이 단계는 일반 APK와 메인라인 모듈 (APK 또는 APEX 파일일 수 있음) 모두에 적용됩니다.
로그 콘텐츠
Google은 메인라인 모듈의 새 버전을 출시할 때 메인라인 모듈 투명성 로그에 상응하는 항목을 추가합니다.
이 로그의 각 항목에는 다음과 같은 네 가지 메타데이터가 포함되어 있습니다.
- 서명된 Android 메인라인 모듈의 APK 또는 APEX 해시입니다. 전체 파일의 SHA256 다이제스트의 16진수 문자열입니다.
- 위의 해시 유형에 관한 설명입니다. 문자열입니다.
- 모듈의 패키지 이름입니다. 문자열입니다.
- 모듈의 버전 번호 (versionCode)입니다. 0이 아닌 정수입니다.
로그 항목의 형식은 다음과 같이 줄바꿈 (\n) 문자로 연결된 네 가지 정보입니다.
hash\nhash_description\npackage_name\npackage_version\n
메인라인 모듈은 APK 또는 APEX 파일일 수 있으므로 해시 설명은 SHA256(APK) 또는 SHA256(APEX)일 수 있습니다.