FlowingDev

قوة كلمة المرور، شرح مُبسّط: المكوّن السري لسرّك هو... الرياضيات

تعلم كيف تُقاس قوة كلمة المرور باستخدام الإنتروبي، وهو مفهوم من نظرية المعلومات يحدد كمية عدم القدرة على التنبؤ ويُقدّر وقت الاختراق.

جرّب الأداة: قوة كلمة المرور

في جملة واحدة

قوة كلمة المرور تقيس مقدار التخمين (أو "الإنتروبي") الذي يحتاجه المهاجم لاختراق سرك، مترجمةً هذا الجهد الحاسوبي الخام إلى تقدير زمني يمكن للبشر فهمه.

المشكلة التي يحلها

في البدء، كانت الحواسيب، وكان لديها بيانات، وكان الوضع جيدًا. ولكن بعد ذلك، أراد أناس آخرون رؤية تلك البيانات، فاخترعنا كلمة المرور. في البداية، كانت الأمور بسيطة. root، admin، guest. كان الأمر يتعلق بالتحكم الأساسي في الوصول أكثر من كونه أمانًا، أشبه بخزانة ملفات بقفل واهٍ.

ثم حدث الإنترنت. فجأة، لم تعد تلك الحواسيب في غرفة مغلقة فحسب؛ بل أصبحت متصلة بكل حاسوب آخر على هذا الكوكب. أصبح القفل الواهي الآن يحرس الباب الأمامي لحياتك الرقمية، وأصبح المهاجمون بارعين جدًا في فتحه.

أولاً جاء هجوم القوة الغاشمة (brute-force attack): محاولة كل تركيبة ممكنة. 'a'، 'b'، 'c'، ... 'aa'، 'ab'، ... وهكذا. هذا ينجح، لكنه بطيء. لذلك أصبح المهاجمون أذكى. أدركوا أن البشر كسالى ويمكن التنبؤ بهم. أدى هذا إلى هجوم القاموس (dictionary attack): بدلاً من تجربة axfsvj، لماذا لا نجرب password، sunshine، أو 123456؟ لقد كان فعالاً بشكل مدمر.

قاوم مديرو الأنظمة بفرض سياسات: "يجب أن تكون كلمة مرورك بطول 8 أحرف وتحتوي على رقم واحد وحرف كبير واحد!" المستخدمون، وكعادتهم مبدعون في اتباع القواعد، استجابوا بـ Password1، Password2، والكلاسيكية الخالدة P@$$w0rd1. خلقت قواعد التعقيد هذه شعورًا زائفًا بالأمان.

كنا بحاجة إلى طريقة أفضل لقياس جودة كلمة المرور. ليس عن طريق وضع علامات اختيار لأنواع الأحرف، ولكن عن طريق قياس عشوائيتها الحقيقية غير القابلة للتنبؤ. كنا بحاجة إلى طريقة لقياس مدى "صعوبة التخمين". هنا يأتي دور مفهوم قوة كلمة المرور، المتجذر في مجال نظرية المعلومات الرياضي. إنه يوفر مقياسًا رسميًا - الإنتروبي (entropy) - لتقدير المدة التي يمكن أن تصمد فيها كلمة المرور في وجه هجوم عنيف من مهاجم مصمم يمتلك حاسوبًا فائقًا.

كيف يعمل من الداخل

في جوهره، تقدير قوة كلمة المرور هو لعبة أرقام. نحن نحاول حساب حجم كومة القش التي يجب على المهاجم البحث فيها للعثور على إبرتك الوحيدة، أي كلمة مرورك.

### الإنتروبي: الرقم السحري

وحدة قياس قوة كلمة المرور هي الإنتروبي (entropy)، وتُقاس بـ "البت". في نظرية المعلومات، الإنتروبي هو مقياس لعدم اليقين أو العشوائية. بالنسبة لكلمات المرور، فإنه يحدد مدى عدم القدرة على التنبؤ بكلمة مرورك.

الصيغة الأساسية بسيطة بشكل جميل:

Entropy = log₂(Search Space)

"فضاء البحث" (Search Space) هو العدد الإجمالي لكلمات المرور الممكنة وفقًا لمجموعة معينة من القواعد. بالنسبة لكلمة مرور بسيطة تم إنشاؤها عشوائيًا، يتم حساب فضاء البحث على النحو التالي:

Search Space = N ^ L

حيث:

  • N هو عدد الأحرف الممكنة في مجموعة الأحرف (مجموعة الرموز التي يمكنك الاختيار منها).
  • L هو طول كلمة المرور.

