اختيار اللغة

مولد مفاتيح وتوقيعات Web Bot Auth وRFC 9421

توليد أزواج مفاتيح Ed25519 بصيغتي JWK وPEM محلياً بالمتصفح، وإعداد دليل المفاتيح ونماذج ترويسات HTTP الموقعة.

مولد مفاتيح Web Bot Authكيف يعمل؟ ↓
أصل https الذي سيخدم دليل المفاتيح الخاص بك. يصبح قيمة ترويسة Signature-Agent.
يُستخدم فقط لطلب العينة الموقّع أدناه
يكتب nbf و exp في إدخال الدليل

يتم إنشاء زوج المفاتيح بواسطة Web Crypto API في متصفحك ولا يغادر هذه الصفحة أبدا. سيؤدي تحديث الصفحة إلى حذفه، لذا قم بتنزيل المفتاح الخاص قبل المغادرة.

Mehmet Demiray (محمد ديميراي) نُشِر آخر تحديث
مشاركة

ما هو بروتوكول Web Bot Auth ولماذا نحتاجه؟

تعتمد خوادم الويب لسنوات طويلة على ترويسة User-Agent وقوائم عناوين IP للتعرف على روبوتات محركات البحث ومجمعات البيانات الآلية. تعاني هذه الآليات التقليدية من ثغرات واضحة، إذ يسهل على أي طرف انتحال صفة روبوت شرعي بتغيير نص User-Agent، كما أن إدارة قوائم نطاقات عناوين IP الرسمية مكلفة وتفتقر إلى المرونة مع توسع البنى السحابية. يعالج مشروع مواصفات Web Bot Auth التابع لمجموعة عمل IETF هذه المشكلة عبر تقديم إثبات هوية رقمي غير قابل للتزوير يعتمد على معيار RFC 9421 لتوقيع رسائل HTTP.

تعتمد الآلية على امتلاك مشغل البوت زوج مفاتيح مشفرة من نوع Ed25519. يقوم المشغل بنشر المفتاح العام داخل دليل مفاتيح عام على نطاق موثق عبر HTTPS، ثم يوقع كل طلب HTTP يرسله البوت بمفتاحه الخاص المقابل. عندما يستقبل خادم الموقع الطلب، يستخرج ترويسات التوقيع ويتحقق منها عبر تنزيل المفتاح العام المنشور على نطاق المشغل. يتيح ذلك التحقق الفوري من أن الطلب صادر فعلياً عن الجهة المالكة للنطاق دون الحاجة إلى التنسيق اليدوي لعناوين الشبكة. على الرغم من أن هذه المعايير لا تزال ضمن مسودات عمل IETF، إلا أن كبرى محركات البحث ومطوري نماذج الذكاء الاصطناعي بدؤوا باعتمادها تدريجياً لتمييز الزواحف الموثوقة عن الهجمات الضارة.

مخرجات مولد المفاتيح واستخدامات كل حقل

يوفر مولد مفاتيح Web Bot Auth حزمة متكاملة لبدء تطبيق التوقيع الرقمي دون الحاجة إلى إعداد بيئات تشفير معقدة. عند إدخال نطاق الأصل الخاص بك مع تحديد مدة صلاحية المفتاح، ينتج المولد عدة مخرجات رقمية دقيقة:

  1. معرّف المفتاح keyid: وهو بصمة رقمية تمثل تجزئة SHA-256 لبنية JWK الخاصة بالمفتاح العام، وترمز باستخدام ترميز base64url وفق معياري RFC 7638 وRFC 8037.
  2. ملف دليل المفاتيح JSON: يحوي المفتاح العام فقط مع حقول اختيارية مثل nbf لتاريخ بدء الصلاحية وexp لتاريخ انتهائها، ويوضع في المسار القياسي للتحقق.
  3. ترويسات استجابة الدليل: تتضمن ترويسة Signature مع توقيع نموذجي صالح لمدة 24 س لإثبات صحة الدليل المنشور.
  4. المفتاح الخاص: متاح بصيغتين، إما كائن JWK أو ترميز PKCS#8 PEM، ويستخدمه برنامج الزاحف لتوقيع الطلبات الصادرة.
  5. المفتاح العام: متاح بصيغة SPKI PEM وJWK للتحقق المتبادل.
  6. نموذج طلب موقع: يتضمن أمر curl مع ترويسات Signature وSignature-Input وSignature-Agent كاملة، بالإضافة إلى نص قاعدة التوقيع المطابق تماماً لعمليات التحقق البرمجية.

