গাড়ির সিস্টেমের অখণ্ডতা নিশ্চিত করতে, Android Automotive এই স্তরে ইনকামিং ডেটা রক্ষা করে:
চিত্র 1. সিস্টেম সার্ভিস আর্কিটেকচার
- অ্যাপস। সিস্টেম যাচাই করে যে একটি অ্যাপকে গাড়ির সাবসিস্টেমের সাথে কথা বলার অনুমতি আছে।
- সু-সংজ্ঞায়িত API জেনেরিক APIগুলি নির্বিচারে ডেটা ব্লব গ্রহণ করে না (এপিআইগুলি অবশ্যই ভালভাবে সংজ্ঞায়িত করা উচিত)।
- গাড়ি পরিষেবা। সম্পূর্ণ-ডিস্ক এনক্রিপশন এবং যাচাইকৃত বুট সহ শুধুমাত্র OTA (বা USB) এর মাধ্যমে আপডেটগুলি অনুমোদিত৷ সাইডলোড করা যাবে না।
- যানবাহন HAL। নির্দিষ্ট বার্তা অনুমোদিত হয় যাচাই করে.
অ্যাপস এবং API
অ্যান্ড্রয়েড অটোমোটিভ অ্যান্ড্রয়েডের উপর তৈরি করা হয়েছে এবং অনেক নিরাপত্তা-গুরুত্বপূর্ণ সাবসিস্টেমের সাথে সরাসরি ইন্টারঅ্যাক্ট করে। এছাড়াও, বিভিন্ন যানবাহনের বিভিন্ন ইন্টারফেস থাকতে পারে যার বিভিন্ন কার্যকারিতা Android এর সংস্পর্শে রয়েছে। এই কার্যকারিতাগুলিকে নিরাপদ এবং সুবিন্যস্ত করতে, এগুলিকে একটি বিমূর্ত স্তরে বিচ্ছিন্ন করা হয়, বাকি Android থেকে আলাদা৷ যানবাহন নেটওয়ার্কের মাধ্যমে প্রেরিত বার্তাগুলিতে কঠোর বিন্যাস সহ শুধুমাত্র সু-সংজ্ঞায়িত APIগুলিই যানবাহন HAL-এর সাথে যোগাযোগ করতে পারে৷ এটি অ্যান্ড্রয়েড ডেভেলপারদের জন্য একটি অনুমানযোগ্য ইন্টারফেস প্রদান করে এবং বাকি গাড়ির সাথে একটি নিরাপদ মিথস্ক্রিয়া প্রদান করে।
যানবাহন HAL বার্তা দুটি স্তরে ফিল্টার করা হয়:
- অ্যাপ স্তর। নন-সিস্টেম অ্যাপগুলি যথাযথ অনুমতি নিয়ে গাড়ি পরিষেবার মাধ্যমে যানবাহন HAL অ্যাক্সেস করতে পারে।
- যানবাহন HAL স্তর। সুরক্ষা এবং আশ্বাসের একটি অতিরিক্ত স্তরের জন্য অনুমতি দেয় যে যানবাহন সাবসিস্টেমগুলিতে প্রেরিত বার্তাগুলি একটি বৈধ উত্স থেকে উদ্ভূত হয়৷ সীমিত বার্তাগুলিকে রেট দিতেও ব্যবহার করা যেতে পারে, ক্ষতিকারক অ্যাপগুলিকে CAN বাসে প্লাবিত হতে এবং গাড়ির সাবসিস্টেমগুলিতে সম্ভাব্য হস্তক্ষেপ করা থেকে বিরত রাখতে পারে৷
যানবাহন HAL
যানবাহন HAL হল একটি নিম্ন স্তর যা গাড়ির সাথে যোগাযোগ করে, ড্রাইভার ইনপুট/আউটপুট কন্ট্রোল (ioctl) কলের মাধ্যমে যানবাহনের নেটওয়ার্ক এবং অন্যান্য যানবাহন হার্ডওয়্যারের সাথে যোগাযোগ করে।
গাড়ির HAL হল Android Automotive-এর একমাত্র উপাদান যা IVI সিস্টেমের সাথে সংযুক্ত, হয় সরাসরি অ্যাপ প্রসেসর/মাইক্রোকন্ট্রোলার সংযোগের মাধ্যমে অথবা VMCU এর মাধ্যমে গেটেড। SELinux নিয়ম এবং কার্নেল ইন্টারফেসে যথাযথ অনুমতি ব্যবহার করে যানবাহন HAL-এর অ্যাক্সেস সিস্টেম অ্যাপগুলিতে সীমাবদ্ধ থাকা উচিত।
SELinux নীতি
অ্যান্ড্রয়েড অটোমোটিভ ওপেন, ক্লোজ, রিড, রাইট এবং ioctl কল সহ ড্রাইভার অ্যাক্সেস ফিল্টার করতে SELinux প্রসারিত করে। ioctl ফিল্টারিং ব্যবহার করে (অন্যান্য SELinux কার্যকারিতা সহ) গাড়ির HAL দ্বারা অনুমোদিত এবং গৃহীত CAN বার্তাগুলির ধরন সীমিত করে, আক্রমণের পৃষ্ঠকে মারাত্মকভাবে হ্রাস করে। SELinux-এর বিস্তারিত জানার জন্য, Android-এ নিরাপত্তা-বর্ধিত লিনাক্স দেখুন।
অতিরিক্তভাবে, স্বয়ংচালিত ব্যবহারের ক্ষেত্রে নতুন ধরণের সংবেদনশীল ডেটা অন্তর্ভুক্ত থাকে যা বিচ্ছিন্ন এবং নিয়ন্ত্রণ করা উচিত। সংবেদনশীল তথ্য পৃথক অনুমতি আছে; অন্যান্য ক্ষমতা যেমন HVAC কন্ট্রোল এবং উইন্ডো অ্যাডজাস্টমেন্ট শুধুমাত্র সিস্টেম অ্যাপে দেওয়া উচিত। একটি অটোমোটিভ-নির্দিষ্ট SELinux নীতির উদাহরণ:
<permission-group android:name=”android.support.car.permission.CAR_MONITORING /> <permission android:name=”android.support.car.permission.CAR_MILEAGE” android:protectionLevel=”signature|privileged” /> <permission android:name=”android.support.car.permission.CAR_SPEED” android:permissionGroup=”android.permission-group.LOCATION” android:protectionLevel=”dangerous” /> <permission android:name=”android.support.car.permission.CAR_VENDOR_EXTENSION” android:permissionGroup=”android.support.car.permission.CAR_INFORMATION” android:protectionLevel=”signature|privileged” />
CAR_MONITORING
অনুমতি গোষ্ঠীটি স্বয়ংচালিত-সম্পর্কিত অনুমতিগুলির জন্য তৈরি করা হয়েছিল৷ বর্তমান গতি সংবেদনশীল তথ্য হিসাবে গণ্য করা যেতে পারে. অতএব, বিপজ্জনক সুরক্ষা স্তরের সাথে CAR_SPEED
অনুমতিগুলি তৈরি করা হয়েছিল। এই স্তর মানে তথ্য ব্যক্তিগত এবং সংবেদনশীল. CAR_VENDOR_EXTENSION
অনুমতিটি সিস্টেম- বা স্বাক্ষর-স্তরের অনুমতির সাথে তৈরি করা হয়েছিল, যা সিস্টেম অ্যাপ বা স্বাক্ষরিত অ্যাপগুলির জন্য ব্যবহৃত হয় যেগুলি স্পষ্টভাবে এই অনুমতি দেওয়া হয়েছে৷
অ্যাপ এবং কার্যকলাপ ব্লকিং
বিভ্রান্ত ড্রাইভিং কমাতে, Android Automotive অতিরিক্ত কন্ট্রোল (একটি অনুমোদিত তালিকা) প্রদান করে যাতে গাড়ি চলাচলে থাকা অবস্থায় সাইডলোড করা অ্যাপ ব্যবহার করা না যায়। গাড়ি পার্ক করা বা থামলে এই অ্যাপগুলি এখনও চলতে পারে।
অনুমতি তালিকাটি এমন অ্যাপগুলিকে নির্দিষ্ট করে যা গাড়ি চলাকালীন ব্যবহার করা যেতে পারে। শুধুমাত্র বিশ্বস্ত সিস্টেম অ্যাপই অনুমোদিত তালিকা আপডেট করতে পারে। নেটওয়ার্কে আপডেটগুলি ঘটতে পারে, আপডেটগুলিকে নির্ভরযোগ্য হিসাবে বিবেচনা করা উচিত নয়৷