دعنا نعوض ذلك في الصيغة الرئيسية: Entropy = log₂(N ^ L)، والتي تُبسّط إلى Entropy = L * log₂(N).

بعض أحجام مجموعات الأحرف الشائعة (N):

  • أرقام فقط (0-9): N = 10
  • أحرف إنجليزية صغيرة (a-z): N = 26
  • أحرف إنجليزية بحالات مختلفة (صغيرة وكبيرة) (a-z, A-Z): N = 52
  • أحرف وأرقام بحالات مختلفة (a-z, A-Z, 0-9): N = 62
  • جميع رموز لوحة المفاتيح ASCII: N ≈ 95

لذا، بالنسبة لكلمة مرور مكونة من 8 أحرف تستخدم أحرفًا صغيرة فقط، يكون الإنتروبي هو 8 * log₂(26)، وهو ما يقرب من 8 * 4.7 = 37.6 بت.

ماذا يعني "37.6 بت" في الواقع؟ كل بت من الإنتروبي يضاعف فضاء البحث. لذا، فإن كلمة مرور ذات إنتروبي 38 بت أصعب في الاختراق بمرتين من كلمة مرور ذات 37 بت. هذا النمو الأسي هو السبب في أن إضافة حرف أو حرفين عشوائيين فقط يمكن أن يزيد القوة بشكل كبير.

### من الإنتروبي إلى زمن الاختراق

البتات رائعة لأجهزة الكمبيوتر، لكن البشر يفكرون بالدقائق والسنوات والدهور. للحصول على تقدير لزمن الاختراق، نحتاج إلى عنصر إضافي واحد: سرعة تخمين المهاجم.

هذا متغير بدرجة كبيرة. قد يتم تقييد هجوم عبر الإنترنت (online attack) (التخمين ضد نموذج تسجيل دخول مباشر) إلى 10 تخمينات في الثانية. لكن السيناريو الأكثر واقعية هو هجوم دون اتصال (offline attack)، حيث يكون المهاجم قد سرق قاعدة بيانات تحتوي على "هاش" (hashes) كلمات المرور. باستخدام وحدات معالجة الرسوميات (GPUs) الحديثة، يمكنهم إجراء مليارات أو حتى تريليونات من عمليات الهاش في الثانية.

لنفترض أن مهاجمًا قويًا يمكنه إجراء 10 مليارات (10¹⁰) تخمين في الثانية. عدد التخمينات المطلوبة لضمان العثور عليها هو 2^Entropy. في المتوسط، سيجدونها في منتصف الطريق، لذلك يمكننا تقدير الوقت:

Crack Time = (2^Entropy / 2) / GuessesPerSecond

إليك كيف تتصاعد الأمور بسرعة:

الإنتروبي (بت) إجمالي التخمينات متوسط وقت الاختراق بسرعة 10¹⁰ هاش/ثانية مستوى الأمان
30 ~1 مليار < 0.1 ثانية تافه
40 ~1 تريليون ~1 دقيقة ضعيف جداً
50 ~1 كوادريليون ~15 ساعة ضعيف
60 ~1 كوينتيليون ~1.8 سنة مقبول
70 ~1 سكستيليون ~1,800 سنة قوي
80 ~1 سبتليون > عمر الكون قوي جداً

يوضح هذا الجدول لماذا حتى بضعة بتات إضافية من الإنتروبي تحدث فرقًا هائلاً.

### ما هو أبعد من القوة الغاشمة: مشكلة الأنماط

الصيغة البسيطة L * log₂(N) بها عيب كبير: تفترض أن كل حرف يتم اختياره بعشوائية تامة. البشر لا يعملون بهذه الطريقة. نحن نستخدم كلمات وتواريخ واستبدالات متوقعة. P@$$w0rd1 ليست سلسلة عشوائية من 9 أحرف ASCII.

