ফিচার

এই পৃষ্ঠাটিতে Android কীস্টোরের ক্রিপ্টোগ্রাফিক বৈশিষ্ট্যগুলি সম্পর্কে তথ্য রয়েছে, যা অন্তর্নিহিত কীমিন্ট (বা কীমাস্টার) বাস্তবায়ন দ্বারা সরবরাহ করা হয়েছে৷

ক্রিপ্টোগ্রাফিক আদিম

কীস্টোর নিম্নলিখিত বিভাগগুলির অপারেশন সরবরাহ করে:

  • কী তৈরি করা, যার ফলে ব্যক্তিগত বা গোপন কী উপাদান যা শুধুমাত্র নিরাপদ পরিবেশে অ্যাক্সেসযোগ্য। ক্লায়েন্টরা নিম্নলিখিত উপায়ে কী তৈরি করতে পারে:
    • তাজা কী প্রজন্ম
    • এনক্রিপ্ট করা কী উপাদান আমদানি
    • এনক্রিপ্ট করা কী উপাদান আমদানি
  • কী প্রত্যয়ন: অসমমিত কী তৈরি একটি শংসাপত্র তৈরি করে যা কী-পেয়ারের সর্বজনীন কী অংশ ধারণ করে। এই শংসাপত্রটি ঐচ্ছিকভাবে কীটির জন্য মেটাডেটা এবং ডিভাইসের অবস্থা সম্পর্কেও তথ্য ধারণ করে, যা একটি বিশ্বস্ত রুটে ফিরে একটি কী চেইন দ্বারা স্বাক্ষরিত।
  • ক্রিপ্টোগ্রাফিক অপারেশন:
    • সিমেট্রিক এনক্রিপশন এবং ডিক্রিপশন (AES, 3DES)
    • অ্যাসিমেট্রিক ডিক্রিপশন (RSA)
    • অ্যাসিমেট্রিক সাইনিং (ECDSA, RSA)
    • সিমেট্রিক সাইনিং এবং ভেরিফিকেশন (HMAC)
    • অ্যাসিমেট্রিক কী চুক্তি (ECDH)

মনে রাখবেন কীস্টোর এবং কীমিন্ট অপ্রতিসম কীগুলির জন্য সর্বজনীন কী অপারেশন পরিচালনা করে না।

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

আদিম এবং মোড যা KeyMint বাস্তবায়ন দ্বারা সমর্থিত হওয়া আবশ্যক IKeyMintDevice HAL ইন্টারফেস স্পেসিফিকেশনে বর্ণনা করা হয়েছে।

অন্তর্নিহিত কীমিন্ট বাস্তবায়নকে অবশ্যই র্যান্ডম সংখ্যা তৈরি করতে হবে যাতে কী জেনারেশন এবং র্যান্ডমাইজড প্যাডিং বা ইনিশিয়ালাইজেশন ভেক্টর (IVs) তৈরি করতে সহায়তা করে। এটি সমর্থন করার জন্য, অ্যান্ড্রয়েড সিস্টেম পর্যায়ক্রমে কীমিন্ট বাস্তবায়নে অতিরিক্ত এনট্রপি সরবরাহ করে।

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

হার্ডওয়্যার-ভিত্তিক কীগুলি যেগুলি ডিভাইস থেকে কখনও বের করা যায় না সেগুলি খুব বেশি নিরাপত্তা প্রদান করে না যদি আক্রমণকারী সেগুলিকে ইচ্ছামতো ব্যবহার করতে পারে (যদিও তারা বহিষ্কৃত করা যেতে পারে এমন কীগুলির চেয়ে বেশি নিরাপদ)। সুতরাং, এটি অত্যন্ত গুরুত্বপূর্ণ যে কীস্টোর অ্যাক্সেস নিয়ন্ত্রণগুলি প্রয়োগ করে৷

অ্যাক্সেস নিয়ন্ত্রণগুলিকে ট্যাগ/মান জোড়াগুলির একটি "অনুমোদন তালিকা" হিসাবে সংজ্ঞায়িত করা হয়৷ অনুমোদন ট্যাগগুলি হল 32-বিট পূর্ণসংখ্যা এবং মানগুলি বিভিন্ন ধরণের। কিছু ট্যাগ একাধিক মান নির্দিষ্ট করতে পুনরাবৃত্তি করা যেতে পারে. একটি ট্যাগ পুনরাবৃত্তি করা যাবে কিনা তা KeyMint (পূর্বে কীমাস্টার) HAL ইন্টারফেসে নির্দিষ্ট করা আছে।

