ما هو nonce في VPN، ولماذا يؤدي إعادة استخدامه إلى كسر النفق
nonce قيمة لكل رسالة يجب ألا تتكرر أبدًا تحت مفتاح واحد، وهي عادةً تنتقل مكشوفة. تعديلها يدويًا هو الخطأ الذي يجب تجنبه.
يصادف معظم الناس كلمة nonce في ملف تعريف VPN ويظنون أنها سر مشترك آخر يُنسخ بين الطرفين. الأمر ليس كذلك. nonce قيمة يجب ألا تتكرر أبدًا تحت المفتاح نفسه، وفي معظم التشفير القائم على nonce تنتقل مكشوفة. يبقى الالتباس غير ضار حتى يعدّلها أحدهم يدويًا، وهنا يبدأ العطل الحقيقي.
من أين يأتي nonce فعليًا
يحتاج التشفير الموثّق إلى nonce مختلف لكل رسالة تُشفَّر تحت مفتاح. وتلبي البروتوكولات هذا الشرط بطرق مختلفة: عدّاد يزداد بشكل رتيب، أو ملح يُدمج مع معرّف حزمة، أو قيمة عشوائية طويلة بما يكفي. يتبادل IKEv2 قيم nonce خلال التبادل الأولي، وهي مدخلات علنية لاشتقاق المفتاح وليست أسرارًا.
يمكن أن تكون الفرادة بنيوية أو احتمالية. لا يمكن للعدّاد أن يتكرر حتى يدور، ولهذا يحدد البروتوكول نقطة إعادة توليد المفتاح قبل ذلك بوقت طويل. وتعتمد القيمة العشوائية على بتات كافية بحيث يكون التصادم غير محتمل ضمن حد الرسائل، وهي حجة مختلفة بنمط فشل مختلف. توضح وثائق البروتوكول أي طريقة تنطبق، وكلتاهما آمنة فقط ما دام الحد المعلن محترمًا.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
ما الذي تكلفه إعادة الاستخدام فعلًا
إعادة استخدام nonce تحت مفتاح واحد ليست مسألة كفاءة صغيرة. مع GCM، تسمح رسالتان تشتركان في IV للمراقب باستعادة مفتاح المصادقة وحساب الفرق الحصري بين النصين الصريحين. تعيد البنى القائمة على التدفق استخدام مفتاح التدفق بالطريقة نفسها، ما يحوّل النص المشفر إلى أحجية بدلًا من سر.
لهذا السبب تعيد التنفيذات توليد المفتاح قبل أن يدور العدّاد، ولهذا تتوقف بدل أن تستمر عندما تكون حالتها غير مؤكدة. إعادة تشغيل تعيد ضبط عدّاد بينما يحتفظ الطرف الآخر بالمفتاح القديم، أو جهاز ظاهري يُستعاد من لقطة أُخذت في منتصف الجلسة، هي بالضبط الحالة التي وُجدت الحدود لمنعها. لا حاجة إلى مهاجم؛ العمليات العادية تكفي.
لماذا تعديل الملف يدويًا هو الحل الخطأ
العدّادات والأملاح ومعرّفات الحزم آلات حالة يتشاركها الطرفان. تغيير أحد الجانبين يخرج الآخر عن التزامن، ويفشل النفق بطرق تبدو مشكلة توجيه. الرافعة المدعومة هي تبادل مفاتيح جديد، يعيد ضبط الحالة عند الطرفين في وقت واحد.
كلمات المرور وقيم nonce تؤدي أيضًا أدوارًا مختلفة. كلمة المرور مدخل سري لاشتقاق المفتاح؛ أما nonce فمدخل علني لكل رسالة. حقل في ملف التعريف يحمل تسمية nonce ويطلب سرًا طويلًا هو عادةً مفتاح ثابت أو سر مشترك مسبقًا تحت اسم آخر، لذا اقرأ وثائق ذلك الحقل بدلًا من الافتراض.
عندما يتعلق تنبيه أمني بمعالجة nonce، يكون الإصلاح هو إصدار المشرف المُصلَّح، لا شيفرة مختلفة أو مفتاح أقصر. تغيير الشيفرة لتجنب كلمة nonce ينقل المشكلة بدلًا من حلها.
قراءة تحذير دون تخمين
سطر سجل عن العدّادات أو قيم nonce يصف عادةً حالة مفقودة لا هجومًا. تحقق مما إذا كان أحد الطرفين قد أعيد تشغيله، وما إذا كان جهاز ظاهري مستنسخ قد أعاد استخدام الهوية نفسها، وما إذا كان الطرفان متفقين على إعدادات إعادة توليد المفتاح. ثم أنشئ جلسة جديدة وراقب ما إذا كانت الرسالة تعود.
افصل التشخيص عن الأعطال غير ذات الصلة. صفحة لا تُحمّل، أو مطالبة ببيانات اعتماد تدور في حلقة، ليست دليلًا على إعادة استخدام nonce، ومعاملتها كذلك تدفعك إلى الطبقة التشفيرية بينما المشكلة فوقها.
للاستخدام العادي، القاعدة الآمنة قصيرة: دع التنفيذ يدير nonce، وأبقِ الطرفين على إصدارات مدعومة، وتعامل مع أي إعادة ضبط للحالة كسبب لإعادة توليد المفتاح لا لتعديل قيمة. إذا لم يكن حقل في ملف التعريف موجودًا في وثائق المورّد، فلا تخترع له قيمة. يبدأ إصلاح النفق بمعرفة الطبقة التي تنظر إليها.