منذ سنوات ، كان من الصعب حقًا كسر كلمات السر العشوائية المُكوَّنة من ثمانية أحرف والتي تتكون من أحرف كبيرة وصغيرة ورموز وأرقام. في بعض الحالات ، استغرق كسر كلمة السر مثل هذه سنوات.
بفضل التكنولوجيا المُتغيَّرة اليوم والأجهزة المُستأجرة ، تم تقليل هذا الوقت إلى ساعات. ولكن كيف يتم تخزين كلمات السر هذه في المقام الأول؟ تحقق من كلمات السر هي شيء من الماضي: لماذا يتم التخلص التدريجي منها في هذا العام.
روابط سريعة
كيف يتم تخزين كلمات السر على الإنترنت
لا تُخزِن الأنظمة كلمات سر المُستخدم مُباشرةً في ملفات أو قواعد بيانات ، لأنَّ المهاجم يُمكنه السيطرة على قاعدة البيانات التي تحتفظ فيها الأنظمة بكلمات السر . بدلاً من ذلك ، تقوم الأنظمة بتشفير تفاصيل المستخدم ، مما يجعل المهاجم يُواجه نسخة مُشفرة من كل كلمة سر.
هناك بعض الخوارزميات المُتقدمة التي تستخدمها الأنظمة لتشفير كلمات السر. إحدى هذه الخوارزميات هي خوارزمية التشفير المُتماثل. والتي هي نوع من التشفير حيث يُمكنك استخدام نفس المفتاح لكل من التشفير وفك التشفير. يحمل أمان خوارزميات التشفير المُتماثل بعض المخاطر حيث لا يوجد سوى مفتاح واحد مُخصص لفك التشفير. لهذا السبب ، لا تستخدم الأنظمة عمومًا خوارزميات التشفير المُتماثل.
بشكل عام ، الطريقة التي تستخدمها الأنظمة للتشفير هي خوارزميات التجزئة. والتي هي مُخصصة للتحقق من سلامة البيانات وتمثيلها ، وليس لتشفير البيانات. تقوم خوارزميات التجزئة بتحويل البيانات إلى تجزئة بحجم ثابت. عادةً ما تمثل تجزئة فريدة للبيانات. ما يجب على وظيفة التجزئة فعله هو إنشاء بيانات ذات طول ثابت لحجم عشوائي من البيانات كخريطة لها.
بفضل خوارزمية التجزئة ، إذا استولى مُهاجم على قاعدة البيانات التي تحتوي كلمة السر ، فلن يتمكن من الوصول إلى كلمة السر للخلف من هنا. هناك فارق بسيط مُهم للغاية يجب الانتباه إليه هنا. نظريًا ، يُمكن للمهاجم الذي يخترق نظامًا يستخدم نفس خوارزمية التجزئة لجميع مجموعات كلمات السر مُقارنة النتائج التي تم الحصول عليها. إذا كان المهاجم يحصل على نفس القيمة نتيجة لهذه المُقارنات ، فقد اكتشف الإصدار المفتوح من كلمة السر. تدور هذه الطريقة حول التجربة والخطأ ، ويُسمى هذا النوع من الهجوم عمومًا هجوم القوة الغاشمة.
في بداية العقد الأول من القرن الحادي والعشرين ، قد يستغرق الأمر مئات السنين لتجربة كل مجموعات كلمات السر المُكوَّنة من 8 أحرف والتي تم تشفيرها باستخدام خوارزميات التجزئة الشائعة. بالطبع ، لا تتضمن تركيبات بسيطة جدًا مثل “123456” أو “mypassword” في هذه المجموعة. مع تطور تقنيات البرمجيات والأجهزة اليوم ، تغيرت طريقة كسر كلمات السر كثيرًا أيضًا. تحقق من هل يُمكنك الوثوق بأمان تطبيقات إدراة كلمات السر؟
تأثير ظهور بطاقات الرسومات
تحسنت قدرات مُعالجة البيانات الموازية لمعالجات الرسومات (GPU) بمرور الوقت. بطاقات الرسومات غير قادرة على أداء عمليات مُتعددة الاستخدامات مثل وحدات المعالجة المركزية للأغراض العامة. لذلك على الرغم من وجود العديد من النوى وقوة المعالجة المتوازية ، فليس من المنطقي استخدامها في كل مشكلة تقريبًا مثل المعالج.
ومع ذلك ، من المُمكن تنفيذ بعض خوارزميات التجزئة المُستخدمة لكلمات السر بكفاءة عالية على وحدة معالجة الرسومات. نمت عدد التجزئات في الثانية التي يُمكنك تحقيقها باستخدام وحدات المعالجة المركزية التقليدية بشكل كبير مع بطاقات الرسومات الجديدة.
للحصول على فكرة ، افحص عدد التجزئات في الثانية (يُشير مصطلح معدل التجزئة إلى السرعة التي يتمكن بها الكمبيوتر من إجراء حسابات التجزئة) لخوارزميات التجزئة مثل NTLM و MD5 و SHA1 في الجدول أدناه. يكفي ، في الوقت الحالي ، معرفة أنَّ هذه الخوارزميات هي مجرد خوارزمية تجزئة. لإنشاء هذا الجدول ، استخدمت نظامًا عنقوديًا يتكون من 25 وحدة معالجة رسومات AMD Radeon.
الخوارزمية | عدد التجزئات في الثانية |
NTLM | 350.000.000.000 |
MD5 | 180.000.000.000 |
SHA1 | 63.000.000.000 |
SHA512Crypt | 364.000 |
Bcrypt | 71.000 |
Scrypt | 33.000 |
كما ترى ، مع مثل هذا النظام ، يُمكنك إنشاء تجزئة NTLM لـ 350 مليار مرة في الثانية. هذا يعني أنه يمكنك تجربة جميع مجموعات كلمة السر المُكوِّنة من 8 أحرف في أقل من 6 ساعات. علاوة على ذلك ، الأجهزة الموجودة في هذا المثال تعود إلى سنوات ماضية. تخيل قوة تكسير كلمات السر اليوم.
ماذا يجب أن يفعل مطورو البرمجيات؟
الطريقة التي يجب أن يسلكها المُبرمجون بسيطة للغاية: يجب أن يُفضلوا الخوارزميات التي تستغرق وقتًا أطول لحساب قيم التجزئة عند تشفير كلمات السر. يحتاج المطورون إلى معرفة ليس فقط أداء الخوارزمية التي يستخدمونها على وحدة المعالجة المركزية ولكن أيضًا حول مدى مرونتها ضد عالم بطاقات الرسومات.
إذا كان المُطورون يعملون مع إطار عمل برمجي يُعالج أيضًا عمليات تشفير كلمات السر مثل Django و Ruby on Rails و Spring Security ، فيجب عليهم التحقق مما إذا كانت القرارات الصحيحة قد اتخذت في إطار العمل من حيث الأمان.
على سبيل المثال ، تستخدم Devise ، وهي إحدى المكتبات الأكثر استخدامًا لعمليات المُستخدم في Ruby on Rails ، Bcrypt كخوارزمية التجزئة الافتراضية. كما تسمح لك باستخدام طريقة أخرى كخوارزمية تجزئة. تُعد خوارزمية Bcrypt موثوقة لأنها لا تزال تستغرق وقتًا طويلاً حتى تتمكن بطاقة الرسومات من الوصول إلى النقطة الصحيحة.
باختصار ، كلما طالت مدة حساب قيمة التجزئة ، زاد أمانك.
كم عدد الأحرف التي يجب أن تحتوي عليها كلمة سرك؟
كل حرف إضافي تستخدمه سيزيد هندسيًا من عدد التجارب والأخطاء اللازمة لاختراق كلمة السر وجعلها أكثر أمانًا.
لنفكر في هذا الموقف من خلال سيناريوهين مُختلفين. ضع في اعتبارك القيم الواردة في الجدول أعلاه لخوارزمية تجزئة NTLM وتخيل أنك ستحاول كسر كلمة السر. تخيل استهداف كلمات سر مُكوَّنة من ثمانية أحرف أو أكثر.
عدد الأحرف | أحرف كبيرة/صغيرة وأرقام | أحرف كبيرة/صغيرة وأرقام ورموز خاصة |
8 | أقل من دقيقة واحدة | دقيقتين |
9 | دقيقتين | ساعتين |
10 | ساعتين | أسبوع واحد |
11 | ستة أيام | سنتين |
12 | سنة واحدة | 200 سنة |
13 | أكثر من 100 سنة | أكثر من 1000 سنة |
عند فحص الجدول ، يُمكنك أن ترى أنَّ استخدام كلمة سر مُكوَّنة من 12 حرفًا على الأقل آمن عند استخدام جميع مجموعات الأحرف الكبيرة/الصغيرة والأرقام والرموز الخاصة. إذا كنت لا تستخدم رموزًا خاصة ، فقد اتضح أنك بحاجة إلى استخدام 13 حرفًا للوصول إلى طول كلمة السر الآمنة. إذا استخدمت طريقة تجزئة Bcrypt بدلاً من تجزئة NTLM في هذا النظام ، فستكون 8 أحرف كافية. ومع ذلك ، لا تُتاح لك الفرصة لمعرفة طريقة التجزئة التي يستخدمها النظام الذي تدخله عبر الويب والذي يحتفظ بكلمة السر الخاصة بك. لهذا السبب يجب أن تُفكر في كل الاحتمالات.
تكمن المشكلة الرئيسية لمطوري البرمجيات في أنه يكاد يكون من المستحيل إقناع المُستخدمين بالحصول على كلمة سر مُكوَّنة من 12 حرفًا على الأقل. اليوم ، من المُمكن القول أنَّ معدل استخدام كلمة السر بهذا الطول مُنخفض. لذلك ، وفقًا لسيناريو الاستخدام للنظام المُطور ، سيكون من الضروري إيجاد حل وسط يقبله المُستخدمون لتحسين أمان كلمة السر الخاصة بهم.
اقتراح أخير للمطورين هو التحقق ليس فقط من الحد الأدنى للطول ولكن أيضًا الحد الأقصى لطول المُدخلات الواردة من خلال النماذج التي قدمتها للمستخدم. خاصة عندما تقوم بتمكين استخدام خوارزمية تجزئة بطيئة الحساب مثل Bcrypt لأغراض أمنية ، فقد تواجه بعض المخاطر إذا لم تتحكم في الحد الأقصى لطول كلمة السر التي أدخلها المستخدم. على سبيل المثال ، يُمكن للمهاجمين تنفيذ هجمات عن طريق تجربة عشرات كلمات السر المُكونة من 100 ألف حرف في نفس الوقت مع بعض الطلبات المُعدة خصيصًا. في مثل هذه الحالة ، من المحتمل جدًا أن يصبح نظامك غير مُستجيب للمستخدمين الآخرين. تحقق من كيفية معرفة ما إذا كان يتم بيع كلمات السر الخاصة بك عبر الإنترنت.
نصيحة للمُستخدم النهائي
اجعل طول كلمة سرك لا يقل عن 12 حرفًا وتأكد من تضمين مجموعات الأحرف الكبيرة والصغيرة والأرقام والرموز الخاصة. لا تنس أبدًا أنَّ الأنظمة التي تُخزن كلمة السر يُمكن اختراقها ، ويُمكن إساءة استخدام معلوماتك. لا يمكنك معرفة الخوارزميات التي يستخدمها النظام لتشفير كلمة السر ، لذا فإن الأمر متروك لك تمامًا لاتخاذ الاحتياطات وإنشاء كلمات سر قوية. يُمكنك الإطلاع الآن على كيفية توليد كلمات سر قوية على الانترنت من الصعب كسرها.