लिनक्स डिस्क लोडर पूर्ण डिस्क एन्क्रिप्शन का समर्थन करते हैं?


28

क्या कोई लिनक्स बूट लोडर पूर्ण डिस्क एन्क्रिप्शन (एक ला ट्रूक्रिप्ट ) का समर्थन कर रहा है । मुझे पता है कि GRUB2 में एन्क्रिप्शन समर्थन जोड़ने की दिशा में काम किया गया था, लेकिन यह अभी तक तैयार नहीं हुआ है। कोई अन्य विकल्प?

(ध्यान दें कि मैं वास्तव में यहाँ पूर्ण डिस्क एन्क्रिप्शन का उल्लेख कर रहा हूँ-सहित /boot)

अधिकांश जवाब एक सेटअप का वर्णन करते हैं जहां /bootएन्क्रिप्ट नहीं किया गया है, और उनमें से कुछ यह समझाने की कोशिश करते हैं कि एक अनएन्क्रिप्टेड /bootओके क्यों होना चाहिए।

इस बात पर चर्चा किए बिना कि मुझे वास्तव में एन्क्रिप्टेड होने के लिए / बूट की आवश्यकता क्यों है, यहां एक आलेख है जिसमें GRUB2 के संशोधित संस्करण के आधार पर वास्तव में मुझे क्या चाहिए, इसका वर्णन किया गया है:

इसके साथ समस्या यह है कि इन संशोधनों को वर्तमान GRUB2 कोडबेस (या शायद मैं कुछ अनदेखी कर रहा हूं) में समर्थित नहीं हैं।


हाँ, यहाँ एक उत्कृष्ट हाउटो
ebal

जवाबों:


20

मुझे लगता है कि GRUB2 के वर्तमान संस्करण में LUKS विभाजन को स्वयं लोड करने और डिक्रिप्ट करने के लिए समर्थन नहीं है (इसमें कुछ सिफर हैं लेकिन मुझे लगता है कि वे केवल इसके पासवर्ड समर्थन के लिए उपयोग किए जाते हैं)। मैं प्रायोगिक विकास शाखा की जाँच नहीं कर सकता, लेकिन GRUB पेज में कुछ संकेत हैं कि आप जो करना चाहते हैं उसे लागू करने के लिए कुछ काम की योजना है।

अपडेट (2015) : GRUB2 (2.00) के नवीनतम संस्करण में पहले से ही एलयूकेएस और जीईएलआई एन्क्रिप्टेड विभाजन तक पहुंचने के लिए कोड शामिल है। (Xercestch.com लिंक ओपी ने बशर्ते उसके लिए पहले पैच का उल्लेख किया है, लेकिन वे अब नवीनतम रिलीज़ में एकीकृत हैं)।

हालाँकि, यदि आप सुरक्षा कारणों से पूरी डिस्क को एन्क्रिप्ट करने का प्रयास कर रहे हैं, तो कृपया ध्यान दें कि एक अनएन्क्रिप्टेड बूट लोडर (जैसे ट्रू क्रिप्ट, बिटलॉकर या एक संशोधित GRUB) एक अनएन्क्रिप्टेड /bootपार्टीशन से अधिक सुरक्षा प्रदान नहीं करता है (जैसा कि ऊपर टिप्पणी में जेवी द्वारा उल्लेख किया गया है) । कंप्यूटर पर भौतिक पहुंच वाला कोई भी व्यक्ति आसानी से कस्टम संस्करण के साथ इसे बदल सकता है। यह भी लेख में उल्लेख किया है xercestech.com पर आप जुड़े:

स्पष्ट होने के लिए, यह किसी भी तरह से आपके सिस्टम को ऑफ़लाइन हमले के लिए कमजोर नहीं बनाता है, अगर कोई हमलावर आपके बूटलोडर को अपने स्वयं के साथ बदलने के लिए था, या अपने स्वयं के कोड को बूट करने के लिए बूट प्रक्रिया को रीडायरेक्ट करता है, तो भी आपके सिस्टम से समझौता किया जा सकता है।

ध्यान दें कि पूर्ण डिस्क एन्क्रिप्शन के लिए सभी सॉफ़्टवेयर-आधारित उत्पादों में यह कमजोरी है, चाहे वे अनएन्क्रिप्टेड बूट लोडर या अनएन्क्रिप्टेड बूट / प्रीबूट विभाजन का उपयोग करें। यहां तक ​​कि टीपीएम (ट्रस्टेड प्लेटफॉर्म मॉड्यूल) चिप्स के लिए सपोर्ट वाले प्रोडक्ट्स, जैसे कि BitLocker, को हार्डवेयर को संशोधित किए बिना रूट किया जा सकता है।

