Согласно документу определения совместимости 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-производителям начать с эталонной реализации и развивать ее.
- После настройки желаемых ограничений в файлах наложения скомпилируйте AAOS и проверьте определенные потоки. Используйте эталонное приложение и локальную службу с поддержкой JWS, чтобы проверить настройки доступа.
- Настройте систему для использования облачной службы с поддержкой JWS (необязательно). Убедитесь, что вы наблюдаете желаемый поток в своей серверной службе.