هنا حيث تصبح مقاييس قوة كلمات المرور الحديثة ذكية حقًا. أفضلها، مثل مكتبة zxcvbn الشهيرة من Dropbox، لا تكتفي بحساب الإنتروبي الساذج. بل تتصرف مثل المهاجم وتحاول إيجاد الطريقة "الأرخص" لإنشاء كلمة مرورك.

  1. التقسيم (Chunking): يقومون بتقسيم كلمة المرور إلى أجزاء. Tr0ub4dor&3! تصبح Tr0ub4dor، &، 3، !.
  2. مطابقة الأنماط (Pattern Matching): يقومون بتحليل كل جزء ومقارنته بأنماط متعددة:
    • كلمات القاموس: هل troubador موجودة في قاموس إنجليزي؟ (نعم). هل هي شائعة؟ (نعم).
    • الاستبدالات الشائعة: هل Tr0ub4dor تبدو مثل troubador مع استبدال o -> 0 و a -> 4؟ (نعم).
    • أنماط لوحة المفاتيح: هل هي تسلسل مثل qwerty أو asdfg؟
    • التواريخ: هل تبدو مثل 1999 أو 2024؟
    • الأحرف المكررة: هل هي شيء مثل aaaaaa؟
  3. تحليل التكلفة: يقومون بحساب الإنتروبي لكل جزء بناءً على نمطه. كلمة قاموس شائعة لها إنتروبي أقل بكثير من سلسلة عشوائية بنفس الطول. إنتروبي password ليس 8 * log₂(52)؛ بل هو أقرب إلى log₂(20000)، لأنه تخمين واحد من قائمة كلمات المرور الشائعة.
  4. التجميع: يضيفون إنتروبي الأجزاء "الأرخص" للحصول على تقدير قوة واقعي ومُختبر ميدانياً. هذا هو السبب في أن correct-horse-battery-staple تحصل على درجة أعلى بكثير من Tr0ub4dor&3، على الرغم من أن الأخيرة "تبدو" أكثر تعقيدًا.

قصص من الواقع

### سياسة الشركة التي أتت بنتائج عكسية

طرحت شركة تقنية متوسطة الحجم سياسة كلمات مرور جديدة صارمة: 10 أحرف كحد أدنى، حرف كبير واحد، رقم واحد، ورمز واحد. كان الهدف هو فرض كلمات مرور ذات إنتروبي عالٍ. ما حصلوا عليه هو قوة عاملة من المستخدمين ينشئون كلمات مرور مثل Summer2024!، Fall2024!، و Winter2025!. مقياس قوة ساذج سيعطي هذه الكلمات درجة جيدة. ولكن عندما اخترق مهاجم حسابًا ذا صلاحيات منخفضة وعرف النمط، لم يكن بحاجة إلى استخدام القوة الغاشمة. لقد كتب ببساطة سكربت لتجربة كل تركيبة من الفصول والسنوات، وسرعان ما تمكن من الوصول إلى عشرات الحسابات.

الدرس المستفاد: التعقيد المفروض غالبًا ما يولد أنماطًا متوقعة. يجب على مقياس القوة الجيد اكتشاف هذه المخططات الشائعة ومعاقبتها.

### تجلي "Correct Horse Battery Staple" من XKCD

نشرت القصة المصورة على الويب XKCD شريطًا أصبح الآن أسطوريًا يوضح قوة كلمة المرور. قارنت Tr0ub4dor&3، وهي كلمة مرور "معقدة" نموذجية، بـ correct horse battery staple، وهي عبارة مرور مكونة من أربع كلمات شائعة ولكنها عشوائية. في حين أن Tr0ub4dor&3 يصعب على الإنسان تذكرها، فإن مزيجها من الاستبدالات والأنماط يمنحها إنتروبي قابل للحساب يمكن لمخترق متفرغ أن يتغلب عليه في أيام. أما عبارة المرور المكونة من أربع كلمات، فهي سهلة التذكر للإنسان. بافتراض قاموس من 2048 كلمة شائعة، فإن الإنتروبي الخاص بها هو log₂(2048^4)، وهو 4 * 11 = 44 بت من الإنتروبي ذي المعنى. لمهاجمتها بالقوة الغاشمة حرفًا بحرف، يواجه المهاجم سلسلة من 28 حرفًا، وهي مهمة مستحيلة.

الدرس المستفاد: الطول غالبًا ما يكون دفاعًا أقوى وأسهل استخدامًا من التعقيد القائم على الرموز. عبارات المرور هي صديقتك.

### كلمة المرور "العشوائية" التي لم تكن كذلك

كُلف مطور بإنشاء نظام يولد كلمات مرور أولية آمنة وعشوائية للمستخدمين الجدد. استخدم دالة random() الافتراضية في لغته في سكربت بسيط. بدت كلمات المرور رائعة: j8sL2!kP. ما لم يدركه المطور هو أن دالة random() القياسية كانت مولد أرقام شبه عشوائية (PRNG) يتم تلقيمه (seeded) بوقت ساعة النظام. تمكن مهاجم، بعد الحصول على واحدة فقط من كلمات المرور هذه والطابع الزمني لإنشائها (من بريد إلكتروني، على سبيل المثال)، من معرفة البذرة (seed). ثم تمكن من إعادة إنشاء التسلسل الكامل لكلمات المرور "العشوائية" لكل مستخدم تم إنشاؤه في نفس الوقت تقريبًا.

