2010-01-06 12 views
14

मैं जावा पासवर्ड मैनेजर पर काम कर रहा हूं और मेरे पास वर्तमान में सभी उपयोगकर्ता का डेटा है, फ़ाइल से डिक्रिप्ट होने के बाद, हर समय स्मृति में बैठे हुए और स्पष्ट रूप से स्ट्रिंग के रूप में संग्रहीत करने के लिए संग्रहीत किया जाता है यूआई इत्यादिमेमोरी में संवेदनशील डेटा

क्या यह किसी भी तरह से सुरक्षा जोखिम है? मैं विशेष रूप से किसी व्यक्ति को "डंपिंग" या कंप्यूटर की स्मृति को किसी तरह से पढ़ रहा हूं और उपयोगकर्ता के नग्न डेटा को ढूंढ रहा हूं।

मैंने डेटा के सभी संवेदनशील टुकड़े (पासवर्ड) को एन्क्रिप्टेड रखने और केवल प्रत्येक टुकड़े को आवश्यकतानुसार डिक्रिप्ट करने और उसे नष्ट करने पर विचार किया है ... लेकिन मैं अंधविश्वास पर बहुत से कोड को नहीं बदलूंगा और बदलूंगा।

उत्तर

21

यदि आपके प्रतिद्वंद्वी में आपकी लक्षित मशीन पर मनमाने ढंग से कोड चलाने की क्षमता है (प्रक्रिया छवि को डंप करने के लिए आवश्यक डीबग विशेषाधिकारों के साथ), तो आप सभी प्रकार के खराब हैं।

यदि आपके प्रतिद्वंद्वी में दूरी पर स्मृति को पढ़ने की क्षमता है (यानि TEMPEST), तो आप सभी प्रकार के खराब हैं।

पारगमन और भंडारण (तार और डिस्क पर) में डेटा को सुरक्षित रखें, लेकिन स्मृति में डेटा के बारे में चिंता न करें।

* ठीक है, ऐसे कार्यक्रमों की कक्षाएं हैं जिन्हें चिंता करने की आवश्यकता है। सभी आवेदनों का 99.99% नहीं है, मैं शर्त लगा रहा हूं कि आपका नहीं है।

+0

तो, अनिवार्य रूप से, अगर मैं परिवर्तन करना चाहता था और सभी डेटा एन्क्रिप्ट किया गया था, तो यह केवल कुछ पहले से ही बहुत कठिन/असंभव रूप से कठिन बना देगा। मैं कल्पना कर सकता हूं कि बाइट [] युक्त एईएस कुंजी युक्त सादा टेक्स्ट खोजने से _much_ कठिन है। – defectivehalt

+3

वास्तव में जावा में नहीं; यह ढेर में दिए गए आकार (एक स्ट्रिंग ऑब्जेक्ट के विपरीत) के बाइट [] ऑब्जेक्ट की खोज बन जाता है। लेकिन हाँ, आप जिस प्रकार के हमलावर के बारे में चिंतित हैं, वह इतनी दुर्लभ है कि आप अपने समय को बर्बाद कर रहे हैं (और शायद सफल नहीं)। –

+0

आपके साथ केविन से अधिक सहमत नहीं हो सका। – Tower

5

हां यह निश्चित रूप से है, खासकर जब से आप एक आवेदन को डीबग कर सकते हैं। एन्क्रिप्शन और असुरक्षित डेटा से निपटने वाला अधिकांश कोड तारों के बजाय चार सरणी का उपयोग करता है। चार सरणी का उपयोग करके, आप संवेदनशील डेटा के जीवनकाल को सीमित करने, संवेदनशील विवरण के साथ स्मृति को ओवरराइट कर सकते हैं।

+4

यदि आप किसी प्रोग्राम को डीबग कर सकते हैं, तो आप सिफरटेक्स्ट और कुंजी को पकड़ सकते हैं और सादा पाठ स्वयं उत्पन्न कर सकते हैं। डीबग विशेषाधिकारों के खिलाफ बचाव के लिए व्यावहारिक रूप से असंभव हैं। –

+0

हां, आपके पास एक बिंदु है। लेकिन यह एक पाठ खोज थोड़ा सा चालक बनाता है। –

+0

'/ proc' से पढ़ने पर डंप क्यों ठीक हो सकता है। – Xailor

5

सिद्धांत रूप में, आप स्मृति में पूरी तरह से कुछ भी सुरक्षित नहीं कर सकते हैं। वहां से कुछ समूह ने मेमोरी चिप्स को गहरा कर दिया और कंप्यूटर बंद होने के 4 घंटे बाद अपनी सामग्री को पढ़ा। यहां तक ​​कि इस तरह की लंबाई के बिना, एक डीबगर और सही समय पर ब्रेकपॉइंट चाल करेगा।

व्यावहारिक रूप से, बस बिल्कुल आवश्यक के मुकाबले स्मृति में सादे पाठ को न रखें। एक निर्धारित पर्याप्त हमलावर इसे प्राप्त करेगा, लेकिन ओह ठीक है।

+0

के लिए बकवास को दिखाता है, '4 घंटे' पर आपकी टिप्पणी गलत है, यह तब संभव हो सकता है जब आप [फ्रीज] (https: // www.usenix.org/legacy/event/sec08/tech/full_papers/halderman/halderman.pdf) नाइट्रोजन के साथ रैम या तो। –

+0

मैंने कमरे के तापमान के बारे में कुछ भी नहीं कहा :) समूह ने इसे प्रबंधित किया, ergo, कथन तकनीकी रूप से सही है। –

+0

आपका कथन इस संदर्भ में भ्रामक है, क्योंकि मूल पोस्टर ने उप-शून्य तापमान के बारे में कुछ भी नहीं कहा था। हालांकि आप इन शर्तों को निर्दिष्ट करने के लिए अपनी पोस्ट संपादित कर सकते हैं। –

4

यह ध्यान देने योग्य है कि ओएस डिस्क पर स्मृति को स्वैप करने का निर्णय ले सकता है, जहां यह थोड़ी देर तक रह सकता है। बेशक, स्वैप फ़ाइल को पढ़ने के लिए मजबूत निजीकरण की आवश्यकता होती है, लेकिन कौन जानता है? उपयोगकर्ता का लैपटॉप चोरी हो सकता है ...

संबंधित मुद्दे