एक बेहतर तरीका यह होगा:

  1. BIOS स्तर पर डिक्रिप्ट (मदरबोर्ड या डिस्क एडॉप्टर या बाहरी हार्डवेयर [स्मार्टकार्ड], टीपीएम चिप के साथ या उसके बिना), या
  2. /bootहटाने योग्य डिवाइस (जैसे स्मार्टकार्ड या यूएसबी स्टिक) में PBA (प्रीबूट ऑथराइजेशन) कोड ( इस मामले में विभाजन) को ले जाएं।

इसे दूसरे तरीके से करने के लिए, आप लिनक्स फुल डिस्क एनक्रिप्शन (LFDE) प्रोजेक्ट पर देख सकते हैं: http://lfde.org/ जो /bootकिसी बाहरी USB ड्राइव में पार्टीशन को स्थानांतरित करने के लिए पोस्ट-इंस्टाल स्क्रिप्ट प्रदान करता है , जिसके साथ कुंजी को एन्क्रिप्ट किया जाता है। GPG और इसे USB में भी स्टोर करना। इस तरह, बूट पाथवे (नॉन-एनक्रिप्टेड /bootपार्टीशन) का कमजोर हिस्सा हमेशा आपके साथ रहता है (डिक्रिप्टिंग कोड और कुंजी के भौतिक उपयोग के साथ आप केवल एक ही होंगे)। ( नोट : यह साइट खो गई है और लेखक का ब्लॉग भी गायब हो गया है, हालाँकि आप पुरानी फाइलों को https://github.com/mv-code/lfde पर पा सकते हैं । ध्यान दें कि अंतिम विकास 6 साल पहले किया गया था)। एक हल्के विकल्प के रूप में, आप अपने ओएस को स्थापित करते समय एक यूएसबी स्टिक में अनएन्क्रिप्टेड बूट विभाजन को स्थापित कर सकते हैं।

सादर, एम.वी.


1
BIOS स्तर पर डिक्रिप्ट करना वास्तव में एक बहुत अच्छा समाधान होगा (मैंने इसे एक विकल्प के रूप में माना है) ...

1
मैं किसी भी कार्यशील कार्यान्वयन को नहीं जानता, लेकिन EFI / UEFI के पास एक सामान्य बूट लोडर को बदलने के लिए एक कस्टम EFI बूट प्रबंधक को शामिल करने का विकल्प है, हो सकता है कि डेटा को डिक्रिप्ट करने के लिए डिक्रिप्शन परत जोड़ रहा हो (बेशक तब आपको एक EFI प्लेटफॉर्म की आवश्यकता होगी )। या हो सकता है कि CoreBoot (ADLO, SeaBIOS, OpenBIOS, आदि) से संबंधित कुछ परियोजना को ऐसा करने के लिए संशोधित किया जा सकता है। सिर्फ विचार।

4
गैर-एन्क्रिप्टेड / बूट विभाजन का उपयोग करने की कमजोरी के बारे में अधिक जानकारी जोड़ने के लिए (लेकिन यह एक गैर-एन्क्रिप्टेड बूट लोडर के लिए भी लागू होता है): twopointfouristan.wordpress.com/2011/04/17/… (बूट को कैसे संशोधित करें 10 मिनट की भौतिक पहुँच में विभाजन, माउंट पासफ़्रेज़ और एन्क्रिप्टेड विभाजन में किसी भी अन्य फ़ाइल को पुनः प्राप्त करने के लिए)

1
@MV: धन्यवाद। मैं स्वयं इसका परीक्षण कर सकता हूं और /bootGRUB2 के साथ एन्क्रिप्टेड विभाजन का उपयोग करने के लिए अधिक विस्तृत चरणों के साथ यहां एक उत्तर जोड़ सकता हूं ।
पेक

1
@ @ L: नहीं, जो संबंधित है (एक टीपीएम के साथ एलयूकेएस का उपयोग करके) लेकिन पहले से ही lfde.org पर होस्ट की गई परियोजना नहीं है (जो अब एक एयरोक्लब के बारे में एक साइट है)।
एम.वी.

4

अपना आरंभिक रैमडिस्क बनाएं, और / बूट फ़ोल्डर एन्क्रिप्शन का उपयोग न करें।

यह "वास्तविक" रूट फाइल सिस्टम जो करने के लिए स्विच करने के लिए एक "कम से कम" कर्नेल लाएगा, ड्राइवरों और समर्थन के साथ किया जाता है एन्क्रिप्टेड।

