OS X में सिस्टम किचेन कैसे सुरक्षित है?


22

मैं ओएस एक्स के लिए आईओएस के लिए इस सुरक्षा श्वेत पत्र की तरह या तो कुछ बेहतर देख रहा हूं या इससे भी बेहतर, किसी स्वतंत्र विशेषज्ञ से सुरक्षा ऑडिट रिपोर्ट। किचेन सर्विसेज प्रोग्रामिंग गाइड जैसे प्रलेखन के माध्यम से पढ़ने के बाद, मैं एक ओएस एक्स सिस्टम के अनएन्क्रिप्टेड बैकअप पर एक प्रतिकूल हमले के प्रति संवेदनशील हूं।

पिछली बार जब मैंने जाँच की थी, तो OS X के तहत उपयोगकर्ता का लॉगिन किचेन पासवर्ड की तरह सुरक्षित था। मुझे कुछ मुद्दे याद हैं जो कि 111 बिट्स (धूमिल मेमोरी, कृपया मुझे ठीक करने के लिए स्वतंत्र महसूस करें) की कुंजी की वास्तविक गोपनीयता को सिकोड़ते हैं क्योंकि कुछ मुद्दे के साथ पासवर्ड कुंजी में कैसे परिवर्तित होता है, लेकिन यह बहुत समय पहले था उम्मीद है कि यह तय हो गया है।

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

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

  1. कैसे कुंजियाँ ऐसी होती हैं जो किसी भी प्रशासनिक उपयोगकर्ता को सिस्टम कीचेन को अनलॉक कर सकती हैं?

  2. क्या क्रिप्टोग्राफिक प्रतिबंध हैं जो एक प्रशासनिक उपयोगकर्ता सिस्टम किचेन में किसी भी तरह से जानकारी के साथ क्या कर सकते हैं?

  3. बिना अनएन्क्रिप्टेड सिस्टम बैकअप दिए /Users, आप सिस्टम कीचेन में कुंजियों तक कैसे पहुंच पाएंगे?

मुझे OS X 10.5 तेंदुए और बाद के संस्करणों में दिलचस्पी है।


मेरे पास कोई जवाब नहीं है, लेकिन एक किस्सा: बिना किसी व्यवस्थापक विशेषाधिकारों के एक मानक उपयोगकर्ता के रूप में, मैं एक बार सिस्टम किचेन से पासवर्ड को आसानी से निकालने में सक्षम था। मुझे सटीक चरण याद नहीं हैं, लेकिन यह निश्चित रूप से संभव था। एक साइड नोट पर, यह security.stackexchange.com पर बेहतर हो सकता है ?
अलेक्सवचन

@ एलेक्स, मैंने सिक्योरिटी की कोशिश की। पहले, लेकिन वहाँ कोई जवाब नहीं मिला।
पुरानी प्रो

1
आप जो भी कर रहे हैं उसके लिए एक अलग किचेन का उपयोग क्यों न करें? क्या कोई अच्छा कारण है कि आपकी स्क्रिप्ट को सिस्टम किचेन तक पहुंचने की आवश्यकता है?
जे। थॉम्पसन

@eyemyth, हाँ, स्क्रिप्ट को सिस्टम द्वारा चलाने की आवश्यकता है ताकि वे उपयोगकर्ता की अनुमति की परवाह किए बिना डिस्क पर सभी फ़ाइलों तक पहुंच सकें।
पुरानी प्रो

जवाबों:


11

सिस्टम कीचेन को संग्रहीत किया जाता है /Library/Keychains/System.keychainऔर इसे अनलॉक करने की कुंजी को इसमें संग्रहीत किया जाता है /var/db/SystemKey(इसकी डिफ़ॉल्ट फ़ाइल अनुमतियां केवल रूट द्वारा पठनीय हैं)। इन फ़ाइलों के स्थान को सुरक्षा-जांच प्रणाली की स्क्रिप्ट ( Security_systemkeychain स्रोत से ) में संदर्भित किया जाता है । उपयोग करके सिस्टम किचेन के स्वचालित लॉकिंग / अनलॉकिंग का परीक्षण करना और भी संभव है

systemkeychain -vt

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

(मैं वास्तव में मूल सवालों का जवाब नहीं दिया तो चलो यह एक और जाने दो)

कैसे कुंजियाँ ऐसी होती हैं जो किसी भी प्रशासनिक उपयोगकर्ता को सिस्टम कीचेन को अनलॉक कर सकती हैं?

Libsecurity कीचेन ढांचे नियमित प्रक्रियाओं प्रणाली एप्पल के XPC interprocess संचार ढांचे (आईपीसी) का उपयोग कर एक प्रमाणीकृत ढंग से चाबी का गुच्छा के साथ बातचीत करने की अनुमति देता है।

