Интеграция fs-verity

fs-verity — это функция ядра Linux, которая позволяет системе постоянно проверять файлы APK с помощью доверенных цифровых сертификатов. Когда платформа предоставляет этот механизм проверки при доступе с доверенным сертификатом из поддерживаемого магазина, такого как Play, магазин может устанавливать файлы APK с подписью fs-verity для постоянной проверки. Файлы, защищенные с помощью fs-verity, неизменяемы, и запросы на чтение выполняются только в том случае, если содержимое подтверждается.

Как только ядро ​​поддерживает fs-verity, партнеры могут поместить новый тип сертификата из своих доверенных хранилищ в раздел /product/etc/security/fsverity , сертификаты загружаются в связку ключей ядра во время загрузки. На устройстве, поддерживающем эту функцию, доверенный магазин может установить APK с соответствующей подписью fs-verity.

Реализация

Устройства, запускаемые с Android R

fs-verity — это функция ядра Linux , вышедшая из версии 5.4 и перенесенная в обычное ядро ​​Android 4.14 и выше. Новым устройствам, использующим обычное ядро ​​4.14 или выше и использующим ext4 или f2fs для разделов пользовательских данных, не нужно предпринимать никаких действий, поскольку они уже поддерживают fs-verity через ядро ​​Linux .

Устройства, обновляющиеся до Android R

Патчи fs-verity должны быть перенесены в ядро ​​устройства. Для ext4 добавьте fsverity к флагу fs_mgr в fstab . Затем эту функцию можно включить со следующей настройкой:

ro.apk_verity.mode=2

API

Был введен новый общедоступный API для запроса состояния поддержки устройства и определения того, является ли сертификат доверенным на устройстве.

  public final class FileIntegrityManager {
    public boolean isApkVeritySupported();
    @RequiresPermission(anyOf={
        android.Manifest.permission.INSTALL_PACKAGES,
        android.Manifest.permission.REQUEST_INSTALL_PACKAGES})
    public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate)
            throws java.security.cert.CertificateEncodingException;
  }

Проверка

Запустите следующие тесты VTS, CTS и GTS, чтобы проверить реализацию.

  • [ВТС] ApkVerityTest
  • [CTS] CtsAppSecurityHostTestCases:android.appsecurity.cts.ApkVerityInstallTest
  • [CTS] CtsSecurityHostTestCases#android.security.cts.KernelConfigTest
  • [GTS] GtsPlayFsiTestCases и GtsPlayFsiHostTestCases