نشر دليل المفاتيح العامة وإدارتها

لكي تتمكن المواقع المستقبلة من التحقق من توقيعات البوت، يجب استضافة ملف JSON للدليل على نطاق HTTPS المقابل لقيمة الترويسة Signature-Agent. يُنشر الملف تحت المسار الثابت /.well-known/http-message-signatures-directory مع تحديد نوع المحتوى application/json في ترويسات الاستجابة.

تتطلب مواصفات Web Bot Auth توقيع استجابة الدليل نفسها بواسطة المفتاح المنشور داخله، مما يمنع التلاعب بالملف عبر الوسطاء. يتضمن النموذج الذي يوفره المولد ترويسة توقيع نموذجية، ولكن في بيئة الإنتاج الفعلية، يتعين على خادم الويب الخاص بك إعادة توليد ترويسة Signature الخاصة بالدليل دورياً قبل انتهاء صلاحيتها المحددة.

يمكن ضبط دورة حياة المفاتيح باختيار صلاحية محددة مثل 30 يومًا أو 90 يومًا أو 365 يومًا، أو جعله مفتاحاً دائماً بدون تاريخ انتهاء. تتضمن الاستجابة عندئذٍ قيود الوقت Unix Epoch عبر الحقلين nbf وexp. تتيح هذه الحقول إجراء تدوير سلس للمفاتيح، حيث يمكن نشر المفتاح الجديد في مصفوفة الدليل قبل دخوله حيز التنفيذ الفعلي، مما يضمن استمرار عمل الزاحف دون انقطاع.

كيفية توقيع طلبات HTTP وفق معيار RFC 9421

يحدد معيار RFC 9421 طريقة بناء نص قاعدة التوقيع المسمى signature base، وهو النص المجرد الذي يتم إدخاله في خوارزمية التشفير لإنتاج التوقيع الثنائي. يعتمد مولد مفاتيح Web Bot Auth خوارزمية ed25519 لسرعتها وحجم مفاتيحها الصغير.

تتكون عملية التوقيع من خطوات محددة:

  1. اختيار المكونات المغطاة: يغطي التوقيع النموذجي مكون السلطة authority وترويسة signature-agent لربط الطلب بنطاق البوت.
  2. إعداد معلمات ترويسة Signature-Input: تشمل وقت الإنشاء created، ووقت الانتهاء expires المحدد عادة بخمس دقائق، ومعرف المفتاح keyid، والخوارزمية alg، وقيمة العشوائية nonce، والوسم tag المضبوط على القيمة web-bot-auth.
  3. تجميع أسطر قاعدة التوقيع: يوضع كل مكون متبوعاً بقيمته على سطر منفصل وفق المعيار الصارم، وينتهي بسطر يحدد معلمات التوقيع.
  4. التشفير والتشفير الرمزي: يُمرر النص عبر دالة التوقيع المشفرة باستخدام المفتاح الخاص، ثم تُرمز النتيجة الثنائية عبر صيغة ترميز Base64 القياسية لتوضع في ترويسة Signature.

تعد مطابقة نص قاعدة التوقيع بدقة البايت الواحد شرطاً أساسياً لنجاح التحقق، حيث يؤدي أي اختلاف في المسافات أو الترتيب إلى رفض الطلب.

الأمان والحفاظ على سرية المفتاح الخاص

يعتمد مولد مفاتيح Web Bot Auth على واجهة Web Crypto البرمجية المدمجة مباشرة داخل متصفحك لتوليد أزواج مفاتيح Ed25519 محلياً بالكامل. لا يتم إرسال المفتاح الخاص أو أي من معلمات التوليد إلى أي خادم خارجي، مما يضمن بقاء أسرار التشفير تحت سيطرتك التامة.

