एक एन्क्रिप्टेड VPN पैकेट आपकी सोच से कम महंगा क्यों हो सकता है
एक और क्रिप्टोग्राफ़िक लेबल एक और कार्य-इकाई नहीं है। पूरा रास्ता तुलना करें: AEAD निर्माण, CPU समर्थन, बफ़रिंग और तय किया गया डेटा मोड।
एक ही गेटवे पर दो प्रोफ़ाइल मापे जाते हैं, एक एन्क्रिप्शन के साथ और एक उसके बिना, और एन्क्रिप्टेड धीमा नहीं होता। कभी-कभी वह तेज़ होता है, जिससे आमतौर पर इस बात पर लंबी बहस छिड़ जाती है कि परीक्षण सही ढंग से चला था या नहीं। नतीजा विश्वसनीय है, क्योंकि पैकेट की लागत कॉन्फ़िगरेशन में क्रिप्टोग्राफ़िक शब्दों की संख्या नहीं है। वह उन क्रियाओं का समूह है जो कार्यान्वयन करता है, अपने उपलब्ध हार्डवेयर पर, अपने चुने हुए बफ़र लेआउट के अनुसार।
लक्षण: धीमा वाला एन्क्रिप्टेड प्रोफ़ाइल नहीं है
मान लीजिए कोई पुराना परीक्षण AEAD साइफ़र की तुलना „बिना एन्क्रिप्शन“ मोड से करता है, जो अब भी हर पैकेट के लिए अलग प्रमाणीकरण कोड गिनता है। दूसरा प्रोफ़ाइल पेलोड की सामग्री छिपाता है लेकिन प्रति-पैकेट हैश रखता है, और ऐसे प्रोसेसर पर जिसमें उस हैश के लिए त्वरण नहीं है, यह उस एकीकृत निर्माण से अधिक महंगा पड़ सकता है जिसे उसे हराना था।
कॉन्फ़िगरेशन का लेबल कहता है „एन्क्रिप्शन“, और ज़्यादातर तुलनाएँ बस लेबल ही देखती हैं। पैकेट का रास्ता कुछ और कहता है: एक प्रोफ़ाइल ऐसी संयुक्त क्रिया करता है जिसके लिए CPU के पास निर्देश हैं, और दूसरा ऐसी अलग क्रिया करता है जिसके लिए उसके पास निर्देश नहीं हैं। सिर्फ़ कॉन्फ़िगरेशन फ़ाइल पढ़ने से वह अंतर कभी नहीं खुलेगा, क्योंकि दोनों प्रविष्टियाँ एक पंक्ति जैसी दिखती हैं। सिर्फ़ तय किया गया मोड और उसके पीछे का कोड मार्ग नतीजा समझाते हैं।
यही पूरी व्याख्या है, और इसमें यह दावा करने की ज़रूरत नहीं कि कौन-सा प्रिमिटिव सार्वभौमिक रूप से तेज़ है। दोनों तेज़ हो सकते हैं, दोनों धीमे हो सकते हैं, और क्रम मशीन व कोड पर निर्भर करता है।
क्रियाएँ गिनें, लेबल नहीं
AEAD निर्माण, जैसा RFC 5116 में वर्णित है, कार्यान्वयन को एक ही इंटरफ़ेस देता है जो साइफ़रटेक्स्ट और टैग साथ लौटाता है। AES-GCM एक उदाहरण है: काउंटर मोड एन्क्रिप्शन, Galois प्रमाणक के साथ संयुक्त। इंटरफ़ेस अखंडता को मुफ़्त नहीं बनाता; वह संयोजन को सुस्पष्ट बनाता है, और यही कार्यान्वयन को जोड़ी को एक इकाई के रूप में अनुकूलित करने देता है।
Separate authentication path: payload -> independent HMAC -> framed packet AEAD path: payload -> authenticated encryption with tag -> framed packet
ये प्रसंस्करण के रेखाचित्र हैं, कॉन्फ़िगरेशन सलाह नहीं। पहले में गोपनीयता नहीं है पर वह फिर भी प्रमाणीकरण पर CPU खर्च करता है, और ठीक इसीलिए „एन्क्रिप्शन बंद करें“ का अर्थ „क्रिप्टोग्राफ़िक काम बंद करें“ नहीं है।
दूसरा सस्ता हो सकता है क्योंकि प्रोसेसर दोनों आधों के लिए निर्देश देते हैं: AES राउंड और वह कैरी-रहित गुणन जो Galois क्षेत्र उपयोग करता है। लाइब्रेरी अलग-अलग बफ़रों को समानांतर में संसाधित करती हैं, जिससे वे निर्देश मेमोरी के इंतज़ार के बजाय व्यस्त रहते हैं।
तय किया गया मोड वास्तव में क्या सक्षम करता है
Community OpenVPN में, AEAD डेटा साइफ़र का अर्थ है कि auth विकल्प अब अपना अलग डेटा-चैनल HMAC नहीं देता। एन्क्रिप्शन विकल्प का संदर्भ उस दायरे का वर्णन करता है, और इसीलिए टेक्स्ट फ़ाइल में एक जैसे दिखने वाले दो कॉन्फ़िगरेशन प्रति-पैकेट काम में भिन्न हो सकते हैं।
इच्छा-सूची नहीं, तय किया गया मोड पढ़ें। अनुमत साइफ़रों की सूची और TLS सूट का नाम आपको यह नहीं बताते कि पेलोड पर कौन-सी क्रियाएँ चलती हैं, और पुरानी cipher पंक्ति यह नहीं बता सकती कि मौजूदा कनेक्शन ने क्या चुना।
openvpn --show-ciphers | head -20 sudo grep -E 'cipher|auth' /etc/openvpn/server.conf
पहला कमांड उन साइफ़रों की सूची देता है जिन्हें बाइनरी समर्थन करती है, जो क्षमता-सूची है, तय किया गया परिणाम नहीं। दूसरा दिखाता है कि सर्वर वास्तव में क्या माँगता है। कनेक्शन लॉग ही अंतिम चुनाव की पुष्टि का स्थान है, क्योंकि क्लाइंट ऐसी किसी चीज़ पर गिर सकता है जिसे सर्वर अनुमति देता है पर जिसकी किसी ने नीयत नहीं की थी।
जो काम आप वास्तव में चलाते हैं उसे मापें
क्रिप्टोग्राफ़िक माइक्रोबेंचमार्क किसी प्रिमिटिव को उसकी अपनी शर्तों में मापता है। VPN स्थानांतरण बफ़र भी कॉपी करता है, थ्रेड या इंटरप्ट शेड्यूल करता है, नीति जाँचता है और नेटवर्क पार करता है। यही हिस्से अक्सर हावी होते हैं, और इसीलिए तेज़ प्रिमिटिव हमेशा तेज़ टनल नहीं बनाता।
openssl speed -evp aes-256-gcm openssl speed -evp sha1
ये दो कमांड आपके सामने की मशीन पर प्रिमिटिवों की मोटी स्थानीय तुलना देते हैं, और वे ईमानदार हैं कि ये माइक्रोबेंचमार्क हैं। वे आपकी टनल की थ्रूपुट के बारे में कुछ नहीं कहते, और उन्हें कभी उस रूप में उद्धृत नहीं करना चाहिए।
फिर जो काम मायने रखता है उसे मापें, बाकी सब स्थिर रखते हुए: वही एंडपॉइंट, वही पैकेट आकार, वही ट्रांसपोर्ट, वही कम्प्रेशन नीति। अगर प्रोफ़ाइल बदलाव ने ट्रांसपोर्ट या प्रोसेसिंग स्थान भी बदला, तो नतीजा उस बंडल का वर्णन करता है, क्रिप्टोग्राफ़ी का नहीं।
लक्ष्य भी नज़र में रखें। अतिरिक्त क्रिप्टोग्राफ़िक क्षमता वाला डेटा मार्ग अब भी विलंब से बँधा हो सकता है क्योंकि एप्लिकेशन आने-जाने वाली यात्राओं का इंतज़ार करता है, और बड़े पैमाने की क्षमता के लाभ बातूनी प्रोटोकॉल को ठीक नहीं करते। समर्थित और नीति-स्वीकृत कॉन्फ़िगरेशन को समग्र रूप से मापें, और „कम बक्से यानी तेज़ होना चाहिए“ को वही परिकल्पना मानें जो वह है। उपयोगी सवाल यह नहीं कि एन्क्रिप्शन की कोई कीमत है या नहीं, बल्कि यह कि क्या वह कीमत उस माप में दिखती है जिसकी आपको सचमुच परवाह है।