সমর্থিত ট্যাগ মানগুলি Tag.aidl ফাইলে সংজ্ঞায়িত করা হয়েছে, এবং প্রতিটি একটি TagType এর সাথে যুক্ত যা সংশ্লিষ্ট মানের প্রকার (উদাহরণস্বরূপ, পূর্ণসংখ্যা বা বাইট) নির্দেশ করে এবং একাধিক সমর্থিত মান নির্দিষ্ট করার জন্য এটি পুনরাবৃত্তি করা যেতে পারে কিনা।

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

হার্ডওয়্যার বনাম সফ্টওয়্যার প্রয়োগ

সমস্ত সুরক্ষিত হার্ডওয়্যার বাস্তবায়নে একই বৈশিষ্ট্য থাকে না। বিভিন্ন পন্থা সমর্থন করার জন্য, KeyMint যথাক্রমে সুরক্ষিত এবং অরক্ষিত অ্যাক্সেস নিয়ন্ত্রণ প্রয়োগ বা হার্ডওয়্যার এবং সফ্টওয়্যার প্রয়োগের মধ্যে পার্থক্য করে।

এটি KeyMint API-এ KeyCharacteristics প্রকারের securityLevel ক্ষেত্রের সাথে প্রকাশ করা হয়েছে। সুরক্ষিত হার্ডওয়্যারটি কী প্রয়োগ করতে পারে তার উপর ভিত্তি করে যথাযথ নিরাপত্তা স্তরের সাথে KeyCharacteristics অনুমোদন স্থাপনের জন্য দায়ী। এই তথ্যটি অপ্রতিসম কীগুলির জন্য প্রত্যয়ন রেকর্ডগুলিতেও প্রকাশ করা হয়েছে: SecurityLevel::TRUSTED_ENVIRONMENT বা SecurityLevel::STRONGBOX জন্য প্রধান বৈশিষ্ট্যগুলি hardwareEnforced তালিকায় উপস্থিত হয় এবং SecurityLevel::SOFTWARE বা SecurityLevel::KEYSTORE এর বৈশিষ্ট্যগুলি softwareEnforced তালিকায় উপস্থিত হয়৷

উদাহরণস্বরূপ, তারিখ এবং সময়ের ব্যবধানে সীমাবদ্ধতাগুলি যখন একটি কী ব্যবহার করা যেতে পারে তা সাধারণত সুরক্ষিত পরিবেশ দ্বারা প্রয়োগ করা হয় না, কারণ এটির তারিখ এবং সময় তথ্যে বিশ্বাসযোগ্য অ্যাক্সেস নেই৷ ফলস্বরূপ, Tag::ORIGINATION_EXPIRE_DATETIME এর মতো অনুমোদনগুলি Android-এ কীস্টোর দ্বারা প্রয়োগ করা হয় এবং SecurityLevel::KEYSTORE থাকবে।

কী এবং তাদের অনুমোদন হার্ডওয়্যার সমর্থিত কিনা তা নির্ধারণ সম্পর্কে আরও তথ্যের জন্য, কী প্রত্যয়ন দেখুন।

ক্রিপ্টোগ্রাফিক বার্তা নির্মাণ অনুমোদন

নিম্নলিখিত ট্যাগগুলি সংশ্লিষ্ট কী ব্যবহার করে অপারেশনগুলির ক্রিপ্টোগ্রাফিক বৈশিষ্ট্যগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়:

  • Tag::ALGORITHM
  • Tag::KEY_SIZE
  • Tag::BLOCK_MODE
  • Tag::PADDING
  • Tag::CALLER_NONCE
  • Tag::DIGEST
  • Tag::MGF_DIGEST

নিম্নলিখিত ট্যাগগুলি পুনরাবৃত্তিযোগ্য, যার অর্থ একাধিক মান একটি একক কী এর সাথে যুক্ত হতে পারে:

  • Tag::BLOCK_MODE
  • Tag::PADDING
  • Tag::DIGEST
  • Tag::MGF_DIGEST

ব্যবহার করা মান অপারেশন সময় নির্দিষ্ট করা হয়.

উদ্দেশ্য

কীগুলির উদ্দেশ্যগুলির একটি সংযুক্ত সেট রয়েছে, Tag::PURPOSE ট্যাগের সাথে এক বা একাধিক অনুমোদন এন্ট্রি হিসাবে প্রকাশ করা হয়, যা সেগুলি কীভাবে ব্যবহার করা যেতে পারে তা সংজ্ঞায়িত করে। উদ্দেশ্যগুলি KeyPurpose.aidl এ সংজ্ঞায়িত করা হয়েছে।

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

কী আমদানি

