FDE (पूर्ण डिस्क एन्क्रिप्शन) इतनी जल्दी कैसे काम करता है?


13

मैं इस बारे में उत्सुक हूं कि उबंटू का पूरा डिस्क एन्क्रिप्शन हुड के नीचे कैसे काम करता है। यहाँ एक उदाहरण है:

निम्नलिखित स्ट्रिंग को सभी डिस्क की सामग्री के रूप में देखते हुए:

hello world

किसी प्रकार की एन्क्रिप्शन विधि को लागू करने के बाद यह कुछ इस तरह दिखाई देगा:
(मैंने इस उदाहरण के लिए +1 की एक शिफ्ट के साथ सीज़र सिफर का उपयोग किया है, उदाहरण के लिए ए → बी; बी → सी ...);

ifmmp xpsme

जैसा कि मैं समझता हूं, जब कंप्यूटर बंद हो जाता है, तो ड्राइव की सामग्री ऊपर स्ट्रिंग होगी। लेकिन जब इसे वापस चालू किया जाता है, तो उबंटू hello worldको सफलतापूर्वक बूट करने के लिए अपनी सामग्री को फिर से वापस करने की आवश्यकता होती है ।

वास्तव में मुझे जो नहीं मिलता है वह यह है कि वास्तविक दुनिया में डिस्क की सामग्री बहुत अधिक है, और एन्क्रिप्शन एल्गोरिथ्म अधिक जटिल है, और मुझे कंप्यूटर को कुछ ही सेकंड में पूरी तरह से एन्क्रिप्ट / डिक्रिप्ट करना मुश्किल लगता है। (यह बूट होने या बंद होने में अधिक समय नहीं लेता है)।

यह कैसे हो सकता है?

जवाबों:


10

सामान्य कार्य में AES / Rijndael एन्क्रिप्शन कैसे करता है?

इस पृष्ठ में उन्नत एन्क्रिप्शन मानक (एईएस) के लिए एक मजेदार ए स्टिक फिगर गाइड है जो समझने में आसान लगता है, हालांकि यह 50+ चित्र दिखता है, उदाहरण के लिए इन दो:

यहाँ छवि विवरण दर्ज करें

तथा

यहाँ छवि विवरण दर्ज करें

यह सब यहाँ नकल करने के लिए बहुत अधिक है, लेकिन अगर आपके पास एक ऑल-इन-वन छवि है तो यह एक है:

यहाँ छवि विवरण दर्ज करें


या, http://www.password-depot.com/know-how/blowfish_and_rijndael.htm पर एक अधिक कॉम्पैक्ट व्याख्या है

Rijndael एन्क्रिप्शन विधि बाइट्स पर xor संचालन को बदलने, बदलने और प्रदर्शन करने पर आधारित है। विधि इस तरह दिखती है:

  • 128-बिट कुंजी से, रिजेंडेल 128 बिट्स में से 10 कुंजी उत्पन्न करता है।
  • इन कुंजियों को 4x4 सरणियों में रखा गया है।
  • सादा पाठ भी 4x4 सरणियों (प्रत्येक 128 बिट) में विभाजित है।
  • 128-बिट प्लेन-टेक्स्ट आइटम में से प्रत्येक को 10 राउंड में संसाधित किया जाता है (128-बिट-कुंजी के लिए 10 राउंड, 192 के लिए 12, 256 के लिए 14)।
  • 10 वें राउंड के बाद कोड जेनरेट होता है।
  • प्रत्येक एकल बाइट को एस बॉक्स में प्रतिस्थापित किया जाता है और GF (2 8) पर पारस्परिक द्वारा प्रतिस्थापित किया जाता है।
  • फिर एक बिट-वार मोडुलो -2 मैट्रिक्स लागू किया जाता है, उसके बाद 63 के साथ XOR ऑपरेशन होता है।
  • मैट्रिसेस की रेखाएँ साइक्लिकल रूप से सॉर्ट की जाती हैं।
  • मैट्रिक्स गुणन के स्तंभ GF (2 8) पर परस्पर जुड़े होते हैं।
  • प्रत्येक राउंड की उपकुंजियों को XOR ऑपरेशन के अधीन किया जाता है।

इस एन्क्रिप्शन विधि का सुरक्षा स्तर बढ़ जाता है यदि रिजंडेल को अलग-अलग उपकुंजियों के साथ कई बार किया जाता है।


उबंटू का फुल डिस्क एन्क्रिप्शन कैसे काम करता है?

मेरा मानना है कि यह एलयूकेएस (एईएस के साथ डिफ़ॉल्ट सेटिंग्स) के साथ एक विभाजन को एन्क्रिप्ट करके काम करता है, और फिर एलवीएम (जैसे /, स्वैप) के साथ उस पर कुछ वॉल्यूम डालता है , और पासफ़्रेज़ दर्ज करने के बाद बूट पर उन्हें डिक्रिप्ट करता है और उन्हें माउंट करता है। और एक नियमित (एन्क्रिप्टेड नहीं) बूट विभाजन है जो पासफ़्रेज़ के लिए पूछने के लिए पर्याप्त बूट करता है।

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


