تشكل دوال التجزئة المشفرة (Cryptographic Hash Functions) ورموز مصادقة الرسائل (MAC) الركيزة الهيكلية للأنفاق الشبكية الآمنة. فبينما تتولى خوارزميات التشفير المتناظر حماية سرية البيانات المنقولة، تتولى دوال التجزئة مهام بناء الثقة في الجلسة، وربط الهويات المؤقتة، وتأكيد سلامة سجل التفاوض، وفحص شرعية الحزم الواردة قبل تنفيذ العمليات الرياضية غير المتناظرة الباهظة. لعقود طويلة، اعتمدت البروتوكولات التقليدية مثل IPsec و OpenVPN على عائلة SHA-2 (خاصة SHA-256 و SHA-512) المعتمدة في معايير NIST FIPS 180-4. ورغم انتشارها، فإن التنفيذ البرمجي لخوارزمية SHA-256 على أجهزة التوجيه المدمجة (embedded routers) ذات المعالجات 32 بت والعتاد المنخفض الطاقة يكشف عن اختناقات حاسوبية ملحوظة.

تخلى بروتوكول WireGuard عن هياكل التجزئة القديمة معتمداً بالكامل على خوارزمية BLAKE2s المحددة في معيار RFC 7693. وتعمل هذه الخوارزمية بالتكامل مع Curve25519 و ChaCha20-Poly1305 لتوفر قوة أمنية تضاهي SHA-256 و SHA-3 مع استهلاك دورات معالجة أقل بكثير. ومن خلال دمج نمط التجزئة بالمفتاح الأصلي في إطار مصافحة Noise_IKpsk2 ونظام الحماية من هجمات حجب الخدمة (DoS) عديم الحالة، يحقق WireGuard كفاءة خوارزمية وحصانة هيكلية ضد هجمات القنوات الجانبية.

قيود خوارزمية SHA-256 ومخاطر هجمات تمديد الطول

لفهم الضرورة الهندسية لاعتماد BLAKE2s، ينبغي استعراض التحديات البنيوية الكامنة في خوارزميات التجزئة الكلاسيكية:

  1. بنية ميركل-دامغارد (Merkle-Damgård): تقسم خوارزميات التجزئة التقليدية البيانات إلى كتل ثابتة الحجم (512 بت في SHA-256) وتمررها عبر دالة ضغط تكرارية. ويتحول متجه الحالة الداخلي الناتج عن آخر كتلة مباشرة إلى ناتج التجزئة العلني.
  2. استغلال تمديد الطول (Length Extension Attack): نظراً لأن ناتج SHA-256 يمثل الحالة الداخلية الكاملة لوحدة الضغط، يستطيع المهاجم الذي يعرف قيمة التجزئة $H(M)$ وطول الرسالة $M$ إضافة بيانات جديدة $M'$ في النهاية وحساب قيمة تجزئة صحيحة $H(M \mathbin{\Vert} \text{pad} \mathbin{\Vert} M')$ دون الحاجة إلى معرفة المفتاح السري أو محتوى $M$. ولذلك، فإن آليات المصادقة البسيطة المعتمدة على بادئة المفتاح $H(\text{Key} \mathbin{\Vert} \text{Message})$ غير آمنة هيكلياً.
  3. أعباء بنية HMAC المزدوجة: لمعالجة ثغرة تمديد الطول، طور خبراء التشفير معيار HMAC (RFC 2104). يعتمد هذا المعيار على مسارين متداخلين من التجزئة:

$$\text{HMAC}(K, M) = H\big((K \oplus \text{opad}) \mathbin{\Vert} H((K \oplus \text{ipad}) \mathbin{\Vert} M)\big)$$

ورغم أن HMAC يبطل هجمات تمديد الطول، إلا أنه يفرض معالجة كتلتين تمهيديتين منفصلتين (ipad و opad) لكل رمز مصادقة. وفي حزم المصافحة الشبكية المتكررة، يسبب هذا الإجراء المزدوج استهلاكاً غير مبرر لموارد نواة النظام.

بنية BLAKE2s: تصميم ARX بمقدار 32 بت وإطار HAIFA التكراري

صُممت خوارزمية BLAKE2s على يد جان-فيليب أومسون، وصامويل نيفيز، وزوكو ويلكوكس، وكريستيان وينرلير، وجرى تحسينها خصيصاً للمعالجات ذات معمارية 32 بت، حيث تنتج مخرجات تجزئة قابلة للتخصيص حتى 256 بت انطلاقاً من كتل بيانات بحجم 512 بت.

إطار HAIFA ومقاومة هجمات تمديد الطول من الأساس

