Sesuai dengan Dokumen Definisi Kompatibilitas Android, OEM harus menyediakan cara untuk mengaktifkan pengembangan aplikasi. Namun, menyediakan opsi developer seperti di perangkat seluler di dalam mobil membuat mobil tersebut rentan terhadap serangan. Akses ke opsi developer kini dapat dibatasi oleh OEM menggunakan mekanisme token kriptografi yang diautentikasi. Secara khusus, OEM dapat:
- Menentukan batasan default sebelum booting pertama.
- Mengotorisasi developer dengan aman, menggunakan token kripto jika diinginkan.
- Menerapkan perubahan batasan setelah developer diautentikasi dan diotorisasi.
Halaman ini menjelaskan implementasi referensi yang terdiri dari aplikasi pengontrol batasan proses debug dan endpoint penerbit token jarak jauh.
Terminologi
Selain Terminologi, istilah berikut digunakan di halaman ini:
- JSON Web Signature (JWS), yang ditentukan dalam RFC 7515
- National Institute of Standards and Technology (NIST)
Desain
OEM dapat mengotorisasi developer dengan token JSON Web Signature (JWS) (RFC7515). Dalam implementasi referensi, token akses dikeluarkan oleh OEM dan digunakan oleh aplikasi pengontrol batasan. Token akses dirancang untuk menahan serangan replay dan token palsu.

Gambar 1. Desain
Integrasi dan konfigurasi
OEM harus menentukan batasan default pada booting pertama. OEM melakukannya dengan beberapa overlay resource statis untuk mengganti default dalam framework AOSP.
Batasan default untuk pengguna sistem tanpa layar dapat dikonfigurasi dengan string config_defaultFirstUserRestrictions di frameworks/base/core/res/res/values/config.xml, misalnya:
<!-- 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>
<item>no_install_unknown_sources</item>
<item>no_install_unknown_sources_globally</item>
</string-array>Batasan default untuk pengemudi, penumpang, dan tamu dapat dikonfigurasi di frameworks/base/core/res/res/xml/config_user_types.xml. OEM dapat meng-overlay string ini untuk menetapkan batasan default pada setiap jenis pengguna, misalnya:
<user-types> <full-type name="android.os.usertype.full.SECONDARY" > <default-restrictions no_debugging_features="true" no_install_unknown_sources="true"/> </full-type> <full-type name="android.os.usertype.full.GUEST" > <default-restrictions no_debugging_features="true" no_install_unknown_sources="true"/> </full-type> </user-types>
Pengontrol preferensi nomor build
Di AAOS, interaksi pengguna dengan baris preferensi Nomor Build di Setelan ditangani oleh
BuildNumberPreferenceController.java yang terletak di
packages/apps/Car/Settings/src/com/android/car/settings/system/BuildNumberPreferenceController.java.
Jika batasan pengguna no_debugging_features (UserManager.DISALLOW_DEBUGGING_FEATURES) ditetapkan, BuildNumberPreferenceController akan menekan hitungan mundur developer pada build produksi (user) saat diketuk:
@Override protected boolean handlePreferenceClicked(Preference preference) { if (DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(getContext())) { return true; } // Enforce restriction on production (user) builds if (Build.IS_USER && mUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) { showToast(R.string.dev_access_blocked_toast); return true; } mDevHitCountdown--; if (mDevHitCountdown == 0) { DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(getContext(), true); showToast(R.string.show_dev_on); } return true; }
Penggunaan Build.IS_USER memastikan bahwa build produksi secara ketat menerapkan penguncian keamanan, sementara tim teknik internal pada build userdebug masih dapat mengakses opsi developer menggunakan gestur 7 ketukan untuk pengujian tanpa penggantian antarmuka command line (CLI) manual.
Pengontrol Batasan Proses Debug
Implementasi referensi Pengontrol Batasan Proses Debug (DRC) disediakan di AOSP di packages/apps/Car/DebuggingRestrictionController.
DRC memungkinkan OEM secara dinamis dan sementara menghapus batasan no_debugging_features pada kendaraan produksi untuk teknisi dan developer layanan yang diotorisasi. Daripada membiarkan alat proses debug terbuka secara permanen atau memerlukan flash ulang firmware, aplikasi DRC dalam kendaraan akan meminta pengguna untuk mengautentikasi dengan backend OEM dan mengirimkan token akses yang ditandatangani secara kriptografi untuk mengaktifkan adb dan Opsi Developer untuk sesi diagnostik terbatas.
Implementasi referensi DRC terdiri dari dua komponen inti:
- Aplikasi klien DRC dalam kendaraan (
app/): Aplikasi sistem yang memiliki hak istimewa (memiliki izinMANAGE_USERS) di unit utama yang mengautentikasi developer, memvalidasi tanda tangan sertifikat X.509, nama host, nonce, dan masa berlaku token JWS yang masuk, serta mengalihkan batasanno_debugging_featuressecara dinamis menggunakanUserManager. - Penerbit Token Cloud (
server/): Layanan web backend (dapat di-deploy sebagai Firebase Cloud Functions) yang mengautentikasi kredensial developer dan mengeluarkan token akses JWS RS256 yang ditandatangani secara kriptografi dengan jangka waktu validitas terbatas.
Untuk mengetahui petunjuk penyiapan lengkap, alat pembuatan sertifikat, dan langkah-langkah deployment, lihat panduan integrasi Pengontrol Batasan Proses Debug.
Pengujian
Google merekomendasikan agar OEM memulai dengan implementasi referensi dan membangunnya dari sana.
- Setelah mengonfigurasi batasan dalam file overlay, kompilasi AAOS dan validasi alur yang ditentukan. Gunakan aplikasi referensi dan layanan lokal yang mendukung JWS untuk memverifikasi setelan akses Anda.
- Opsional: Konfigurasi sistem untuk menggunakan layanan cloud yang mendukung JWS. Pastikan Anda mengamati alur yang diharapkan pada layanan backend.