الخلاصة

  • تحدد RFC 9106 مدخلات Argon2 1.3 ومعاملاته ومتجهات اختباره، لكنها لا تصادق على قدرة أي بنية تشغيلية للمصادقة.
  • ينبغي أن يفصل السجل التشغيلي بين كلفة الاستدعاء الواحد وبين التزامن وذروة الذاكرة والصف وسلوك الحمل الزائد ونسبة السجلات التي ما زالت على معاملات أقدم.

يصل طلب دخول واحد إلى أداة التحقق. يحتوي السجل على Argon2id، والإصدار 19، وملح فريد، و64 MiB من الذاكرة، وثلاث جولات، وأربعة مسارات. تنجح العملية. لكن السؤال الذي يحكم الخدمة يبقى بلا جواب: ماذا يحدث عندما تتزاحم مئات العمليات نفسها على الذاكرة والوقت؟

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

يدخل هذا الغلاف في الحساب نفسه. فكلمة المرور P والملح S والتوازي p وطول الوسم والذاكرة m والجولات t والإصدار والنوع كلها تدخل التجزئة الأولية، مع السر والبيانات المرتبطة الاختيارية. تُنظم الذاكرة في كتل حجمها 1 KiB وتوزع على p من المسارات. تتقدم المسارات بالتوازي داخل كل شريحة لكنها تتزامن عند الحدود، وتعود الجولات الإضافية إلى المصفوفة. لذلك لا تكفي عبارة «نستخدم Argon2id» لوصف الكلفة التشغيلية.

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

تعرض توصيتان موحدتان المفاضلة. تستخدم الأولى 2 GiB وجولة واحدة وأربعة مسارات. أما البديل المقيد بالذاكرة فيستخدم 64 MiB وثلاث جولات وأربعة مسارات. وتقدم الوثيقة أمثلة مرتبطة بمعالج 2 GHz، منها مصادقة خلفية بأربع نوى وثمانية مسارات و4 GiB ونصف ثانية. تلك نقاط مرجعية تحت افتراضات معلنة، وليست وعوداً للحاويات أو الأجهزة الافتراضية أو NUMA أو مخصصات الذاكرة أو عرض الحزمة أو ذيل زمن الاستجابة.

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

في هذه الفجوة يتحول إعداد يبدو قوياً إلى سياسة تشغيل هشة. ضرب 64 MiB في عدد العمليات المتزامنة يعطي حداً للتخطيط لا ملاحظة فعلية. تكاليف المكتبة وإعادة استخدام المخصص وعرض حزمة الذاكرة تغير النتيجة. ويجب على الخدمة أن تقرر سلوكها عند الحد: هل تضع الطلب في صف، أم ترفضه، أم تقيده، أم تنهيه، أم تخفف عملاً آخر، أم تفشل مغلقة؟ الرجوع الصامت إلى إعداد أرخص يغير الادعاء الأمني، واستنزاف العملية يحول كلفة الدفاع إلى أداة لضرب الإتاحة.

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

ولا بد من تقييد استنتاج كلفة الهجوم. تزيد دالة صلبة الذاكرة موارد كل تخمين وتفرض مفاضلة بين الزمن والمساحة، لكنها لا تكشف جودة كلمات المرور أو نطاق التسريب أو عتاد الخصم أو سعر الطاقة أو قيمة الحساب. وتصف RFC 9106 نفسها بأنها وثيقة Informational من IRTF لا مواصفة على Internet Standards Track، وتحذر من أن نتائج البحث قد لا تناسب النشر. سلطتها في دقة الخوارزمية، لا في منح شهادة لنظام لم تراقبه.

هذا أيضاً هو الحد الفاصل عن تغطية RFC 9807. يضع OPAQUE دالة اشتقاق على جهاز العميل ويفتح أسئلة إخفاء كلمة المرور وحفظ بذرة OPRF وترحيل السجلات. أما هنا فالاهتمام بأداة تحقق تقليدية على الخادم وبقدرتها حين تتحول الذاكرة والجولات والمسارات إلى طلبات متزامنة كثيرة. الأول خريطة بروتوكول وحفظ مفاتيح؛ والثاني دفتر سعة وأدلة.

ينبغي أن يحفظ إيصال التشغيل النوع والإصدار وسياسة الملح وm وt وp وطول الوسم وسياسة السر الاختياري؛ المكتبة وفئة العتاد؛ النسب المئوية للزمن في المسارات الباردة والدافئة؛ ذروة الذاكرة لكل عملية وللعملية المضيفة؛ عدد عمليات التحقق النشطة؛ عمق الصف والرفض والمهلة؛ الإلغاء والتنظيف؛ ضغط المعالج وعرض الحزمة؛ توزيع المعاملات؛ نجاح إعادة التجزئة وفشلها؛ ومسارات التقييد والتعافي والفشل. نجاح تجزئة واحدة هو أول السلسلة لا خاتمتها.

المصادر

المواصفة والحالة: RFC 9106، وسجل RFC Editor، وIETF Datatracker، وورقة Argon2. التاريخ التصميمي: Password Hashing Competition. متطلبات التحقق: إرشادات المصادقات لدى NIST وتحليل كلمات المرور لدى NIST. الحد البروتوكولي المجاور: RFC 9807. الإطار التحليلي: Minimum Initial Specification، وReality Layers، وRunning-Code Primacy.