সিস্টেম অন এ চিপ (SoC)-এ একটি ট্রাস্টেড এক্সিকিউশন এনভায়রনমেন্ট (TEE)-এর উপস্থিতি অ্যান্ড্রয়েড ডিভাইসগুলোকে অ্যান্ড্রয়েড ওএস, প্ল্যাটফর্ম পরিষেবা এবং এমনকি থার্ড-পার্টি অ্যাপগুলোকেও হার্ডওয়্যার-সমর্থিত ও শক্তিশালী নিরাপত্তা পরিষেবা প্রদানের সুযোগ করে দেয় (স্ট্যান্ডার্ড জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচারের অ্যান্ড্রয়েড-নির্দিষ্ট এক্সটেনশন আকারে, দেখুন KeyGenParameterSpec )।
শব্দকোষ
এখানে কীস্টোরের উপাদানসমূহ এবং তাদের পারস্পরিক সম্পর্ক বিষয়ে একটি সংক্ষিপ্ত বিবরণ দেওয়া হলো।
-
AndroidKeyStore - অ্যান্ড্রয়েড ফ্রেমওয়ার্ক এপিআই এবং কম্পোনেন্ট যা অ্যাপগুলো কীস্টোরের কার্যকারিতা অ্যাক্সেস করতে ব্যবহার করে। এটি স্ট্যান্ডার্ড জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচার এপিআই-এর একটি বাস্তবায়ন, তবে এতে অ্যান্ড্রয়েড-নির্দিষ্ট এক্সটেনশনও যুক্ত করা হয়েছে এবং এটি এমন জাভা কোড দ্বারা গঠিত যা অ্যাপের নিজস্ব প্রসেস স্পেসে চলে।
AndroidKeyStoreকীস্টোর ডেমন-এর কাছে ফরওয়ার্ড করার মাধ্যমে কীস্টোরের আচরণের জন্য অ্যাপের অনুরোধগুলো পূরণ করে। - কীস্টোর ডেমন
- একটি অ্যান্ড্রয়েড সিস্টেম ডেমন যা একটি বাইন্ডার এপিআই (Binder API)-এর মাধ্যমে কীস্টোর (Keystore)-এর সমস্ত কার্যকারিতায় অ্যাক্সেস প্রদান করে। এই ডেমনটি অন্তর্নিহিত কীমিন্ট (KeyMint) (বা কীমাস্টার) (Keymaster) ইমপ্লিমেন্টেশন দ্বারা তৈরি কীব্লবগুলি সংরক্ষণের জন্য দায়ী। এই কীব্লবগুলিতে গোপন কী উপাদান (secret key material) থাকে এবং এগুলি এনক্রিপ্ট করা থাকে, যাতে কীস্টোর (Keystore) সেগুলিকে সংরক্ষণ করতে পারলেও ব্যবহার বা প্রকাশ করতে না পারে।
- KeyMint HAL পরিষেবা
- একটি AIDL সার্ভার যা
IKeyMintDeviceHAL বাস্তবায়ন করে এবং অন্তর্নিহিত KeyMint TA-তে অ্যাক্সেস প্রদান করে। - KeyMint বিশ্বস্ত অ্যাপ (TA)
- একটি সুরক্ষিত পরিবেশে, বেশিরভাগ ক্ষেত্রে একটি ARM SoC-এর TrustZone-এ চলমান সফটওয়্যার, যা সমস্ত সুরক্ষিত ক্রিপ্টোগ্রাফিক অপারেশন সরবরাহ করে। এই অ্যাপটির কাছে মূল কী উপাদান (raw key material) অ্যাক্সেস করার সুযোগ থাকে এবং কীগুলো ব্যবহারের অনুমতি দেওয়ার আগে সেগুলোর উপর থাকা সমস্ত অ্যাক্সেস কন্ট্রোল শর্ত যাচাই করে।
-
LockSettingsService - অ্যান্ড্রয়েড সিস্টেমের এই কম্পোনেন্টটি পাসওয়ার্ড এবং ফিঙ্গারপ্রিন্ট উভয় মাধ্যমেই ব্যবহারকারীর প্রমাণীকরণের জন্য দায়ী। এটি Keystore-এর অংশ নয়, কিন্তু এর প্রাসঙ্গিকতা রয়েছে কারণ Keystore ‘অথেনটিকেশন বাউন্ড কী’ (authentication bound keys) ধারণাটিকে সমর্থন করে: অর্থাৎ, এমন কী যা শুধুমাত্র ব্যবহারকারী প্রমাণীকরণ সম্পন্ন করলেই ব্যবহার করা যায়।
LockSettingsServiceGatekeeper TA এবং Fingerprint TA-এর সাথে যোগাযোগ করে অথেনটিকেশন টোকেন সংগ্রহ করে, যা এটি Keystore ডেমনকে প্রদান করে এবং KeyMint TA সেই টোকেনগুলো ব্যবহার করে। - গেটকিপার টিএ
- সুরক্ষিত পরিবেশে চলমান সেই কম্পোনেন্টটি, যা ব্যবহারকারীর পাসওয়ার্ড প্রমাণীকরণ এবং প্রমাণীকরণ টোকেন তৈরি করার জন্য দায়ী। এই টোকেনগুলো KeyMint TA-কে প্রমাণ করতে ব্যবহৃত হয় যে, একটি নির্দিষ্ট সময়ে কোনো নির্দিষ্ট ব্যবহারকারীর জন্য প্রমাণীকরণ সম্পন্ন হয়েছে।
- ফিঙ্গারপ্রিন্ট টিএ
- সুরক্ষিত পরিবেশে চলমান সেই কম্পোনেন্টটি, যা ব্যবহারকারীর আঙুলের ছাপ প্রমাণীকরণ এবং প্রমাণীকরণ টোকেন তৈরি করার জন্য দায়ী। এই টোকেনগুলো KeyMint TA-কে প্রমাণ করতে ব্যবহৃত হয় যে, একটি নির্দিষ্ট সময়ে একজন নির্দিষ্ট ব্যবহারকারীর জন্য প্রমাণীকরণ সম্পন্ন হয়েছে।
স্থাপত্য
অ্যান্ড্রয়েড কীস্টোর এপিআই এবং এর অন্তর্নিহিত কীমিন্ট এইচএএল, অ্যাক্সেস-নিয়ন্ত্রিত ও হার্ডওয়্যার-সমর্থিত কী ব্যবহার করে প্রোটোকল বাস্তবায়নের জন্য এক মৌলিক কিন্তু পর্যাপ্ত ক্রিপ্টোগ্রাফিক প্রিমিটিভের সেট প্রদান করে।
KeyMint HAL হলো একটি OEM-প্রদত্ত পরিষেবা যা Keystore পরিষেবা দ্বারা হার্ডওয়্যার-সমর্থিত ক্রিপ্টোগ্রাফিক পরিষেবা প্রদানের জন্য ব্যবহৃত হয়। প্রাইভেট কী উপাদান সুরক্ষিত রাখতে, HAL ইমপ্লিমেন্টেশনগুলো ইউজার স্পেসে, এমনকি কার্নেল স্পেসেও কোনো সংবেদনশীল অপারেশন সম্পাদন করে না। এর পরিবর্তে, অ্যান্ড্রয়েডে চলমান KeyMint HAL পরিষেবাটি সংবেদনশীল অপারেশনগুলো কোনো এক সুরক্ষিত পরিবেশে চলমান একটি TA-এর কাছে অর্পণ করে, যা সাধারণত কোনো ইমপ্লিমেন্টেশন-সংজ্ঞায়িত ওয়্যার ফরম্যাটে অনুরোধগুলোকে মার্শালিং এবং আনমার্শালিং করার মাধ্যমে সম্পন্ন হয়।
ফলস্বরূপ স্থাপত্যটি দেখতে এইরকম:

