تطور تشفير كلمات المرور
قد تكون سمعت عن نصائح لاختيار خوارزميات تشفير كلمات المرور، ولكن هل فكرت لماذا يتم التوصية بها؟ في هذه المقالة، سنستكشف تطور خوارزميات تشفير كلمات المرور والأسباب وراءها.
المقدمة
تشفير كلمات المرور، كما يشير الاسم، هو عملية حساب قيمة تجزئة من كلمة مرور. يتم عادةً تخزين قيمة التجزئة في قاعدة بيانات، وخلال عملية تسجيل الدخول، يتم حساب قيمة التجزئة لكلمة المرور التي يدخلها المستخدم ويتم مقارنتها بقيمة التجزئة المخزنة في قاعدة البيانات. إذا تطابقت، يتم توثيق المستخدم.
قبل أن نتعمق في تطور خوارزميات تشفير كلمات المرور، من المهم أن نفهم لماذا الضرورة لذلك.
كلمات المرور بالنص العادي: خطر أمني كبير
تخيل أنك مستخدم لموقع حيث قمت بتسجيل حساب. في يوم من الأيام، يتعرض الموقع للاختراق، ويتم تسريب قاعدة البيانات. إذا كان الموقع يخزن كلمات المرور كنص عادي، يمكن للمخترق الوصول مباشرة إلى كلمتك السرية. نظرًا لأن الكثير من الناس يعيدون استخدام كلمات مرور عبر مواقع متعددة، يمكن للمخترق استخدام هذه الكلمة السرية للحصول ع لى وصول غير مصرح به إلى حساباتك الأخرى. تصبح الحالة أكثر سوءًا إذا كنت تستخدم نفس الكلمة السرية أو مشابهة لحساب بريدك الإلكتروني، حيث يمكن للمخترق إعادة تعيين كلمتك السرية والسيطرة على جميع حساباتك المرتبطة.
حتى بدون اختراق البيانات، في الفرق الكبيرة، أي شخص لديه وصول إلى قاعدة البيانات يمكنه رؤية كلمات المرور. بالمقارنة مع المعلومات الأخرى، تكون كلمات المرور حساسة للغاية، وبالتأكيد لا تريد لأي شخص أن يكون له وصول إليها.
تخزين كلمات المرور بدون تشفير يعد خطأ هاويًا. للأسف، إذا قمت بالبحث عن "تسرب كلمة المرور النص العادي"، ستجد أن شركات كبيرة مثل فيسبوك، ديليكويز، وجودادي قد تعرضت لتسرب كلمات المرور بالنص العادي. من المحتمل أن العديد من الشركات الأخرى قد ارتكبت نفس الخطأ.
الترميز مقابل التشفير مقابل التجزئة
غالبًا ما يتم الخلط بين هذه المصطلحات الثلاثة، ولكنها مفاهيم مميزة.
الترميز
الترميز هو أول شيء يجب استبعاده لتخزين كلمات المرور. على سبيل المثال، Base64 هو خوارزمية ترميز تحول البيانات الثنائية إلى سلسلة من الأحرف:
معرفة خوارزمية الترميز يتيح لأي شخص فك الشفرة للسلسلة المرمازة واسترجاع البيانات الأصلية:
بالنسبة للمخترقين، معظم خوارزميات الترميز تعادل النص العادي.
التشفير
قبل أن يكتسب التشفير شعبية، كان التشفير يستخدم لتخزين كلمات المرور، مثل AES. يتضمن التشفير استخدام مفتاح (أو زوج من المفاتيح) لتشفير وفك تشفير البيانات.
المشكلة مع التشفير واضحة في مصطلح "فك التشفير". التشفير قابل للعكس، أي إذا حصل المخترق على المفتاح، يمكنه فك تشفير كلمة المرور واسترداد كلمة المرور بالنص العادي.
التجزئة
الفرق الأساسي بين التجزئة، الترميز، والتشفير هو أن التجزئة غير قابلة للعكس. بمجرد تحجيم كلمة مرور، لا يمكن فك تشفيرها للعودة إلى شكلها الأصلي.
كصاحب موقع، لا تحتاج فعليًا إلى معرفة الكلمة السرية نفسها، طالما أن المستخد م يمكنه تسجيل الدخول باستخدام الكلمة السرية الصحيحة. يمكن تبسيط عملية التسجيل كما يلي:
- يدخل المستخدم الكلمة السرية.
- يستخدم الموقع خوارزمية تجزئة لحساب قيمة التجزئة للكلمة السرية.
- يخزن الموقع قيمة التجزئة في قاعدة البيانات.
عندما يسجل المستخدم دخوله، تكون العملية:
- يدخل المستخدم الكلمة السرية.
- يستخدم الموقع نفس خوارزمية التجزئة لحساب قيمة التجزئة للكلمة السرية.
- يقارن الموقع قيمة التجزئة مع قيمة التجزئة المخزنة في قاعدة البيانات.
- إذا تطابقت قيمة التجزئة، يتم توثيق المستخدم.
كلتا العمليتين تتجنب تخزين كلمات المرور بالنص العادي، ونظرًا لأن التجزئة غير قابلة للعكس، حتى لو تم اختراق قاعدة البيانات، فإن المخترق يمكنه فقط الحصول على قيم التجزئة التي تظهر كسلاسل عشوائية.
مجموعة بداية خوارزميات التجزئة
قد تبدو التجزئة وكأنها الحل المثالي لتخزين كلمات المرور، لكنها ليست بهذه البساطة. لفهم السبب، دعنا نستكشف تطور خوارزميات تشفير كلمات المرور.
MD5
في عام 1992، قام رون ريفست بتصميم خوارزمية MD5، وهي خوارزمية لحساب رسالة تجزئة يمكنها حساب قيمة تجزئة 128 بت من أي بيانات. تم استخدام MD5 على نطاق واسع في مجالات مختلفة، بما في ذلك تشفير كلمات المرور. على سبيل المثال، قيمة تجزئة MD5 لكلمة "123456" هي:
كما ذُكر سابقًا، تظهر قيمة التجزئة كسلسلة عشوائية ولا يمكن عكسها. علاوة على ذلك، فإن MD5 سريع وسهل التنفيذ، مما يجعله خوارزمية تشفير كلمات المرور الأكثر شيوعًا.
ومع ذلك، فإن مميزات MD5 هي أيضًا نقاط ضعفه في تشفير كلمات المرور. سرعته تجعلها عرضة لهجمات القوة الغاشمة. إذا كان المخترق يمتلك قائمة بكلمات المرور الشائعة ومعلوماتك الشخصية، يمكنه حساب قيمة تجزئة MD5 لكل تركيبة ومقارنتها بقيم التجزئة في قاعدة البيانات. على سبيل المثال، قد يجمع بين عيد ميلادك واسمك أو اسم حيوانك الأليف.
في يومنا الحاضر، أصبحت أجهزة الكمبيوتر أكثر قوة من ذي قبل، مما يسهل الكسر بالقوة الغاشمة لتجزئات كلمة المرور باستخدام MD5.
عائلة SHA
لذا، لماذا لا نستخدم خوارزمية أخرى تولد قيم تجزئة أطول؟ يبدو أن عائلة SHA خيار جيد. SHA-1 هي خوارزمية تجزئة تولد قيم تجزئة 160 بت، وSHA-2 هي عائلة من خوارزميات التجزئة التي تولد قيم تجزئة بطول 224 بت، 256 بت، 384 بت، و512 بت. دعونا نرى قيمة تجزئة SHA-256 لكلمة "123456":
قيمة التجزئة لـ SHA-256 أطول بكثير من MD5، كما أنها غير قابلة للعكس. ومع ذلك، هناك مشكلة أخرى: إذا كنت تعرف بالفعل قيمة التجزئة، مثل المذكور أعلاه، ورأيت نفس القيمة في قاعدة البيانات، تعرف أن الكلمة السرية هي "123456". يمكن للمخترق إنشاء قائمة بكلمات المرور الشائعة وقيم التجزئة المقابلة لها، ومقارنتها بقيم التجزئة في قاعدة البيانات. تعرف هذه القائمة باسم جدول قوس قزح.
الملح
للتخفيف من هجمات جداول قوس قزح، تم تقديم مفهوم الملح. الملح هو سلسلة عشوائية يتم إضافتها إلى الكلمة السرية قبل التجزئة. على سبيل المثال، إذا كان الملح هو "salt"، وترغب في استخدام SHA-256 لتجزئة كلمة المرور "123456" مع الملح، بدلاً من القيام ببساطة بـ:
ستقوم بـ:
كما ترى، النتيجة مختلفة تمامًا عن التجزئة بدون ملح. عادةً، يتم تعيين ملح عشوائي لكل مستخدم أثناء التسجيل، والذي يتم تخزينه في قاعدة البيانات بجانب قيمة التجزئة. خلال عملية تسجيل الدخول، يتم استخدام الملح لحساب قيمة التجزئة للكلمة السرية المدخلة، والتي يتم مقارنتها بعد ذلك بقيمة التجزئة المخزنة.
التكرار
على الرغم من إضافة الملح، لا تزال قيمة التجزئة عرضة لهجمات القوة الغاشمة مع تطور العتاد. لجعل الأمر أكثر صعوبة، يمكن إدخال التكرار (أي تشغيل خوارزمية التجزئة عدة مرات). على سبيل المثال، بدلاً من استخدام:
يمكنك استخدام:
زيادة عدد التكرارات يجعل القوة الغاشمة أكثر صعوبة. ومع ذلك، هذا يؤثر أيضًا على عملية تسجيل الدخول، حيث تصبح أبطأ. وبالتالي، يجب تحقيق توازن بين الأمان والأداء.
استراحة منتصف المدة
لنأخذ استراحة ونلخص خصائص خوارزمية تجزئة كلمات مرور جيدة:
- غير قابلة للعكس (مقاومة إعادة الصور السابقة)
- صعبة الكسر بالقوة الغاشمة