एन्क्रिप्शन कितना तेज़ है?

यदि आप cryptsetup benchmarkइसे चलाते हैं तो परीक्षण चलाएंगे और आपको बताएंगे कि एन्क्रिप्शन कितनी तेज़ी से अकेले लेता है, इसके लिए (वर्तमान में) डिफ़ॉल्ट एईएस-xts नंबर देखें

#  Algorithm | Key |  Encryption |  Decryption
     aes-xts   256b    150.0 MiB/s    145.0 MiB/s

एक औसत हार्ड ड्राइव रीड स्पीड 80-160 MB / s हो सकती है, इसलिए आप एक नियमित रीड की तुलना में अधिक लंबे समय तक नहीं रहेंगे, और यह संभव है कि जस्ट-रीड सेक्टर्स को पहले ही डिक्रिप्ट कर दिया गया हो, जबकि आप अभी भी प्रतीक्षा कर रहे हैं अधिक पढ़ने के लिए हार्ड ड्राइव।

एक एसएसडी संभवतः तेज हो सकता है, शायद 200-550MB / s, इसलिए आप इसे नोटिस कर सकते हैं। लेकिन, यादृच्छिक रीड धीमी हो सकती है, और मैंने पढ़ा है कि एसएसडी गति उपयोग के बाद धीमा हो सकती है (हो सकता है कि जब ड्राइव पूरी तरह से भर जाए और इसे "मिटाना" सेक्टर शुरू करना हो?)

केवल कुछ ही सेकंड में कंप्यूटर पूरी तरह से एन्क्रिप्ट / डिक्रिप्ट कैसे कर सकता है (यह बूट होने या बंद होने में अधिक समय नहीं लेता है)?

यह सब कुछ पहले डिक्रिप्ट करने की जरूरत नहीं है। एन्क्रिप्शन (LUKS) डेटा के ब्लॉक पर काम करता है , किसी भी ब्लॉक को बेतरतीब ढंग से डिक्रिप्ट कर सकता है, और ड्राइव के एन्क्रिप्टेड डेटा और फाइलसिस्टम के बीच एक परत की तरह काम करता है।

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

तो बस एक नियमित फाइल सिस्टम की तरह एक फाइल को पढ़ने के लिए पूरी ड्राइव को पढ़ने की आवश्यकता नहीं होती है, जब एन्क्रिप्शन को जोड़ा जाता है तो उसे पूरी ड्राइव को या तो पढ़ने की आवश्यकता नहीं होती है, और यह चीजों को बहुत धीमा नहीं करता है ।

हार्ड ड्राइव के डेटा को हमेशा एन्क्रिप्ट किया जाता है , इसलिए बंद करने के लिए कुछ भी नहीं करना चाहिए सिवाय चाबी को भूल जाने के।


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

3

यह थोड़ा सरलीकरण होगा, लेकिन मैं एक एन्क्रिप्टेड फाइल सिस्टम पर एक फ़ाइल तक पहुंचने की प्रक्रिया से गुजरने की कोशिश करूंगा।

उदाहरण के लिए, मान लें कि एन्क्रिप्टेड फ़ाइल सिस्टम की शुरुआत में एक फ़ाइल तालिका है; मान लीजिए कि हम पढ़ना चाहते हैं /foo.bar। इसलिए, हम जो पहली चीज करते हैं वह विभाजन की शुरुआत को पढ़ता है, इसे डिक्रिप्ट करता है, और जिस फाइल को हम चाहते हैं, उसके लिए इसे देखें; मान लीजिए कि यह कहता है कि फ़ाइल 0x10000000 बाइट्स पर शुरू होती है। इसलिए पढ़ने के लिए, हम उस स्थान पर डिस्क से पढ़ना शुरू करते हैं और इसे डिक्रिप्ट करते हैं; इसी तरह, लिखने के लिए, हम नई सामग्री को एन्क्रिप्ट कर सकते हैं, और उन्हें उस नए स्थान पर लिख सकते हैं।

उम्मीद है कि यह प्रक्रिया पर किसी भी भ्रम को दूर करने में मदद करता है।


1
मुझे लगता है कि यह वह उत्तर है जो वास्तव में ओपी के प्रश्न का उत्तर देता है - उसकी गलतफहमी यह है कि उसे पूरी ड्राइव को पूरी तरह से एन्क्रिप्ट / डिक्रिप्ट करना है, न कि केवल बिट्स जो पढ़ने / लिखने में उपयोग किए जाते हैं।
SomeoneSomewhereSupportsMonica

2

प्रोसेसर समर्पित निर्देश सेट का उपयोग करता है। इसकी वजह से यह संभव है, एईएस-एनआई । यह तेज़ एन्क्रिप्शन और डिक्रिप्शन सक्षम करता है या आप कह सकते हैं कि यह ओवरहेड को काट देता है। यह तेजी से है क्योंकि यह हार्डवेयर कार्यान्वयन है, जैसा कि यहां बताया गया है

आप यहां प्रदर्शन प्रभावों के बारे में जांच कर सकते हैं और वे अतिरिक्त सुरक्षा के लिए इसके लायक हैं।


