Чтобы повысить доверие к приложениям 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 .
Каждая запись в этом журнале содержит четыре элемента метаданных:
- Хэш APK-файла приложения, подписанного Google. Это шестнадцатеричная строка дайджеста SHA256 всего файла.
- Описание типа предыдущего хеша. Это строка.
- Название пакета APK. Это строка.
- Номер версии ( versionCode ) APK-файла. Это ненулевое целое число.
Формат записи в журнале представляет собой объединение четырех элементов информации символом новой строки ( \n ), как показано ниже:
hash\nSHA256(APK)\npackage_name\npackage_version\n
Поскольку мы измеряем весь APK-файл, хеш-описание устанавливается на SHA256(APK) . Это обеспечивает всестороннее покрытие содержимого каждого файла и упрощает пользователям получение этого измерения.
Диаграмма экосистемы