تستبدل BLAKE2s نموذج ميركل-دامغارد التقليدي بإطار HAIFA (HAsh Iterative FrAmework). يحقن هذا الإطار بيانات وصفية صريحة في كل كتلة ضغط:

  • عداد إزاحة البايتات ($t_0, t_1$): عدد صحيح بحجم 64 بت يسجل بدقة إجمالي عدد بايتات البيانات المعالجة حتى الكتلة الحالية.
  • راية الكتلة الختامية ($f_0, f_1$): حقل ثنائي مخصص يضبط على القيمة 0xFFFFFFFF حصرياً أثناء ضغط الكتلة الأخيرة من الرسالة.

تتلقى دالة الضغط 4 مدخلات مستقلة: متجه الحالة بحجم 256 بت $h$، وكتلة البيانات بحجم 512 بت $m$، وعداد الإزاحة $t$، وراية الإنهاء $f$. وبما أن الكتلة الختامية تدمج قناع بت معكوس في مصفوفة الضغط، فإن ناتج التجزئة النهائي لا يمكن استخدامه كحالة وسطية لإلحاق بيانات لاحقة. وبهذا تسقط هجمات تمديد الطول رياضياً، مما يسمح لـ BLAKE2s بالعمل كدالة شبه عشوائية (PRF) ورمز مصادقة MAC بشكل مباشر.

مصفوفة الحالة 4×4 وعملية جولة الربع (Quarter-Round)

تهيئ خوارزمية BLAKE2s مصفوفة عمل داخلية تتألف من 16 كلمة بحجم 32 بت ($v_0 \dots v_{15}$، بإجمالي 512 بت). تستقبل الكلمات الثماني العليا قيم الربط الحالية $h_0 \dots h_7$، بينما تستقبل الكلمات الثماني السفلى متجهات التهيئة القياسية (IV) مدمجة مع عداد الإزاحة ورايات الإنهاء:

فهرس الصف العمود 0 العمود 1 العمود 2 العمود 3
الصف 0 $h_0$ $h_1$ $h_2$ $h_3$
الصف 1 $h_4$ $h_5$ $h_6$ $h_7$
الصف 2 $IV_0$ $IV_1$ $IV_2$ $IV_3$
الصف 3 $IV_4 \oplus t_0$ $IV_5 \oplus t_1$ $IV_6 \oplus f_0$ $IV_7 \oplus f_1$

تعتمد عملية الخلط على دالة $G$ المستمدة من قلب تشفير ChaCha. تعمل الدالة على 4 كلمات حالة وكلمتي بيانات، وتنفذ حصرياً عمليات ARX (الجمع المعياري بمقدار $2^{32}$، والتدوير الثنائي، والجمع الحصري XOR):

$$a \leftarrow a + b + x; \quad d \leftarrow (d \oplus a) \lll 16;$$ $$c \leftarrow c + d; \quad b \leftarrow (b \oplus c) \lll 12;$$ $$a \leftarrow a + b + y; \quad d \leftarrow (d \oplus a) \lll 8;$$ $$c \leftarrow c + d; \quad b \leftarrow (b \oplus c) \lll 7;$$

تنفذ الخوارزمية 10 جولات خلط كاملة. تطبق كل جولة 4 تحويلات للأعمدة بالتناوب مع 4 تحويلات للأقطار وفق جدول تباديل ثابت $\sigma_0 \dots \sigma_9$. وتجري جميع العمليات على وحدات الحساب والمنطق (ALU) في أزمنة تنفيذ ثابتة دون استخدام جداول بحث في الذاكرة، مما يوفر مناعة تامة ضد هجمات القنوات الجانبية المعتمدة على الذاكرة المخبأة.

النمط المفتاحي الأصلي: مصادقة أحادية المسار دون HMAC

يعد النمط المفتاحي المدمج (Keyed Mode) من أبرز إنجازات BLAKE2s. عند تمرير مفتاح سري (يصل طوله إلى 32 بايت)، تدون الخوارزمية طول المفتاح في كتلة المعاملات الأولية، وتضع المفتاح مباشرة داخل أول كتلة بحجم 512 بت مع ملء الباقي بالأصفار.

تمر بايتات الرسالة التالية عبر كتل الضغط الاعتيادية. ويوفر هذا النهج أحادي المسار (Single-Pass) فوائد تقنية واضحة:

  • ضمانات أمنية صارمة: تعمل الخوارزمية كرمز مصادقة MAC موثوق دون الحاجة إلى تعقيدات إطارات HMAC.
  • توفير حجز الذاكرة: تجري معالجة المفتاح في نفس مسار تدفق البيانات دون الحاجة لتبديل سياق الذاكرة.
  • تقليص دورات المعالجة بأكثر من 50%: تكتمل مصادقة الحزم القصيرة مثل ترويسات الحزم ورموز ملفات تعريف الارتباط في دورة ضغط واحدة، بدلاً من دورات الاستدعاء المتتالية المطلوبة في HMAC-SHA256.

