FlowingDev

شرح كلمات السر: المفتاح الرقمي اللي ممكن يكون عود كبريت أو باب خزنة بنك

تعلم كيف يتم إنشاء كلمات سر عشوائية قوية، ولماذا هي حاسمة للأمان، وكيف يحول الإنتروبي ومجموعات الأحرف كلامًا غير مفهوم إلى حصن رقمي منيع.

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

في جملة واحدة

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

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

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

لما يُطلب مننا إنشاء باسورد، عقولنا بترجع للي تعرفه: أسماء الحيوانات الأليفة (fluffy1)، تواريخ مهمة (MomBday1965!)، أسماء فرق رياضية مفضلة (GoPackGo2024)، أو أنماط على الكيبورد (qwerty12345). بنفتكر إننا أذكياء لما نبدل حرف o برقم 0 أو نضيف علامة تعجب في الآخر، لكن كل اللي بنعمله هو اتباع نمط أكثر تعقيدًا بقليل، ولكنه لا يزال متوقعًا.

هذا كان مقبولًا في الأيام الأولى للكمبيوتر. لكن مع الانفجار الهائل في قوة المعالجة، قام المهاجمون بأتمتة لعبة التخمين. بنوا أدوات لتجربة كل كلمة في القاموس (ما يسمى بـ "هجوم القاموس" أو "dictionary attack"). ثم أضافوا الأرقام والتبديلات الشائعة والأحرف الخاصة. اليوم، يمكن لوحدة معالجة رسومات (GPU) حديثة أن تقوم بـ مليارات التخمينات في الثانية. باسورد مثل P@ssw0rd1! قد يبدو معقدًا للإنسان، لكن بالنسبة للكمبيوتر، هو فريسة سهلة يمكن تخمينها في دقائق، إن لم يكن ثوانٍ.

المشكلة اللي بيحلها مولد كلمات السر هي مشكلة "العقل البشري" نفسه. هو يوكل مهمة إنشاء مفتاح سري لآلة ليس لديها أي تحيزات، ولا أسماء حيوانات أليفة مفضلة، ولا فكرة عما "يبدو عشوائيًا". هي فقط تتبع مبادئ رياضية لإنتاج سلسلة هي، لكل الأغراض العملية، مجرد ضوضاء نقية—وهذه الضوضاء هي سيمفونية في أذن المطور المهتم بالأمان.

كيف يعمل خلف الكواليس

مولد كلمات السر الجيد لا يقوم فقط بصفع المفاتيح معًا. إنها عملية دقيقة ومحسوبة متجذرة في المفهوم الرياضي للإنتروبي (entropy). فكر فيه كآلة رمي نرد عالية التقنية.

المكون السري: الإنتروبي (Entropy)

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

يحتاج مولد كلمات السر إلى مصدر عشوائية عالي الجودة للقيام بعمله. في متصفح ويب حديث، هذا المصدر عادةً ما يكون Web Crypto API، وتحديدًا دالة مثل crypto.getRandomValues(). هذا ليس مثل Math.random() تبع أيام زمان. فبدلاً من استخدام خوارزمية بسيطة ومتوقعة، فإنه يستفيد من "مجمع الإنتروبي" في نظام التشغيل. هذا المجمع هو مرجل من الفوضى، يتم تحريكه بمدخلات لا يمكن التنبؤ بها مثل:

  • التوقيت الدقيق لحركات ونقرات الماوس.
  • إيقاع ضغطاتك على لوحة المفاتيح.
  • الضوضاء الصادرة من أجهزة الهاردوير (مثل المروحة أو القرص الصلب).
  • توقيتات حزم الشبكة.

يستخدم المتصفح هذا "المولد لأرقام شبه عشوائية الآمن للتشفير" (CSPRNG) للحصول على تيار من الأرقام التي لا يمكن التنبؤ بها بما يكفي لأغراض الأمان. هذه هي المادة الخام لكلمة السر الخاصة بنا.

بناء مجمع الأحرف

بعد ذلك، يحدد المولد "الأبجدية" التي يمكنه الاختيار منها. هذه ليست فقط من A-Z. إنها المجموعة الكاملة من الأحرف التي سمحت بها. التكوين النموذجي يبدو كالتالي:

  • أحرف صغيرة (Lowercase): abcdefghijklmnopqrstuvwxyz (26 حرفًا)
  • أحرف كبيرة (Uppercase): ABCDEFGHIJKLMNOPQRSTUVWXYZ (26 حرفًا)
  • أرقام (Numbers): 0123456789 (10 أرقام)
  • رموز (Symbols): !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ (32 رمزًا)

إذا قمت بتمكين المجموعات الأربع كلها، فإن مجمع الأحرف (N) الخاص بك سيكون بحجم 26 + 26 + 10 + 32 = 94 حرفًا محتملاً. حجم هذا المجمع هو عامل حاسم في قوة كلمة السر النهائية.

