Защита параметров разработчика

Согласно Определению документа Android Compatibility , производители должны предоставить способ включения разработки приложений. Однако предоставление мобильных устройств разработчикам в автомобилях делает эти автомобили уязвимыми для атак. Доступ к параметрам разработчика теперь может быть заблокирован OEM-производителем с использованием механизма аутентифицированного криптографического токена. В частности, OEM-производитель может:

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

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

Терминология

В дополнение к терминологии , эти термины используются в этой статье:

  • Веб-подпись JSON (JWS), определенная в RFC 7515
  • Национальный институт стандартов и технологий (NIST)

Дизайн

OEM-производители могут авторизовать разработчиков с помощью токенов JSON Web Signature (JWS) (RFC7515). В эталонной реализации маркеры доступа выпускаются OEM-производителями и потребляются приложением контроллера ограничений. Жетоны доступа предназначены для защиты от атак повторного воспроизведения и поддельных жетонов.

Рисунок 1. Конструкция

Интеграция и настройка

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

Ограничения по умолчанию для пользователя системы обезглавленной могут быть configred с config_defaultFirstUserRestrictions строкой в frameworks/base/core/res/res/values/config.xml , например:

<!-- User restrictions set when the first user is created.
         Note: Also update appropriate overlay files. -->
    <string-array translatable="false" name="config_defaultFirstUserRestrictions">
        <item>no_debugging_features</item>
    </string-array>

Ограничения по умолчанию для водителей, пассажиров и гостей могут быть сконфигурированы в frameworks/base/core/res/res/xml/config_user_types.xml . OEM может накладывать | эти строки, чтобы установить ограничения по умолчанию для каждого типа пользователя соответственно, например:

<user-types>
    <full-type name="android.os.usertype.full.SECONDARY" >
        <default-restrictions no_debugging_features="true"/>
    </full-type>
    <full-type name="android.os.usertype.full.GUEST" >
        <default-restrictions no_debugging_features="true"/>
    </full-type>
</user-types>

Эталонная реализация находится в следующем месте в AOSP:

packages/apps/Car/DebuggingRestrictionController

Тестирование

Google рекомендует OEM-производителям начинать с эталонной реализации и развивать ее.

  1. После настройки желаемых ограничений в файлах оверлея скомпилируйте AAOS и проверьте определенные потоки. Используйте эталонное приложение и локальную службу с включенным JWS, чтобы проверить настройки доступа.
  2. Настройте систему для использования облачной службы с поддержкой JWS (необязательно). Убедитесь, что вы наблюдаете желаемый поток в своей серверной службе.