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