2012-08-07 16 views
5

मुझे अपने आईओएस ऐप में एक सुरक्षित चैनल पर भेजे गए डेटा को संपीड़ित करने की आवश्यकता है और मैं सोच रहा था कि क्या मैं इसके लिए TLS compression का उपयोग कर सकता हूं। मैं यह पता लगाने में असमर्थ हूं कि क्या ऐप्पल के टीएलएस कार्यान्वयन, सुरक्षित परिवहन, इसका समर्थन करता है।क्या आईओएस टीएलएस संपीड़न का समर्थन करता है?

क्या किसी और को पता है कि आईओएस में टीएलएस संपीड़न समर्थित है या नहीं?

उत्तर

2

मैं यह निर्धारित करने की कोशिश कर रहा था कि एसएसएल/टीएलएस के ऐप्पल कार्यान्वयन ने संपीड़न का समर्थन किया है, लेकिन मुझे यह कहना है कि मुझे डर है कि यह नहीं है।

पहले मुझे आशा थी कि errSSLPeerDecompressFail त्रुटि कोड होने पर, संपीड़न को सक्षम करने का एक तरीका होना चाहिए। लेकिन मुझे यह नहीं मिला।

ऐप्पल संपीड़न का समर्थन नहीं करने वाला पहला स्पष्ट कारण है कि मैंने अपने डिवाइस (6.1) से अलग-अलग बंदरगाहों में सुरक्षित सॉकेट खोलने वाले कई वायर कैप्चर किए हैं। उन सभी में क्लाइंट हैलो पैकेट ने केवल एक संपीड़न विधि की सूचना दी: null

फिर मैंने एप्पल से उपलब्ध libsecurity_ssl के लिए अंतिम उपलब्ध कोड देखा। यह मैक ओएस एक्स 10.7.5 से कार्यान्वयन है, लेकिन कुछ मुझे बताता है कि आईओएस एक जैसा ही होगा, अगर ऐसा नहीं है, लेकिन निश्चित रूप से यह मैक ओएस एक्स की तुलना में अधिक शक्तिशाली नहीं होगा।

आप फ़ाइल sslHandshakeHello.c में पा सकते हैं, लाइनों 186-187 (SSLProcessServerHello):

if (*p++ != 0)  /* Compression */ 
    return unimpErr; 

कि त्रुटि कोड की तरह "सर्वर एक और संपीड़न भेजता है लेकिन null (0), हम डॉन 'एक बहुत लग रहा है इसे लागू नहीं करते हैं, तो असफल "।

फिर से, एक ही फाइल, लाइन 325 (SSLEncodeClientHello):

*p++ = 0; /* null compression */ 

और बाकी चारों ओर कुछ भी नहीं (DEFLATE आरएफसी 3749 के अनुसार, विधि 1 है)।

नीचे, लाइनों 469, 476 और 482-483 (SSLProcessClientHello):

compressionCount = *(charPtr++); 
... 
/* Ignore list; we're doing null */ 
... 
/* skip compression list */ 
charPtr += compressionCount; 

मुझे लगता है कि यह बहुत स्पष्ट है कि इस कार्यान्वयन केवल संभालती null संपीड़न: यह केवल क्लाइंट में भेजे एक है हैलो , सर्वर हैलो में केवल एक ही समझा जाता है, और क्लाइंट हैलो प्राप्त होने पर संपीड़न विधियों को अनदेखा कर दिया जाता है (null प्रत्येक क्लाइंट द्वारा लागू और प्रस्तावित किया जाना चाहिए)।

तो मुझे लगता है कि आप और मुझे दोनों को एक स्तर स्तर संपीड़न लागू करना है। सौभाग्य।

+0

इसमें खोदने के लिए धन्यवाद! –

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