চিত্র ১. KeyMint-এ প্রবেশাধিকার।
KeyMint HAL API হলো নিম্ন-স্তরের, যা প্ল্যাটফর্ম-অভ্যন্তরীণ উপাদান দ্বারা ব্যবহৃত হয় এবং অ্যাপ ডেভেলপারদের কাছে উন্মুক্ত নয়। অ্যাপগুলির জন্য উপলব্ধ উচ্চ-স্তরের জাভা API-এর বর্ণনা অ্যান্ড্রয়েড ডেভেলপার সাইটে দেওয়া আছে।
প্রবেশাধিকার নিয়ন্ত্রণ
অ্যান্ড্রয়েড কীস্টোর অ্যাপ এবং অন্যান্য সিস্টেম কম্পোনেন্ট উভয়ের জন্যই হার্ডওয়্যার-সমর্থিত ক্রিপ্টোগ্রাফিক কী সংরক্ষণ ও ব্যবহারের একটি কেন্দ্রীয় উপাদান সরবরাহ করে। এই কারণে, যেকোনো একটি নির্দিষ্ট কী-তে অ্যাক্সেস সাধারণত সেই অ্যাপ বা সিস্টেম কম্পোনেন্টের মধ্যেই সীমাবদ্ধ থাকে, যেটি কী-টি তৈরি করেছে।
কীস্টোর ডোমেইন
এই অ্যাক্সেস কন্ট্রোলকে সমর্থন করার জন্য, কী-গুলোকে একটি কী ডেসক্রিপ্টরের মাধ্যমে কীস্টোরে শনাক্ত করা হয়। এই কী ডেসক্রিপ্টরটি যে ডোমেইনের অন্তর্গত, তা নির্দেশ করে এবং সেই ডোমেইনের মধ্যে থাকা একটি আইডেন্টিটিও উল্লেখ করে।
অ্যান্ড্রয়েড অ্যাপগুলো স্ট্যান্ডার্ড জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচার ব্যবহার করে কীস্টোর অ্যাক্সেস করে, যা একটি স্ট্রিং অ্যালিয়াসের মাধ্যমে কী-গুলোকে শনাক্ত করে। শনাক্তকরণের এই পদ্ধতিটি অভ্যন্তরীণভাবে কীস্টোর APP ডোমেইনের সাথে ম্যাপ করা থাকে; বিভিন্ন অ্যাপের কী-গুলোর মধ্যে পার্থক্য স্পষ্ট করার জন্য কলারের ইউআইডি-ও অন্তর্ভুক্ত করা হয়, যা একটি অ্যাপকে অন্যটির কী অ্যাক্সেস করা থেকে বিরত রাখে।
অভ্যন্তরীণভাবে, একটি কী লোড হওয়ার পর ফ্রেমওয়ার্কের কোড একটি অনন্য সাংখ্যিক কী আইডি- ও গ্রহণ করে। এই সাংখ্যিক আইডিটি KEY_ID ডোমেনের মধ্যে কী ডেসক্রিপ্টরগুলির শনাক্তকারী হিসাবে ব্যবহৃত হয়। তবে, অ্যাক্সেস নিয়ন্ত্রণ তখনও কার্যকর থাকে: এমনকি যদি একটি অ্যাপ অন্য কোনো অ্যাপের কী-এর আইডি খুঁজেও পায়, স্বাভাবিক পরিস্থিতিতে সেটি ব্যবহার করতে পারে না।
তবে, একটি অ্যাপের পক্ষে অন্য কোনো অ্যাপকে (UID দ্বারা চিহ্নিত) একটি কী ব্যবহারের অনুমতি দেওয়া সম্ভব। এই অনুমতি প্রদান প্রক্রিয়াটি একটি অনন্য অনুমতি শনাক্তকারী (grant identifier) প্রদান করে, যা GRANT ডোমেইনের মধ্যে কী ডেসক্রিপ্টরের শনাক্তকারী হিসেবে ব্যবহৃত হয়। এক্ষেত্রেও, অ্যাক্সেস নিয়ন্ত্রণ কার্যকর থাকে: এমনকি যদি কোনো তৃতীয় অ্যাপ অনুমতিপ্রাপ্ত ব্যক্তির কী-এর অনুমতি আইডি খুঁজেও পায়, তবুও সেটি তা ব্যবহার করতে পারে না।
কীস্টোর কী ডেসক্রিপ্টরের জন্য আরও দুটি ডোমেইন সমর্থন করে, যেগুলো অন্যান্য সিস্টেম কম্পোনেন্টের জন্য ব্যবহৃত হয় এবং অ্যাপ-নির্মিত কী-গুলোর জন্য উপলব্ধ নয়:
-
BLOBডোমেইন নির্দেশ করে যে কী ডেসক্রিপ্টরে কী-টির জন্য কোনো আইডেন্টিফায়ার নেই; এর পরিবর্তে, কী ডেসক্রিপ্টরটি নিজেই কীব্লব ধারণ করে এবং ক্লায়েন্ট কীব্লবের স্টোরেজ পরিচালনা করে। এটি সেইসব ক্লায়েন্ট (উদাহরণস্বরূপ,vold) ব্যবহার করে যাদের ডেটা পার্টিশন মাউন্ট হওয়ার আগে কীস্টোর অ্যাক্সেস করার প্রয়োজন হয়। -
SELINUXডোমেইন সিস্টেমের উপাদানগুলোকে কী (key) শেয়ার করার অনুমতি দেয়, যার অ্যাক্সেস একটি সাংখ্যিক শনাক্তকারী দ্বারা নিয়ন্ত্রিত হয়, যা একটি SELinux লেবেলের সাথে সঙ্গতিপূর্ণ ( keystore_key-এর জন্য SELinux পলিসি দেখুন)।
keystore_key-এর জন্য SELinux নীতি
Domain::SELINUX কী ডেসক্রিপ্টরগুলির জন্য ব্যবহৃত আইডেন্টিফায়ার ভ্যালুগুলি keystore2_key_context SELinux পলিসি ফাইলে কনফিগার করা থাকে। এই ফাইলগুলির প্রতিটি লাইন একটি সংখ্যাকে একটি SELinux লেবেলের সাথে ম্যাপ করে, উদাহরণস্বরূপ:
# wifi_key is a keystore2_key namespace intended to be used by wpa supplicant and # Settings to share Keystore keys. 102 u:object_r:wifi_key:s0
যে কম্পোনেন্টের SELINUX ডোমেইনে আইডি ১০২ সহ কী-টিতে অ্যাক্সেস প্রয়োজন, তার অবশ্যই সংশ্লিষ্ট SELinux পলিসি থাকতে হবে। উদাহরণস্বরূপ, wpa_supplicant এই কীগুলি পেতে এবং ব্যবহার করার অনুমতি দিতে, hal_wifi_supplicant.te তে নিম্নলিখিত লাইনটি যোগ করুন:
allow hal_wifi_supplicant wifi_key:keystore2_key { get, use };
Domain::SELINUX কী-গুলির সাংখ্যিক শনাক্তকারীগুলিকে বিভিন্ন পার্টিশনকে সংঘর্ষ ছাড়াই সমর্থন করার জন্য রেঞ্জে বিভক্ত করা হয়েছে:
| বিভাজন | পরিসর | কনফিগারেশন ফাইল |
|---|---|---|
| সিস্টেম | ০ ... ৯,৯৯৯ | /system/etc/selinux/keystore2_key_contexts, /plat_keystore2_key_contexts |
| বর্ধিত সিস্টেম | ১০,০০০ ... ১৯,৯৯৯ | /system_ext/etc/selinux/system_ext_keystore2_key_contexts, /system_ext_keystore2_key_contexts |
| পণ্য | ২০,০০০ ... ২৯,৯৯৯ | /product/etc/selinux/product_keystore2_key_contexts, /product_keystore2_key_contexts |
| বিক্রেতা | ৩০,০০০ ... ৩৯,৯৯৯ | /vendor/etc/selinux/vendor_keystore2_key_contexts, /vendor_keystore2_key_contexts |
সিস্টেম পার্টিশনের জন্য নিম্নলিখিত নির্দিষ্ট মানগুলি সংজ্ঞায়িত করা হয়েছে:
| নেমস্পেস আইডি | এসইপলিসি লেবেল | ইউআইডি | বর্ণনা |
|---|---|---|---|
| ০ | su_key | প্রযোজ্য নয় | সুপার ইউজার কী। শুধুমাত্র ইউজারডিবাগ এবং ইঞ্জ বিল্ডে পরীক্ষার জন্য ব্যবহৃত হয়। ইউজার বিল্ডের ক্ষেত্রে প্রাসঙ্গিক নয়। |
| ১ | shell_key | প্রযোজ্য নয় | শেলের জন্য উপলব্ধ নেমস্পেস। এটি প্রধানত পরীক্ষার জন্য ব্যবহৃত হয়, তবে কমান্ড লাইন থেকে ইউজার বিল্ডেও ব্যবহার করা যায়। |
| ১০০ | vold_key | প্রযোজ্য নয় | ভোল্ডের ব্যবহারের জন্য উদ্দিষ্ট। |
| ১০১ | odsign_key | প্রযোজ্য নয় | ডিভাইস-ভিত্তিক স্বাক্ষরকারী ডেমন দ্বারা ব্যবহৃত হয়। |
| ১০২ | wifi_key | AID_WIFI(1010) | অ্যান্ড্রয়েডের ওয়াইফাই সাবসিস্টেম দ্বারা ব্যবহৃত, যার মধ্যে wpa_supplicant অন্তর্ভুক্ত। |
| ১০৩ | locksettings_key | প্রযোজ্য নয় | LockSettingsService দ্বারা ব্যবহৃত |
| ১২০ | resume_on_reboot_key | AID_SYSTEM(1000) | রিবুটের পর পুনরায় চালু হওয়া সমর্থন করার জন্য অ্যান্ড্রয়েডের সিস্টেম সার্ভার এটি ব্যবহার করে। |
অ্যাক্সেস ভেক্টর
কীস্টোর একটি কী-এর সার্বিক অ্যাক্সেস নিয়ন্ত্রণের পাশাপাশি, সেটির উপর কোন কোন অপারেশন করা যাবে তাও নিয়ন্ত্রণ করতে দেয়। keystore2_key পারমিশনগুলো KeyPermission.aidl ফাইলে বর্ণনা করা আছে।
সিস্টেমের অনুমতি
keystore_key-এর জন্য SELinux পলিসিতে বর্ণিত প্রতি-কী অ্যাক্সেস কন্ট্রোল ছাড়াও, বিভিন্ন সিস্টেম ও রক্ষণাবেক্ষণ কার্যক্রম সম্পাদনের জন্য প্রয়োজনীয় অন্যান্য SELinux পারমিশনগুলো নিম্নলিখিত সারণিতে বর্ণনা করা হয়েছে:
| অনুমতি | অর্থ |
|---|---|
add_auth | কীস্টোরে অথ টোকেন যোগ করার জন্য এটি প্রয়োজন; গেটকিপার বা BiometricManager মতো অথেন্টিকেশন প্রোভাইডাররা এটি ব্যবহার করে। |
clear_ns | একটি নির্দিষ্ট নেমস্পেসের সমস্ত কী মুছে ফেলার জন্য এটি প্রয়োজন; অ্যাপ আনইনস্টল করার সময় এটি একটি রক্ষণাবেক্ষণ কার্যক্রম হিসেবে ব্যবহৃত হয়। |
list | সিস্টেমের বিভিন্ন বৈশিষ্ট্য, যেমন মালিকানা বা কী-গুলো প্রমাণীকরণ-আবদ্ধ কিনা, তার ভিত্তিতে কী-গুলো গণনা করার জন্য এটি প্রয়োজন। যারা নিজেদের নেমস্পেস গণনা করে, তাদের জন্য এই অনুমতির প্রয়োজন হয় না (যা get_info অনুমতির আওতাভুক্ত)। |
lock | ডিভাইসটি লক হওয়ার বিষয়টি কীস্টোরকে জানানোর জন্য এটি প্রয়োজন, যা ফলস্বরূপ সুপার-কীগুলোকে সরিয়ে দেয় যাতে অথেনটিকেশন-বাউন্ড কীগুলো অনুপলব্ধ থাকে। |
unlock | ডিভাইসটি আনলক করা হয়েছে তা কীস্টোরকে জানানোর জন্য এবং অথেনটিকেশন বাউন্ড কী-গুলোকে সুরক্ষিত রাখে এমন সুপার-কী-গুলোতে অ্যাক্সেস পুনরুদ্ধার করার জন্য এটি প্রয়োজন। |
reset | কীস্টোরকে ফ্যাক্টরি ডিফল্টে রিসেট করার জন্য এটি প্রয়োজন, যা অ্যান্ড্রয়েড ওএস-এর কার্যকারিতার জন্য অপরিহার্য নয় এমন সমস্ত কী মুছে ফেলে। |
ইতিহাস
অ্যান্ড্রয়েড ৫ এবং এর পূর্ববর্তী সংস্করণগুলিতে, অ্যান্ড্রয়েডের একটি সহজ, হার্ডওয়্যার-সমর্থিত ক্রিপ্টোগ্রাফিক পরিষেবা এপিআই ছিল, যা কীমাস্টার হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ারের (HAL) ০.২ এবং ০.৩ সংস্করণ দ্বারা সরবরাহ করা হতো। কীস্টোর ডিজিটাল স্বাক্ষর এবং যাচাইকরণ কার্যক্রমের পাশাপাশি অ্যাসিমেট্রিক সাইনিং কী পেয়ার তৈরি ও ইম্পোর্ট করার সুবিধা দিত। এটি ইতিমধ্যেই অনেক ডিভাইসে প্রয়োগ করা হয়েছে, কিন্তু এমন অনেক নিরাপত্তা লক্ষ্য রয়েছে যা শুধুমাত্র একটি সিগনেচার এপিআই দিয়ে সহজে অর্জন করা যায় না। অ্যান্ড্রয়েড ৬.০ আরও বিস্তৃত পরিসরের সক্ষমতা প্রদানের জন্য কীস্টোর এপিআই-কে প্রসারিত করেছে।
অ্যান্ড্রয়েড ৬.০
অ্যান্ড্রয়েড ৬.০-তে, কীমাস্টার ১.০ সিমেট্রিক ক্রিপ্টোগ্রাফিক প্রিমিটিভ , AES ও HMAC, এবং হার্ডওয়্যার-সমর্থিত কী-গুলোর জন্য একটি অ্যাক্সেস কন্ট্রোল সিস্টেম যুক্ত করেছে। কী তৈরির সময় অ্যাক্সেস কন্ট্রোলগুলো নির্দিষ্ট করা হয় এবং কী-টির জীবনকাল জুড়ে তা বলবৎ থাকে। কী-গুলোকে এমনভাবে সীমাবদ্ধ করা যেতে পারে যাতে সেগুলো কেবল ব্যবহারকারী প্রমাণীকৃত হওয়ার পরেই, এবং শুধুমাত্র নির্দিষ্ট উদ্দেশ্যে বা নির্দিষ্ট ক্রিপ্টোগ্রাফিক প্যারামিটারের সাথেই ব্যবহার করা যায়।
ক্রিপ্টোগ্রাফিক প্রিমিটিভের পরিসর সম্প্রসারণের পাশাপাশি, অ্যান্ড্রয়েড ৬.০-এর কীস্টোর নিম্নলিখিত বিষয়গুলো যোগ করেছে:
- কী-এর অপব্যবহারজনিত নিরাপত্তা লঙ্ঘনের ঝুঁকি প্রশমিত করার জন্য, কী-এর ব্যবহার সীমিত করার একটি ব্যবহার নিয়ন্ত্রণ ব্যবস্থা।
- একটি অ্যাক্সেস কন্ট্রোল স্কিম যা নির্দিষ্ট ব্যবহারকারী, ক্লায়েন্ট এবং একটি নির্ধারিত সময়সীমার জন্য কী-গুলির ব্যবহার সীমাবদ্ধ করতে সক্ষম করে।
অ্যান্ড্রয়েড ৭.০
অ্যান্ড্রয়েড ৭.০-তে কীমাস্টার ২-এ কী অ্যাটেস্টেশন এবং ভার্সন বাইন্ডিং-এর জন্য সমর্থন যোগ করা হয়েছে।
কী অ্যাটেস্টেশন এমন পাবলিক কী সার্টিফিকেট প্রদান করে, যেগুলিতে কী-টির বিশদ বিবরণ এবং এর অ্যাক্সেস কন্ট্রোল অন্তর্ভুক্ত থাকে, যাতে সুরক্ষিত হার্ডওয়্যারে কী-টির অস্তিত্ব এবং এর কনফিগারেশন দূর থেকে যাচাই করা যায়।
ভার্সন বাইন্ডিং কী-গুলোকে অপারেটিং সিস্টেম এবং প্যাচ লেভেল ভার্সনের সাথে সংযুক্ত করে। এটি নিশ্চিত করে যে, কোনো আক্রমণকারী যদি সিস্টেম বা TEE সফটওয়্যারের পুরোনো কোনো ভার্সনে দুর্বলতা খুঁজে পায়, তবে সে যেন ডিভাইসটিকে সেই দুর্বল ভার্সনে ফিরিয়ে নিয়ে নতুন ভার্সন দিয়ে তৈরি করা কী-গুলো ব্যবহার করতে না পারে। এছাড়াও, যখন একটি নির্দিষ্ট ভার্সন ও প্যাচ লেভেলের কী এমন কোনো ডিভাইসে ব্যবহার করা হয় যা নতুন কোনো ভার্সন বা প্যাচ লেভেলে আপগ্রেড করা হয়েছে, তখন ব্যবহারের আগেই কী-টি আপগ্রেড হয়ে যায় এবং কী-টির পূর্ববর্তী ভার্সনটি অকার্যকর হয়ে পড়ে। ডিভাইসটি আপগ্রেড হওয়ার সাথে সাথে কী-গুলোও ক্রমান্বয়ে উন্নত হতে থাকে, কিন্তু ডিভাইসটিকে কোনো পূর্ববর্তী রিলিজে ফিরিয়ে নিয়ে গেলে কী-গুলো অব্যবহারযোগ্য হয়ে পড়ে।
অ্যান্ড্রয়েড ৮.০
অ্যান্ড্রয়েড ৮.০-তে, কীমাস্টার ৩ পুরোনো ধাঁচের সি-স্ট্রাকচার HAL থেকে নতুন হার্ডওয়্যার ইন্টারফেস ডেফিনিশন ল্যাঙ্গুয়েজ (HIDL)-এর ডেফিনিশন থেকে তৈরি সি++ HAL ইন্টারফেসে স্থানান্তরিত হয়েছে। এই পরিবর্তনের অংশ হিসেবে, অনেক আর্গুমেন্টের ধরন পরিবর্তিত হয়েছে, যদিও এর টাইপ এবং মেথডগুলোর সাথে পুরোনো টাইপ এবং HAL স্ট্রাক্ট মেথডগুলোর এক-এক মিল রয়েছে।
এই ইন্টারফেস সংশোধনের পাশাপাশি, অ্যান্ড্রয়েড ৮.০ কীমাস্টার ২-এর অ্যাটেস্টেশন ফিচারটিকে আইডি অ্যাটেস্টেশন সমর্থন করার জন্য প্রসারিত করেছে। আইডি অ্যাটেস্টেশন হার্ডওয়্যার আইডেন্টিফায়ার, যেমন ডিভাইসের সিরিয়াল নম্বর, পণ্যের নাম এবং ফোন আইডি (IMEI বা MEID)-কে দৃঢ়ভাবে সত্যায়িত করার জন্য একটি সীমিত এবং ঐচ্ছিক ব্যবস্থা প্রদান করে। এই সংযোজনটি বাস্তবায়ন করতে, অ্যান্ড্রয়েড ৮.০ আইডি অ্যাটেস্টেশন যোগ করার জন্য ASN.1 অ্যাটেস্টেশন স্কিমা পরিবর্তন করেছে। কীমাস্টার ইমপ্লিমেন্টেশনগুলোকে প্রাসঙ্গিক ডেটা আইটেমগুলো পুনরুদ্ধার করার জন্য একটি নিরাপদ উপায় খুঁজে বের করতে হবে, এবং সেইসাথে ফিচারটিকে নিরাপদে ও স্থায়ীভাবে নিষ্ক্রিয় করার জন্য একটি ব্যবস্থা সংজ্ঞায়িত করতে হবে।
অ্যান্ড্রয়েড ৯
অ্যান্ড্রয়েড ৯-এর আপডেটগুলোর মধ্যে ছিল:
- Keymaster 4 -এ আপডেট করুন
- এমবেডেড সিকিওর এলিমেন্টের জন্য সমর্থন
- নিরাপদ কী আমদানির জন্য সমর্থন
- 3DES এনক্রিপশনের জন্য সমর্থন
- ভার্সন বাইন্ডিং-এ পরিবর্তন আনা হয়েছে যাতে
boot.imgএবংsystem.imgভার্সন আলাদাভাবে সেট করা থাকে, যা স্বাধীন আপডেটের সুযোগ দেবে।
অ্যান্ড্রয়েড ১০
অ্যান্ড্রয়েড ১০-এর সাথে কীমাস্টার এইচএএল (Keymaster HAL)-এর ৪.১ সংস্করণ চালু করা হয়েছে, যাতে যোগ করা হয়েছে:
- এমন কী-গুলির জন্য সমর্থন যা শুধুমাত্র ডিভাইস আনলক করা থাকলেই ব্যবহারযোগ্য।
- শুধুমাত্র বুটের প্রাথমিক পর্যায়ে ব্যবহারযোগ্য কী-গুলির জন্য সমর্থন
- হার্ডওয়্যার-মোড়ানো স্টোরেজ কীগুলির জন্য ঐচ্ছিক সমর্থন
- StrongBox-এ ডিভাইস-অনন্য প্রত্যয়নের জন্য ঐচ্ছিক সমর্থন
অ্যান্ড্রয়েড ১২
অ্যান্ড্রয়েড ১২-এ নতুন KeyMint HAL চালু করা হয়েছে, যা Keymaster HAL-কে প্রতিস্থাপন করলেও প্রায় একই ধরনের কার্যকারিতা প্রদান করে। উপরোক্ত সমস্ত বৈশিষ্ট্য ছাড়াও, KeyMint HAL-এ আরও রয়েছে:
- ECDH মূল চুক্তির জন্য সমর্থন
- ব্যবহারকারী-নির্দিষ্ট অ্যাটেস্টেশন কীগুলির জন্য সমর্থন
- সীমিত সংখ্যক ব্যবহার সহ কীগুলির জন্য সমর্থন
অ্যান্ড্রয়েড ১২-এ কীস্টোর সিস্টেম ডেমন-এর একটি নতুন সংস্করণও অন্তর্ভুক্ত রয়েছে, যা রাস্ট (Rust)-এ পুনরায় লেখা হয়েছে এবং keystore2 নামে পরিচিত।
অ্যান্ড্রয়েড ১৩
অ্যান্ড্রয়েড ১৩-এ KeyMint HAL-এর v2 যুক্ত করা হয়েছে, যা সাইনিং এবং কী অ্যাগ্রিমেন্ট উভয়ের জন্যই Curve25519- এর সাপোর্ট যোগ করে।