SSL कितना ओवरहेड करता है?


168

मुझे पता है कि कोई एकल हार्ड-फास्ट उत्तर नहीं है, लेकिन क्या एसएसएल बनाम अनएन्क्रिप्टेड सॉकेट संचार के एन्क्रिप्शन ओवरहेड के लिए एक सामान्य ऑर्डर-ऑफ-परिमाण अनुमान है ? मैं केवल कॉम प्रोसेसिंग और वायर टाइम के बारे में बात कर रहा हूं, एप्लीकेशन-लेवल प्रोसेसिंग की गिनती नहीं।

अपडेट करें

HTTPS बनाम HTTP के बारे में एक सवाल है , लेकिन मुझे स्टैक में कम देखने में दिलचस्पी है।

(मैं से बचने के भ्रम को वाक्यांश "परिमाण के क्रम" की जगह है, मैं अनौपचारिक शब्दजाल के रूप में यह उपयोग कर रहा था बल्कि औपचारिक compsci अर्थ में से बेशक अगर मैं। था इसे औपचारिक रूप से मतलब, एक सच्चे गीक के रूप में मैं सोच द्विआधारी गया के बजाय है | दशमलव ;;-)

अपडेट करें

टिप्पणी में प्रति अनुरोध, मान लें कि हम लगातार कनेक्शन पर अच्छे आकार के संदेशों (1k-10k की सीमा) के बारे में बात कर रहे हैं। इसलिए कनेक्शन सेट-अप और पैकेट ओवरहेड महत्वपूर्ण मुद्दे नहीं हैं।


आप इस तरह के प्रश्न पर एक नज़र डाल सकते हैं ।
डारिन दिमित्रोव 23

1
क्या आप अपने आवेदन को थोड़ा और बढ़ा सकते हैं? उदाहरण के लिए, क्या यह बहुत सारे अल्पकालिक कनेक्शन स्थापित करता है? कनेक्ट करते समय, व्यक्तिगत संदेश कितना बड़ा होता है? (उदाहरण के लिए, हो सकता है आप टेलनेट के साथ हर कुंजी दबाएँ एक SSL सुरंग के ऊपर निस्तब्धता रहे हैं, या हो सकता है आप 1 Tb लॉग फाइल कॉपी कर रहे हैं।)
एरिक्सन

जवाबों:


178

परिमाण का क्रम: शून्य।

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

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


यहां एक दिलचस्प किस्सा है। जब Google ने HTTPS का उपयोग करने के लिए जीमेल को स्विच किया, तो अतिरिक्त संसाधनों की आवश्यकता नहीं थी; कोई नेटवर्क हार्डवेयर, कोई नया होस्ट नहीं। इसने केवल सीपीयू लोड को लगभग 1% बढ़ाया।


6
आप "अपनी HTTPS सेवा के लिए SSL सत्र कैसे सक्षम करते हैं"? इस बारे में जानने के लिए एक अच्छा संसाधन क्या है?
जस्टिन विन्सेंट

1
SSL सत्र सक्षम करना सर्वर-विशिष्ट है। अपने सर्वर के लिए मैनुअल पढ़ें।
erickson

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

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

3
@ जब मैंने एक समय में एक ही बाइट लिखते समय अंतरिक्ष के मामले में 42 के एक कारक द्वारा सादे सॉकेट्स के बहिष्कार एसएस सॉकेट्स को देखा है, जो सबसे खराब स्थिति है। कभी 250x नहीं देखा। मैंने 1700 डेटा बिंदुओं के साथ इंटरनेट पर एक व्यापक प्रयोग किया था, जहां सामान्य परिणाम यह था कि प्लेनटेक्स्ट सॉकेट्स एसएसबी के रूप में तीन गुना तेजी से बेहतर नहीं थे, प्रोग्रामिंग का उपयोग बफरिंग और फ्लशिंग की तुलना में अधिक परिष्कृत नहीं था। JSSE, शायद जावा 5 ने प्रयोग की तारीख दी।
लोर्ने

39

I दूसरा @erickson: शुद्ध डेटा-ट्रांसफर स्पीड पेनल्टी नगण्य है। आधुनिक सीपीयू कई एमबीटी / सेकेंड के क्रिप्टो / एईएस थ्रूपुट तक पहुंचते हैं। जब तक आप संसाधन की कमी वाले सिस्टम (मोबाइल फोन) पर नहीं हैं, तब तक टीएलएस / एसएसएल तेजी से डेटा को स्लिंग करने के लिए पर्याप्त है।

लेकिन ध्यान रखें कि एन्क्रिप्शन कैशिंग और लोड संतुलन को बहुत कठिन बनाता है। इसके परिणामस्वरूप बहुत बड़ा प्रदर्शन जुर्माना हो सकता है।

लेकिन कनेक्शन सेटअप वास्तव में कई एप्लिकेशन के लिए शो स्टॉपर है। कम बैंडविड्थ पर, उच्च पैकेट हानि, उच्च विलंबता कनेक्शन (ग्रामीण इलाकों में मोबाइल डिवाइस) टीएलएस द्वारा आवश्यक अतिरिक्त राउंडट्रिप्स कुछ बेकार में धीमी गति से प्रस्तुत कर सकते हैं।

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