KeyMint এর আমদানি সমর্থন করে:

  • DER-এনকোডেড PKCS#8 ফর্ম্যাটে অসমম্যাট্রিক কী জোড়া (পাসওয়ার্ড-ভিত্তিক এনক্রিপশন ছাড়া)
  • কাঁচা বাইট হিসাবে সিমেট্রিক কী

নিরাপদে তৈরি করা কী থেকে আমদানি করা কীগুলিকে আলাদা করা যায় তা নিশ্চিত করতে, Tag::ORIGIN উপযুক্ত কী অনুমোদনের তালিকায় অন্তর্ভুক্ত করা হয়েছে। উদাহরণস্বরূপ, যদি সুরক্ষিত হার্ডওয়্যারে একটি কী তৈরি করা হয়, Tag::ORIGIN মান সহ KeyOrigin::GENERATED কী বৈশিষ্ট্যগুলির hw_enforced তালিকায় পাওয়া যায়, যখন নিরাপদ হার্ডওয়্যারে আমদানি করা একটি কীটির মান KeyOrigin::IMPORTED আছে।

ব্যবহারকারীর প্রমাণীকরণ

নিরাপদ কীমিন্ট বাস্তবায়ন ব্যবহারকারীর প্রমাণীকরণ বাস্তবায়ন করে না, তবে অন্যান্য বিশ্বস্ত অ্যাপগুলির উপর নির্ভর করে যা করে। এই অ্যাপগুলি যে ইন্টারফেসটি প্রয়োগ করে তার জন্য, গেটকিপার পৃষ্ঠাটি দেখুন।

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

  • Tag::USER_SECURE_ID একটি 64-বিট সাংখ্যিক মান রয়েছে যা সুরক্ষিত ব্যবহারকারী আইডি নির্দিষ্ট করে যা কীটির ব্যবহার আনলক করতে একটি সুরক্ষিত প্রমাণীকরণ টোকেনে দেওয়া হয়। যদি পুনরাবৃত্তি করা হয়, তাহলে কীটি ব্যবহার করা যেতে পারে যদি একটি সুরক্ষিত প্রমাণীকরণ টোকেনে যে কোনো মান প্রদান করা হয়।

দ্বিতীয় সেটটি নির্দেশ করে যে ব্যবহারকারীকে কখন প্রমাণীকরণ করতে হবে। যদি এই ট্যাগগুলির একটিও উপস্থিত না থাকে, কিন্তু Tag::USER_SECURE_ID হয়, কীটির প্রতিটি ব্যবহারের জন্য প্রমাণীকরণ প্রয়োজন৷

  • Tag::NO_AUTHENTICATION_REQUIRED নির্দেশ করে যে কোনও ব্যবহারকারীর প্রমাণীকরণের প্রয়োজন নেই, যদিও কীটির অ্যাক্সেস এখনও মালিকানাধীন অ্যাপে সীমাবদ্ধ (এবং এটি যে কোনও অ্যাপকে অ্যাক্সেস দেয়)।
  • Tag::AUTH_TIMEOUT হল একটি সাংখ্যিক মান যা সেকেন্ডে নির্দিষ্ট করে, কী ব্যবহার অনুমোদন করার জন্য ব্যবহারকারীর প্রমাণীকরণ কতটা তাজা হতে হবে। টাইমআউট রিবুট অতিক্রম করে না; রিবুট করার পরে, সমস্ত প্রমাণীকরণ বাতিল করা হয়। বুট প্রতি একবার প্রমাণীকরণের প্রয়োজন হয় তা নির্দেশ করার জন্য টাইমআউট একটি বড় মান সেট করা যেতে পারে (2^32 সেকেন্ড হল ~136 বছর; সম্ভবত Android ডিভাইসগুলি তার থেকে বেশিবার রিবুট করা হয়)।

একটি আনলক ডিভাইস প্রয়োজন

Tag::UNLOCKED_DEVICE_REQUIRED শুধুমাত্র ডিভাইসটি আনলক থাকা অবস্থায় ব্যবহারযোগ্য। বিশদ শব্দার্থবিদ্যার জন্য, KeyProtection.Builder#setUnlockedDeviceRequired(boolean) দেখুন।

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

এটি অর্জন করার জন্য, কীস্টোর সমস্ত UNLOCKED_DEVICE_REQUIRED কীগুলিকে তার ডাটাবেসে সংরক্ষণ করার আগে "সুপারএনক্রিপ্ট" করে এবং যখন সম্ভব এটি সুপারএনক্রিপশন কীগুলি (সুপার কীগুলি) সুরক্ষিত করে যখন ডিভাইসটি এমনভাবে লক থাকে যাতে সেগুলি শুধুমাত্র একটি সফল ডিভাইস আনলকের মাধ্যমে পুনরুদ্ধার করা যায়৷ ("সুপারএনক্রিপশন" শব্দটি ব্যবহার করা হয় কারণ এনক্রিপশনের এই স্তরটি এনক্রিপশনের স্তর ছাড়াও প্রয়োগ করা হয় যা KeyMint ইতিমধ্যেই সমস্ত কীগুলিতে প্রযোজ্য।)