رمي النرد: الخوارزمية

مع وجود مصدر للأرقام العشوائية ومجمع للأحرف، تكون العملية بسيطة بشكل مدهش:

  1. احصل على رقم عشوائي: اطلب من CSPRNG رقمًا عشوائيًا بين 0 و 93 (الحجم الإجمالي لمجمع الأحرف لدينا ناقص واحد).
  2. اختر حرفًا: استخدم هذا الرقم كفهرس لاختيار حرف من المجمع. على سبيل المثال، إذا كان الرقم العشوائي هو 74، والحرف رقم 74 في مجمعنا هو &، فإن & هو الحرف الأول من كلمة السر.
  3. كرر: افعل هذا مرارًا وتكرارًا للطول المطلوب (L) لكلمة السر.

مثال مبسط يشبه JavaScript قد يبدو هكذا:

function generatePassword(length, characterPool) {
  let password = "";
  const poolSize = characterPool.length;

  // Get an array of random numbers in one go for efficiency
  const randomValues = new Uint32Array(length);
  window.crypto.getRandomValues(randomValues);

  for (let i = 0; i < length; i++) {
    // Use the random number to pick a character from the pool
    const randomIndex = randomValues[i] % poolSize;
    password += characterPool[randomIndex];
  }
  return password;
}

const allChars = "abc...XYZ...123...#$!..."; // Pool of 94 chars
const myStrongPassword = generatePassword(16, allChars);
// Result: something like "9k&vB$@p!Z*rE#wJ"

المفتاح هو ضمان توزيع منتظم—يجب أن يكون لكل حرف في المجمع فرصة متساوية في الاختيار لكل موضع في كلمة السر.

قياس القوة: بتات الإنتروبي (Bits of Entropy)

إذًا، ما مدى قوة النتيجة؟ نقيسها بـ "بتات الإنتروبي". الصيغة هي log₂(إجمالي التوافيق). العدد الإجمالي للتوافيق هو حجم مجمع الأحرف (N) مرفوعًا إلى قوة طول كلمة السر (L)، أو N^L.

صيغة بتات الإنتروبي هي: H = L * log₂(N)

دعنا نرى كيف يعمل هذا.

الطول (L) مجموعة الأحرف (N) الاحتمالات (N^L) بتات الإنتروبي (H) الوقت اللازم للاختراق (بمعدل ¹⁰¹² تخمين/ثانية)
8 أحرف صغيرة فقط (26) 208 مليار ~37.6 أجزاء من الثانية
8 كل الأحرف (94) 6 كوادريليون ~52.4 دقائق
12 كل الأحرف (94) 4.7 x 10²³ ~78.7 آلاف السنين
16 كل الأحرف (94) 3.7 x 10³¹ ~104.9 تريليونات السنين
24 كل الأحرف (94) 2.3 x 10⁴⁷ ~157.3 عمليًا إلى الأبد

كما ترى، كل حرف تضيفه للطول لا يضيف قوة فحسب—بل يضاعفها أضعافًا مضاعفة. هذا النمو الأسي هو السبب في أن كلمة سر مكونة من 16 حرفًا ليست أقوى بمرتين فقط من كلمة سر من 8 أحرف؛ بل هي أقوى بمليارات المليارات من المرات. هذا هو العمود الفقري الرياضي لأمان كلمات السر.

قصص من الواقع

كارثة "Password123" المتسلسلة

مُطورة مبتدئة، لنسميها علياء، كانت تتعامل مع عشرات الخدمات لمشروع جديد: GitHub، مزود خوادم سحابية، خدمة قاعدة بيانات، والعديد من أدوات المراقبة كخدمة (SaaS). لتبسيط الأمور، استخدمت كلمة سر يمكنها تذكرها: ProjectName2023!. شعرت أنها آمنة بما فيه الكفاية. في أحد الأيام، أعلنت خدمة برمجيات المنتديات الغامضة التي سجلت فيها لتتبع خطأ ما عن خرق للبيانات. تم تسريب قاعدة بيانات المستخدمين الخاصة بهم، بما في ذلك كلمات السر المعمّاة بالـ hash. لسوء الحظ، استخدموا خوارزمية hash ضعيفة، وفي غضون ساعات، تمكن المخترقون من عكس الـ hashes إلى نص عادي. ثم قام المهاجمون بتشغيل سكربتات آلية، مجربين مجموعات email:password المسربة على الخدمات الكبرى. وضربوا ضربتهم مع حساب علياء. كلمة السر الخاصة بها ProjectName2023! منحتهم الوصول إلى مزودها السحابي ومستودع GitHub الخاص بها. قاموا بنسخ الكود المصدري وبيانات العملاء، ثم مسحوا الخوادم.

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

