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

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

دور أرقام التسلسل في أنفاق الشبكات المشفرة

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

ضمن رابطة الأمان لبروتوكول IPsec (المعروفة بـ SA)، يخصص الطرف المرسل رقم تسلسل يتصاعد بدقة مع كل حزمة ESP مرسلة. ويؤدي هذا الرقم وظيفتين جوهريتين: ١. توفير مدخلات فريدة لمتجهات التهيئة (IV) والرموز العشوائية في تشفير AEAD لمنع تكرار المفاتيح. ٢. تمكين البوابة المستقبلة من اكتشاف الإطارات المكررة وإسقاط الحزم التي تقع خارج النطاق الزمني المسموح به.

+-----------------------------------------------------------------------------+
|                     بنية تغليف حزمة IPSEC ESP وفق معيار RFC 4303            |
+-----------------------------------------------------------------------------+
| ترويسة IP الخارجية | حقل SPI (32 بت) | رقم تسلسل الحزمة (32 بت) | الحمولة...|
+-----------------------------------------------------------------------------+

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

آلية النافذة المنزلقة لمنع إعادة الإرسال في IPsec ESP وفق RFC 4303

نظراً لأن النقل عبر الشبكة قد يسلم الحزم بغير ترتيبها، لا يمكن للمستقبل رفض أي حزمة لمجرد أن رقمها أقل من الرقم السابق. وبدلاً من ذلك، يحدد معيار RFC 4303 خوارزمية النافذة المنزلقة باستخدام قناع بتات بعرض $W$، يتم ضبطه عادة بين 32 و1024 بتاً.

       <- إسقاط الحزم القديمة -> | <- نطاق النافذة المنزلقة (العرض W) -> | <- حزم مستقبلية ->
  ... ---------------------------+---------------------------------------+-------------> التسلسل
                                 ^                                       ^
                            (M - W + 1)                                  M (أعلى رقم موثق)

تحتفظ البوابة المستقبلة بمتغيرين رئيسيين:

  • $M$: أعلى رقم تسلسلي تم التحقق منه واستلامه بنجاح.
  • قناع بتات بحجم $W$: يمثل حالة أرقام التسلسل البالغ عددها $W - 1$ السابقة لـ $M$.

تقدم النافذة وتتبع حالة قناع البتات

عند وصول حزمة ESP تحمل رقم التسلسل $S$ إلى البوابة، تفحص خوارزمية الحماية قيمة $S$ مقارنة بحدود النافذة قبل إجراء أي عملية فك تشفير مستهلكة للطاقة:

  • الحالة الأولى ($S > M$): الحزمة أحدث من كافة الحزم المستلمة سابقاً. يجري فحص قيمة ICV. وعند النجاح، تنزلق النافذة نحو الأمام بإزاحة قناع البتات إلى اليسار بمقدار $(S - M)$ خانة، مع تعيين $M = S$ وتحديد البت الخاص بـ $S$.
  • الحالة الثانية ($M - W + 1 \le S \le M$): الحزمة تقع داخل نطاق النافذة الحالية. يفحص المستقبل البت المقابل عند الإزاحة $(M - S)$. وإذا كان البت محدداً مسبقاً، تُسقط الحزمة فوراً كنسخة مكررة. وإذا كان غير محدد، تُفحص الحزمة ويُضبط البت إلى 1.
  • الحالة الثالثة ($S < M - W + 1$): الحزمة تقع يسار النافذة خارج النطاق. تسقط البوابة الحزمة مباشرة دون فك تشفيرها وتزيد عداد الحزم المرفوضة.

قواعد إسقاط حزم ESP القديمة والمكررة

يوفر الفرز المسبق قبل فك التشفير كفاءة تشغيلية عالية. فمن خلال التأكد من حداثة التسلسل قبل استدعاء الدوال الحسابية الثقيلة، تعطل البوابة الحزم المكررة بأقل استهلاك ممكن للمعالج.

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

نفاد مساحة أرقام التسلسل 32 بت عند السرعات العالية

خصصت مواصفات IPsec الأصلية (RFC 2401) مساحة 32 بتاً لحقل التسلسل. وتتيح مساحة 32 بت استيعاب $2^{32} - 1 \approx 4.29 \times 10^9$ حزمة قبل حدوث الالتفاف. ومع تزايد سرعات الروابط الحديثة، تنفد هذه السعة بسرعة فائقة:

سرعة الاتصال متوسط حجم الحزمة معدل تدفق الحزم الوقت حتى استنفاد 32 بت
1 غيغابت/ثانية 1400 بايت 89.2 ألف حزمة/ث 13.3 ساعة
10 غيغابت/ثانية 1400 بايت 892.8 ألف حزمة/ث 80.0 دقيقة
40 غيغابت/ثانية 1400 بايت 3.57 مليون حزمة/ث 20.0 دقيقة
100 غيغابت/ثانية 1400 بايت 8.92 مليون حزمة/ث 8.0 دقائق
100 غيغابت/ثانية 64 بايت 148.8 مليون حزمة/ث 28.8 ثانية

عند نفاد المساحة الرقمية دون دعم أرقام التسلسل الممتدة، تتوقف حركة البيانات حتى يكتمل تفاوض IKEv2 لإنشاء رابطة أمان جديدة. ويؤدي تجديد المفاتيح المتكرر إلى إجهاد المعالج وانقطاع عابر للحزم.

أرقام التسلسل الممتدة ESN: سلامة 64 بت دون حمولة إضافية

قدم المعياران RFC 4303 وRFC 4304 أرقام التسلسل الممتدة (ESN) لتوسيع المساحة إلى 64 بتاً ($2^{64} - 1 \approx 1.84 \times 10^{19}$ حزمة). وحتى مع روابط 100 غيغابت/ثانية بالحزم الصغيرة، يواصل العداد العمل لقرون دون الحاجة لتجديد مفاتيح التشفير.

وتحافظ تقنية ESN على عرض النطاق دون المساس بهيكل الحزمة على السلك، حيث تواصل ترويسة ESP إرسال البتات الـ 32 الأدنى فقط ($Seq_{low}$).

+-----------------------------------------------------------------------------+
|                 معمارية أرقام التسلسل الممتدة (ESN وفق RFC 4303)            |
+-----------------------------------------------------------------------------+
| المنقول عبر السلك:       [ حقل SPI 32 بت ] [ الـ 32 بت الأدنى للتسلسل ]     |
| المخزن داخلياً:          [ الـ 32 بت الأعلى للتسلسل ]                       |
| الموثق عبر قيمة ICV:     [ الـ 32 بت العليا الضمنية ] + [ كامل إطار ESP ]   |
+-----------------------------------------------------------------------------+

إعادة بناء البتات العليا عبر حالة العداد الضمنية

نظراً لأن $Seq_{low}$ فقط هو ما يمر عبر السلك، يستنتج المستقبل البتات الـ 32 العليا ($Seq_{high}$) اعتماداً على موضع النافذة:

١. إذا كان $Seq_{low} \ge M_{low}$، فإن الحزمة تنتمي للمرحلة الحالية، ويتم تعيين $Seq_{high} = M_{high}$. ٢. إذا كان $Seq_{low} < M_{low}$ ضمن حدود النافذة، يربط المستقبل $Seq_{low}$ مع القيمة $M_{high}$. ٣. عند اقتراب $M_{low}$ من حد الالتفاف $2^{32} - 1$، يحدد النظام ما إذا كانت الحزمة تمثل مرحلة جديدة $M_{high} + 1$ أم حزمة متأخرة من المرحلة $M_{high}$.

ولإحباط محاولات فك التزامن، تغطي قيمة ICV كامل الرقم ذي الـ 64 بتاً. وإذا تلاعب المهاجم بالأرقام، يفشل التحقق الرياضي وتسقط الحزمة مباشرة.

توجيه طوابير بطاقة الشبكة وإعادة ترتيب الحزم في المعالجات متعددة الأنوية

توزع الخوادم الحديثة حركة البيانات الواردة بين أنوية المعالج باستخدام ميزة Receive Side Scaling (RSS). في الحزم غير المشفرة، تعتمد RSS على تجزئة الحقول الخمسة. ولكن في حزم IPsec ESP المشفرة، تكون منافذ النقل مخفية بالكامل.

لذلك تعتمد بطاقات الشبكة في تجزئة حزم ESP على عنواني IP المصدر والوجهة وحقل SPI ذي الـ 32 بتاً فقط.

[ تدفق حزم ESP الواردة ] ---> [ تجزئة بطاقة الشبكة RSS (IP + SPI) ]
                                      |
                      +---------------+---------------+
                      v                               v
               [ نواة المعالج 0 ]              [ نواة المعالج 1 ]
               (معالجة فك التشفير)             (معالجة فك التشفير)
                      \                               /
                       +-------------> <-------------+
                                      |
                         [ وصول الحزم بترتيب مبعثر ]
                                      v
                      [ فحص نافذة منع إعادة الإرسال ]

