تقول الرسالة إن المفتاح الخاص ذو طول غير صحيح، وهذه الصياغة تشير أولًا إلى الترميز ثم إلى التشفير. مفاتيح WireGuard ترمّز 32 بايتًا بصيغة base64، ما ينتج 44 حرفًا بما في ذلك الحشو الأخير، لذا فالقيمة بحجم آخر ليست مفتاحًا مهما بدت عشوائية. ملء السلسلة حتى يقبلها المحلل ينتج قيمة سليمة الشكل لن يتعرف عليها أي نظير أبدًا.

خلف هذا الخطأ مهمتان مختلفتان: إصلاح نص مفتاح صالح، واستبدال هوية لم تعد تملكها. لكل منهما عواقب مختلفة، وإحداهما تبطل الطرف الآخر.

ما يتوقعه المحلل

مفتاح WireGuard هو 32 بايتًا من مادة المفتاح بصيغة base64 مع حشو قياسي، ما يعطي سلسلة ثابتة من 44 حرفًا. ترفض الأدوات كل ما لا يُفكّ ترميزه إلى 32 بايتًا بالضبط، لأن المنحنى الأساسي يأخذ سكالارًا من 32 بايتًا ولا شيء غيره. تستخدم القيم العامة والخاصة الترميز نفسه، لذا لا يستطيع المحلل معرفة أيّهما ألصقت من الصيغة وحدها. هذا الغموض مسؤول عن نصف الالتباس حول هذا الخطأ.

wg genkey | tee private.key | wg pubkey > public.key
base64 -d private.key | wc -c
wc -c private.key
wg show wg0 public-key

إذا فُكّ ترميز قيمتك إلى 32 بايتًا فطولها صحيح والشكوى تأتي من مكان آخر في الملف. وإذا فُكّ ترميزها إلى شيء أقصر فلديك مادة مقطوعة وليست مشكلة تنسيق.

تلف التنسيق أم مادة خاطئة؟

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

المادة الخاطئة حالة أخرى. كلمة المرور أو مفتاح الشهادة أو القيمة العامة كلها قد تبدو معقولة وتُفكّ إلى الحجم الخطأ. لا يحوّلها أي تنظيف إلى السكالار الذي يتوقعه النظير. تلك الحالة تحتاج هوية جديدة لا تعديلًا.

مفتاح عام في الحقل الخاص

أكثر الالتباس شيوعًا هو لصق قيمة عامة في الحقل الخاص، أو العكس. كلتاهما base64 صالحة من 32 بايتًا، لذا تنجح مراجعة الطول ويفشل المصافحة لاحقًا دون رسالة مفيدة. المفتاح الخاص هو السكالار الذي يولّد المفتاح العام، لذا يمكنك حسم الأمر باشتقاق القيمة العامة ومقارنتها بما يأذن به النظير. عندما لا تطابق القيمة المشتقة السجل، فأنت تحمل هوية خاطئة لا خطأ طباعيًا.

استبدال المفتاح الخاص للعميل دون تحديث المفتاح العام المصرّح به في الطرف الآخر يعيد إنشاء عدم التطابق نفسه، مع الالتباس الإضافي بأن ملف العميل نفسه يبدو الآن متسقًا مع ذاته. غيّر الطرفين في عملية واحدة، وإلا فسيصحح الشخص التالي النصف الخطأ.

أصلح الملف الشخصي ثم أثبت المصافحة

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

wg genkey | tee new.key | wg pubkey > new.pub
base64 -d private.key | wc -c
ip route get 10.60.9.5
wg show wg0 latest-handshakes

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

سجّل أي قيمة استبدلت وأين توجد النسخة المصرّح بها. من سيتعامل مع هذا النظير لاحقًا يحتاج إلى معرفة أي طرف تغيّر.

مقالات ذات صلة