هجوم القوة الغاشمة الذي فشل

مدير نظام اسمه بدر كان يقوم بتقوية خادم SSH جديد مواجه للعامة. كان هذا الخادم هدفًا مغريًا، وكان يعلم أنه سيتم مسحه بواسطة البوتات في اللحظة التي يتم فيها تشغيله. بالنسبة لحساب المستخدم الجذر (root) (الذي كان يخطط لتعطيل تسجيل الدخول الخارجي له على أي حال)، لم يحاول حتى التفكير في كلمة سر. لقد أنشأ سلسلة من 32 حرفًا من الهراء التام باستخدام جميع مجموعات الأحرف: شيء مثل q#8v...G@z7. بعد أسبوع، بدافع الفضول، تفقد سجلات المصادقة على الخادم. وجد مشهدًا مروعًا: ملايين محاولات تسجيل الدخول الفاشلة من عناوين IP في جميع أنحاء العالم. كانت البوتات تشن هجوم قوة غاشمة (brute-force) لا هوادة فيه، مجربة كلمات السر الشائعة، وكلمات القاموس، والأحرف المتسلسلة. ولكن ضد حصنه المكون من 32 حرفًا، كانوا مثل رمي الحصى على جبل. لم يقتربوا أبدًا.

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

"الفوز السهل" لمختبر الاختراق

ماريا، مختبرة اختراق، تم توظيفها لتقييم أمان شركة متوسطة الحجم. بدأت بـ "الهندسة الاجتماعية" والاستطلاع. أثناء تجولها في المكتب في جولة إرشادية، لاحظت بسرية مساحات عمل الموظفين. على جانب إحدى الشاشات كانت هناك ورقة ملاحظات لاصقة (Post-it) مكتوب عليها Winter2024$. كانت تخص شخصًا في قسم المحاسبة. اتبعت كلمة السر هذه النمط "البشري" الكلاسيكي: كلمة شائعة، الموسم/السنة الحالية، ورمز في النهاية. كانت كلمة سر مصممة لتلبية سياسة (يجب أن تتضمن حرفًا كبيرًا واحدًا ورقمًا واحدًا ورمزًا واحدًا) مع بقائها سهلة التذكر. بالنسبة لماريا، كان هذا بابًا مفتوحًا. استخدمتها لتسجيل الدخول إلى البرنامج المالي للشركة، مثبتة أنها كان بإمكانها الوصول إلى بيانات حساسة والتلاعب بها.

الدرس: حتى عند اتباع سياسة كلمات السر، البشر يصنعون كلمات سر متوقعة. العشوائية الحقيقية من مولد تزيل العنصر البشري، الذي غالبًا ما يكون الحلقة الأضعف.

أخطاء وفخاخ شائعة

  • الثقة بمولد مشبوه. كن حذرًا من المواقع العشوائية التي تقدم خدمة إنشاء كلمات السر. يمكن لموقع خبيث أن يسجل كل كلمة سر ينشئها. التزم بالأدوات الموثوقة ومفتوحة المصدر أو تلك التي تعمل بالكامل في متصفحك، حيث لا يمكن للكود "الاتصال بالخادم الخاص به".
  • التضحية بالعشوائية من أجل سهولة التذكر. إذا أنشأت كلمة سر ثم "عدّلت" عليها لتكون أسهل في التذكر، فقد ألغيت الغرض بأكمله. لقد أعدت حقن النمط البشري المتوقع الذي يستغله المهاجمون.
  • تجاهل مجموعة الأحرف. كلمة سر مكونة من 20 حرفًا من الأرقام فقط (27182818284590452353) أضعف بكثير من كلمة سر من 12 حرفًا تستخدم الحروف والأرقام والرموز. حجم مجمع الأحرف (N) هو مضاعف قوي للقوة.
  • تخزين كلمة السر التي تم إنشاؤها بشكل غير آمن. إنشاء 4tG!p$z#qR@... هو الخطوة الأولى. الخطوة الثانية هي تخزينها بأمان. كتابتها على ورقة ملاحظات لاصقة، أو حفظها في ملف passwords.txt على سطح المكتب، أو إرسالها بالبريد الإلكتروني لنفسك يهزم الغرض. استخدم مدير كلمات سر موثوق.
  • إعادة استخدام كلمة سرك "الخارقة" الوحيدة. أنشأت كلمة سر رائعة من 25 حرفًا. أنت فخور بها لدرجة أنك تستخدمها لبريدك الإلكتروني، وبنكك، ووسائل التواصل الاجتماعي. في اللحظة التي يتم فيها اختراق أي من هذه الخدمات، يكون مفتاحك "الخارق" في أيدي المهاجمين، وجميع حساباتك معرضة للخطر.

لماذا يجب أن تكون على رادارك

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

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

تعمق أكثر

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

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