20
4 साल की बाधा के साथ: चीन ने भी जानबूझकर सभी एसएसएल / टीएलएस ट्रैफिक को गड़बड़ कर दिया हो सकता है।
अधिकतम

3
चीन के इंटरनेट को सेंसर करना और हर किसी के ट्रैफ़िक को सूँघने की कोशिश करना वास्तव में खबर नहीं है। 4 साल की बाधा के साथ, आपको लगता है कि यह आपकी साइट के रास्ते में NSA MITMing था।
यूजीन बेरेसोव्स्की

परतदार कनेक्शन की कुंजी एन्क्रिप्शन को एक बार सेट करना है, और फिर पुन: बातचीत से बचें जब तक कि वास्तव में आवश्यक न हो, और दोनों पक्षों को बिना किसी पलक झपकाए किसी भी समय अपने आईपी पते को बदलने की अनुमति दें। (OpenVPN इसका समर्थन करता है।) IT विखंडन को संभव बनाने में मदद करता है, क्योंकि MTU बहुत अविश्वसनीय और सर्वथा बेईमान हो सकता है।
Evi1M4chine

12

यह मानते हुए कि आप कनेक्शन सेट-अप की गणना नहीं करते हैं (जैसा कि आपने अपने अपडेट में संकेत दिया है), यह दृढ़ता से चुने गए सिफर पर निर्भर करता है। नेटवर्क ओवरहेड (बैंडविड्थ के संदर्भ में) नगण्य होगा। क्रिप्टोग्राफी में सीपीयू ओवरहेड का प्रभुत्व होगा। अपने मोबाइल कोर i5 पर, मैं एक कोर पर RC4 के साथ लगभग 250 एमबी प्रति सेकंड एन्क्रिप्ट कर सकता हूं। (RC4 वह है जो आपको अधिकतम प्रदर्शन के लिए चुनना चाहिए।) एईएस धीमा है, लगभग 50 एमबी / एस प्रदान करता है। इसलिए, यदि आप सही सिफर चुनते हैं, तो आप क्रिप्टो ओवरहेड के साथ एक एकल वर्तमान कोर को रखने का प्रबंधन नहीं करेंगे, भले ही आपके पास 1 Gbit लाइन का पूर्ण उपयोग हो। [ संपादित करें : RC4 का उपयोग नहीं किया जाना चाहिए क्योंकि यह अब सुरक्षित नहीं है। हालांकि, एईएस हार्डवेयर समर्थन अब कई सीपीयू में मौजूद है, जो एईएस एन्क्रिप्शन को ऐसे प्लेटफार्मों पर वास्तव में तेज बनाता है।]

कनेक्शन स्थापना, हालांकि, अलग है। कार्यान्वयन के आधार पर (जैसे टीएलएस झूठी शुरुआत के लिए समर्थन), यह गोल-यात्राएं जोड़ देगा, जिससे ध्यान देने योग्य देरी हो सकती है। इसके अतिरिक्त, महंगा क्रिप्टो पहले कनेक्शन की स्थापना पर होता है (उपर्युक्त सीपीयू केवल प्रति सेकंड 14 कनेक्शन को स्वीकार कर सकता है यदि आप मूर्खतापूर्ण रूप से 4096-बिट कुंजी और 100 का उपयोग करते हैं यदि आप 2048-बिट कुंजियों का उपयोग करते हैं)। बाद के कनेक्शनों पर, पिछले सत्रों को अक्सर महंगा क्रिप्टो से बचने के लिए पुन: उपयोग किया जाता है।

इसलिए, संक्षेप में:

स्थापित कनेक्शन पर स्थानांतरण:

  • देरी: लगभग कोई नहीं
  • सीपीयू: नगण्य
  • बैंडविड्थ: नगण्य

पहला कनेक्शन स्थापना:

  • देरी: अतिरिक्त दौर यात्राएं
  • बैंडविड्थ: कई किलोबाइट (प्रमाण पत्र)
  • ग्राहक पर सीपीयू: मध्यम
  • सर्वर पर सीपीयू: उच्च

बाद में कनेक्शन प्रतिष्ठानों:

  • विलंब: अतिरिक्त राउंड-ट्रिप (सुनिश्चित नहीं है कि यदि एक या एकाधिक, कार्यान्वयन-निर्भर हो सकता है)
  • बैंडविड्थ: नगण्य
  • सीपीयू: लगभग कोई नहीं

महत्वपूर्ण नोट: किसी को भी आरसी 4 का फिर से उपयोग नहीं करना चाहिए। प्रोटोकॉल बाहों को टूटा हुआ माना जाता है और इसके साथ RC4 ट्रांसमिशन को देखा जाना चाहिए, जो कि स्पेकिंग संगठनों से सुरक्षा के लिए बहुत कम से कम अनएन्क्रिप्टेड ट्रांसमिशन के बराबर है। आजकल, ऐसे संगठनों से स्वतंत्रता के कारण chacha20-poly1305 जैसी कुछ चीज़ों को बल्क एन्क्रिप्शन के लिए जोरदार सिफारिश की जाती है।
Evi1M4chine
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.