الخلاصة

  • وصف RFC 1948 مهاجماً يرى رقم البدء في اتصال حقيقي، وينتحل عنوان جهاز يثق به الخادم، ثم يخمن رقم الخادم التالي لإكمال مصافحة لا يرى جوابها.
  • حافظ التصميم على الساعة المتقدمة M لمرات فتح الاتصال بين الأطراف نفسها، وأضاف إزاحة سرية F لكل مجموعة من عنوانين ومنفذين. عينة من محادثة واحدة لا تكشف نقطة انطلاق المحادثة الأخرى.

بدأ اللص بزيارة عادية: فتح اتصال TCP بنفسه وسجل رقم البداية الذي اختاره الخادم. شرح RFC 1948 المنشور في مايو 1996 كيف تساعده هذه العينة على توقع رقم اتصال تالٍ. بعد ذلك استخدم عنوان IP لجهاز يثق به الخادم. ذهب رد الخادم إلى الجهاز الحقيقي، بعيداً عن عين المحتال. لكن تخمين الرقم، مع إسكات الجهاز الأصلي، سمح له بإرسال الإقرار الأخير. خدمة تنفيذ أوامر تثق بالعنوان قد تستقبل رسائله بوصفها رسائل الصديق المنتظر.

الثغرة كانت في الصلة بين محادثتين. كشف الاتصال الحقيقي رقم تسلسل ابتدائياً، ISN. وصفت الوثيقة تطبيقات مشتقة من Berkeley تزيد هذا الرقم بخطوات قابلة للتوقع بمرور الوقت ومع كل اتصال جديد. احتاج الاتصال المزور الرقم التالي. إذا استنتجه المهاجم من العينة الأولى، أمكنه إتمام المصافحة من دون رؤية الرد المرسل إلى ضحيته. شباك التذاكر كشف ترتيب التذاكر المقبلة لمن سأل بلطف.

قد يبدو اختيار رقم عشوائي تماماً لكل اتصال علاجاً سهلاً. لكن مواصفة TCP الأصلية، RFC 793، جعلت ساعة أرقام البدء تتقدم حتى لا تبدو حزمة متأخرة من فتح سابق لنفس الاتصال حزمة جديدة عند عودته. وذكر RFC 1948 معالجة TIME-WAIT في الأنظمة المشتقة من BSD. احتاجت الاتصالات المختلفة بدايات لا تربطها علاقة ظاهرة، بينما احتاجت العودة إلى الاتصال ذي الأطراف نفسها تقدماً زمنياً. قرعة بلا بنية تحل نصف المسألة وتربك النصف الآخر.

قسم RFC 1948 العمل بين الساعة والسر. هوية اتصال TCP تضم عنوان IP والمنفذ المحليين، وعنوان IP والمنفذ البعيدين. اقترح حساب رقم البدء بصيغة M + F(المجموعة الرباعية). M عداد الزمن المتحرك؛ وF إزاحة تستخرج من هوية الاتصال وبيانات سرية. لكل مجموعة رباعية مسار أرقام مستقل. حين تعود المجموعة نفسها، تدفعها الساعة إلى الأمام. مشاهدة تذكرة من مسار لا تعطي بداية المسار المجاور.

كان إخفاء F شرط نجاح الفكرة. اقترح RFC 1948 تجزئة تشفيرية للمجموعة الرباعية مع مادة سرية، وذكر MD5 مثالاً متاحاً في ذلك الوقت. ناقش عشوائية العتاد، وسراً خاصاً بالجهاز، ووقت إقلاعه وهويته. إذا أمكن حساب الإزاحة من الخارج، استعاد اللص خريطة الشباك. أتاحت الصيغة كذلك تجنب حفظ سجل دائم لكل اتصال أغلق.

تبديل السر أثناء التشغيل يحمل فاتورة أخرى. سيتحرك مسار المجموعة الرباعية عند إعادة استخدامها، وربما كانت حزم الفتح السابق ما زالت في الطريق. ربط RFC 1948 هذا التبديل بحفظ حالة الاتصالات المنتهية أو بفترة هدوء تعادل ضعف الحد الأقصى لعمر القطاع. السر يفصل المسارات بعضها عن بعض، والساعة ترتب مرات المرور في المسار الواحد. قبل تركيب قفل جديد، ينبغي النظر إلى ما علق بالباب القديم.

رفع RFC 6528 الصادر عام 2012 التصميم إلى مسار المعايير، وحل محل RFC 1948، وحدّث RFC 793. حدد الدالة شبه العشوائية ومدخلات العناوين والمنافذ والمفتاح السري، واحتفظ ببنية M + F، وناقش طول المفتاح وتغييره. ظل ابتكار 1996 واضحاً: الزمن يحدد ترتيب عودة هوية الاتصال، والسر يمنع الانتقال من رقم تلك الهوية إلى أرقام الهويات الأخرى.

ما زال بوسع اللص طلب تذكرة حقيقية وقراءتها. أخذ منه RFC 1948 المسطرة التي تقيس بها بداية الشباك المجاور. بقيت الإزاحة خلف المنضدة.