হার্ডওয়্যার-সমর্থিত কীস্টোর

একটি চিপে (SoC) একটি সিস্টেমে একটি বিশ্বস্ত এক্সিকিউশন এনভায়রনমেন্টের উপলব্ধতা অ্যান্ড্রয়েড ডিভাইসগুলির জন্য Android OS, প্ল্যাটফর্ম পরিষেবাগুলিতে এবং এমনকি তৃতীয় পক্ষের অ্যাপগুলিতে (মানক জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচারে অ্যান্ড্রয়েড-নির্দিষ্ট এক্সটেনশনের আকারে) হার্ডওয়্যার-সমর্থিত, শক্তিশালী সুরক্ষা পরিষেবা প্রদান করার একটি সুযোগ দেয়, দেখুন KeyGenParameterSpec .

শব্দকোষ

এখানে কীস্টোর উপাদান এবং তাদের সম্পর্কগুলির একটি দ্রুত ওভারভিউ রয়েছে৷

AndroidKeyStore
কীস্টোর কার্যকারিতা অ্যাক্সেস করতে অ্যাপস দ্বারা ব্যবহৃত Android Framework API এবং উপাদান। এটি স্ট্যান্ডার্ড জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচার এপিআই-এর একটি বাস্তবায়ন, তবে অ্যান্ড্রয়েড-নির্দিষ্ট এক্সটেনশন যোগ করে এবং জাভা কোড নিয়ে গঠিত যা অ্যাপের নিজস্ব প্রক্রিয়ার জায়গায় চলে। AndroidKeyStore কীস্টোর ডেমনে ফরওয়ার্ড করে কীস্টোর আচরণের জন্য অ্যাপের অনুরোধগুলি পূরণ করে।
কীস্টোর ডেমন
একটি অ্যান্ড্রয়েড সিস্টেম ডেমন যা একটি বাইন্ডার API এর মাধ্যমে সমস্ত কীস্টোর কার্যকারিতা অ্যাক্সেস প্রদান করে। এই ডেমন অন্তর্নিহিত কীমিন্ট (বা কীমাস্টার) বাস্তবায়নের দ্বারা তৈরি কীব্লবগুলি সংরক্ষণের জন্য দায়ী, যার মধ্যে গোপন কী উপাদান রয়েছে, এনক্রিপ্ট করা হয়েছে যাতে কীস্টোর সেগুলি সংরক্ষণ করতে পারে কিন্তু ব্যবহার বা প্রকাশ করতে পারে না।
KeyMint HAL পরিষেবা
একটি AIDL সার্ভার যা IKeyMintDevice HAL প্রয়োগ করে, অন্তর্নিহিত KeyMint TA-তে অ্যাক্সেস প্রদান করে।
KeyMint বিশ্বস্ত অ্যাপ (TA)
একটি নিরাপদ প্রেক্ষাপটে সফ্টওয়্যার চলছে, প্রায়শই একটি ARM SoC-তে TrustZone-এ, যা সমস্ত সুরক্ষিত ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ প্রদান করে। এই অ্যাপ্লিকেশানের কাঁচা কী উপাদানগুলিতে অ্যাক্সেস রয়েছে এবং তাদের ব্যবহারের অনুমতি দেওয়ার আগে কীগুলিতে অ্যাক্সেস নিয়ন্ত্রণের সমস্ত শর্ত যাচাই করে৷
LockSettingsService
পাসওয়ার্ড এবং ফিঙ্গারপ্রিন্ট উভয়ই ব্যবহারকারীর প্রমাণীকরণের জন্য দায়ী Android সিস্টেম উপাদান। এটি কীস্টোরের অংশ নয়, তবে প্রাসঙ্গিক কারণ কীস্টোর প্রমাণীকরণ বাউন্ড কীগুলির ধারণাকে সমর্থন করে: কী যা ব্যবহারকারীর প্রমাণীকরণ হলেই ব্যবহার করা যেতে পারে। LockSettingsService প্রমাণীকরণ টোকেন পেতে গেটকিপার TA এবং ফিঙ্গারপ্রিন্ট TA-এর সাথে যোগাযোগ করে, যা এটি কীস্টোর ডেমনকে প্রদান করে এবং যা KeyMint TA দ্বারা ব্যবহার করা হয়।
দারোয়ান টি.এ
সুরক্ষিত পরিবেশে চলমান উপাদান যা ব্যবহারকারীর পাসওয়ার্ড প্রমাণীকরণ এবং প্রমাণীকরণ টোকেন তৈরি করার জন্য দায়ী যা KeyMint TA-কে প্রমাণ করতে ব্যবহৃত হয় যে একটি নির্দিষ্ট ব্যবহারকারীর জন্য একটি নির্দিষ্ট সময়ে একটি প্রমাণীকরণ করা হয়েছিল।
আঙুলের ছাপ TA
সুরক্ষিত পরিবেশে চলমান উপাদান যা ব্যবহারকারীর আঙ্গুলের ছাপ প্রমাণীকরণ এবং প্রমাণীকরণ টোকেন তৈরি করার জন্য দায়ী যা KeyMint TA কে প্রমাণ করতে ব্যবহৃত হয় যে একটি নির্দিষ্ট ব্যবহারকারীর জন্য নির্দিষ্ট সময়ে একটি প্রমাণীকরণ করা হয়েছিল।

