Безопасные возможности разработчика

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

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

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

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

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

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

Дизайн

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

Рисунок 1. Дизайн

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

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

Ограничения по умолчанию для пользователя безголовой системы можно настроить с помощью строки 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 (необязательно). Убедитесь, что вы наблюдаете желаемый поток в своей серверной службе.