इससे पहले कि आप "यह एक हैक है" का दावा करें - याद रखें - सबसे (यदि सभी नहीं) लिनक्स डिस्ट्रोस बूट इस तरह से डिफ़ॉल्ट रूप से आज। यह स्पष्ट रूप से आपके सिस्टम को अपने रूट FS को बूट करने और लोड करने की अनुमति देता है, मॉड्यूल का उपयोग करके जिसे इसे फाइल सिस्टम से लोड करने की आवश्यकता होती है। (एक चिकन और अंडे की समस्या की तरह)। उदाहरण के लिए, यदि आपका रूट फाइल सिस्टम हार्डवेयर RAID वॉल्यूम पर था, और आपको अपने रूट FS को माउंट करने से पहले ड्राइवर को लोड करने की आवश्यकता थी।


3

मैंने आपके द्वारा पोस्ट किए गए लिंक की समीक्षा की - हालांकि बूट विभाजन नहीं है, हार्ड डिस्क पर अभी भी एक अनएन्क्रिप्टेड बूट लोडर है जिसे एक दुष्ट नौकरानी के हमले का उपयोग करके एक्सेस और समझौता किया जा सकता है। मैं एक समान सेटअप देख रहा हूं, जिसमें हार्ड डिस्क पर कोई अनएन्क्रिप्टेड डेटा नहीं है, लेकिन अभी तक मैं केवल रिमूवेबल ड्राइव से बूट लोडर चलाने के साथ आया हूं।


हां, अभी भी एक अनएन्क्रिप्टेड बूट लोडर है। यह मेरे लिए स्वीकार्य होगा।

दुष्ट नौकरानी आपको लोड करने के लिए एक फर्जी पासवर्ड प्रॉम्प्ट करने के लिए बूट लोडर को संक्रमित कर सकती है, तो बस अनएन्क्रिप्टेड ट्रोजन कूजन को लोड करें। बूट लोडर को एन्क्रिप्ट किए बिना कर्नेल लाभ को बहुत कम एन्क्रिप्ट करना।
2

1

मेरा मानना ​​है कि उनमें से ज्यादातर करते हैं, आपको जो निर्देश चाहिए वह यह है कि पहली जगह में एन्क्रिप्टेड एचडी के साथ ओएस कैसे स्थापित किया जाए।

उबंटू में एन्क्रिप्टेड पार्टिशन, एलएमवीपी, फोल्डर आदि बनाने के निर्देशों के साथ एक अच्छा पेज है, बस उसी के साथ आपका डिस्ट्रॉस वर्जन गूगल करें ...


2
उबंटू सहित अधिकांश लिनक्स वितरणों में एन्क्रिप्टिंग विभाजन के लिए कुछ प्रकार का समर्थन शामिल है, लेकिन उन्हें अनएन्क्रिप्टेड होने के लिए / बूट की आवश्यकता होती है। मैं जो ढूंढ रहा हूं वह एक बूट लोडर है जो पूरी तरह से एन्क्रिप्टेड डिस्क को संभाल सकता है।

1
बूटलोडर के कम से कम कुछ हिस्से को अनएन्क्रिप्टेड होना चाहिए, अन्यथा सीपीयू इसे नहीं चला सकता। क्या कोई विशेष समस्या है जो आपको अनएन्क्रिप्टेड / बूट छोड़ने के साथ है?

2
बूट लोडर और / बूट अलग चीजें हैं। मैं एक बूट लोडर की तुलना में पूरी तरह से एन्क्रिप्टेड डिस्क को बूट कर सकता हूं। TrueCrypt विंडोज के लिए ऐसा कर सकता है, लेकिन लिनक्स के लिए नहीं।

अंतर यह है कि विंडोज़ बूटलोडर अपने आप में mbr में निहित होता है, जबकि linux पर mbr केवल / बूट फाइलों के लिए आवश्यक लिंक होता है।
जेवी

1
"प्री-बूट प्रमाणीकरण को ट्रू क्रिप्ट बूट लोडर द्वारा नियंत्रित किया जाता है, जो बूट ड्राइव के पहले ट्रैक में रहता है" - उर्फ, विंडोज़ पर यह एक मिनी / बूट बनाता है। फिर से, ग्रब स्वयं / बूट में समाहित है, मब केवल 512 बाइट्स है, एक डिक्रिप्शन एल्गोरिथ्म को स्टोर करने के लिए पर्याप्त नहीं है। हालाँकि ऐसा हो चुका है, हार्ड ड्राइव के एक हिस्से को बिना लाइसेंस के आपूर्ति की जानी चाहिए। आप एक बूटलोडर से एक एन्क्रिप्टेड विभाजन पर पूरी तरह से अलग एक पर ग्रब शुरू करने में सक्षम हो सकते हैं, लेकिन इसके लिए कुछ गंभीर गड़बड़ कोड की आवश्यकता होगी ...
JV

