2014-07-05 11 views
5

मेरी समझ के अनुसार, एसएसएल पिनिंग क्लाइंट में सार्वजनिक रूप से बंडल की गई प्रतियों की सार्वजनिक कुंजी या प्रमाणन की तुलना करना है।क्या आईओएस AFNetwork SSL पिनिंग मोड अतिरिक्त सुरक्षा बोनस प्रदान करेगा यदि वैध प्रमाणपत्र

मैंने स्टैक ओवरफ्लो में देखा कि कई डेवलपर्स एएफनेटवर्क पुस्तकालयों द्वारा एसएसएल पिनिंग का उपयोग करते हैं, लेकिन उनमें से अधिकतर इसे स्वयं हस्ताक्षरित प्रमाणपत्र के साथ उपयोग करते हैं।

मैंने सीए से एक वैध प्रमाणपत्र खरीदा है और यह सत्यापित करने के लिए परीक्षण पास कर दिया है कि यह ठीक काम करता है। मेरा मतलब है, मैं निम्नलिखित की स्थापना की और यह

... 
    _sharedHttpsInstance.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone]; 
    _sharedHttpsInstance.securityPolicy.allowInvalidCertificates = NO; 
    ... 

काम किया क्या मैं सोच रहा हूँ कि अगर AFSSLPinningModePulicKey पर पिन मोड सेट, अपने आवेदन क्या वैध प्रमाण पत्र के अलावा सर्वर के साथ संचार में अधिक सुरक्षित होगा प्रदान की?

बहुत बहुत धन्यवाद।

+2

हाँ, पिन पिन करते हुए नहीं की तुलना में अधिक सुरक्षित है। पर विचार करें: जब DigiNotar का उल्लंघन किया गया था, हमलावर गूगल, हॉटमेल, याहू, आदि के लिए नकली प्रमाण पत्र अनुभवहीन ग्राहकों उन्हें वैध स्वीकार किया, क्योंकि DigiNotar भरोसा दुकान में एक सीए था जारी किए हैं। यदि आप एक आईओएस उदाहरण देखना चाहते हैं, तो देखें कि उसी हमले से इन-ऐप खरीदारी कैसे टूटी हुई थी। रूसी हैकर द्वारा आईओएस के लिए ऐप्पल की "इन-ऐप खरीद" सेवा देखें [http://arstechnica.com/security/2012/07/ios-in-app-purchase-service-hacked/)। ऐप्पल को अपने स्टोर किट ढांचे में पिन करना चाहिए, लेकिन वे भी एक एफ ** राजा अहंकारी या बेवकूफ हैं। – jww

उत्तर

6

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

शायद प्रमाण पत्र पिनिंग का सबसे प्रमुख उपयोगकर्ता Google क्रोम है, जहां इसका उपयोग Google डोमेन के लिए किया जाता है और इससे डिजीनोटर और कॉमोडो के समझौते का पता लगाने में मदद मिली।

प्रमाणपत्र पिनिंग का एक नकारात्मक पक्ष यह हो सकता है कि एप्लिकेशन उन नेटवर्कों के अंदर काम करना बंद कर देगा जो सुरक्षा कारणों से एसएसएल अवरोध करते हैं। Google क्रोम सर्टिफिकेट स्वीकार कर इस स्थिति से निपटने के लिए प्रतीत होता है अगर इसे उपयोगकर्ता द्वारा स्पष्ट रूप से जोड़े गए सीए द्वारा हस्ताक्षरित किया गया है (यानी कोई अंतर्निहित नहीं) वैकल्पिक रूप से पिनिंग चेक के लिए।

एक और सवाल जो दिलचस्प हो सकता है, यदि एसएसएल पिनिंग एप्लिकेशन के 'अधिकांश' के लिए 'एनओथ' सुरक्षित है, भले ही स्वयं हस्ताक्षरित प्रमाणीकरण के साथ काम कर रहे हों?

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

+0

एक और सवाल जो दिलचस्प हो सकता है यदि एसएसएल पिनिंग एप्लिकेशन के 'अधिकांश' के लिए 'एनओथ' सुरक्षित है, भले ही स्वयं हस्ताक्षरित प्रमाणीकरण के साथ काम कर रहे हों? – firebear

+0

@firebear: अच्छा सवाल। मैंने अपने उत्तर में इसे जोड़ा और जवाब दिया है। –

+0

समझौता @Steffen और ब्रूनो उत्तर की तुलना द्वारा, मुझे लगता है कि वैध/अमान्य प्रमाणपत्र, एसएसएल लगाए या नहीं का उपयोग कर, किसी भी तरह जोखिम, लागत और दक्षता का एक संतुलन है। मैं सामान्य HTTPS कनेक्शन के लिए स्व-हस्ताक्षरित प्रमाणपत्र के साथ पिन एसएसएल का चयन करेंगे, वेब के लिए मान्य प्रमाणपत्र चुनते हैं, और हमारे एएए प्रणाली के लिए, मैं SSL लगाए और मान्य प्रमाणपत्र गठबंधन करने के लिए और मेरे निजी कुंजी ध्यान से रक्षा करने के लिए करना चाहते हैं। बहुत बहुत शुक्रिया – firebear

3

स्पष्ट रूप से कहना मुश्किल है कि पिनिंग बेहतर या बदतर है, क्योंकि इससे किसी भिन्न पार्टी को जोखिम बदल जाता है।

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

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

बेशक, आप दोनों दृष्टिकोणों को जोड़ सकते हैं, लेकिन इससे अतिरिक्त समस्याएं हो सकती हैं (आपको दोनों मूल्यांकनों में विवादित परिणामों से निपटने की रणनीति की आवश्यकता होगी, अन्यथा एक समझौता सीए एक वैध प्रमाण को रद्द करने से डीओएस का कारण बन सकता है)।

मुझे नहीं पता कि एएफनेटवर्किंग की पिनिंग तंत्र पीकेआई सत्यापन को प्रतिस्थापित करती है या इसे पूरा करती है।

सामान्य तौर पर, PKI सत्यापन pinning का उपयोग कर या के बीच चुनने के लिए कि क्या आपको लगता है कि विशेष रूप से मेजबान के निजी कुंजी और अधिक या कम सीए तुम पर भरोसा से समझौता किया जा सकता है पर निर्भर करता है।

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

(स्पष्ट रूप से, मैं यह नहीं कह रहा हूँ कि सीए बेहतर हैं, सिर्फ इतना है कि पिन करने की समस्याओं के सेट बदल जाता है।)

+0

@Steffen टिप्पणी में मेरी समझ और पसंद को देखते हैं। धन्यवाद – firebear

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