مفتاح IPsec المشترك مسبقًا: البايتات خلف السلسلة التي كتبتها
يمكن لطرفين الاحتفاظ بسلاسل تبدو متطابقة واشتقاق مفاتيح مختلفة. تحقق من نوع الحقل وأي ترميز والبايتات اللاحقة قبل إضعاف أي شيء.
يقارن مسؤولان السر على الشاشة، ويتفقان على أنهما متطابقان، ومع ذلك تفشل المصادقة في النفق. السلسلة التي قارناها ليست القيمة التي يغذيها أي من الطرفين في اشتقاق المفاتيح. بين الأحرف التي تراها والبايتات التي يجزئها البروتوكول يوجد نوع حقل وترميز نصي ومحرر وحافظة، وأي من هذه الأربعة يمكن أن يغير المدخلات دون أن يغير مظهرها. قارن البايتات، وسيظهر الاختلاف عادة في ثوانٍ.
ما تفعله البوابة بالسلسلة
لا يُرسَل المفتاح المشترك مسبقًا عبر الشبكة ليُقارَن. يغذي كل طرف نسخته المحلية في اشتقاق المفاتيح لتبادل IKE، ثم تتحقق حمولات المصادقة الناتجة أو لا تتحقق. يعني هذا التصميم أن النسختين يجب أن تكونا متطابقتين على مستوى البايت لا متشابهتين بصريًا، ويعني أيضًا أن الفشل يُبلَّغ عنه في مرحلة المصادقة لا في رسالة كلمة مرور خاطئة.
لذا فالسؤال المفيد ليس التشابه الظاهر، بل أي تسلسل دقيق من البايتات يجزئه كل تطبيق.
من أين تأتي البايتات الإضافية
السطر الجديد في النهاية هو الجاني الكلاسيكي، وهو يختفي أمام العين لأن معظم المحررات تضيفه بشكل غير مرئي عند حفظ الملف. المسافة البادئة أو اللاحقة الملصقة من نافذة دردشة تفعل الشيء نفسه، وكذلك علامة الاقتباس الذكية التي يستبدلها معالج النصوص بعلامة مستقيمة. لا يغير أي من ذلك المقارنة البصرية التي يجريها الإنسان.
قارن بأداة تعرض البايتات لا الحروف. يطبع printf '%s' "$PSK" | xxd | tail -2 ذيل القيمة بالنظام السادس عشري، حيث يكون 0a أو 20 الشارد واضحًا. افعل ذلك على الطرفين وقارن التفريغين جنبًا إلى جنب. افعل هذا على مادة اختبار مولدة، لا على سر إنتاجي تتركه بعد ذلك في سجل الصدفة.
الترميز ليس تشفيرًا
كثيرًا ما تحمل صادرات التكوين السر بترميز أساسي، أحيانًا مع فواصل أسطر كل ستين أو ستة وسبعين حرفًا وأحيانًا مع حشو. إذا كان أحد الطرفين يتوقع البايتات المفككة ولصقت النص المرمز، فأنت لم ترسل كلمة مرور مختلفة، بل أرسلت كلمة أطول بكثير مؤلفة من أحرف قابلة للطباعة. لا يوفر Base64 أي سرية على الإطلاق، ولهذا أيضًا لا يجوز أبدًا لصق سر مرمز في منتدى لطلب رأي ثانٍ.
قاموس IPSec من Apple مثال مفيد على أهمية النوع: فهو يوثق SharedSecret كبيانات لطريقة المصادقة بالسر المشترك في حمولات L2TP وCisco IPsec. هذه خاصية محددة في حمولة محددة، وليست حقل نص عام يمكنك إعادة استخدامه لبروتوكول آخر يطلب سرًا بالمناسبة.
الحد المزعوم يخص تركيبة واحدة
التقارير القديمة عن سقف اثنين وثلاثين حرفًا على عميل Apple واحد هي تقارير حقيقية عن إصدار عميل واحد وبروتوكول واحد وشكل ملف تعريف واحد. وهي ليست حدًا عالميًا لكل منصة Apple وكل مزود وكل بروتوكول. تحقق من الإصدار ونوع الحمولة ومتطلب البوابة معًا، ثم اختبر على ترتيب معتمد بدلًا من الاستنتاج من سلسلة نقاش. اكتب التركيبة المختبَرة في سجل التغيير، وإلا فإن الشخص التالي سيستشهد بالسلسلة نفسها بثقة أكبر مما تستحق.
إذا كان الحد ينطبق حقًا، فالحل هو تصميم بيانات اعتماد مدعوم يناسبه، لا نسخة مختصرة من سر قوي. إن اقتطاع مفتاح إنتاجي لإرضاء حد تخميني يقلل قوته بشكل دائم وينتج نظامًا لم تعد وثائقه تطابق أمنه.
أصلح التمثيل، لا القوة
عندما تفشل المصادقة بعد تأكيد التمثيل، اقرأ السياسة الفعلية في مرحلة المصادقة: أي طريقة يجري التفاوض عليها، وأي هوية نظير متوقعة، وهل البوابة تطابق الاتصال الذي تظنه. التخمينات الأضعف تدريجيًا ليست تشخيصًا، بل تخفيض تدريجي بطيء مرفق بتذكرة دعم.
إذا لم تستطع بيانات الاعتماد المطلوبة تلبية معيار المؤسسة، فغيّر التصميم إلى تصميم يستطيع. السر المشترك ذو الإنتروبيا الكافية، المولَّد مرة واحدة، والمحفوظ في حقل مُدار، والذي لا يُنشر أبدًا، إجابة جيدة تمامًا؛ أما نسخة أقصر منه فليست كذلك.