প্রতিটি ব্যবহারকারীর (প্রোফাইল সহ) UNLOCKED_DEVICE_REQUIRED এর সাথে যুক্ত দুটি সুপার কী রয়েছে:

  • UnlockedDevice প্রয়োজনীয় সিমেট্রিক সুপার কী। এটি একটি AES-256-GCM কী। এটি UNLOCKED_DEVICE_REQUIRED কীগুলিকে এনক্রিপ্ট করে যা ব্যবহারকারীর জন্য ডিভাইসটি আনলক করার সময় আমদানি বা তৈরি করা হয়৷
  • UnlockedDevice-এর প্রয়োজনীয় অপ্রতিসম সুপার কী। এটি একটি ECDH P-521 কী জোড়া৷ এটি UNLOCKED_DEVICE_REQUIRED কীগুলিকে এনক্রিপ্ট করে যা ব্যবহারকারীর জন্য ডিভাইসটি লক থাকা অবস্থায় আমদানি বা তৈরি করা হয়৷ এই অ্যাসিমেট্রিক কী দিয়ে এনক্রিপ্ট করা কীগুলিকে প্রথম ব্যবহারে সিমেট্রিক কী দিয়ে পুনরায় এনক্রিপ্ট করা হয় (যা শুধুমাত্র ডিভাইসটি আনলক থাকা অবস্থায় ঘটতে পারে)।

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

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

  • যদি ব্যবহারকারীর শুধুমাত্র পিন, প্যাটার্ন বা পাসওয়ার্ড সক্রিয় থাকে, তাহলে কীস্টোর তার ক্যাশে করা সুপার কীগুলির গোপন অংশগুলিকে শূন্য করে দেয়। এটি ডাটাবেসের এনক্রিপ্ট করা অনুলিপির মাধ্যমে সুপার কীগুলিকে পুনরুদ্ধারযোগ্য করে তোলে যা শুধুমাত্র পিন, প্যাটার্ন বা পাসওয়ার্ডের সমতুল্য দ্বারা ডিক্রিপ্ট করা যায়।
  • যদি ব্যবহারকারীর শুধুমাত্র ক্লাস 3 ("স্ট্রং") বায়োমেট্রিক্স এবং পিন, প্যাটার্ন বা পাসওয়ার্ড সক্রিয় থাকে, তাহলে কিস্টোর পিন, প্যাটার্ন বা পাসওয়ার্ডের সমতুল্য বিকল্প হিসাবে ব্যবহারকারীর নথিভুক্ত ক্লাস 3 বায়োমেট্রিক্স (সাধারণত ফিঙ্গারপ্রিন্ট) যেকোনও দ্বারা সুপার কীগুলি পুনরুদ্ধারযোগ্য করার ব্যবস্থা করে। এটি করার জন্য, এটি একটি নতুন AES-256-GCM কী তৈরি করে, এটির সাহায্যে সুপার কীগুলির গোপন অংশগুলিকে এনক্রিপ্ট করে, AES-256-GCM কীটিকে একটি বায়োমেট্রিক-বাউন্ড কী হিসাবে KeyMint-এ আমদানি করে যেটির জন্য বায়োমেট্রিক প্রমাণীকরণের প্রয়োজন হয় এবং শেষ 15-এর মধ্যে এই সমস্ত কো-টেক্সট-এর মধ্যে সফল হতে পারে। কী
  • ব্যবহারকারীর যদি ক্লাস 1 ("সুবিধা") বায়োমেট্রিক, ক্লাস 2 ("দুর্বল") বায়োমেট্রিক, বা সক্রিয় আনলক ট্রাস্ট এজেন্ট সক্রিয় থাকে, তাহলে কীস্টোর সুপার কীগুলি প্লেইনটেক্সট ক্যাশে রাখে৷ এই ক্ষেত্রে, UNLOCKED_DEVICE_REQUIRED কীগুলির জন্য ক্রিপ্টোগ্রাফিক নিরাপত্তা প্রদান করা হয় না৷ ব্যবহারকারীরা এই আনলক পদ্ধতিগুলি সক্রিয় না করে এই কম নিরাপদ ফলব্যাক এড়াতে পারে৷ এই বিভাগগুলির মধ্যে সবচেয়ে সাধারণ আনলক পদ্ধতিগুলি হল অনেকগুলি ডিভাইসে ফেস আনলক এবং একটি জোড়া স্মার্টওয়াচ দিয়ে আনলক করা৷

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