تنافس الأقفال وفقدان الحزم مع النوافذ القياسية

عندما تتولى عدة أنوية معالجة حزم تابعة لرابطة أمان واحدة عالية السرعة، فإن الفروق الزمنية البسيطة تؤدي إلى تشتت الترتيب. فقد تصل حزمة من النواة 1 قبل حزمة النواة 0 بمئات الخانات.

وإذا بقيت النافذة $W$ مضبوطة على الإعداد القديم (32 أو 64 حزمة)، يؤدي هذا التشتت إلى إسقاط كارثي للحزم:

  • تدفع النواة 1 المؤشر $M$ للأمام بمقدار 120 موقعاً.
  • تسلم النواة 0 لاحقاً حزمة برقم $S < M - W + 1$.
  • تسقط البوابة المستقبلة هذه الحزمة السليمة معتبرة إياها قديمة.

يؤدي هذا الإسقاط الخاطئ إلى إطلاق إعادة الإرسال السريع لبروتوكول TCP وانهيار نافذة الازدحام. ويمكن لمهندسي الشبكات فحص مسارات التوجيه باستخدام أداة معرفة عنوان IP.

الخرائط البتية القابلة للتوسع: تحسين RFC 6479 للأنفاق عالية الكثافة

تقوم الخوارزميات التقليدية بإزاحة مصفوفة البتات خطياً مع وصول كل رقم أحدث. ومع النوافذ الصغيرة، تنجز هذه العملية عبر أمر إزاحة واحد (bitmask <<= shift).

ولكن لاستيعاب تشتت المعالجات متعددة الأنوية، يتطلب الأمر توسيع النافذة $W$ إلى 1024 أو 4096 حزمة. وإزاحة كتلة ذاكرة بحجم 4096 بتاً مع كل حزمة يخلق ضغطاً هائلاً على ممر الذاكرة وينهك الذاكرة المخبأة للمعالج.

يعالج المعيار RFC 6479 هذا الاختناق بتطبيق مخزن بتي دائري دون الحاجة لإزاحة البتات:

+-----------------------------------------------------------------------------+
|             بنية المخزن الدائري لقناع إعادة الإرسال وفق RFC 6479            |
+-----------------------------------------------------------------------------+
| كتلة 0 (64 بت)   | كتلة 1 (64 بت)   | ... | كتلة N (64 بت)                  |
+-----------------------------------------------------------------------------+
         ^                                      ^
   المؤشر: (Seq / 64) % إجمالي_الكتل        مؤشر الموضع الرأسي

في تصميم RFC 6479:

  • تُقسم الخريطة البتية إلى كتل ثابتة بحجم 32 أو 64 بتاً.
  • يُربط رقم الحزمة بمؤشر الكتلة عبر عملية القسمة المتبقية: index = (seq / 64) % total_banks.
  • مع تقدم النافذة، يعيد النظام ضبط الكتل التي مر عليها المؤشر فقط دون نسخ شامل للذاكرة.
  • تستغرق عملية التحقق زمناً ثابتاً $O(1)$ بصرف النظر عن اتساع النافذة.

ضبط نوافذ منع إعادة الإرسال في أنظمة Linux XFRM وBSD

توفر أنظمة التشغيل الحديثة أدوات فعالة لتوسيع حجم النوافذ وتفعيل خاصية ESN.

في بيئة Linux، تدير طبقة XFRM حالات الأمان عبر أداة iproute2. ولإنشاء رابطة SA بنافذة دائرية تتسع لـ 1024 حزمة ودعم ESN:

# ضبط حالة XFRM بنافذة تتسع لـ 1024 حزمة وخاصية ESN
ip xfrm state add src 198.51.100.1 dst 203.0.113.1 \
    proto esp spi 0x1a2b3c4d reqid 1 mode tunnel \
    replay-window 1024 flag esn \
    aead "rfc4106(gcm(aes))" 0x0123456789abcdef0123456789abcdef01234567 128

ولمتابعة إحصاءات الحزم المسقطة على خوادم Linux:

# استعراض عدادات إسقاط الحزم في طبقة XFRM
ip -s xfrm state show spi 0x1a2b3c4d

