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