مواقع توظيف BLAKE2s في بروتوكول WireGuard

يوظف بروتوكول WireGuard خوارزمية BLAKE2s في مختلف مراحل تأسيس النفق وتأمينه:

1. تجزئة سجل مصافحة Noise_IKpsk2

خلال تبادل المفاتيح، يجب التأكد من عدم قدرة أي طرف ثالث على التلاعب بالمفاتيح العامة المؤقتة أو الطوابع الزمنية أو المفتاح المشترك مسبقاً (PSK). يحتفظ البروتوكول بقيمتين تشفيريتين متجددتين:

  • مفتاح السلسلة ($ck$): يتجدد بعد كل عملية رياضية عبر دالة اشتقاق المفاتيح HKDF المعتمدة على BLAKE2s.
  • تجزئة المصافحة ($h$): ناتج تجزئة تراكمي يتحدث وفق المعادلة $h \leftarrow \text{BLAKE2s}(h \mathbin{\Vert} \text{البيانات})$. تدمج جميع المعاملات المنقولة في $h$، مما يضمن تطابق سجل المفاوضات لدى الطرفين وحصانته من التعديل.

2. منظومة الحماية عديمة الحالة من هجمات DoS (رمزا MAC1 و MAC2)

تتعرض بوابات الشبكة الحدودية لسيل من الحزم المزيفة بهدف استنزاف موارد المعالج والذاكرة. يحمي WireGuard خوادمه عبر إضافة حقلي MAC بطول 16 بايت لكل حزمة مصافحة:

  • MAC1: رمز مصادقة بطول 128 بت يحسب على ترويسة الحزمة باستخدام المفتاح العام للمستقبل:

$$\text{MAC1} = \text{BLAKE2s-128}\big(\text{Hash}(\text{المفتاح العام للمستقبل}), \text{msg}_{0..k}\big)$$

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

  • MAC2: عندما يواجه الخادم ضغطاً شبكياً كبيراً، يمتنع عن إجراء عمليات ضرب المنحنيات البيضاوية Curve25519 ما لم يقدم المرسل رمز تحقق صالحاً. يرسل الخادم حزمة تحتوي على ملف تعريف ارتباط مشفر (Cookie). يعيد المرسل إرسال حزمة المصافحة متضمنة MAC2 المحسوب على كامل الحزمة (بما فيها MAC1) باستخدام الرمز كرمز سري:

$$\text{MAC2} = \text{BLAKE2s-128}\big(\text{Cookie}, \text{msg}_{0..k+16}\big)$$

وبفضل سرعة BLAKE2s الفائقة، يتحقق الخادم من صحة الطلبات الواردة دون تخزين حالات الجلسات، مما يحيد هجمات الحرمان من الخدمة الموسعة.

تسريع المعالجة عبر SIMD وبنية RiceGuard

تتناغم مصفوفة BLAKE2s بامتياز مع تعليمات الحوسبة الشعاعية الحديثة (SIMD). وتتيح تعليمات مثل ARM NEON و AVX2 و AVX-512 معالجة 4 تحويلات لجولة الربع بالتوازي في دورة تعليمة شعاعية واحدة. وفي بيئات الخوادم الحديثة، ينجز BLAKE2s معالجة البيانات بسرعة تقل عن 3 دورات معالج لكل بايت.

وفي بنية خوادم RiceGuard، تخضع العمليات التشفيرية لمعايير تشغيلية صارمة:

  • توزيع الأحمال عبر طوابير النواة (padata): توزيع حسابات التحقق والمصافحة بالتساوي على جميع أنوية المعالج المتاحة، لمنع تكدس الحزم في أوقات الذروة.
  • المقارنة الزمنية الثابتة للرموز: تجري مطابقة وسوم MAC1 و MAC2 بواسطة الدالة الآمنة crypto_memneq التي تفحص كامل البايتات الـ 16 بغض النظر عن موقع الخطأ، مما يبطل تسريبات التوقيت كلياً.
  • التطهير الفوري للذاكرة الحساسة: تمسح مفاتيح السلاسل ونواتج التجزئة المؤقتة من الذاكرة العشوائية فور استخدامها بواسطة memzero_explicit، لضمان عدم بقاء أي بيانات حساسة في خطوط الذاكرة المخبأة.

يوفر دمج معمارية ARX بمقدار 32 بت مع الحصانة الطبيعية ضد تمديد الطول والمصادقة أحادية المسار أرضية صلبة لتأمين شبكات VPN الحديثة بكفاءة وموثوقية عالية.

تحميل VPNRice