چرا یک بسته 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
این دو فرمان مقایسهٔ محلی تقریبی بنیادینها را روی ماشین پیش روی شما میدهند و صادقاند که ریزسنجشاند. هیچ چیزی دربارهٔ توان عبوری تونل شما نمیگویند و هرگز نباید بهعنوان آن نقل شوند.
سپس باری را بسنجید که اهمیت دارد، با ثابت نگهداشتن همهچیز دیگر: همان نقطهٔ پایانی، همان اندازههای بسته، همان ترابری، همان سیاست فشردهسازی. اگر تغییر پروفایل ترابری یا محل پردازش را هم تغییر داده است، نتیجه همان بسته را توصیف میکند نه رمزنگاری را.
هدف را هم در نظر داشته باشید. مسیر دادهای با ظرفیت رمزنگاری مازاد میتواند هنوز به تأخیر محدود باشد زیرا برنامه منتظر رفتوبرگشتها است، و سود ظرفیت انبوه یک پروتکل پرگو را درست نمیکند. پیکربندی پشتیبانیشده و تأییدشده توسط سیاست را بهصورت کلی بسنجید و «جعبههای کمتر باید سریعتر باشد» را همان فرضیهای بدانید که هست. پرسش سودمند این نیست که آیا رمزنگاری هزینهای دارد، بلکه این است که آیا هزینه در سنجشی که واقعاً برایتان مهم است دیده میشود.