স্থাপত্য

অ্যান্ড্রয়েড কীস্টোর এপিআই এবং অন্তর্নিহিত কীমিন্ট এইচএএল অ্যাক্সেস-নিয়ন্ত্রিত, হার্ডওয়্যার-ব্যাকড কী ব্যবহার করে প্রোটোকল বাস্তবায়নের অনুমতি দেওয়ার জন্য ক্রিপ্টোগ্রাফিক আদিমগুলির একটি মৌলিক কিন্তু পর্যাপ্ত সেট সরবরাহ করে।

KeyMint HAL হল একটি OEM-প্রদত্ত পরিষেবা যা কীস্টোর পরিষেবা দ্বারা হার্ডওয়্যার-সমর্থিত ক্রিপ্টোগ্রাফিক পরিষেবা প্রদানের জন্য ব্যবহৃত হয়। ব্যক্তিগত কী উপাদান সুরক্ষিত রাখার জন্য, এইচএএল বাস্তবায়ন ব্যবহারকারীর স্থান, এমনকি কার্নেল স্থানে কোনো সংবেদনশীল ক্রিয়াকলাপ সম্পাদন করে না। পরিবর্তে, Android-এ চলমান KeyMint HAL পরিষেবাটি কোনো ধরনের সুরক্ষিত পরিবেশে চলমান একটি TA-কে সংবেদনশীল ক্রিয়াকলাপ অর্পণ করে, সাধারণত কিছু বাস্তবায়ন-সংজ্ঞায়িত ওয়্যার বিন্যাসে মার্শালিং এবং মার্শালিং অনুরোধের মাধ্যমে।

ফলস্বরূপ আর্কিটেকচারটি এইরকম দেখায়:

কীমিন্টে অ্যাক্সেস

চিত্র 1. কীমিন্টে অ্যাক্সেস।

KeyMint HAL API নিম্ন স্তরের, প্ল্যাটফর্ম-অভ্যন্তরীণ উপাদান দ্বারা ব্যবহৃত, এবং অ্যাপ বিকাশকারীদের কাছে প্রকাশ করা হয় না। অ্যাপ্লিকেশানগুলিতে উপলব্ধ উচ্চ-স্তরের Java API Android বিকাশকারী সাইটে বর্ণনা করা হয়েছে৷

অ্যাক্সেস নিয়ন্ত্রণ

অ্যান্ড্রয়েড কীস্টোর স্টোরেজ এবং হার্ডওয়্যার-ব্যাকড ক্রিপ্টোগ্রাফিক কীগুলির ব্যবহারের জন্য একটি কেন্দ্রীয় উপাদান প্রদান করে, উভয় অ্যাপের জন্য এবং অন্যান্য সিস্টেমের উপাদানগুলির জন্য। যেমন, যেকোনো পৃথক কী-তে অ্যাক্সেস সাধারণত অ্যাপ বা সিস্টেম উপাদানের মধ্যে সীমাবদ্ধ থাকে যা কী তৈরি করেছে।

কীস্টোর ডোমেইন