توضح المخرجات سعة replay-window وعداد الأخطاء replay. وإذا تزايد هذا العداد تحت الضغط دون وجود هجوم فعلي، فإن سعة النافذة الحالية غير كافية لتعويض الفروق بين الأنوية.

وفي بيئات FreeBSD وOpenBSD، يتم التعديل عبر متغيرات النواة:

# تعديل عمق نافذة استقبال ESP في أنظمة BSD
sysctl net.inet.ipsec.esp_replaywindow=1024

وفي برمجيات إدارة المفاتيح مثل StrongSwan، تُفعَّل ESN بإضافة الرمز esn لمقترحات المرحلة الثانية (esp=aes256gcm128-esn!).

كيف تحل تقنية RiceGuard مشكلة إعادة الترتيب دون ثغرات أمنية

تعتمد شبكة VPNRice محرك التسريع المبتكر RiceGuard في جميع عقد الخوادم العالمية. وبدلاً من إجبار مديري النظم على التضحية بالأمان للحفاظ على سرعة المعالجة، توظف RiceGuard مساراً متكيفاً للتعامل مع اضطراب التدفق.

[ حركة بيانات المستخدم ] -> [ توجيه التدفق الذكي RiceGuard ] -> [ أنوية المعالجة المتوازية ]
                                     |
                                     v
            [ مصفوفة نوافذ 4096 بت RFC 6479 ] -> [ تسليم سلس للبيانات دون فقد ]

١. توجيه التدفق نحو نواة مخصصة: تحلل RiceGuard بيانات الاتصال الداخلية قبل التغليف، وتثبت كل جلسة TCP أو UDP على نواة معالجة معينة، مما يضمن وصول الحزم بترتيب سليم. ٢. مصفوفة النافذة التكيفية 4096 بت: عند تقلب مسارات النقل الوسيطة لبروتوكول BGP، توسع RiceGuard قناع التحقق تلقائياً حتى 4096 حزمة وفق RFC 6479 لتفادي الإسقاط الخاطئ. ٣. تزامن العتاد لخاصية ESN: تدمج البوابات إدارة عدادات 64 بت مباشرة داخل معالجات التشفير العتادية لمنع حدوث أي هبوط في السرعة عند وصول حركة النقل إلى 100 غيغابت/ثانية.

وللحصول على تجربة اتصال آمنة ومستقرة عبر أجهزة الحواسيب والهواتف الذكية، يمكن تثبيت التطبيق الرسمي.

تحميل VPNRice.

يمكن للمهندسين المتخصصين في إدارة البنى التحتية الاطلاع على تحليلنا الفني حول رصد أعطال الشبكة في أجزاء من الثانية مع BFD ومطالعة تفاصيل عمل النوافذ المنزلقة في WireGuard. كما ننصح بالاطلاع على دليل التحكم في الازدحام عبر خوارزمية TCP BBR.

قائمة التحقق الهندسية لبوابات IPsec عالية الإنتاجية

يتطلب نشر منظومة دفاع قوية ضد هجمات إعادة الإرسال في الشبكات السريعة مراعاة ما يلي:

  • التحقق من تفعيل ESN: تأكد من أن إعدادات IKEv2 تلزم استخدام ESN لكافة مقترحات ESP Child SA لتجنب التفاف العداد ذي الـ 32 بتاً.
  • توسيع حجم نافذة التحقق: زد حجم النافذة من القيمة الافتراضية 32/64 إلى 512 أو 1024 حزمة على الأقل للواجهات العاملة بسرعة 1 غيغابت/ثانية فأعلى.
  • تفعيل الخرائط البتية RFC 6479: تأكد من أن نواة النظام تدعم المصفوفات الدائرية لتفادي إجهاد المعالج بعمليات الإزاحة المستمرة.
  • مواءمة توزيع التجزئة لبطاقة الشبكة: نسق طوابير الاستقبال أو استخدم التغليف في UDP (وفق NAT-T RFC 3948) لتوزيع الحزم المتناظرة بالتساوي بين مسارات العتاد.
  • مراقبة مؤشرات إسقاط الحزم: تابع مقاييس XfrmInReplayError (في Linux SNMP) أو netstat -s -p esp في Prometheus لرصد الإسقاط الناتج عن التشتت مبكراً.
  • الالتزام بفحص السلامة الكامل: تجنب تعطيل فحص إعادة الإرسال نهائياً (replay-window 0) كحل سريع، فهذا التصرف يجعل البوابة عرضة لهجمات حجب الخدمة الخطيرة.