मैं कुछ काम को कॉपी-प्रोटेक्ट करने की कोशिश कर रहा हूं, जो एआरएम डिवाइस (रास्पबेरी पाई) पर एक लिनक्स कर्नेल बूट करने वाला एक बूट करने योग्य एसडी कार्ड है। मैं इस दृष्टिकोण का उपयोग कर रहा हूं:
- एक एन्क्रिप्टेड रूट फाइल सिस्टम को माउंट करने के लिए दृष्टिकोण एक initrd का उपयोग करता है।
- Initrd एसडी कार्ड के सीआईडी के अनुसार फाइलसिस्टम का पासवर्ड उत्पन्न करता है। (हैश फ़ंक्शन का उपयोग किया जाता है, अभी तक md5 या sha1 पर निर्णय नहीं लिया है)। Initrd उस जनरेट किए गए पासवर्ड का उपयोग करके फ़ाइल सिस्टम को माउंट करने का प्रयास करेगा।
- अब यहाँ सबसे दिलचस्प / संदिग्ध हिस्सा है: initrd को कस्टम C फ़ंक्शन का उपयोग करके एन्क्रिप्ट किया गया है, मूल रूप से प्रत्येक बाइट XOR'ed है जो कस्टम मेड छद्म यादृच्छिक जनरेटर का उपयोग कर रहा है। कर्नेल को उसी एन्क्रिप्टिंग फ़ंक्शन के लिए संशोधित किया गया है, जो डिक्रिप्टर के रूप में काम करता है।
- सिस्टम खुद ही नीचे आ गया है इसलिए कीबोर्ड या बाहरी भंडारण का उपयोग करने का कोई तरीका नहीं है। एक एकल ऐप पूर्ण-स्क्रीन चलाता है।
इसलिए बूटलोडर कर्नेल और initrd को लोड करने के बाद, कर्नेल initrd को डिक्रिप्ट करता है और इसके init स्क्रिप्ट को निष्पादित करता है, जो पासवर्ड उत्पन्न करेगा और रूट फाइल सिस्टम को माउंट करेगा।
मेरा सवाल है: इस सेटअप को तोड़ना (रूट फाइलसिस्टम को डिक्रिप्ट करना और इसे किसी एसडी कार्ड से बूट करना कितना आसान होगा)? सबसे कमजोर हिस्से कौन से हैं? कर्नेल को विघटित करना और उन कस्टम एन्क्रिप्टिंग कार्यों को खोजना कितना आसान है?
संपादित करें: यहाँ कुछ सुधार हैं ताकि आप स्पष्ट चीजों के साथ समय बर्बाद न करें:
- रूट डिवाइस को एलयूकेएस (एईएस 256) के साथ एन्क्रिप्ट किया जाएगा और एसडी कार्ड के सीआईडी और कुछ नमक का उपयोग करके एचएमएसी फ़ंक्शन द्वारा कुंजी उत्पन्न की जाएगी।
- Initramfs एन्क्रिप्ट करने के लिए छद्म यादृच्छिक एल्गोरिदम वास्तव में RC4 होगा, बस कुछ कस्टम फ़ंक्शन का उपयोग करके कुंजी उत्पन्न की जाएगी, क्योंकि अगर मैं बस एक बाइट सरणी में स्टोर करता हूं तो इसे पुनः प्राप्त करने के लिए इसे मृत सरल बना देता है (हाँ, यह अस्पष्टता के माध्यम से सुरक्षा है। लेकिन वहाँ कोई रास्ता नहीं लगता है)।
- मैं समझता हूं कि अगर एसडी कार्ड एमुलेटर का उपयोग करते हुए कोई व्यक्ति इस प्रणाली की प्रतिलिपि बना सकता है, लेकिन यह मेरे साथ ठीक है, क्योंकि इसकी बहुत मुश्किल है और कोई भी ऐसा नहीं कर सकता है। (यह भी कि कोई भी एमुलेटर से निपटना नहीं चाहेगा)