এই অ্যাক্সেস নিয়ন্ত্রণকে সমর্থন করার জন্য, কীগুলিকে একটি কী বর্ণনাকারীর সাহায্যে কীস্টোরে চিহ্নিত করা হয়। এই কী বর্ণনাকারী একটি ডোমেন নির্দেশ করে যে বর্ণনাকারীর অন্তর্গত, সেই ডোমেনের মধ্যে একটি পরিচয় সহ।

অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলি স্ট্যান্ডার্ড জাভা ক্রিপ্টোগ্রাফি আর্কিটেকচার ব্যবহার করে কীস্টোর অ্যাক্সেস করে, যা একটি স্ট্রিং উপনাম দিয়ে কীগুলি সনাক্ত করে৷ অভ্যন্তরীণভাবে কীস্টোর APP ডোমেনে সনাক্তকরণের এই পদ্ধতিটি ম্যাপ করে; কলারের ইউআইডি বিভিন্ন অ্যাপের কীগুলিকে দ্ব্যর্থিত করার জন্যও অন্তর্ভুক্ত করা হয়েছে, একটি অ্যাপকে অন্যের কীগুলি অ্যাক্সেস করতে বাধা দেয়।

অভ্যন্তরীণভাবে, একটি কী লোড হওয়ার পরে ফ্রেমওয়ার্ক কোডটি একটি অনন্য সংখ্যাসূচক কী আইডিও পায়। এই সাংখ্যিক আইডিটি KEY_ID ডোমেনের মধ্যে কী বর্ণনাকারীদের শনাক্তকারী হিসাবে ব্যবহৃত হয়। যাইহোক, অ্যাক্সেস কন্ট্রোল এখনও সঞ্চালিত হয়: এমনকি যদি একটি অ্যাপ অন্য অ্যাপের কীর জন্য একটি কী আইডি আবিষ্কার করে, তবে এটি সাধারণ পরিস্থিতিতে এটি ব্যবহার করতে পারে না।

যাইহোক, একটি অ্যাপের পক্ষে একটি ভিন্ন অ্যাপে (UID দ্বারা চিহ্নিত) একটি কী ব্যবহার করার অনুমতি দেওয়া সম্ভব। এই অনুদান অপারেশনটি একটি অনন্য অনুদান শনাক্তকারী প্রদান করে, যা GRANT ডোমেনের মধ্যে মূল বর্ণনাকারীদের জন্য শনাক্তকারী হিসাবে ব্যবহৃত হয়। আবার, অ্যাক্সেস কন্ট্রোল এখনও সঞ্চালিত হয়: এমনকি যদি একটি তৃতীয় অ্যাপ অনুদানকারীর কীর জন্য অনুদান আইডি আবিষ্কার করে, তবে এটি এটি ব্যবহার করতে পারে না।

কীস্টোর কী বর্ণনাকারীদের জন্য আরও দুটি ডোমেন সমর্থন করে, যা অন্যান্য সিস্টেম উপাদানগুলির জন্য ব্যবহৃত হয় এবং অ্যাপ-তৈরি কীগুলির জন্য উপলব্ধ নয়:

  • BLOB ডোমেন নির্দেশ করে যে কী বর্ণনাকারীতে কীটির জন্য কোনো শনাক্তকারী নেই; পরিবর্তে, কী বর্ণনাকারী কীব্লব নিজেই ধারণ করে এবং ক্লায়েন্ট কীব্লব স্টোরেজ পরিচালনা করে। এটি ক্লায়েন্টদের দ্বারা ব্যবহৃত হয় (উদাহরণস্বরূপ, vold ) যাদের ডেটা পার্টিশন মাউন্ট করার আগে কীস্টোর অ্যাক্সেস করতে হবে।
  • SELINUX ডোমেন সিস্টেমের উপাদানগুলিকে কীগুলি ভাগ করার অনুমতি দেয়, একটি সাংখ্যিক শনাক্তকারী দ্বারা নিয়ন্ত্রিত অ্যাক্সেস সহ যা একটি 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 ডোমেনে ID 102 সহ কী-তে অ্যাক্সেসের প্রয়োজন এমন একটি উপাদানের অবশ্যই সংশ্লিষ্ট SELinux নীতি থাকতে হবে। উদাহরণস্বরূপ, wpa_supplicant এই কীগুলি পেতে এবং ব্যবহার করার অনুমতি দিতে, hal_wifi_supplicant.te এ নিম্নলিখিত লাইনটি যুক্ত করুন:

allow hal_wifi_supplicant wifi_key:keystore2_key { get, use };

Domain::SELINUX কীগুলি সংঘর্ষ ছাড়াই বিভিন্ন পার্টিশন সমর্থন করার জন্য রেঞ্জে বিভক্ত:

বিভাজন পরিসর কনফিগ ফাইল
সিস্টেম 0 ... 9,999 /system/etc/selinux/keystore2_key_contexts, /plat_keystore2_key_contexts
বর্ধিত সিস্টেম 10,000 ... 19,999 /system_ext/etc/selinux/system_ext_keystore2_key_contexts, /system_ext_keystore2_key_contexts
পণ্য 20,000 ... 29,999 /product/etc/selinux/product_keystore2_key_contexts, /product_keystore2_key_contexts
বিক্রেতা 30,000 ... 39,999 /vendor/etc/selinux/vendor_keystore2_key_contexts, /vendor_keystore2_key_contexts

সিস্টেম পার্টিশনের জন্য নিম্নলিখিত নির্দিষ্ট মানগুলি সংজ্ঞায়িত করা হয়েছে:

নেমস্পেস আইডি এসইপলিসি লেবেল ইউআইডি বর্ণনা
0 su_key N/A সুপার ইউজার কী। শুধুমাত্র userdebug এবং eng বিল্ডে পরীক্ষার জন্য ব্যবহার করা হয়। ব্যবহারকারী বিল্ডে প্রাসঙ্গিক নয়।
1 shell_key N/A শেলের জন্য উপলব্ধ নামস্থান। বেশিরভাগ পরীক্ষার জন্য ব্যবহৃত হয়, তবে কমান্ড লাইন থেকে ব্যবহারকারী বিল্ডে ব্যবহার করা যেতে পারে।
100 vold_key N/A vold দ্বারা ব্যবহারের জন্য উদ্দেশ্যে.
101 odsign_key N/A অন-ডিভাইস সাইনিং ডেমন দ্বারা ব্যবহৃত হয়।
102 wifi_key AID_WIFI(1010) wpa_supplicant সহ Android এর Wifi সাবসিস্টেম দ্বারা ব্যবহৃত।
103 locksettings_key N/A LockSettingsService দ্বারা ব্যবহৃত
120 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 কীস্টোরকে ফ্যাক্টরি ডিফল্টে রিসেট করার জন্য প্রয়োজনীয়, সমস্ত কীগুলি মুছে ফেলার জন্য যা Android OS-এর কার্যকারিতার জন্য গুরুত্বপূর্ণ নয়৷

ইতিহাস

অ্যান্ড্রয়েড 5 এবং তার থেকে কম সময়ে, অ্যান্ড্রয়েডের একটি সাধারণ, হার্ডওয়্যার-সমর্থিত ক্রিপ্টোগ্রাফিক পরিষেবা API ছিল, যা কীমাস্টার হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL)-এর 0.2 এবং 0.3 সংস্করণ দ্বারা সরবরাহ করা হয়েছিল। কীস্টোর ডিজিটাল সাইনিং এবং যাচাইকরণ কার্যক্রম, প্লাস জেনারেশন এবং অ্যাসিমেট্রিক সাইনিং কী জোড়ার আমদানি প্রদান করে। এটি ইতিমধ্যে অনেক ডিভাইসে প্রয়োগ করা হয়েছে, কিন্তু এমন অনেক নিরাপত্তা লক্ষ্য রয়েছে যা শুধুমাত্র একটি স্বাক্ষর API দিয়ে সহজে অর্জন করা যায় না। Android 6.0 একটি বিস্তৃত পরিসরের ক্ষমতা প্রদান করতে Keystore API-কে প্রসারিত করেছে।

অ্যান্ড্রয়েড 6.0