نظراً لأن الأداة تعمل من جانب العميل فقط ولا تحتفظ بأي سجلات أو قواعد بيانات، فإن إعادة تحميل الصفحة أو إغلاق التبويب يؤدي إلى مسح المفاتيح غير المحفوظة فوراً وبشكل دائم. يجب عليك تنزيل المفتاح الخاص فور إنشائه بصيغة JWK أو PKCS#8 PEM وحفظه في مخزن أسرار آمن مثل HashiCorp Vault أو خدمات إدارة المفاتيح السحابية.

يجب الانتباه بدقة إلى عدم نشر المعامل d الموجود في كائن JWK الخاص بالمفتاح، حيث يمثل هذا المعامل المفتاح السري ذاته. يتضمن الدليل العام المنشور على الخادم المعامل x فقط، وهو الجزء المتاح للعموم للتحقق من التوقيعات دون تمكينهم من انتحال هويتك.

التكامل مع ملفات التحكم بالزواحف وفهرسة المحتوى

يقتصر دور بروتوكول Web Bot Auth على إثبات هوية الزاحف والتحقق من تبعيته للنطاق المعلن، لكنه لا يمنح الإذن التلقائي بالوصول إلى كافة صفحات الموقع. يخضع سلوك الزواحف بعد التحقق من هويتها لسياسات الوصول التي يحددها مالك الموقع.

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

عندما يقترن التوقيع الرقمي الموثوق مع الامتثال الصارم لقواعد الفهرسة، يستطيع مديرو الخوادم توفير نطاق ترددي مخصص للزواحف المفيدة مع حظر البوتات المجهولة التي تستهلك موارد الخادم دون إذن.

الأكثر شيوعًا.

كيف أقوم بإعداد Web Bot Auth للبوت أو زاحف الويب الخاص بي؟

يبدأ الإعداد بتوليد زوج مفاتيح Ed25519 عبر أداة مولد مفاتيح Web Bot Auth، ثم استضافة ملف الدليل العام بصيغة JSON على النطاق الخاص بك تحت المسار المحدد. بعد ذلك، يقوم البوت بتوقيع ترويسات كل طلب HTTP يرسله باستخدام المفتاح الخاص وفق معيار RFC 9421، مما يسمح لخوادم الويب بالتحقق من هوية البوت برمجيا دون الاعتماد على عناوين IP متغيرة.

هل يتم إرسال المفتاح الخاص إلى خوادمكم أثناء التوليد؟

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

ما هو معرّف المفتاح keyid وكيف يتم حسابه؟

معرّف المفتاح هو بصمة JWK Thumbprint محددة وفق معيار RFC 7638 ومعيار RFC 8037. يتم حسابه بأخذ تجزئة SHA-256 للتمثيل النصي المتسلسل للمفتاح العام بصيغة JWK وترميز الناتج بصيغة base64url، مما يمنح كل مفتاح معرّفا فريدا غير قابل للتكرار يُستخدم في ترويسة التوقيع Signature-Input.

لماذا تعتمد مسودات Web Bot Auth على خوارزمية Ed25519؟

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

قمت بإعادة تحميل الصفحة واختفت المفاتيح، هل يمكن استرجاعها؟

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

ما الفرق بين Web Bot Auth والتحقق التقليدي عبر User-Agent أو نطاقات IP؟

يسهل تزييف نص User-Agent في الطلبات، كما أن صيانة قوائم IP أصبحت معقدة في بيئات السحاب الموزعة. تقدم Web Bot Auth إثباتا مشفرا يربط الطلب بنطاق البوت مباشرة، بينما تكتمل المنظومة بتحديد صلاحيات الزحف عبر مولد AI Crawler robots.txt ثم اختبار القواعد من خلال أداة فحص robots.txt.

كيف أختار مدة الصلاحية المناسبة للمفتاح؟

يعتمد الاختيار على سياسة تدوير المفاتيح في مؤسستك؛ فالخيارات قصيرة الأجل مثل 30 يومًا أو 90 يومًا ترفع مستوى الأمان وتحد من أثر تسرب المفاتيح المحتمل، بينما يقلل خيار 365 يومًا أو المفاتيح دائمة الصلاحية من عبء التحديث الدوري لملف الدليل البرمجي.