الدرس المستفاد: مصدر العشوائية مهم للغاية. لأي شيء متعلق بالأمان، استخدم دائمًا مولد أرقام شبه عشوائية آمن من الناحية التشفيرية (CSPRNG)، مثل window.crypto.getRandomValues() في المتصفح أو /dev/urandom على لينكس.

أخطاء ومصائد شائعة

  • الخلط بين التعقيد والقوة. تبدو P@$$w0rd! معقدة، لكنها كلمة مرور سيئة معترف بها عالميًا. four random words joined بسيطة في المفهوم ولكنها أقوى بكثير في الممارسة لأنها تفتقر إلى الأنماط المتوقعة وهي أطول بكثير.
  • الثقة العمياء في "الشريط الأخضر". العديد من مقاييس القوة على الويب ساذجة بشكل خطير. تقوم بحساب بسيط length * character_set ولا تتحقق من القواميس أو الأنماط أو بيانات التسريبات العامة. التقييم "قوي" من مقياس ضعيف هو كذبة.
  • تجاهل سيناريو الهجوم دون اتصال. لا تقِس قوة كلمة مرورك ضد نموذج تسجيل دخول يغلق حسابك بعد ثلاث محاولات. افترض أن المهاجم لديه كلمة مرورك بصيغة "هاش" ويهاجمها بمجموعة من وحدات GPU في قبو منزله. صمم دائمًا للسيناريو الأسوأ.
  • إعادة استخدام كلمات المرور. أروع كلمة مرور بإنتروبي 128 بت تصبح عديمة القيمة في اللحظة التي يتم فيها كشفها في تسريب بيانات موقع ويب آخر. لن يخترقها المهاجم؛ بل سيبحث عنها في قائمة ويدخل مباشرة.
  • الاعتقاد بأن كلمة المرور القصيرة لا بأس بها طالما أنها عشوائية. كلمة مرور عشوائية حقًا مكونة من 8 أحرف تستخدم جميع رموز لوحة المفاتيح لها إنتروبي لائق (~53 بت). لكن "لائق" لم يعد كما كان. نظرًا لانخفاض تكلفة الحوسبة، يمكن اختراقها في غضون أسابيع أو أشهر. الطول يوفر هامش أمان أكثر راحة.

لماذا يجب أن تكون تحت أنظارك

فهم قوة كلمة المرور ليس فقط للمحترفين في مجال الأمن.

كمطور، إذا كنت تبني أي نوع من أنواع المصادقة، فأنت في خط الدفاع الأول. بدلاً من فرض قواعد تعسفية (يجب أن تحتوي على حرف من الأبجدية السيريلية لا يُستخدم إلا أيام الثلاثاء)، يجب عليك توجيه المستخدمين نحو ما ينجح بالفعل: الطول وعدم القدرة على التنبؤ. دمج مقياس قوة ذكي يمكن أن يوفر ملاحظات فورية تساعد المستخدمين حقًا، ومعرفة المبادئ تتيح لك اتخاذ قرارات هيكلية (architectural) أفضل (مثل اختيار خوارزمية هاش بطيئة ومكلفة مثل Argon2).

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

تعمق أكثر

  • NIST Special Publication 800-63B - الإرشادات الرسمية (والسهلة القراءة بشكل مدهش) من المعهد الوطني الأمريكي للمعايير والتكنولوجيا حول الهوية الرقمية، بما في ذلك سياسات كلمات المرور.
  • Password strength on Wikipedia - نظرة شاملة على المفاهيم والصيغ الرياضية والتاريخ.
  • Entropy (information theory) on Wikipedia - للغوص أعمق في الأسس الرياضية لكل هذا.
  • XKCD 936: Password Strength - القصة المصورة الأصلية التي غيرت طريقة تفكير الكثيرين حول إنشاء كلمات مرور آمنة وسهلة التذكر.
  • zxcvbn-ts GitHub Repository - التنفيذ الحديث بلغة TypeScript لمقياس قوة كلمات المرور الرائد zxcvbn من Dropbox. قراءة منطقه البرمجي بمثابة درس متقدم في التحليل الأمني الواقعي.

انتهينا من النظرية. حان وقت التطبيق — 100% في متصفحك.

جرّب الأداة: قوة كلمة المرور