प्रोग्राम ए आईपीसी का उपयोग करके सिस्टम कीचेन जानकारी तक पहुंचने का अनुरोध करता है। एक जांच की जाती है कि अनुरोध करने वाला उपयोगकर्ता पहले से ही पहिया समूह में है और पहिया समूह में उपयोगकर्ता का पासवर्ड भी जानता है। एक बार प्राधिकरण की पुष्टि हो जाने के बाद, विशेषाधिकारित kcproxyडेमॉन का उपयोग सामग्री को एक्सेस /var/db/SystemKeyकरने, सिस्टम कीचेन को अनलॉक करने और मांगी गई जानकारी को वापस करने के लिए किया जा सकता है।

क्या क्रिप्टोग्राफिक प्रतिबंध हैं जो एक प्रशासनिक उपयोगकर्ता सिस्टम किचेन में किसी भी तरह से जानकारी के साथ क्या कर सकते हैं?

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

बिना / यूजर्स के अनएन्क्रिप्टेड सिस्टम बैकअप को देखते हुए, आप सिस्टम कीचेन में कुंजियों तक कैसे पहुंच पाएंगे?

यदि बैकअप में प्रतियां होती हैं /Library/Keychains/System.keychainऔर /var/db/SystemKeyफिर मैं उन्हें एक नए OS X सिस्टम पर उनके संबंधित स्थानों पर कॉपी करूंगा और systemkeychainबाद में पूर्व को अनलॉक करने और किचेन डेटाबेस का उपयोग करने के लिए उपयोग करूंगा security dump-keychain


1
GuidanceSoftware / EnCase से डंपचैचिन नामक एक उपयोगिता है , जो विंडोज़ में सिस्टम किचेन (सिस्टेम के साथ) के एक सीधे डंप की अनुमति देता है (इसे डंप करने के लिए एक नया ओएस एक्स स्थापित करने की तुलना में आसान हो सकता है)।
ड्रफ्रोस्प्लाट

1
@ या, मैं किसी अन्य कंप्यूटर के टाइम मशीन बैकअप से System.keychain को एक्सेस / अनलॉक / डंप करने के लिए उपरोक्त जानकारी का उपयोग कैसे कर सकता हूं? यही है, मेरे पास System.keychain और SystemKey एक बाहरी डिस्क पर संग्रहीत है, इसलिए मुझे लगता है कि मुझे डिफ़ॉल्ट रूप से फ़ाइलों का उपयोग करने से बचने के लिए क्रमशः दोनों फ़ाइलों के लिए पथ निर्दिष्ट करना होगा।
db

यह पोस्ट संबंधित है (सिस्टम का उपयोग कैसे करें। पुराने सिस्टम से System.keychain को डिक्रिप्ट करने के लिए)। Apple.stackexchange.com/questions/307189/… यदि मैं एक समान सिस्टम से संबंधित SystemKey के साथ एक बरामद System.keychain (यानी एक पुराने क्रैश HDD से अनलॉक करने के लिए) Keychain Access या systemkeychain cli के साथ एक तरीका है तो मैं उत्सुक हूं। मेरा लक्ष्य नए सिस्टम पर नए सिस्टम किचेन में लॉगिन को अनलॉक और माइग्रेट करना है।
मैट्रो

5

सिस्टम कीचेन

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

सिस्टम किचेन, /System/Library/Keychains/System.keychainApple और डेमन के लिए उपयोग करने के लिए एक विशेष चाबी का गुच्छा है। आपको आमतौर पर उपयोगकर्ता स्तर की स्क्रिप्ट के लिए इसका उपयोग करने से बचना चाहिए।

कोड की समीक्षा करें: किचेन

Apple ने मैक ओएस एक्स 10.5 के लिए किचेन और सुरक्षा ढांचे के लिए स्रोत कोड प्रकाशित किया ; आप इस कोड की समीक्षा कर सकते हैं कि यह कैसे काम करता है।

वैकल्पिक दृष्टिकोण: अलग चाबी का गुच्छा

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

एक अलग किचेन में अपनी स्वचालित स्क्रिप्ट के लिए पासवर्ड संग्रहीत करने पर विचार करें - और इस किचेन को अपने ऑफ-साइट बैक-अप से बाहर रखें।

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

आप हमेशा सिस्टम किचेन में अलग किचेन के पासवर्ड को स्टोर कर सकते हैं। फिर आप एक स्क्रिप्ट से अलग किचेन को अनलॉक कर सकते हैं। यदि बैक-अप पर हमला किया जाता है, तो आप केवल अलग किचेन में पासवर्ड का खुलासा करेंगे न कि किचेन का, क्योंकि यह फाइल ऑफ-साइट बैक-अप के साथ नहीं है।


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

1
मैं ऐप्पल सीडीएसए मेलिंग सूची ( lists.apple.com/mailman/listinfo/apple-cdsa ) या ऐप्पल टेक्निकल सपोर्ट इंसिडेंट का उपयोग करके या तो पूछने की सलाह देता हूं । केवल इन साधनों के माध्यम से आप यह सुनिश्चित कर सकते हैं कि आप उपयुक्त Apple इंजीनियरों तक पहुँचेंगे।
ग्राहम मिलन

