Google 제품 애플리케이션 투명성

Google 앱에 대한 신뢰를 높이기 위해 이제 Google은 투명성 로그에 모든 Google 제품 앱을 나열하기로 했습니다. Google은 이러한 APK와 관련하여 Google이 주장하는 내용을 공개적으로 확인하기 위해 투명성 로그를 게시했습니다.

위협 모델

투명성 시스템은 공급망 공격을 감지하고 억제하는 데 사용할 수 있습니다. 몇 가지 예를 들어 설명하겠습니다.

공격자가 Google 앱을 악의적으로 수정하고 Google Play를 통해 배포하는 데 사용되는 서명 키로 서명할 수 있다고 가정해 보겠습니다. 이진 투명성 로그를 사용하면 의심스러운 APK를 수신한 모든 사용자가 이를 검증 가능한 기본 진실 소스로 활용하여 APK의 진위 여부를 확인할 수 있습니다. Google이 로그에 해당 APK 메타데이터를 추가하지 않았음을 확인하고 손상된 APK를 신뢰하지 않게 됩니다.

로그에 게시하는 것은 서명된 출시 프로세스와 별도의 프로세스이므로 (생태계 다이어그램에 설명됨) 공격자가 키를 손상시키는 것 이상의 기준을 높입니다.

Google은 표준 증인 프로토콜을 사용하여 이 로그를 증인의 공용 네트워크에 통합할 계획이지만 외부의 독립적인 당사자가 공개적으로 제공되는 이 로그의 무결성을 모니터링하도록 권장합니다. 이러한 당사자는 로그의 추가 전용 속성을 증명하고 변조를 신고할 수 있습니다.

이러한 투명성 시스템의 존재와 공격의 추가적인 검색 가능성은 악의적인 활동을 억제합니다. APK가 손상되었지만 사용자가 로그에 있는 APK만 신뢰하는 경우 손상된 APK가 공개적으로 노출되어야 합니다. 이렇게 하면 손상된 APK가 존재함을 발견할 가능성이 높아지고 배포를 삭제하기 위한 조치를 취할 수 있습니다.

신고자 모델

신고자 모델은 검증 가능한 시스템에서 역할과 아티팩트를 정의하는 데 사용되는 프레임워크입니다. Google 서드 파티 앱 투명성의 경우 Google이 주장하는 내용은 이 로그에 기록된 APK 파일의 해시가 공개 소비를 위한 공식 Google 앱의 특정 버전을 나타낸다는 것입니다.

  • ClaimGoogleApp: (I, Google, claim that $hashApp is for $googleApp), where:
    • $hashApp$googleApp의 특정 버전의 APK 파일 (분할 APK 포함)의 암호화 해시(예: SHA256)입니다.
    • $googleApp은 Google에서 만들고 배포하는 앱을 구성하는 Android 패키지 (APK)입니다.

$googleApp의 사본이 있는 모든 사용자는 이 주장을 확인할 수 있으며 확인 페이지에서 이 프로세스를 자세히 설명합니다.

로그 콘텐츠

Google은 새 버전의 APK를 출시할 때 해당 항목을 Google 서드 파티 APK 투명성 로그에 추가합니다.

이 로그의 각 항목에는 네 가지 메타데이터가 포함되어 있습니다.

  1. Google 서명 앱의 APK 파일 해시입니다. 전체 파일의 SHA256 다이제스트의 16진수 문자열입니다.
  2. 이전 해시 유형에 대한 설명입니다. 문자열입니다.
  3. APK의 패키지 이름입니다. 문자열입니다.
  4. APK의 버전 번호 (versionCode)입니다. 0이 아닌 정수입니다.

로그 항목의 형식은 다음 그림과 같이 네 가지 정보가 줄바꿈 (\n) 문자로 연결된 것입니다.

hash\nSHA256(APK)\npackage_name\npackage_version\n

전체 APK 파일을 측정하므로 해시 설명은 SHA256(APK)로 설정됩니다. 이렇게 하면 각 파일의 콘텐츠를 포괄적으로 다룰 수 있으며 사용자가 이 측정값을 더 쉽게 얻을 수 있습니다.

생태계 다이어그램

검증 가능한 로그 생태계 다이어그램