شرح Hashing : وكيف يتم استخدامه ولماذا هو الأفضل لحماية كلمات المرور المخزنة
محتويات الموضوع :
ما هو Hashing التجزئة ؟
Hashing او التجزئة هي عملية تشفير يمكن استخدامها للتحقق من صحة وسلامة أنواع مختلفة من المدخلات. يستخدم على نطاق واسع في أنظمة المصادقة لتجنب تخزين كلمات مرور النص العادي في قواعد البيانات ، ولكنه يستخدم أيضًا للتحقق من صحة الملفات والوثائق وأنواع البيانات الأخرى. يمكن أن يؤدي الاستخدام غير الصحيح لوظائف التجزئة Hashing إلى انتهاكات خطيرة للبيانات ، ولكن عدم استخدام التجزئة Hashing لتأمين البيانات الحساسة في المقام الأول هو أسوأ من ذلك.
التجزئة مقابل التشفير Hashing versus encryption
Hashing التجزئة هي وظيفة تشفير أحادية الاتجاه بينما تم تصميم التشفير للعمل في كلا الاتجاهين. تأخذ خوارزميات التشفير المدخلات والمفتاح السري وتولد إخراجًا عشوائيًا يسمى النص المشفر. هذه العملية قابلة للعكس. يمكن لأي شخص يعرف المفتاح السري أو يحصل عليه فك تشفير النص المشفر وقراءة الإدخال الأصلي.
لا يمكن عكس وظائف التجزئة. ناتج دالة التجزئة Hashing عبارة عن سلسلة من الأحرف ذات طول ثابت تسمى قيمة التجزئة أو الملخص أو مجرد التجزئة. لا يُقصد بالضرورة الاحتفاظ بهذه السرية لأنه لا يمكن تحويلها مرة أخرى إلى قيمها الأصلية. ومع ذلك ، فإن إحدى الخصائص المهمة لوظيفة التجزئة Hashing هي أنه عند التجزئة Hashing ، يجب أن ينتج عن الإدخال الفريد دائمًا نفس قيمة التجزئة Hashing . إذا كان من الممكن أن يكون لمدخلين مختلفين نفس قيمة التجزئة ، فإن هذا يسمى تصادمًا ، واعتمادًا على مدى سهولة العثور على مثل هذا التصادم من الناحية الحسابية ، يمكن اعتبار وظيفة التجزئة Hashing معطلة من وجهة نظر الأمان.
لماذا تعتبر ال Hashing الأفضل لحماية كلمات المرور
يُفضل دائمًا التجزئة Hashing على التشفير عند تخزين كلمات المرور داخل قواعد البيانات لأنه في حالة حدوث اختراق ، لن يتمكن المهاجمون من الوصول إلى كلمات مرور النص العادي وليس هناك سبب يجعل موقع الويب يعرف كلمة مرور النص العادي للمستخدم. إذا كنت قد تلقيت في أي وقت هذه الإشعارات بأن “ممثلينا لن يطلبوا أبدًا كلمة المرور الخاصة بك” من شركات مختلفة ، فهذا جزء من سبب عدم قيامهم بذلك : ليس لديهم أي استخدام لها لأنهم لا يمتلكون كلمة المرور الخاصة بك. لديهم تمثيل تشفير غير قابل للعكس لكلمة المرور – قيمة التجزئة Hashing الخاصة بها.
ومع ذلك ، فإن الشركات التي تعاني من انتهاكات أمنية غالبًا ما تسيء استخدام مصطلح “التشفير” encryption في إفصاحاتها العامة وتنصح العملاء بأن كلمات المرور الخاصة بهم آمنة لأنها مشفرة. ربما يرجع هذا إلى أن الجمهور العام ليس على دراية كبيرة بمعنى التجزئة Hashing ، لذلك تريد أقسام العلاقات العامة الخاصة بهم تجنب الالتباس. ومع ذلك ، فإنه يجعل من الصعب على المراقبين الخارجيين تقييم المخاطر المرتبطة بالاختراق ، لأنه إذا كانت كلمات المرور مشفرة بالفعل ، فإن الخطر يكون أعلى مما لو تم تجزئتها ويجب أن يكون السؤال التالي : هل تم اختراق مفتاح التشفير encryption key أيضًا ؟ تحدث حالات استخدام التشفير بدلاً من تجزئة كلمات المرور hashing for passwords .
في عام 2013 ، تعرضت شركة Adobe لخرق أمني نتج عنه سرقة معلومات من ملايين الحسابات ، بما في ذلك كلمات المرور المشفرة. قامت Adobe بتحديث معظم أنظمتها لاستخدام التجزئة Hashing ، لكن الخادم الذي تم اختراقه كان نسخة احتياطية خططت الشركة لإلغاء تفويضها وكلمات المرور المخزنة المشفرة باستخدام تشفير Triple DES في وضع ECB. في حين أن المهاجمين لم يحصلوا على مفتاح فك التشفير ، فإن استخدام هذا التشفير في وضع البنك المركزي الأوروبي معروف بتسريب المعلومات ، مما يسمح لهجمات القوة الغاشمة باستعادة عدد كبير من كلمات المرور.
قال مشروع أمان تطبيق الويب المفتوح (OWASP) في توصياته لتخزين كلمات المرور: “يجب استخدام التشفير encryption فقط في الحالات المتطورة حيث يكون من الضروري الحصول على كلمة المرور الأصلية” . “بعض الأمثلة على الأماكن التي قد يكون ذلك ضروريًا فيها : إذا احتاج التطبيق إلى استخدام كلمة المرور للمصادقة على نظام قديم خارجي لا يدعم SSO [أو] إذا كان من الضروري استرداد الأحرف الفردية من كلمة المرور. القدرة على ان يمثل فك تشفير كلمات المرور خطرًا أمنيًا خطيرًا ، لذا يجب تقييمها بالكامل للمخاطر. وحيثما أمكن ، يجب استخدام بنية بديلة لتجنب الحاجة إلى تخزين كلمات المرور في شكل مشفر. “
كيف يتم استخدام التجزئة في المصادقة hashing in authentication
في أنظمة المصادقة ، عندما ينشئ المستخدمون حسابًا جديدًا ويدخلون كلمة المرور التي اختاروها ، يمرر كود التطبيق كلمة المرور هذه من خلال وظيفة التجزئة Hashing ويخزن النتيجة في قاعدة البيانات. عندما يريد المستخدم المصادقة لاحقًا ، تتكرر العملية وتتم مقارنة النتيجة بالقيمة من قاعدة البيانات. إذا كانت مطابقة ، فقد قدم المستخدم كلمة المرور الصحيحة.
إذا نسي المستخدم كلمة المرور الخاصة به ، فإن عملية استرداد كلمة المرور تتضمن التحقق من هويته — عادةً عن طريق إثبات ملكية البريد الإلكتروني الذي تم استخدامه لإنشاء حساب عن طريق النقر فوق رابط فريد لإعادة تعيين كلمة المرور تم إرساله عبر البريد الإلكتروني — ثم السماح للمستخدم بتعيين كلمة مرور جديدة وبالتالي تجزئة Hashing كلمة مرور جديدة في قاعدة البيانات. إذا أدت عملية استعادة كلمة المرور إلى إرسال كلمة المرور القديمة إلى المستخدم عبر البريد الإلكتروني أو عرضها في المتصفح ، فإن التنفيذ غير آمن ولم يتم اتباع أفضل ممارسات الأمان.
ومع ذلك ، حتى في حالة استخدام التجزئة Hashing ، يمكن للمطورين ارتكاب أخطاء في التنفيذ ، على سبيل المثال باستخدام وظيفة التجزئة Hashing المعروفة بأنها غير آمنة وعرضة لهجمات الاختراق بالقوة الغاشمة. ومن الأمثلة على أنظمة التجزئة Hashing التي كانت شائعة جدًا ولكن تم إهمالها MD5 و SHA-1.
تم تطوير MD5 في عام 1991 ، وكانت وظيفة التجزئة Hashing الفعلية لفترة طويلة ، حتى بعد أن أظهر محللو التشفير أنها غير آمنة نظريًا. لسوء الحظ ، لا يزال MD5 يستخدم على نطاق واسع اليوم في التطبيقات القديمة أو من قبل المطورين الذين لا يفهمون الأمان. تم وضع نظرية هجوم الاصطدام الجزئي الأول في عام 1996 وتم عرض تصادم كامل في عام 2004. واليوم ، يمكن العثور على تصادمات MD5 في غضون ثوانٍ على جهاز كمبيوتر منزلي عادي والخوارزمية معرضة بشدة لهجمات القوة الغاشمة.
تم تصميم SHA-1 (خوارزمية التجزئة الآمنة 1 Secure Hash Algorithm) بواسطة NSA في عام 1995 وكان معيار NIST الموصي به. من المعروف أن الوظيفة غير آمنة ضد المهاجمين الممول جيدًا الذين لديهم إمكانية الوصول إلى قوة الحوسبة السحابية منذ عام 2005. في عام 2017 ، باحثون أمنيون من Centrum Wiskunde و Informatica (CWI) في هولندا ، وجامعة Nanyang Technological (NTU) في سنغافورة و Inria في فرنسا أثبتت بالعمل مع جوجل تصادمًا عمليًا مع SHA-1 من خلال إنتاج ملفين PDF مختلفين بنفس توقيع SHA-1. تم إهمال SHA-1 لشهادات TLS والاستخدامات الأخرى ، لكنه لا يزال مستخدمًا على نطاق واسع في الأجهزة والأنظمة القديمة لمجموعة متنوعة من الأغراض ، بما في ذلك التحقق من صحة توقيعات الملفات في مستودعات الأكواد وتحديثات البرامج والمزيد.
لتجزئة كلمات المرور وتخزينها ، توصي مسودة IETF الأخيرة باستخدام Argon2 (الفائز في مسابقة تجزئة كلمات المرور لعام 2015) أو Bcrypt أو Scrypt أو PBKDF2. ومع ذلك ، هناك ما هو أكثر من التجزئة من مجرد الخوارزمية المستخدمة. على سبيل المثال ، يعد الحد الأدنى لطول كلمة المرور البالغ ثمانية أحرف مهمًا أيضًا لأنه يجعل هجمات القوة الغاشمة التي تعتمد على هجمات القاموس – قوائم كلمات المرور الشائعة من خروقات البيانات الأخرى – أكثر صعوبة.
يمكن أيضًا تنفيذ كل وظيفة تجزئة Hashing بحيث يتم إجراء عمليات تكرار أو تمرير متعددة لخوارزمية التجزئة لكل كلمة مرور. يُعرف هذا أيضًا باسم عامل العمل وهدفه هو جعل النتيجة أكثر كثافة من الناحية الحسابية للتصدع باستخدام أساليب القوة الغاشمة. بينما يزيد عامل العمل الأعلى من الأمان ، فإنه يجعل أيضًا كل عملية تجزئة أكثر كثافة من الناحية الحسابية وأطول لأن الخوارزمية يتم تنفيذها عدة مرات.
وقالت أواسب في توصياتها “لا توجد قاعدة ذهبية لعامل العمل المثالي – إنها ستعتمد على أداء الخادم وعدد المستخدمين على التطبيق”. “سيتطلب تحديد عامل العمل الأمثل إجراء تجارب على الخادم المحدد الذي يستخدمه التطبيق. وكقاعدة عامة ، يجب أن يستغرق حساب التجزئة Hashing أقل من ثانية واحدة ، على الرغم من أنه يجب أن يكون أقل بكثير من ذلك في المواقع التي تتمتع بحركة مرور أعلى.”
ملح وفلفل Salt and pepper
من أفضل الممارسات الأخرى للتخزين الآمن لكلمة المرور دمج كل كلمة مرور مع سلسلة أحرف يتم إنشاؤها عشوائيًا تسمى “ملح” ثم تجزئة النتيجة. ثم يتم تخزين الملح ، الذي يجب أن يكون فريدًا لكل مستخدم وكلمة مرور ، جنبًا إلى جنب مع التجزئة Hashing .
يجعل كلمات المرور المملحة أنواعًا معينة من الهجوم أصعب بكثير أو يستحيل تنفيذها. على سبيل المثال ، يمكن للمهاجمين حساب التجزئات مسبقًا لعدد كبير جدًا من مجموعات كلمات المرور ثم تخزينها في قاعدة بيانات تُعرف باسم جدول قوس قزح. في وقت لاحق عندما يعثرون على تجزئة كلمة مرور مسربة ، يمكنهم فقط إجراء بحث في قاعدة البيانات لمعرفة ما إذا كانت تتطابق مع أي من التجزئات المحسوبة مسبقًا. نظرًا لأن تمليح كلمات المرور يؤدي أيضًا إلى تغيير التجزئة الناتجة ، فإن مثل هذه الهجمات تصبح غير فعالة.
يمنع التمليح أيضًا المهاجمين من اكتشاف كلمات المرور المكررة في قاعدة البيانات. حتى إذا اختار مستخدمان أو أكثر نفس كلمة المرور ، فقد أنشأ الخادم أملاحًا مختلفة لهما وستكون التجزئة الناتجة مختلفة. التوصية هي أن تتكون الأملاح من 16 حرفًا على الأقل ، مما يزيد بشكل كبير من تعقيد وطول سلاسل النص العادي التي تحتاج إلى كسر باستخدام أساليب القوة الغاشمة المكثفة حسابيًا.
لإضافة طبقة أخرى من الأمان ، بالإضافة إلى الأملاح ، يمكن للمطورين أيضًا دمج جميع كلمات المرور مع سلسلة عشوائية مكونة من 32 حرفًا على الأقل تسمى الفلفل. على عكس الملح ، الذي يعتبر فريدًا لكل كلمة مرور ، فإن الفلفل هو نفسه لجميع كلمات المرور ولكن لا ينبغي تخزينه داخل قاعدة البيانات. الهدف من برنامج Pepper هو جعل من الصعب على المهاجمين كسر علامات التجزئة Hashing حتى عند حصولهم على قاعدة البيانات الكاملة للتطبيق ، بما في ذلك الأملاح.
يمكن تخزين الفلفل في ملف تكوين تطبيق محمي بأذونات نظام الملفات المناسبة أو في مكان أكثر أمانًا مثل وحدة أمان الأجهزة (HSM).
قال OWASP: “هناك طريقة بديلة تتمثل في تجزئة كلمات المرور كالمعتاد ثم تشفيرها باستخدام مفتاح تشفير متماثل قبل تخزينها في قاعدة البيانات ، بحيث يكون المفتاح بمثابة الفلفل”. “هذا يتجنب بعض المشكلات المتعلقة بالنهج التقليدي للفلفل ، ويسمح بتناوب أسهل بكثير للفلفل إذا كان يعتقد أنه تعرض للخطر.”
ترقية التجزئة Upgrading hashes
يجب ترحيل التطبيقات التي تستخدم خوارزمية تجزئة غير آمنة أو ضعيفة weak hashing algorithm إلى وظائف التجزئة الحديثة modern hashing functions . يمكن أن تكون إحدى طرق القيام بذلك هي استخدام التجزئة القديمة old hashes كمدخلات لخوارزمية التجزئة الجديدة new hashing algorithm ، وإعادة تجزئة التجزئة القديمة بشكل أساسي. ومع ذلك ، في حين أن هذا يحل المشكلة الفورية ، فإنه يجعل التجزئة Hashing الناتجة أكثر عرضة للتصدع مما لو تم إنشاؤها مباشرة من إدخال المستخدم الأصلي.
لهذا السبب ، يوصى بإعادة إنشاء التجزئة Hashing باستخدام الخوارزمية الحديثة الجديدة في المرة التالية التي يقوم فيها المستخدمون بتسجيل الدخول وإدخال كلمات المرور الخاصة بهم. إذا كان المستخدم غير نشط ولم يقم بتسجيل الدخول لفترة معينة من الوقت ، فيمكن إعادة تعيين كلمة المرور الخاصة به ويمكن إجباره على إعادة تعيين كلمة المرور عند تسجيل الدخول في المرة القادمة.
أخيرًا ، القاعدة الذهبية لجميع المطورين عند التعامل مع التشفير encryption : لا تصمم خوارزميات مخصصة خاصة بك. يعد التشفير صعبًا للغاية وعادة ما تكون الخوارزميات الموحدة والمستخدمة على نطاق واسع نتيجة لجهود البحث الأكاديمي التي تخضع لمراجعة الأقران من مصممي التشفير ومحللي التشفير الآخرين.