অ্যান্ড্রয়েড 6.0-এ, কীমাস্টার 1.0 সিমেট্রিক ক্রিপ্টোগ্রাফিক আদিম , AES এবং HMAC, এবং হার্ডওয়্যার-ব্যাকড কীগুলির জন্য একটি অ্যাক্সেস কন্ট্রোল সিস্টেম যুক্ত করেছে। অ্যাক্সেস নিয়ন্ত্রণগুলি কী তৈরির সময় নির্দিষ্ট করা হয় এবং কীটির আজীবনের জন্য প্রয়োগ করা হয়। কীগুলি ব্যবহারকারীর প্রমাণীকরণের পরেই ব্যবহারযোগ্য হতে সীমাবদ্ধ করা যেতে পারে, এবং শুধুমাত্র নির্দিষ্ট উদ্দেশ্যে বা নির্দিষ্ট ক্রিপ্টোগ্রাফিক পরামিতিগুলির সাথে।

ক্রিপ্টোগ্রাফিক প্রিমিটিভের পরিসর প্রসারিত করার পাশাপাশি, অ্যান্ড্রয়েড 6.0-এ কীস্টোর নিম্নলিখিতগুলি যুক্ত করেছে:

  • কী ব্যবহার সীমিত করার অনুমতি দেওয়ার জন্য একটি ব্যবহার নিয়ন্ত্রণ স্কিম, কীগুলির অপব্যবহারের কারণে নিরাপত্তা আপসের ঝুঁকি কমাতে
  • নির্দিষ্ট ব্যবহারকারী, ক্লায়েন্ট এবং একটি সংজ্ঞায়িত সময়সীমার জন্য কীগুলির সীমাবদ্ধতা সক্ষম করার জন্য একটি অ্যাক্সেস নিয়ন্ত্রণ স্কিম

অ্যান্ড্রয়েড 7.0

Android 7.0-এ, Keymaster 2 কী প্রত্যয়ন এবং সংস্করণ বাইন্ডিংয়ের জন্য সমর্থন যোগ করেছে।

কী প্রত্যয়ন সার্বজনীন কী শংসাপত্রগুলি সরবরাহ করে যাতে কী এবং এর অ্যাক্সেস নিয়ন্ত্রণগুলির একটি বিশদ বিবরণ থাকে, সুরক্ষিত হার্ডওয়্যারে কীটির অস্তিত্ব এবং এর কনফিগারেশন দূর থেকে যাচাইযোগ্য করে তুলতে।

সংস্করণ বাইন্ডিং অপারেটিং সিস্টেম এবং প্যাচ স্তর সংস্করণের কীগুলিকে আবদ্ধ করে। এটি নিশ্চিত করে যে একজন আক্রমণকারী যে সিস্টেমের একটি পুরানো সংস্করণে বা TEE সফ্টওয়্যারের দুর্বলতা আবিষ্কার করে সে একটি ডিভাইসকে দুর্বল সংস্করণে ফিরিয়ে আনতে পারবে না এবং নতুন সংস্করণের সাথে তৈরি করা কীগুলি ব্যবহার করতে পারবে না। উপরন্তু, যখন একটি নতুন সংস্করণ বা প্যাচ স্তরে আপগ্রেড করা হয়েছে এমন একটি ডিভাইসে একটি প্রদত্ত সংস্করণ এবং প্যাচ স্তর সহ একটি কী ব্যবহার করা হয়, তখন কীটি ব্যবহার করার আগে আপগ্রেড করা হয় এবং কীটির পূর্ববর্তী সংস্করণটি অবৈধ হয়ে যায়। ডিভাইসটি আপগ্রেড হওয়ার সাথে সাথে, কীগুলি ডিভাইসের সাথে এগিয়ে যায়, কিন্তু ডিভাইসটিকে পূর্ববর্তী রিলিজে ফিরিয়ে দিলে কীগুলি অকেজো হয়ে যায়।

অ্যান্ড্রয়েড 8.0

অ্যান্ড্রয়েড 8.0-এ, কীমাস্টার 3 পুরানো-স্টাইলের সি-স্ট্রাকচার HAL থেকে C++ HAL ইন্টারফেসে রূপান্তরিত হয়েছে যা নতুন হার্ডওয়্যার ইন্টারফেস ডেফিনিশন ল্যাঙ্গুয়েজ (HIDL) এর একটি সংজ্ঞা থেকে তৈরি হয়েছে। পরিবর্তনের অংশ হিসেবে, অনেক আর্গুমেন্টের ধরন পরিবর্তিত হয়েছে, যদিও ধরন এবং পদ্ধতির পুরানো প্রকার এবং এইচএএল স্ট্রাকট পদ্ধতির সাথে এক থেকে এক চিঠিপত্র রয়েছে।

