একটি সুরক্ষিত মেশ স্থাপনের জন্য যখন কোনো SDV VM-এ থাকা সার্ভিস ডিসকভারি এজেন্ট অন্য সার্ভিস ডিসকভারি এজেন্টদের (যারা অন্য SDV VM-এ চলছে) সাথে সংযোগ স্থাপনের চেষ্টা করে, তখন তার আচরণ কেমন হবে, তা SDV বুট মোড নির্ধারণ করে। এটি অ্যান্ড্রয়েড ভেরিফাইড বুট-এর বিদ্যমান ডিভাইস স্টেট ধারণার অনুরূপ।
ভেহিকেল ভিএম ট্রাস্ট স্টোর (ভিভিএম ট্রাস্ট স্টোর, যা vvmtruststore নামেও পরিচিত) প্রোভিশনিং বা আপডেট করার সময় এসডিভি বুট মোড ব্যবহার করা হয়।
এসডিভি সিকিওর মেশ আচরণ
প্রাপ্ত বুট ভ্যালুর উপর নির্ভর করে সার্ভিস ডিসকভারি মেশটি নিম্নলিখিত অবস্থাগুলোর একটিতে থাকে: Normal , Warning বা Fatal ।
গ্রাহকদের কাছে সরবরাহ করা উৎপাদনাধীন যানবাহনগুলিতে, এসডিভি সিকিওর মেশ অবশ্যই Normal ) অবস্থায় থাকতে হবে। Normal থেকে Warning ) অবস্থায় পরিবর্তন করার জন্য মেশটির ডায়াগনস্টিকস হস্তক্ষেপের প্রয়োজন হয়। একটি উৎপাদন পরিবেশে (উদাহরণস্বরূপ, ডেভেলপমেন্ট বা ডিবাগিং ছাড়া), Warning অবস্থাটি শুধুমাত্র প্রভিশনিংয়ের সময় ঘটে।
Fatal হলো একটি মৌলিক ব্যর্থতা, যা অ্যান্ড্রয়েড বুটলোডারে system_ext ইমেজের সিগনেচার ভেরিফিকেশনে ব্যর্থ হওয়ার অনুরূপ। যদি শুধুমাত্র একটি ওভার-দ্য-এয়ার (OTA) আপডেটের কারণে SDV সিকিওর মেশটি Normal থেকে Fatal অবস্থায় চলে যায়, তবে আপডেটটিকে ত্রুটিপূর্ণ বলে গণ্য করা হয় এবং মেশটি তার মূল Normal সংস্করণে ফিরে যায়।
পরবর্তী অনুচ্ছেদগুলিতে রাজ্যগুলি সম্পর্কে আরও বিশদ বর্ণনা করা হয়েছে।
স্বাভাবিক
- সার্ভিস ডিসকভারির দৃষ্টিকোণ থেকে সিস্টেম বুট
SECURE। - সার্ভিস ডিসকভারি শুধুমাত্র সেইসব পিয়ারের সাথে সংযোগ স্থাপন করে যেগুলো নিরাপদে বুট হয়েছে। একটি নিরাপদে বুট হওয়া পিয়ার এই ইঙ্গিত দেয় যে এসডিভি সিকিওর মেশটিও সুরক্ষিত।
- কিছু যাচাইকরণ নিষ্ক্রিয় থাকায় সিস্টেম বুট প্রক্রিয়াটি ব্যাহত হয়ে থাকতে পারে।
- সার্ভিস ডিসকভারি শুধুমাত্র সেইসব পিয়ারের সাথেই সংযোগ স্থাপন করে যাদের নিষ্ক্রিয় যাচাইকরণের সেটটি হুবহু একই, যা নিশ্চিত করে যে SDV সিকিওর মেশ-এর সমস্ত পিয়ারের নিরাপত্তা বৈশিষ্ট্যগুলো অভিন্ন।
- স্থানীয় ত্রুটি বা নিষ্ক্রিয় বৈশিষ্ট্যের কারণে পিয়ার বুটের সাফল্য যাচাই করা সম্ভব হচ্ছে না।
- উন্নয়নমূলক পরিবেশ বা পরিস্থিতির বাইরে এর নিম্নলিখিত প্রভাবগুলো রয়েছে:
- ব্যবহারকারীর ডেটা সহজলভ্য হওয়া যাবে না। অর্থাৎ, এসডিভি সিকিওর মেশ-এর মাধ্যমে যোগাযোগের ফলে তা প্রেরিত বা প্রভাবিত হওয়া যাবে না।
- মেশটি এই অবস্থায় থাকলে, শুধুমাত্র প্রোভিশনিং ফ্লো-এর জন্য প্রয়োজনীয় পরিষেবাগুলোই উপলব্ধ থাকা উচিত।
মারাত্মক
- সিস্টেম বুট হওয়ার পর্যায়ে একটি গুরুতর ত্রুটি।
- অন্তত একটি মৌলিক ব্যর্থতা বা ত্রুটি রয়েছে যা সার্ভিস ডিসকভারি এজেন্টকে একটি মেশ স্থাপন করতে বাধা দিচ্ছে। স্থানীয় সার্ভিসগুলো দূরবর্তী সার্ভিসগুলোর সাথে যোগাযোগ করতে পারছে না।
- সার্ভিস ডিসকভারির দৃষ্টিকোণ থেকে সিস্টেম বুট
UNSECURE।
এসডিভি বুট মোড
SDV বুট মোডের দুটি সম্ভাব্য মান রয়েছে: LOCKED এবং UNLOCKED । সার্ভিস ডিসকভারি মেশ স্থাপনের ক্ষেত্রে, LOCKED নির্দেশ করে যে যাচাইকরণ ত্রুটিগুলি মারাত্মক, এবং UNLOCKED মানে সেগুলি মারাত্মক নয়।
| অবস্থা | এসডিভি বুট মোড | |
|---|---|---|
UNLOCKED | LOCKED | |
| স্থানীয় VVM ট্রাস্ট স্টোর খালি | মারাত্মক | |
| স্থানীয় ডাইস চেইন অনুপস্থিত | মারাত্মক | মারাত্মক |
| স্থানীয় DICE চেইন যাচাইকরণ ব্যর্থতা | মারাত্মক | |
| স্থানীয় SDV এবং AVB মোড ম্যাচ | লোকাল এসডিভি এবং এভিবি মোডের মিলের টেবিলটি দেখুন। | |
| রিমোট ডিভাইস মোড মানের তুলনা | রিমোট ডিভাইস মোডে মান তুলনার সারণীটি দেখুন | |
রিমোট uds_pubs ম্যাচ ব্যর্থতা | মারাত্মক | |
| দূরবর্তী DICE চেইন যাচাইকরণ ব্যর্থতা ( DICE নীতি ব্যবহার করে) | মারাত্মক | |
| রিমোট প্রমাণীকরণ হ্যান্ডশেক ব্যর্থতা | মারাত্মক | মারাত্মক |
স্থানীয় SDV এবং AVB মোড ম্যাচ
নিম্নলিখিত সারণীটি দেখায় কিভাবে AVB মোড এবং SDV বুট মোড , SDV সিকিওর মেশ-এর আচরণকে প্রভাবিত করে। রঙগুলো AVB ডকুমেন্টেশনের অ্যান্ড্রয়েড-নির্দিষ্ট ইন্টিগ্রেশন বিভাগে সংজ্ঞায়িত করা অনুযায়ী ব্যবহার করা হয়েছে।
| AVB মোড x SDV বুট মোড | এসডিভি বুট মোড | ||
|---|---|---|---|
UNLOCKED | LOCKED | ||
এভিবি LOCKED | সবুজ | স্বাভাবিক | |
| হলুদ | মারাত্মক | মারাত্মক | |
AVB UNLOCKED | কমলা | মারাত্মক | |
ডিভাইস মোড মান
একটি DICE চেইনে, প্রতিটি CDI সার্টিফিকেটের একটি মোড ভ্যালু থাকে। এই ভ্যালুটি তার কনফিগারেশন ইনপুটের উপর ভিত্তি করে সেই লেয়ারের নিরাপত্তা অবস্থা বর্ণনা করে। ডিভাইসের সমস্ত সফটওয়্যারের নিরাপত্তা অবস্থান প্রকাশ করার জন্য, SDV স্পেসিফিকেশন একটি ডিভাইস মোড ভ্যালু সংজ্ঞায়িত করে। এই ভ্যালুটি একটি নির্দিষ্ট SDV VM-এর সাথে প্রাসঙ্গিক DICE চেইনের সমস্ত CDI স্টেজের (অর্থাৎ, Android HLOS এবং Secure World) মোড ভ্যালু থেকে উদ্ভূত হয় এবং নিম্নলিখিত এনুমারেশন ব্যবহার করে:
enum DeviceMode {
NotConfigured = 0,
Recovery = 1,
Debug = 2,
Normal = 3,
}
অ্যালগরিদম
ডিভাইস মোড ভ্যালু গণনা করার অ্যালগরিদমটি নিম্নরূপ:
-
deviceModeহিসেবেDeviceMode::Normalনির্দিষ্ট করুন। - একটি SDV VM-এর সাথে প্রাসঙ্গিক DICE চেইনগুলির তালিকা হিসাবে
diceChainListনির্দিষ্ট করুন। -
diceChainListএর প্রতিটিdiceChainএর জন্য:-
diceChainএ CDI সার্টিফিকেটগুলির তালিকা হিসাবেcdiListনির্দিষ্ট করুন: -
cdiListএর প্রতিটিcdiCertজন্য:-
cdiCert.modeএর সাথে সঙ্গতিপূর্ণDeviceModeহিসেবেcdiDeviceModeনির্দিষ্ট করুন। -
deviceModemin(deviceMode, cdiDeviceMode)এ সেট করুন।
-
-
-
deviceModeফেরত দিন।
রিমোট ডিভাইস মোড মানের তুলনা
একটি সার্ভিস ডিসকভারি এজেন্ট শুধুমাত্র সেইসব এজেন্টের সাথেই সংযোগ স্থাপন করে, যাদের ডিভাইস মোড ভ্যালু একই।
ডিভাইস মোড মানটি নিশ্চিত করে যে একটি মেশের সদস্যদের নিরাপত্তা বৈশিষ্ট্য ভিন্ন হতে পারবে না। এর ফলে গঠিত মেশটির সকল সদস্যের নিরাপত্তা অবস্থা অভিন্ন থাকে।
| ডিভাইস মোড মান | দূরবর্তী | ||||
|---|---|---|---|---|---|
| কনফিগার করা হয়নি | ডিবাগ | পুনরুদ্ধার | স্বাভাবিক | ||
| স্থানীয় | কনফিগার করা হয়নি | মারাত্মক | মারাত্মক | মারাত্মক | মারাত্মক |
| ডিবাগ | মারাত্মক | মারাত্মক | মারাত্মক | ||
| পুনরুদ্ধার | মারাত্মক | মারাত্মক | মারাত্মক | ||
| স্বাভাবিক | মারাত্মক | মারাত্মক | মারাত্মক | স্বাভাবিক | |
কারখানা সরবরাহ প্রবাহ
এটি যানবাহন অ্যাসেম্বলি লাইনের প্রোভিশনিং ফ্লো, যেখানে পাবলিক কী ইনফ্রাস্ট্রাকচার উপলব্ধ নেই বলে ধরে নেওয়া হয়। এই ফ্লোটি ওয়ান-টাইম-প্রোগ্রামেবল (OTP) মেমরিতে সংরক্ষিত একটি ৩২-বাইট মানের উপর নির্ভর করে, যাকে ভেহিকেল ভিএম (VVM) ফ্যাক্টরি ট্রাস্ট বা vvmfactorytrust বলা হয়। সেট করা হলে, এই মানটি androidboot.sdv.vvmfactorytrust নামের একটি প্যারামিটার হিসেবে কার্নেলে পাঠানো হয়।
একটি ECU-এর অন্তর্গত সকল VM-এর একই SDV বুট মোড এবং VVM ফ্যাক্টরি ট্রাস্ট থাকতে হবে।
প্রাথমিক অবস্থা
সমস্ত ECU প্রাথমিকভাবে UNLOCKED মোডে SDV বুট মোডে থাকে, যেখানে vvmtruststore এ উপস্থিত uds_certs ব্যতীত VVM ফ্যাক্টরি ট্রাস্ট এবং ভেহিকেল ভিএম ট্রাস্ট স্টোর খালি থাকে। চিত্র ১-এ এমন একটি উদাহরণ দেখানো হয়েছে যেখানে দুটি পৃথক ECU-তে (ECU-0 এবং ECU-1) তিনটি SDV VM (VM-A, VM-B, এবং VM-C) বিভক্ত রয়েছে:
চিত্র ১. ফ্যাক্টরি সরবরাহ, প্রাথমিক অবস্থা।
ধাপ ১: sdv_provisioning_tool চালান
সকল ECU থেকে সমস্ত VM বুট আপ করুন।
প্রতিটি ভিএম-এ sdv_provisioning_tool চালান।
- টুলটি স্থানীয় সার্ভিস ডিসকভারি এজেন্টের সাথে যোগাযোগ করে এবং এজেন্টের সংকেতের জন্য অপেক্ষা করে যে, এসডিভি সিকিওর মেশ সম্পূর্ণ হয়েছে এবং এজেন্ট ইউডিএস পাবলিক কী-গুলির তালিকা
/vvmtruststore/uds_pubsএ লিখেছে। - যখন এটি ঘটে, তখন টুলটি সদ্য লেখা
/vvmtruststore/uds_pubsএর হ্যাশটি সংগ্রহ করে এবং তা আউটপুট করে।
চিত্র ২. কারখানায় সরবরাহ ব্যবস্থা, ধাপ ১।
ধাপ ২: VVM ফ্যাক্টরি ট্রাস্ট লিখুন
প্রতিটি ECU-এর একটি VM-এ:
- পূর্ববর্তী ধাপে
sdv_provisioning_toolদ্বারা আউটপুট করা/vvmtruststore/uds_pubsএর হ্যাশটি VVM ফ্যাক্টরি ট্রাস্ট-এ লিখুন। এই লেখার প্রক্রিয়াটি OEM বা ভেন্ডর-নির্দিষ্ট এবং এই স্পেসিফিকেশনের আওতার বাইরে।
চিত্র ৩. কারখানায় সরবরাহ ব্যবস্থা, ধাপ ২।
ধাপ ৩: এসডিভি বুট মোড লক করে রিবুট করুন
সমস্ত ECU-তে থাকা সমস্ত VM-কে SDV বুট মোডে এবং LOCKED মোডে রিবুট করুন।
সার্ভিস ডিসকভারি এজেন্ট, uds_pubs ফাইলে তালিকাভুক্ত UDS পাবলিক কী-সহ ECU-তে থাকা VM-গুলোকে বিশ্বাস করে, কারণ এই ফাইলের হ্যাশটি VVM ফ্যাক্টরি ট্রাস্টের সাথে মিলে যায়।
যেহেতু ECU-গুলো একসাথে প্রোভিশন করা হয়েছিল, তাই সেগুলো স্থায়ীভাবে একে অপরের সাথে আবদ্ধ এবং DICE চেইন ভেরিফিকেশনের দৃষ্টিকোণ থেকে কার্যকরভাবে একটি একক হার্ডওয়্যার হিসেবে বিবেচিত হতে পারে।
চিত্র ৪। ফ্যাক্টরি সরবরাহ, ধাপ ৩।
যন্ত্রাংশ প্রতিস্থাপন প্রবাহ
এটি একটি অনুমোদিত গাড়ি মেরামতের ওয়ার্কশপ বা গ্যারেজের প্রোভিশনিং প্রক্রিয়া, যেখানে একটি ত্রুটিপূর্ণ ECU-কে একটি নতুন, আনপ্রোভিশনড ECU দিয়ে প্রতিস্থাপন করতে হয়।
এই কার্যপ্রবাহটি UDS সার্টিফিকেটের উপর নির্ভর করে, যা হয় vvmconfig এ উল্লিখিত রুট অথরিটি সরাসরি ইস্যু করে অথবা পরোক্ষভাবে, কিছু মধ্যবর্তী অথরিটির শৃঙ্খলের মাধ্যমে ইস্যু করে।
প্রাথমিক অবস্থা
সমস্ত ভিএম ইতিমধ্যেই ফ্যাক্টরি থেকে প্রোভিশন করা আছে এবং এসডিভি বুট মোডে LOCKED মোডে চলছে।
চিত্র ৫-এ এমন একটি উদাহরণ দেখানো হয়েছে যেখানে ECU-0 ত্রুটিপূর্ণ এবং এটিকে প্রতিস্থাপন করা প্রয়োজন:
চিত্র ৫. যন্ত্রাংশ প্রতিস্থাপন, প্রাথমিক অবস্থা।
ধাপ ১: নতুন ECU ইনস্টল করুন।
নতুন ECU-টি ইনস্টল করুন, যেটি একটি ফাঁকা ও অপ্রস্তুত অবস্থায় আছে।
চিত্র ৬-এ, যখন ECU-2 (প্রতিস্থাপিত ECU)-কে পাওয়ার আপ করা হয়, তখন দুটি বিচ্ছিন্ন SDV সিকিউর মেশ দেখা যায়: একটি Warning অবস্থায় এবং অন্যটি Normal অবস্থায়। উভয় SDV সিকিউর মেশই অসম্পূর্ণ।
চিত্র ৬। যন্ত্রাংশ প্রতিস্থাপন, ধাপ ১।
ধাপ ২: আনলক করা SDV বুট মোডে রিবুট করুন
সমস্ত ECU-এর সমস্ত VM-কে SDV বুট মোডে এবং UNLOCKED মোডে রিবুট করুন।
চিত্র ৭-এ, VM-B এবং VM-C Warning SDV সিকিউর মেশ-এ যোগদান করে, যা সম্পূর্ণ হয়েছে।
চিত্র ৭। যন্ত্রাংশ প্রতিস্থাপন, ধাপ ২।
ধাপ ৩: sdv_provisioning_tool চালান
প্রতিটি ভিএম-এ sdv_provisioning_tool চালান।
টুলটি স্থানীয় সার্ভিস ডিসকভারি এজেন্টের সাথে যোগাযোগ করে এবং এজেন্টের সংকেতের জন্য অপেক্ষা করে যে, এসডিভি সিকিওর মেশ সম্পূর্ণ হয়েছে এবং এজেন্ট ইউডিএস পাবলিক কী-গুলির তালিকা /vvmtruststore/uds_pubs এ লিখেছে।
যখন এটি ঘটে, তখন টুলটি সদ্য লেখা /vvmtruststore/uds_pubs এর হ্যাশটি সংগ্রহ করে এবং আউটপুট দেয়, কিন্তু এই হ্যাশটি এই ফ্লোতে ব্যবহৃত হয় না।
চিত্র ৮। যন্ত্রাংশ প্রতিস্থাপন, ধাপ ৩।
ধাপ ৪: ইউডিএস সার্টিফিকেট ইনস্টল করুন
- যেকোনো একটি SDV VM থেকে
/vvmtruststore/uds_pubsএক্সট্র্যাক্ট করুন। এটি কোন VM তা বিবেচ্য নয়, কারণ একই SDV Secure Mesh-এর অন্তর্ভুক্ত সমস্ত VM-এর জন্য এটি একই থাকে। -
/vvmtruststore/uds_pubsএ তালিকাভুক্ত সমস্ত UDS পাবলিক কী-এর জন্য প্রোভিশনিং সার্টিফিকেটগুলো পুনরুদ্ধার করুন।- এই ধাপে সাধারণত নিষ্কাশিত UDS পাবলিক কীগুলো (অথবা
/vvmtruststore/uds_pubsফাইলটি) একটি রিমোট প্রোভিশনিং সার্ভারে পাঠানো হয়। সার্ভারটি হয় আগে থেকে বিদ্যমান সার্টিফিকেটগুলো পুনরুদ্ধার করে, অথবা ECU উৎপাদনের সময় তৈরি করা পরিচিত UDS পাবলিক কী-এর একটি ডেটাবেসের সাথে প্রাপ্ত পাবলিক কীগুলো মিলিয়ে দেখে নতুন সার্টিফিকেট তৈরি করে।
- এই ধাপে সাধারণত নিষ্কাশিত UDS পাবলিক কীগুলো (অথবা
- প্রতিটি SDV VM-এর
/vvmtruststore/uds_certsফাইলটি লিখুন।
চিত্র ৯। যন্ত্রাংশ প্রতিস্থাপন, ধাপ ৪।
ধাপ ৫: এসডিভি বুট মোড লক করে রিবুট করুন
সমস্ত ভিএম এসডিভি বুট মোডে LOCKED মোডে রিবুট করুন।
যদি এসডিভি সিকিওর মেশ অসম্পূর্ণ থাকে, তাহলে ধাপ ২- এ ফিরে যান।
চিত্র ১০। যন্ত্রাংশ প্রতিস্থাপন, ধাপ ৫।