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