Прозрачность приложений Google для продуктов

Чтобы повысить доверие к приложениям Google, мы теперь обязуемся включать каждое приложение, разработанное Google, в наш журнал прозрачности. Мы опубликовали этот журнал , чтобы публично подтвердить заявления, которые мы делаем в отношении этих APK-файлов.

Модель угроз

Системы прозрачности могут использоваться для обнаружения и, следовательно, предотвращения атак на цепочки поставок. Проиллюстрируем это несколькими примерами.

Предположим, злоумышленник вносит вредоносные изменения в приложение Google и даже умудряется подписать его ключом подписи, используемым для распространения через Google Play. С помощью журнала прозрачности бинарных данных любой, кто получит сомнительный APK-файл, сможет использовать его в качестве достоверного источника информации для проверки подлинности APK. Он обнаружит, что Google не добавил соответствующие метаданные APK в журнал, и поймет, что скомпрометированному APK-файлу нельзя доверять.

Поскольку публикация в журнале — это отдельный процесс от процесса выпуска с подписыванием (как показано на диаграмме экосистемы ), это повышает планку для злоумышленника, выходя за рамки простого взлома ключа.

Хотя мы планируем также интегрировать этот журнал в общедоступную сеть свидетелей, используя стандартный протокол свидетелей , мы призываем внешние независимые стороны контролировать целостность этого общедоступного журнала. Эти стороны могут подтвердить свойство журнала «только добавление» и сообщить о любых попытках его изменения.

Наличие такой системы прозрачности и дополнительная возможность обнаружения атак препятствуют вредоносной деятельности. Если APK-файл скомпрометирован, но пользователи доверяют только тем данным, которые содержатся в логах, скомпрометированный APK-файл необходимо будет публично раскрыть. Это повышает вероятность обнаружения существования скомпрометированного APK-файла и принятия мер по его удалению.

Модель заявителя

Модель заявителя — это структура, используемая для определения ролей и артефактов в проверяемой системе. В случае с прозрачностью приложений Google первого поколения (Google 1st Party App Transparency) мы утверждаем, что хеш APK-файла, записанный в этом журнале, представляет собой конкретную версию официального приложения Google, предназначенного для публичного использования.

  • Утверждаю, что GoogleApp : (Я, Google, утверждаю, что $hashApp предназначен для $googleApp ), где:
    • $hashApp — это криптографический хеш (например, SHA256) APK-файла (включая разделенные APK-файлы ) определенной версии $googleApp .
    • $googleApp — это пакет Android ( APK ), из которого состоит приложение, созданное и распространяемое компанией Google.

Любой, у кого есть копия $googleApp может проверить это утверждение, и мы подробно описываем этот процесс на странице проверки .

Содержимое журнала

Когда Google выпускает новую версию APK-файла, она добавляет соответствующую запись в журнал прозрачности APK-файлов от первого лица Google .

Каждая запись в этом журнале содержит четыре элемента метаданных:

  1. Хэш APK-файла приложения, подписанного Google. Это шестнадцатеричная строка дайджеста SHA256 всего файла.
  2. Описание типа предыдущего хеша. Это строка.
  3. Название пакета APK. Это строка.
  4. Номер версии ( versionCode ) APK-файла. Это ненулевое целое число.

Формат записи в журнале представляет собой объединение четырех элементов информации символом новой строки ( \n ), как показано ниже:

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

Поскольку мы измеряем весь APK-файл, хеш-описание устанавливается на SHA256(APK) . Это обеспечивает всестороннее покрытие содержимого каждого файла и упрощает пользователям получение этого измерения.

Диаграмма экосистемы

Verifiable Log Ecosystem Diagram