0

नहीं, मुझे लगता है कि वहाँ नहीं हैं।

क्या आपको वास्तव में एन्क्रिप्ट / बूट करने की आवश्यकता है? मुझे संदेह नहीं है। शेष फाइल सिस्टम को सामान्य लिनक्स सॉफ्टवेयर द्वारा एन्क्रिप्ट किया जा सकता है जो कि / बूट में एक इनट्रामाफ्स पर रहता है और उपयोगकर्ता को तदनुसार संकेत देता है।


2
हां, मुझे एन्क्रिप्ट / बूट करने की आवश्यकता है। बूट लोडर को छोड़कर सब कुछ एन्क्रिप्टेड होना चाहिए।

कृपया बताएं कि आप क्यों मानते हैं कि पूर्ण डिस्क एन्क्रिप्शन का समर्थन करने वाले कोई बूटलोडर्स नहीं हैं।
Josh

@Grodriguez: यदि आप बूट लोडर का हिस्सा मानते हैं, तो सब कुछ एन्क्रिप्टेड है
रनवे

2
जैसा कि एक अन्य उत्तर पर एक टिप्पणी में उल्लेख किया गया है: मुझे पता है कि हमेशा "कुछ" होना चाहिए जो एन्क्रिप्टेड नहीं है - मुझे बस बूट लोडर (एमबीआर + बूट सेक्टर) होने के लिए इस "कुछ" की आवश्यकता है, बजाय / बूट विभाजन के ।

0

आप कुछ ऐसा करने के लिए कह रहे हैं जो करना असंभव है और इसकी तुलना विंडोज समाधान से करना है जो आप से कार्यान्वयन को छुपाता है लेकिन वास्तव में वही काम कर रहा है जो लिनक्स कर रहा है।

निकटतम उपाय जो मैं सोच सकता हूं वह एक हार्ड ड्राइव का उपयोग करना है जो एक सुरक्षा पासवर्ड और एन्क्रिप्शन को लागू करता है। थिंकपैड के कुछ लैपटॉप इन हार्डवेयर समाधानों का उपयोग करते हैं।


2
क्षमा करें, लेकिन मैं यह नहीं देखता कि यह "असंभव" क्यों होना चाहिए। मैं अपने प्रश्न में जो लेख जोड़ता हूं, वह साबित करता है कि यह किया जा सकता है। GRUB 2 के संशोधित संस्करण का उपयोग करके अवधारणा का एक प्रमाण लागू किया गया था। मुझे पता है कि हमेशा "कुछ" होना चाहिए जो एन्क्रिप्ट नहीं किया गया है - मुझे बूट लोडर (MBR + बूट सेक्टर) होने के लिए बस इस "कुछ" की आवश्यकता है a / बूट विभाजन।

@Grodriguez: आपकी आवश्यकता का कोई मतलब नहीं है। क्या किसी अन्य OS के अंदर वर्चुअल मशीन का उपयोग करते समय आपकी आवश्यकता पूरी हो गई है? यदि ऐसा है, तो ओएस एक बूट करें, ड्राइव को डिक्रिप्ट करें और वीएम लॉन्च करें।
ज़ैन लिंक्स

2
क्या आपने वास्तव में मेरे द्वारा जुड़े लेख को पढ़ने की कोशिश की है? तथ्य यह है कि आप आवश्यकता को नहीं समझते हैं इसका मतलब यह नहीं है कि "यह कोई मतलब नहीं है"। मेरे पास इसके लिए वैध कारण हैं (जो मैं इसमें नहीं आना चाहता)।

आलेख अनुच्छेद 3 में यह स्पष्ट करता है कि यह स्थिति में सुधार नहीं करता है। तो मुझे इससे कोई मतलब नहीं है कि इसके बाकी हिस्सों का पालन करें, जो इसे कैसे सेट करता है, इसके बजाय यह ध्यान देता है कि यह कैसे काम करता है। इस बारे में सोचें कि आप क्या बताने जा रहे हैं कि मैंने आपके कर्नेल को बदल दिया है, या पूरे / बूट को अपने स्वयं के साथ बदल दिया है (जब दुष्ट नौकरानी के रूप में काम कर रहा है)।
स्कीपरन

0