बैकग्राउंड में स्क्रिप्ट चलाना रूट के रूप में लॉन्च करना काम है। वास्तव में आप क्या करने की कोशिश कर रहे हैं?
जय थॉम्पसन

1
"/System/Library/Keychains/System.keychain" में मामूली टाइपो (आप "लाइब्रेरी" भूल गए)। वास्तव में, आप "संपादित करें> किचेन सूची" चुनकर किचेन एक्सेस में किचेन स्थानों की सूची प्राप्त कर सकते हैं
उपयोगकर्ता नाम

1
@OldPro आपकी सुरक्षा चिंताओं को देखते हुए, पूर्ण डिस्क एन्क्रिप्शन का उपयोग क्यों नहीं करता है?
ग्राहम मिलन

2

Apple ने हाल ही में अपनी सुरक्षा प्रथाओं को रेखांकित करते हुए एक दस्तावेज प्रकाशित किया है , आपको वहां कुछ उत्तर मिल सकते हैं। दस्तावेज़ आईओएस के लिए विशिष्ट है, लेकिन बहुत सारी सुरक्षा विशेषताओं में ओएस एक्स के साथ बहुत कुछ है।


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

अगर यह सही दिशा में ;-) आप हो जाता है अपने इनाम स्वीकार करने के लिए खुश हूँ
demianturner

0

मुझे किचेन * का विशेष ज्ञान नहीं है, लेकिन यह एक बहुत ही मानकीकृत अभ्यास है।

  1. आप सादे पाठ फ़ाइल "फू" की रक्षा करना चाहते हैं। फू मनमाने आकार का हो सकता है।
  2. Foo एन्क्रिप्ट करने के लिए एक सममित कुंजी बनाएं।
  3. पासफ़्रेज़ से वरीयता प्राप्त कुंजी के साथ सममित कुंजी को एन्क्रिप्ट करें।

एक बार जब आप कर रहे हैं तो आप वर्तमान पासफ़्रेज़ में प्रवेश करके "पासवर्ड" को बदल सकते हैं, सममित कुंजी को डिक्रिप्ट कर सकते हैं और फिर इसे नए पासफ़्रेज़ के साथ एन्क्रिप्ट कर सकते हैं। यह घटना में लंबी डिक्रिप्शन / एन्क्रिप्शन प्रक्रियाओं से बचा जाता है कि "फू" बहुत बड़ी है।

तो यह उन कई उपयोगकर्ताओं के लिए कैसे काम करता है जिन्हें फू के प्लेनटेक्स्ट का उपयोग करने की आवश्यकता है? वास्तव में बहुत आसान है, आप बस प्रत्येक उपयोगकर्ता के लिए एक बार सममित कुंजी की एक एन्क्रिप्टेड प्रतिलिपि बनाएँ। दूसरे शब्दों में, प्रत्येक उपयोगकर्ता के लिए चरण तीन करें।

व्यवहार में यह सब देखने से दूर है और अंत उपयोगकर्ता को केवल अपने स्वयं के पासवर्ड से निपटने की आवश्यकता है।

आपके प्रश्नों के भाग 3 के संबंध में, उपयोगकर्ताओं की कुंजियाँ उनके घर में संग्रहीत नहीं हैं। वे सबसे अधिक संभावना है कि /private/varकहीं पर संग्रहीत होंगे । तो यहां तक ​​कि /Usersकिसी के बिना , जिनके पास पहले पहुंच थी, सिस्टम को अनलॉक करने में सक्षम होंगे।


* यह संभव है कि किचेन अलग काम करे।


सिस्टम किचेन के बारे में जो बात अलग है, वह यह है कि सिस्टम उस किचेन पर पहुँच सकता है, जो लॉग इन किए बिना है, उदाहरण के लिए, टाइम मशीन रिमोट फाइल शेयर को माउंट करने के लिए सिस्टम किचेन तक पहुँच सकती है, भले ही एकमात्र उपयोगकर्ता लॉगगेटेड न हो। प्रशासनिक उपयोगकर्ता और इसलिए सिस्टम किचेन तक नहीं पहुंच सकता। तो कुछ और चल रहा है, और मैं जानना चाहता हूं कि वास्तव में क्या है।
ओल्ड प्रो

फिर से, मैं केवल surmise कर सकता हूं, लेकिन IMO यह वास्तव में अलग नहीं है । सिस्टम खुद को स्पष्ट रूप से कुंजी पर प्राप्त कर सकता है, जो दी गई है। मुझे लगता है कि वहाँ एक प्रणाली कुंजी उपयोगकर्ता कुंजी के समान व्यवहार किया जाता है। लेकिन अब हम आपके सवाल के दिल में हैं ... क्या पहली पहुँच प्रदान करता है?
बहमट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.