ডিভাইস আইডেন্টিফায়ার কম্পোজিশন ইঞ্জিন (DICE) হল একটি বিশ্বস্ত কম্পিউটিং গ্রুপ স্পেসিফিকেশন যা Android এ গৃহীত হয়েছে। DICE বুট করার সময় লোড হওয়া ফার্মওয়্যারের দূরবর্তীভাবে যাচাইযোগ্য পরিমাপের সাথে একটি ডিভাইসের জন্য একটি অপরিবর্তনীয় ক্রিপ্টোগ্রাফিক পরিচয় তৈরি করা। এই প্রক্রিয়াটি অতিরিক্তভাবে লোড করা ফার্মওয়্যারের প্রতিটি অংশের জন্য ক্রিপ্টোগ্রাফিক পরিচয় তৈরি করে। এই পরিচয়গুলি সম্পূর্ণরূপে ভিত্তি পরিচয়ের উপর নির্ভরশীল এবং একটি প্রদত্ত বুটের সময় লোড হওয়া প্রতিটি ফার্মওয়্যার ইমেজ।
DICE শুরু হয় যখন চিপসেটের জন্য ROM অপরিবর্তনীয় ডেটার একটি ব্যাঙ্ক থেকে একটি অনন্য ডিভাইস সিক্রেট (UDS) লোড করে, সাধারণত ফিউজ, যা চিপ উত্পাদন প্রক্রিয়ার সময় একটি ক্রিপ্টোগ্রাফিকভাবে এলোমেলো মান সহ সুরক্ষিতভাবে সরবরাহ করা হয়েছিল। যখন রম এই গোপনীয়তাটি পড়ে, তখন এটি একটি ল্যাচের মতো কিছু বিক্রেতা নির্ভর হার্ডওয়্যার লকিং প্রক্রিয়া ব্যবহার করে ইউডিএস-এ আর কোনও অ্যাক্সেস বন্ধ করে দেয়। পরবর্তী বুট প্রক্রিয়া না হওয়া পর্যন্ত UDS-এ অ্যাক্সেস পুনরুদ্ধার করা হয় না।
ROM একটি কী ডেরিভেশন ফাংশনে (KDF) ইনপুট হিসাবে ইউডিএস ব্যবহার করে স্থায়ী অ্যাসিমেট্রিক কী জোড়া তৈরি করতে যা নির্দিষ্ট ডিভাইসটিকে সনাক্ত করে। ROM লোড করে এবং বুট সিকোয়েন্সে ফার্মওয়্যারের পরবর্তী পর্যায় পরিমাপ করে, নির্দিষ্ট বুটের পরিবেশ সম্পর্কে অতিরিক্ত মেটাডেটা নির্দিষ্ট করে, যেমন নিরাপদ বুট সক্ষম করা থাকলে। ROM একটি KDF দিয়ে পরিমাপ, কনফিগারেশন এবং UDS প্রক্রিয়া করে পরবর্তী ধাপে লোড করার জন্য গোপনীয়তা বের করে। এই গোপনীয়তাটিকে যৌগিক ডিভাইস শনাক্তকারী (CDI) বলা হয়।
প্রক্রিয়া তারপর পুনরাবৃত্তি। সিডিআই পরবর্তী পর্যায়ের ইউডিএস হিসেবে কাজ করে, সেই পর্যায়টি একটি কী-পেয়ার তৈরি করে, এবং সিডিআই একটি কেডিএফ-এ ইনপুট করা হয় এবং পরবর্তী ইমেজের হ্যাশের সাথে আরেকটি প্রাপ্ত সিডিআই মান তৈরি করতে লোড করা হয়।
লোড করা ফার্মওয়্যার CBOR অবজেক্ট সাইনিং এবং এনক্রিপশন (COSE) Sign1 সার্টিফিকেট সাইন করার জন্য তৈরি করা কী-পেয়ার ব্যবহার করে। প্রতিটি পর্যায় লোড করার জন্য পরবর্তী পর্যায়ে একটি শংসাপত্র স্বাক্ষর করে। এই শংসাপত্রে সেই পর্যায়ের পরিমাপ, বুট যে মোডে আছে, সেই পর্যায়ের জন্য CDI পাবলিক কী, এবং অন্যান্য সম্পর্কিত মেটাডেটার মতো তথ্য অন্তর্ভুক্ত রয়েছে।
চিত্র 1. সরলীকৃত ডাইস ডেরিভেশন প্রক্রিয়া।
এই প্রক্রিয়াটি নিশ্চিত করতে সাহায্য করে যে একটি লোড করা ফার্মওয়্যার চিত্রের যেকোনো পরিবর্তন তার নিজস্ব CDI মান এবং পরবর্তী সমস্ত ধাপের CDI মান উভয়ই পরিবর্তন করে। এর মানে হল যে লোড করা ফার্মওয়্যারের প্রতিটি সংমিশ্রণ অনন্য পরিচয় এবং সংশ্লিষ্ট কী তৈরি করে। আরও, স্বাক্ষরটি এমনভাবে করা হয় যে এটি গ্যারান্টি দেয় যে প্রতিটি পর্যায় পূর্ববর্তী পর্যায় দ্বারা পরিমাপ এবং প্রত্যয়িত হয়েছে, যে কোনও পর্যায়কে তার নিজস্ব শংসাপত্র জাল করে পরিমাপ এড়ানো থেকে বাধা দেয়। এর মানে হল যে যতক্ষণ রম আপস না করা হয়, ততক্ষণ ডিভাইসের নিরাপত্তা ভঙ্গি প্যাচ করা যায় এবং দূর থেকে ডিভাইসের বাইরে যাচাই করা যায়।