সংস্করণ বাঁধাই

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

KeyMint কীগুলি ডিভাইসের অপারেটিং সিস্টেম সংস্করণ এবং প্যাচ স্তরের সাথেও আবদ্ধ হতে হবে ৷ Treble এর মডুলার গঠন সমর্থন করার জন্য, এই সংস্করণ বাঁধাই প্রতিটি পার্টিশনের জন্য পৃথক প্যাচ স্তর অন্তর্ভুক্ত ( boot , system , এবং vendor )। এটি প্রতিটি পার্টিশনকে স্বাধীনভাবে আপডেট করার অনুমতি দেয়, এখনও রোলব্যাক সুরক্ষা প্রদান করে।

এই সংস্করণ বাইন্ডিং কার্যকর করার জন্য, KeyMint বিশ্বস্ত অ্যাপ (TA) এর বর্তমান OS সংস্করণ এবং প্যাচ স্তরগুলি নিরাপদে গ্রহণ করার জন্য একটি উপায় প্রয়োজন এবং এটি যে তথ্য প্রাপ্ত তথ্যটি চলমান সিস্টেম সম্পর্কে সমস্ত তথ্যের সাথে মেলে তা নিশ্চিত করার জন্য।

  • Android ভেরিফাইড বুট (AVB) সহ ডিভাইসগুলি:
    • প্যাচ লেভেল এবং OS সংস্করণ vbmeta.imgঅন্তর্ভুক্ত করা যেতে পারে , তাই বুটলোডার কীমিন্টে সেগুলি সরবরাহ করতে পারে।
    • চেইনড পার্টিশনের জন্য, পার্টিশনের সংস্করণের তথ্য চেইন করা VBMeta-এ রয়েছে।
    • সাধারণভাবে, সংস্করণ তথ্য VBMeta struct থাকা উচিত যাতে একটি প্রদত্ত পার্টিশনের জন্য যাচাইকরণ ডেটা (হ্যাশ বা হ্যাশট্রি) থাকে।
  • AVB ছাড়া ডিভাইস:
    • যাচাইকৃত বুট বাস্তবায়নের জন্য বুটলোডারকে সংস্করণ মেটাডেটার একটি হ্যাশ প্রদান করতে হবে, যাতে বুটলোডার KeyMint-এ হ্যাশ প্রদান করতে পারে।
    • boot.img হেডারে প্যাচ স্তর সংরক্ষণ করা চালিয়ে যেতে পারে।
    • system.img শুধুমাত্র পঠনযোগ্য বৈশিষ্ট্যে প্যাচ স্তর এবং OS সংস্করণ সংরক্ষণ করা চালিয়ে যেতে পারে।
    • vendor.img প্যাচ স্তরটিকে শুধুমাত্র-পঠনযোগ্য বৈশিষ্ট্যে সংরক্ষণ করে ro.vendor.build.version.security_patch .
    • বুটলোডার কিমিন্টে যাচাইকৃত বুট দ্বারা যাচাইকৃত সমস্ত ডেটার একটি হ্যাশ প্রদান করতে পারে।

নিম্নলিখিত ট্যাগগুলি প্রাসঙ্গিক পার্টিশনের সংস্করণ তথ্য বর্ণনা করে:

KeyMint বাস্তবায়নের সমস্ত প্যাচ স্তর স্বাধীনভাবে আচরণ করা উচিত। সমস্ত সংস্করণের তথ্য একটি কী-এর সাথে সম্পর্কিত মানগুলির সাথে মিলে গেলে কীগুলি ব্যবহারযোগ্য৷ যদি বর্তমান ডিভাইস সংস্করণটি একটি কী-এর সাথে সম্পর্কিত যেকোন মানের চেয়ে সাম্প্রতিকতম হয়, তাহলে KeyMint কী ব্যবহার করার যেকোনো প্রচেষ্টায় KEY_REQUIRES_UPGRADE ত্রুটি প্রদান করে। কীস্টোর তারপরে IKeyMintDevice::upgradeKey() একটি নতুন কীব্লব তৈরি করে যা বর্তমান প্যাচ স্তরের সাথে আবদ্ধ থাকে (এবং কীস্টোর পরবর্তীতে IKeyMintDevice::deleteKey() তে একটি কল দিয়ে পূর্ববর্তী কীব্লব মুছে দেয়)।