مفاتيح بسعة 8192 بت تعطّل المصافحة؛ ومجموعة DH بسعة 1024 بت تُرفض
خللان في الحجم بعلاجين متعاكسين: مفتاح أكبر من اللازم يستهلك وقت المصافحة حتى تنفد مهلة الطرف الآخر، بينما تُرفض مجموعة DH صغيرة قبل أن تبدأ.
لدى أحد الخوادم عملاء يتوقفون لبعض الوقت ثم يعيدون الاتصال، بينما يرفض خادم آخر الاتصالات فورًا برسالة عن حجم المفتاح. تبدو هذه أخطاء مختلفة، لكنها الخطأ نفسه يشير في اتجاهين متعاكسين. لتشفير المصافحة كلفة تنمو مع حجم المعاملات، وله أيضًا حد أدنى لا تنزل تحته المكتبات الحديثة. ضبط حجم المادة هو قائمة التحقق، وأول بند فيها هو تحديد أي الخللين لديك فعلًا.
اقرأ الفشل قبل أن تعيد توليد أي شيء
التوقيت يخبرك بمعظم القصة. المصافحة التي تستهلك بضع ثوانٍ ثم تفشل تعني عادةً أن الحساب تجاوز صبر الطرف الآخر، وهذا يشير إلى معاملات أكبر من طاقة العتاد أو من المهلة. الرفض الفوري الذي يذكر حجم مفتاح أو مجموعة يشير إلى الاتجاه الآخر، إلى مادة لن تقبلها المكتبة إطلاقًا.
هذان يحتاجان تصحيحين متعاكسين، وهنا تخطئ معظم المحاولات. إعادة توليد معاملات بسعة 8192 بت على عميل رفض بالفعل مجموعة صغيرة تزيد الحالة البطيئة سوءًا بينما لا تفعل شيئًا للحالة السريعة. سجّل العَرَض الذي لاحظته قبل أن تلمس أي ملف.
ثم افحص ما يُطلب من الطرف الآخر. الخادم المهيأ لمجموعة كبيرة من الحقل المحدود يفرض على كل عميل أن ينفق الزمن نفسه من المعالج في كل إعادة تفاوض، لا عند الاتصال فحسب. إذا ظهرت المشكلة على فاصل منتظم بدلًا من بدء التشغيل، فإن ذلك الفاصل تلميح قوي إلى الإعداد المكلف. إعادة التفاوض تعيد الحساب كله، لذا فالتوقف الذي يتكرر كل ساعة هو عادةً الكلفة نفسها تُدفع من جديد.
الحالة البطيئة: مادة لا يستطيع العتاد تحمّل كلفتها
ينمو عمل Diffie-Hellman وRSA بسرعة مع حجم المفتاح، ويحدث ذلك كله قبل أن يمر أي حركة في النفق. على موجّه صغير أو عميل محدود الطاقة، قد تدفع مجموعة كبيرة بما يكفي التبادل إلى ما بعد مهلة الطرف الآخر، فيعيد الاتصال المحاولة أو يبدو معلقًا دون أي خطأ.
العلاج هو النزول إلى حجم يدعمه كل طرف ويستطيع كل جهاز حسابه بارتياح. يبقى مفتاح RSA بسعة 2048 بت ومجموعة بسعة 2048 بت خط أساس متوافقًا على نطاق واسع؛ ولا يفيد الانتقال إلى أكبر إلا عندما توافق كل الأطراف ويستطيع المعالج دفع الكلفة في كل إعادة تفاوض. كل ما يزيد على خط الأساس هذا مقايضة متعمدة، وليس ترقية.
الحجم ليس نتيجة تنافس، وأكبر رقم في جدول مقارنة ليس الخيار الصحيح تلقائيًا. اختر أصغر قيمة تسمح بها سياستك ويقبلها كل الأطراف، ثم قِس المصافحة بدلًا من افتراض أنها تحسنت. المجموعة الأصغر التي تنتهي مهلتها مع ذلك تخبرك أن الحجم لم يكن القصة كاملة قط.
الحالة السريعة: مجموعة ترفضها المكتبة
تبني OpenSSL الحديثة ترفض أصغر مجموعات الحقل المحدود رفضًا قاطعًا، ورفع مستوى الأمان يزيد الحد الأدنى ارتفاعًا. برنامج ثابت الموجّه الذي يحزم ملف معاملات عمره عقود هو المصدر المعتاد، والعَرَض هو اتصال يفشل فورًا برسالة تذكر المجموعة أو حجم المفتاح. لا شيء في ذلك الفشل متقطع، وهذا ما يجعله سهل التعرّف.
استبدل الملف بدلًا من تعديل الإعداد لتجاوز الفحص. ولّد مجموعة حديثة، وتحقق منها، ثم ثبّتها حيث يقرأها البرنامج الخفي فعليًا. أبقِ الملف القديم حتى يتصل عميل بنجاح بالملف الجديد:
openssl dhparam -out /etc/openvpn/ffdhe2048.pem 2048
openssl dhparam -in /etc/openvpn/ffdhe2048.pem -check -noout
ls -l /etc/openvpn/ffdhe2048.pemأمر الفحص يتحقق من الملف ولا يطبع شيئًا مفيدًا عندما ينجح؛ والقائمة تؤكد أنك استبدلت الملف الذي تحمّله الخدمة لا نسخة قديمة بجانبه. وجّه الإعداد إلى ذلك المسار، وأعد تشغيل البرنامج الخفي، وتأكد من أن عميلًا كان يفشل سابقًا يكمل المصافحة الآن.
إذا كان الخادم يضبط أيضًا مستوى أمان أو ملف تعريف شهادة، فاقرأهما قبل أن تستنتج أن المجموعة كانت خاطئة. قد يرفض ملف التعريف الذي يشترط فئة أشد صرامة مادة كان الوضع الافتراضي سيقبلها، وإزالة ذلك الإعداد تغيير أضيق من تعطيل الفحص عالميًا.
اختر حجمًا يناسب الطرف الآخر والعتاد
اعرف ما يستطيعه الطرف البعيد قبل أن تولّد أي شيء غريب. الجهاز الأقدم من أن يتحمل مجموعة بسعة 2048 بت جهاز يجب استبداله، لأن توجيه الخادم إلى مجموعة أضعف يحوّل شكوى توافق إلى انقطاع خدمة فقط. الإصلاحات المتينة تتجه إلى برمجيات أحدث لا إلى معاملات أقدم. كل استثناء مؤقت في هذا المجال يجد طريقة ليصبح الإعداد الدائم.
حيث يكون معالج الخادم هو الحد، غيّر الخوارزمية بدلًا من النزول تحت السياسة. تبادل مفاتيح على منحنى بيضاوي مثل X25519 أرخص بكثير من مجموعة كبيرة من الحقل المحدود ومدعوم على نطاق واسع، مما يجعله الجواب الأفضل لشكوى أداء من معامل RSA أصغر.
أيًا كان ما تختاره، اختبره باتصال حقيقي واحد وراقب كم يستغرق المصافحة، لا مجرد إن كان سيتصل في النهاية. الاتصال الذي ينجح في اثنتي عشرة ثانية له السبب الجذري نفسه الذي لاتصال يفشل في خمس عشرة.
سجّل الخيار حتى لا يبطله إعادة البناء
أبقِ ملف المعاملات تحت إدارة الإعداد واكتب الحجم والسبب والتاريخ بجانبه. الخادم المعاد بناؤه الذي يولّد إعداداته الافتراضية بهدوء هو الطريق لعودة الخلل نفسه بعد ستة أشهر دون أن يستطيع أحد تفسير القرار الأصلي.
سجّل المعلومات نفسها بجانب نقطة النهاية وملف التعريف، حتى لا يضطر المراجع إلى استنتاجها عكسيًا من حجم ملف. عندما يتوقف الاتصال التالي، يكون ذلك التدوين هو الفرق بين فحص يستغرق خمس دقائق وتحقيق جديد. ويمنع أيضًا المهندس التالي من حل الحالة البطيئة بإصلاح مقصود للحالة السريعة.