এই ইন্টারফেস সংশোধন ছাড়াও, Android 8.0 কীমাস্টার 2-এর প্রত্যয়ন বৈশিষ্ট্যকে ID প্রত্যয়ন সমর্থন করার জন্য প্রসারিত করেছে। আইডি প্রত্যয়ন হার্ডওয়্যার শনাক্তকারীকে দৃঢ়ভাবে প্রমাণ করার জন্য একটি সীমিত এবং ঐচ্ছিক প্রক্রিয়া প্রদান করে, যেমন ডিভাইসের সিরিয়াল নম্বর, পণ্যের নাম এবং ফোন আইডি (IMEI বা MEID)। এই সংযোজন বাস্তবায়নের জন্য, Android 8.0 আইডি প্রত্যয়ন যোগ করতে ASN.1 প্রত্যয়ন স্কিমা পরিবর্তন করেছে। কীমাস্টার বাস্তবায়নের জন্য প্রাসঙ্গিক ডেটা আইটেমগুলি পুনরুদ্ধার করার জন্য কিছু নিরাপদ উপায় খুঁজে বের করতে হবে, সেইসাথে বৈশিষ্ট্যটিকে নিরাপদে এবং স্থায়ীভাবে অক্ষম করার জন্য একটি প্রক্রিয়া সংজ্ঞায়িত করতে হবে।

অ্যান্ড্রয়েড 9

অ্যান্ড্রয়েড 9-এ, আপডেটগুলি অন্তর্ভুক্ত:

  • Keymaster 4 এ আপডেট করুন
  • এমবেডেড সিকিউর এলিমেন্টের জন্য সমর্থন
  • নিরাপদ কী আমদানির জন্য সমর্থন
  • 3DES এনক্রিপশনের জন্য সমর্থন
  • ভার্সন বাইন্ডিং-এ পরিবর্তন যাতে boot.img এবং system.img স্বাধীন আপডেটের জন্য আলাদাভাবে সংস্করণ সেট করেছে

অ্যান্ড্রয়েড 10

অ্যান্ড্রয়েড 10 কীমাস্টার এইচএএল-এর 4.1 সংস্করণ চালু করেছে, যা যোগ করেছে:

  • ডিভাইসটি আনলক থাকা অবস্থায় শুধুমাত্র ব্যবহারযোগ্য কীগুলির জন্য সমর্থন
  • কীগুলির জন্য সমর্থন যা শুধুমাত্র প্রাথমিক বুট পর্যায়ে ব্যবহার করা যেতে পারে
  • হার্ডওয়্যার-মোড়ানো স্টোরেজ কীগুলির জন্য ঐচ্ছিক সমর্থন
  • স্ট্রংবক্সে ডিভাইস-অনন্য প্রত্যয়নের জন্য ঐচ্ছিক সমর্থন

অ্যান্ড্রয়েড 12

Android 12 নতুন KeyMint HAL প্রবর্তন করেছে, যা Keymaster HAL-কে প্রতিস্থাপন করে কিন্তু একই ধরনের কার্যকারিতা প্রদান করে। উপরের সমস্ত বৈশিষ্ট্যগুলি ছাড়াও, KeyMint HAL এও রয়েছে:

  • ECDH কী চুক্তির জন্য সমর্থন
  • ব্যবহারকারী-নির্দিষ্ট প্রমাণীকরণ কীগুলির জন্য সমর্থন
  • সীমিত সংখ্যক ব্যবহার সহ কীগুলির জন্য সমর্থন

অ্যান্ড্রয়েড 12-এ কীস্টোর সিস্টেম ডেমনের একটি নতুন সংস্করণও রয়েছে, যা মরিচায় পুনরায় লেখা এবং keystore2 নামে পরিচিত

অ্যান্ড্রয়েড 13

Android 13 KeyMint HAL-এর v2 যোগ করেছে, যা স্বাক্ষর এবং মূল চুক্তি উভয়ের জন্য Curve25519 সমর্থন যোগ করে।