उत्तर लेख द्वारा इंगित किया गया है। "यह अब अगली पीढ़ी के GRUB2 बूटलोडर के एक्सटेंशन के साथ संभव है, जिसे न केवल समर्थन करने के लिए पैच किया गया है" और "हम बाद में अपने नए लुक्स सक्षम grub2 छवि को स्थापित करना चाहते हैं" और "अब हम LUKS- सक्षम GRUB2 स्रोत को संकलित करते हैं। " ऐसा लगता है कि एक पैच या एक्सटेंशन है जिसे आपको GRUB2, या एक कांटा GRUB2 स्रोत के साथ प्राप्त करने और शामिल करने की आवश्यकता है।


0

Grub2 संस्करण 2.02 ~ beta3 बहुत कुछ कर सकता है जो Grub2 संस्करण 2.02 ~ beta2 नहीं कर सकता, इसके द्वारा परीक्षण किया गया:

  1. सुपर ग्रब 2 डिस्क का उपयोग करके बूट करें
  2. कमांड लाइन पर जाने के लिए 'c' कुंजी टाइप करें
  3. मैं चाहता हूँ एन्क्रिप्टेड विभाजन माउंट करने के लिए कमांड टाइप करें
    • insmod लुक्स
    • cryptomount (hd0, #) // जहां # एन्क्रिप्टेड पार्टीशन का प्रतिनिधित्व करता है
  4. पासफ़्रेज़ टाइप करें और कुछ कमांड टाइप करें
    • मल्टीबूट (क्रिप्टो ०) / ग्रैब / आई ३/६- पीसीपी /कोर.इमग
    • बूट

वह एक और Grub2 को लोड करेगा जो एक एन्क्रिप्टेड विभाजन के अंदर है, एक दुष्ट पागल हमले का यहां कोई सेंस नहीं है ... मैं एक सीडी से बूट कर रहा हूं (केवल माध्यम पढ़ें), फिर एक एन्क्रिप्टेड विभाजन बढ़ते हुए (पासफ़्रेज़ नहीं है कि किसी की हिम्मत कैसे हो कुछ भी इंजेक्षन करें!), फिर एन्क्रिप्टेड पार्टीशन के अंदर से बूटिंग और ग्रुब 2 को अपने मेन्यू के साथ लोड करना आदि।

नोट: इस तरह के ग्रब 2.02 ~ बीटा 3 बूट (मैं सुपर ग्रब 2 सीडी का उपयोग करता हूं) एक यूएसबी स्टिक, यूएसबी ड्राइव, आदि पर हो सकता है।

चेतावनी: Grub2 संस्करण 2.02 ~ beta2 के बाद से कुछ BUGs (जो Grub2 संस्करण 2.02 ~ beta3 पर तय किए गए प्रतीत होते हैं) कमांड क्रिप्टोमाउंट से संबंधित नहीं कर सकते ...

Beta2 बग, मैं बात करता हूं, हैं:

  1. यह वास्तव में एन्क्रिप्टेड विभाजन को माउंट नहीं करता है, इसलिए यह आपको एक्सेस करने की अनुमति नहीं देता है (crypto0) / *
  2. यदि एक से अधिक एन्क्रिप्टेड पार्टीशन है, तो cryptomount -aकेवल एक पासफ़्रेज़ के लिए पूछता है
  3. एक बार क्रिप्टोमाउंट चलाने के बाद इसे फिर से चलाने पर कुछ नहीं होता है

बीटा 3 पर:

  1. यह वास्तव में एन्क्रिप्टेड विभाजन को मापता है और आपको एक ही समय में एक से अधिक माउंट होने पर (crypto0) / * या (crypto1) / * आदि के माध्यम से फ़ाइलों तक पहुंचने देता है।
  2. यह प्रत्येक पासफ़्रेज़ के लिए पूछता है (एक प्रति एन्क्रिप्टेड विभाजन)
  3. यह आपको इसे जितनी बार भी आवश्यकता हो, चलाने की अनुमति देता है, आप एक को माउंट कर सकते हैं, फिर दूसरे को, आदि।

साइड नोट: मैंने यह अंदाजा नहीं लगाया कि उन्हें कैसे रिबूट किया जाए, रिबूट या बूट के अलावा एक ही या ग्रब 2 / अन्य बूटलोडर, आदि।

आशा है कि यह चीजों को स्पष्ट करने में मदद करता है, और आशा है कि ग्रब 2 संस्करण 2.02 ~ बीटा 3 को लाइवसीडी पर एकीकृत किया जाएगा ताकि हम इसे अपने स्वयं के संकलन के बिना इसे स्थापित कर सकें।

पीडी: सुपर ग्रब 2 डिस्क के साथ मैं ग्रब 2 संस्करण 2.02 ~ बीटा 3 को एमबीआर / बूट बॉक्स आदि पर स्थापित करने का कोई तरीका नहीं देख सकता।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.