1
इसके अलावा, डिस्क पर डेटा केवल एन्क्रिप्ट किया गया / आवश्यकतानुसार डिक्रिप्ट किया गया है; उदाहरण के लिए, बूट पर, केवल स्टार्टअप स्क्रिप्ट, उपयोगकर्ता जानकारी, DM / WE निष्पादक, आदि को डिक्रिप्ट किया जाता है
निक मर्टिन

सीपीयू के बहुत सारे एईएस का समर्थन नहीं है, और उबंटू का एन्क्रिप्शन अभी भी उन पर काम करता है ... भले ही उन्होंने किया हो, यह अभी भी इस सवाल का जवाब नहीं देता है कि उबंटू का एन्क्रिप्शन कैसे काम करता है
Xen2050

@shsh तब, अगर मैं वास्तव में पुराने कंप्यूटर पर था, तो FDE का उपयोग करना असंभव होगा, क्योंकि हार्डवेयर कार्यान्वयन नहीं होगा? क्या मुझे तब समझना चाहिए कि पूरी डिस्क बूट और शटडाउन पर एन्क्रिप्ट और डिक्रिप्टेड है?
Hewbot

@ MagikM18 यदि ऐसा है, तो एल्गोरिथ्म कैसे जानता है कि पूरे "स्ट्रिंग" में डिक्रिप्टिंग कहाँ से शुरू की जाए? मेरा मतलब है, अगर मैं एक दस्तावेज खोलता हूं, तो यह "निर्देशांक" को कैसे जानता है कि वह कहां है?
Hewbot

@ वैसे भी यह वैसे ही होगा; मूल रूप से, एन्क्रिप्शन भौतिक डिस्क और फाइल सिस्टम डेमॉन के बीच एक परत है। इसलिए, जब यह डिस्क से डेटा पढ़ने का अनुरोध करता है, तो इसे तब डिक्रिप्ट किया जाता है; इसलिए नियमित एफएस की तरह, यह पहले फाइल टेबल को पढ़ेगा, फाइल की शुरुआती स्थिति का पता लगाएगा, फिर वहां से पढ़ेगा।
निक मर्टिन

0

आधुनिक कंप्यूटर प्रति सेकंड अरबों ऑपरेशन कर सकते हैं, इसलिए यह मुझे आश्चर्यचकित नहीं करता है कि एन्क्रिप्शन और डिक्रिप्शन तेज़ हैं।

यह है कि मैं सहज ज्ञान युक्त रैंक कर सकता हूं कि कंप्यूटर कितनी तेजी से चीजें कर रहे हैं:

  1. मेमोरी के भीतर गणना करना (विशेष रूप से एल 1 और एल 2 मेमोरी), बहुत तेज
  2. स्थानीय भंडारण से पढ़ना, कम तेज़ (ठोस राज्य डिस्क हार्ड डिस्क की तुलना में तेज़ हैं)
  3. नेटवर्क से पढ़ना, और भी कम तेज़।

समझने के लिए अन्य महत्वपूर्ण बिट यह है कि ऑपरेटिंग सिस्टम को बूट करने के लिए संपूर्ण हार्ड डिस्क को डिक्रिप्ट करने की आवश्यकता नहीं है। बल्कि, ऑपरेटिंग सिस्टम जानता है कि हार्ड डिस्क के केवल उन हिस्सों को कैसे डिक्रिप्ट किया जाना चाहिए जो उसे मक्खी पर चाहिए और वही लिखने के लिए जाता है।

इसलिए सहज रूप से, मुझे आश्चर्य नहीं है कि पूर्ण डिस्क एन्क्रिप्शन का प्रदर्शन पर अधिक प्रभाव नहीं पड़ता है, क्योंकि मैं डिस्क होने के लिए बोतल-गर्दन की कल्पना करता हूं।

बेशक, ये अंतर्ज्ञान हमेशा वास्तविकता से मेल नहीं खाते हैं। उदाहरण के लिए, वास्तव में, ऐसे मामले सामने आए हैं जहां फुल-डिस्क एन्क्रिप्शन ने एक उल्लेखनीय प्रदर्शन हिट किया है। लेकिन आमतौर पर ये डेवलपर्स के विकास के कुछ दौर से गुजरने के बाद हल हो जाते हैं।


1
मुझे ऐसा कोई तरीका नहीं मिला जिससे यह उत्तर संभव हो। बस USB 3.0 के साथ 1TB की नकल करने में कुछ मिनट लगते हैं, अगर एक मध्य प्रक्रिया (डिक्रिप्शन) करनी होती है, तो FDE के साथ कंप्यूटर को बूट करने में मिनट लग सकते हैं।
हेवबॉट

@ हाइवबॉट मैंने अपने उत्तर को यह समझाने के लिए संपादित किया कि डिक्रिप्टिंग मक्खी पर होती है। एन्क्रिप्टेड 1TB डिस्क का उपयोग शुरू करने के लिए OS को 1TB डेटा पढ़ने की आवश्यकता नहीं है।
फ्लिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.