عامل کشف سرویس SDV به دو مجموعه اطلاعات پیکربندی نیاز دارد:
- پیکربندی ماشین مجازی خودرو (VVM Config)، که شامل اطلاعات مشترک بین همه خودروهای یک مدل یا پلتفرم است.
- مخزن اعتماد ماشین مجازی خودرو (VVM Trust Store)، که شامل اطلاعات منحصر به فرد آن وسیله نقلیه خاص است.
پیکربندی ماشین مجازی خودرو
فایل پیکربندی ماشین مجازی خودرو (Vehicle VM Config) فایلی با نام vvmconfig[.SUFFIX] است که در دایرکتوری /etc پارتیشن product قرار دارد. پسوند فایل vvmconfig اختیاری است و هیچ معنایی برای Android SDV ندارد. شرکا میتوانند هر اطلاعاتی را که مفید میدانند، مانند نام پلتفرم خودرو یا نام محصول، در پسوند vvmconfig اضافه کنند.
اگر سیستم چندین فایل پیکربندی ماشین مجازی خودرو داشته باشد، بوت لودر باید فایل انتخاب شده را با استفاده از پارامتر هسته androidboot.sdv.vvmconfig مشخص کند. این پارامتر باید فقط شامل نام فایل (مثلاً vvmconfig.example ) و بدون هیچ مؤلفه مسیری باشد. به عنوان مثال، /etc/vvmconfig.example یک مقدار نامعتبر خواهد بود.
فایل پیکربندی ماشین مجازی خودرو در قالب CBOR ارائه شده است که در قطعه CDDL زیر تعریف شده است:
VvmConfig = [
version: 1,
; Public key of the UDS root provisioning authority
udsCaPub: COSE_Key,
; Revocation list of intermediate CAs of UDS certificates
udsCaRevList: KeyList,
policies: DicePolicies,
vmConfigs: VmConfigMap,
]
DicePolicies = [+ DicePolicy]
KeyList = [* COSE_Key]
; Maps a VM instance name to its configuration
VmConfigMap = {
VmInstanceName => VmConfig
}
VmConfig = [
; IP addresses of this virtual machine.
ips: [+ IpAndPort],
; Index of the DICE policy for the Android SDV VM DICE chain.
android: PolicyIndex,
; Index of the DICE policy for the Secure World DICE chain used by the Android SDV VM.
secureWorld: PolicyIndex,
]
IpAndPort = [
ip: IpAddress,
; If not specified, the default Service Discovery agent port will be used.
? port: uint
]
IpAddress = ipv4-address / ipv6-address
; Index of a DicePolicy in the DicePolicies array.
PolicyIndex = uint
; The VM Name (as defind in the VVM Config). This must comply with VM Name identifier
; definition in Service Identity docs.
VmInstanceName = tstr
; INCLUDE /hardware/interfaces/security/authgraph/aidl/android/hardware/security/authgraph/DicePolicy.cddl for: DicePolicy
COSE_Key در RFC 8152 ، امضا و رمزگذاری شیء CBOR (COSE) تعریف شده است.
ipv4-address و ipv6-address در RFC 9164 ، تگهای نمایش مختصر شیء دودویی (CBOR) برای آدرسها و پیشوندهای IPv4 و IPv6 تعریف شدهاند.
سیاستهای تاس
تولیدکننده اصلی (OEM) مجموعهای از سیاستهای DICE را در اختیار SDV اندروید قرار میدهد که محدودیتهایی را که زنجیرههای DICE معتبر (و قابل اعتماد) باید از آنها پیروی کنند، تعریف میکند. این مجموعه سیاستها باید تمام زنجیرههای DICE مربوط به تمام ماشینهای مجازی SDV در خودرو را پوشش دهد.
تمام زنجیرههای DICE امن جهان باید در یک خطمشی DICE اندروید SDV رد شوند. برعکس، تمام زنجیرههای DICE اندروید SDV باید در یک خطمشی DICE امن جهان رد شوند. این بدان معناست که نباید بتوان با موفقیت یک زنجیره DICE اندروید SDV را به عنوان یک زنجیره DICE امن جهان و برعکس عبور داد.
فروشگاه تراست خودرو VM
مخزن اعتماد ماشین مجازی خودرو شامل کلیدهای عمومی UDS همه شرکتکنندگان در SDV Secure Mesh است. این یک پارتیشن بدون امضا به نام vvmtruststore با سیستم فایل ext4 است و در دایرکتوری /vvmtruststore نصب شده است. این کلیدهای عمومی میتوانند به صورت اختیاری توسط مرجع ریشه مشخص شده در پیکربندی VVM تأیید شوند.
این پارتیشن یا به صورت خواندنی و نوشتنی، زمانی که HLOS اندروید با حالت بوت SDV unlocked بوت میشود، یا به صورت فقط خواندنی، زمانی که حالت بوت SDV locked است، نصب میشود. این پارتیشن میتواند حداکثر دو فایل داشته باشد: uds_pubs و uds_certs .
uds_pubs یک فایل CBOR است که شامل تمام کلیدهای عمومی UDS از تمام ECUهایی است که میزبان ماشینهای مجازی SDV در SDV Mesh فعلی هستند. این کلیدهای عمومی UDS از زنجیرههای DICE ارائه شده توسط ماشینهای مجازی SDV همتا در طول آمادهسازی جمعآوری میشوند. این فایل توسط sdv_provisioning_tool در طول جریان آمادهسازی ایجاد میشود.
uds_certs یک فایل CBOR است که در قطعه CDDL زیر تعریف شده است:
UdsCertificates = [
1, ; version
* UdsCertChain
]
UdsCertChain = [
2* X509Certificate ; Root -> ... -> Leaf. "Root" is the vendor self-signed
; cert, "Leaf" contains UDS_Public. There may also be
; intermediate certificates between Root and Leaf.
]
; A bstr containing a DER-encoded X.509 certificate.
X509Certificate = bstr
uds_certs فقط گواهیهای UDS امضا شده توسط CA مربوط به کلیدهای عمومی UDS دستگاه محلی را در خود نگه میدارد (برخلاف تمام کلیدهای فهرست شده در uds_pubs ). این فایل باید توسط OEM ارائه شود و فقط برای جریان تأمین قطعات جایگزین اجباری است.
گواهیهای UDS موجود در uds_certs باید از مشخصات تعریفشده در Remote Provisioning HAL پیروی کنند. علاوه بر این، گواهیهای امضای امضاهای دیجیتال باید Ed25519 یا ECDSA با منحنیهای P-256 یا P-384 باشند. پیروی از Remote Provisioning HAL به ویژه به این معنی است که گواهی برگ زنجیره گواهی UDS باید دارای BasicConstraints و KeyUsage مطابق با گواهی UDS باشد، در حالی که همه گواهیهای میانی و ریشه باید از قوانین مربوط به گواهیهای CA پیروی کنند.