Güvenli geliştirici seçenekleri

Android Uyumluluk Tanımlama Belgesi uyarınca OEM'ler, uygulama geliştirmeyi etkinleştirmenin bir yolunu sağlamalıdır. Ancak arabalarda mobil cihazlara benzer geliştirici seçenekleri sunmak, bu arabaları saldırılara açık hale getirir. Geliştirici seçeneklerine erişim artık OEM'ler tarafından kimliği doğrulanmış bir kriptografik jeton mekanizması kullanılarak kısıtlanabilir. OEM'ler özellikle şunları yapabilir:

  • İlk önyüklemeden önce istediğiniz varsayılan kısıtlamaları ayarlayın.
  • Tercih edilirse kripto jetonları kullanarak geliştiricilere güvenli şekilde yetki verin.
  • Geliştirici hem kimliği doğrulandıktan hem de yetkilendirildikten sonra kısıtlama değişikliklerini uygulama.

Bu makalede, hata ayıklama kısıtlaması denetleyici uygulaması ve uzak jeton veren uç noktasından oluşan bir referans uygulama açıklanmaktadır.

Terminoloji

Terminoloji'ye ek olarak bu makalede aşağıdaki terimler kullanılmaktadır:

  • RFC 7515'te tanımlanan JSON Web Signature (JWS)
  • Ulusal Standartlar ve Teknoloji Enstitüsü (NIST)

Tasarım

OEM'ler, geliştiricileri JSON Web Signature (JWS) jetonlarıyla (RFC7515) yetkilendirebilir. Referans uygulamada, erişim jetonları OEM'ler tarafından yayınlanır ve kısıtlama denetleyici uygulaması tarafından tüketilir. Erişim jetonları, yeniden oynatma saldırılarına ve sahte jetonlara karşı dayanacak şekilde tasarlanmıştır.

Şekil 1. Tasarım

Entegrasyon ve yapılandırma

OEM'ler, ilk açılışta istenen varsayılan kısıtlamaları belirtmelidir. Bu işlem, AOSP çerçevesindeki varsayılanları geçersiz kılmak için birkaç statik kaynak yer paylaşımıyla yapılır.

Gözetimli sistem kullanıcısı için varsayılan kısıtlamalar, frameworks/base/core/res/res/values/config.xml içindeki config_defaultFirstUserRestrictions dizesiyle yapılandırılabilir. Örneğin:

<!-- 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>

Sürücüler, yolcular ve konuklar için varsayılan kısıtlamalar frameworks/base/core/res/res/xml/config_user_types.xml'te yapılandırılabilir. OEM'ler, her bir kullanıcı türü için varsayılan kısıtlamaları ayarlamak üzere bu dizeleri üst üste bindirebilir. Örneğin:

<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'de referans uygulama şu konumda sağlanır:

packages/apps/Car/DebuggingRestrictionController

Test

Google, OEM'lerin referans uygulamayla başlayıp oradan geliştirme yapmalarını önerir.

  1. Yer paylaşımı dosyalarında istenen kısıtlamaları yapılandırdıktan sonra AAOS'u derleyin ve tanımlanan akışları doğrulayın. Erişim ayarlarınızı doğrulamak için referans uygulamayı ve yerel JWS etkin hizmetini kullanın.
  2. Sistemi, JWS özellikli bulut hizmetinizi kullanacak şekilde yapılandırın (isteğe bağlı). Arka uç hizmetinizde istediğiniz akışı gözlemlediğinizi doğrulayın.