ক্লায়েন্ট বাঁধাই

ক্লায়েন্ট বাইন্ডিং, একটি নির্দিষ্ট ক্লায়েন্ট অ্যাপের সাথে একটি কী-এর অ্যাসোসিয়েশন একটি ঐচ্ছিক ক্লায়েন্ট আইডি এবং কিছু ঐচ্ছিক ক্লায়েন্ট ডেটা (যথাক্রমে Tag::APPLICATION_ID এবং Tag::APPLICATION_DATA ) এর মাধ্যমে করা হয়। কীস্টোর এই মানগুলিকে অস্বচ্ছ ব্লব হিসাবে বিবেচনা করে, শুধুমাত্র নিশ্চিত করে যে কী জেনারেশন/ইমপোর্টের সময় উপস্থাপিত একই ব্লবগুলি প্রতিটি ব্যবহারের জন্য উপস্থাপিত হয় এবং বাইট-ফর-বাইট অভিন্ন। ক্লায়েন্ট বাইন্ডিং ডেটা KeyMint দ্বারা ফেরত দেওয়া হয় না। চাবিটি ব্যবহার করার জন্য কলকারীকে এটি জানতে হবে।

এই বৈশিষ্ট্যটি অ্যাপের সংস্পর্শে আসে না।

মেয়াদ শেষ

কীস্টোর তারিখ অনুসারে কী ব্যবহার সীমাবদ্ধ করা সমর্থন করে। বৈধতার মূল সূচনা এবং কী মেয়াদ শেষ হওয়াগুলি একটি কী-এর সাথে যুক্ত হতে পারে এবং বর্তমান তারিখ/সময় বৈধ সীমার বাইরে থাকলে কীস্টোর কী ক্রিয়াকলাপগুলি সম্পাদন করতে অস্বীকার করে। মূল বৈধতা পরিসর Tag::ACTIVE_DATETIME , Tag::ORIGINATION_EXPIRE_DATETIME , এবং Tag::USAGE_EXPIRE_DATETIME ট্যাগগুলির সাথে নির্দিষ্ট করা হয়েছে। "উৎপত্তি" এবং "ব্যবহার" এর মধ্যে পার্থক্য একটি নতুন সাইফারটেক্সট/স্বাক্ষর/ইত্যাদি "উৎপত্তি" করতে বা বিদ্যমান সাইফারটেক্সট/স্বাক্ষর/ইত্যাদি "ব্যবহার" করতে ব্যবহার করা হচ্ছে কিনা তার উপর ভিত্তি করে। মনে রাখবেন যে এই পার্থক্যটি অ্যাপগুলিতে প্রকাশ করা হয় না।

Tag::ACTIVE_DATETIME , Tag::ORIGINATION_EXPIRE_DATETIME , এবং Tag::USAGE_EXPIRE_DATETIME ট্যাগগুলি ঐচ্ছিক৷ যদি ট্যাগগুলি অনুপস্থিত থাকে তবে ধারণা করা হয় যে প্রশ্নে থাকা কীটি সর্বদা বার্তাগুলিকে ডিক্রিপ্ট/যাচাই করতে ব্যবহার করা যেতে পারে।

যেহেতু প্রাচীর-ঘড়ির সময় অ-সুরক্ষিত বিশ্ব দ্বারা সরবরাহ করা হয়, মেয়াদোত্তীর্ণ-সম্পর্কিত ট্যাগগুলি সফ্টওয়্যার-প্রবর্তিত তালিকায় রয়েছে৷

বিশ্বাস বাঁধাই মূল

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

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

এলোমেলো সংখ্যা জেনারেটর পুনরায় বীজ বপন

যেহেতু সুরক্ষিত হার্ডওয়্যার মূল উপাদান এবং ইনিশিয়ালাইজেশন ভেক্টর (IVs) এর জন্য এলোমেলো সংখ্যা তৈরি করে এবং যেহেতু হার্ডওয়্যার র্যান্ডম নম্বর জেনারেটরগুলি সর্বদা সম্পূর্ণ বিশ্বস্ত নাও হতে পারে, KeyMint HAL কিস্টোরকে অতিরিক্ত এনট্রপি প্রদান করার জন্য একটি ইন্টারফেস প্রদান করে, যা উৎপন্ন র্যান্ডম সংখ্যার সাথে মিশ্রিত হয়।

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